@fairmint/ui 0.4.0 → 0.4.2
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/dist/_virtual/index3.cjs +3 -5
- package/dist/_virtual/index3.cjs.map +1 -1
- package/dist/_virtual/index3.js +2 -5
- package/dist/_virtual/index3.js.map +1 -1
- package/dist/_virtual/index4.cjs +5 -3
- package/dist/_virtual/index4.cjs.map +1 -1
- package/dist/_virtual/index4.js +5 -2
- package/dist/_virtual/index4.js.map +1 -1
- package/dist/components/generic/FilterToggle/FilterToggle.cjs +51 -0
- package/dist/components/generic/FilterToggle/FilterToggle.cjs.map +1 -0
- package/dist/components/generic/FilterToggle/FilterToggle.d.ts +19 -0
- package/dist/components/generic/FilterToggle/FilterToggle.d.ts.map +1 -0
- package/dist/components/generic/FilterToggle/FilterToggle.js +51 -0
- package/dist/components/generic/FilterToggle/FilterToggle.js.map +1 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.cjs +57 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.cjs.map +1 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.d.ts +34 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.d.ts.map +1 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.js +57 -0
- package/dist/components/generic/QuickFilterChip/QuickFilterChip.js.map +1 -0
- package/dist/components/generic/SearchInput/SearchInput.cjs +1 -0
- package/dist/components/generic/SearchInput/SearchInput.cjs.map +1 -1
- package/dist/components/generic/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/generic/SearchInput/SearchInput.js +1 -0
- package/dist/components/generic/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/layout/MobileNav/MobileNav.cjs.map +1 -1
- package/dist/components/layout/MobileNav/MobileNav.d.ts +2 -2
- package/dist/components/layout/MobileNav/MobileNav.js.map +1 -1
- package/dist/components/layout/MobileNav/MobileNavHeader.cjs +20 -18
- package/dist/components/layout/MobileNav/MobileNavHeader.cjs.map +1 -1
- package/dist/components/layout/MobileNav/MobileNavHeader.d.ts +4 -4
- package/dist/components/layout/MobileNav/MobileNavHeader.d.ts.map +1 -1
- package/dist/components/layout/MobileNav/MobileNavHeader.js +21 -19
- package/dist/components/layout/MobileNav/MobileNavHeader.js.map +1 -1
- package/dist/fairmint-ui.cjs +4 -0
- package/dist/fairmint-ui.cjs.map +1 -1
- package/dist/fairmint-ui.js +4 -0
- package/dist/fairmint-ui.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.cjs +1 -1
- package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.js +1 -1
- package/dist/node_modules/prop-types/index.cjs +1 -1
- package/dist/node_modules/prop-types/index.js +1 -1
- package/package.json +1 -1
package/dist/_virtual/index3.cjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
|
|
6
|
-
module.exports = isEqual;
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
var propTypes = { exports: {} };
|
|
4
|
+
exports.__module = propTypes;
|
|
7
5
|
//# sourceMappingURL=index3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/dist/_virtual/index3.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
|
|
3
|
-
var fastDeepEqualExports = requireFastDeepEqual();
|
|
4
|
-
const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
|
|
1
|
+
var propTypes = { exports: {} };
|
|
5
2
|
export {
|
|
6
|
-
|
|
3
|
+
propTypes as __module
|
|
7
4
|
};
|
|
8
5
|
//# sourceMappingURL=index3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/_virtual/index4.cjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
const _commonjsHelpers = require("./_commonjsHelpers.cjs");
|
|
3
|
+
const index = require("../node_modules/fast-deep-equal/index.cjs");
|
|
4
|
+
var fastDeepEqualExports = index.__require();
|
|
5
|
+
const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
|
|
6
|
+
module.exports = isEqual;
|
|
5
7
|
//# sourceMappingURL=index4.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/dist/_virtual/index4.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
|
|
2
|
+
import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
|
|
3
|
+
var fastDeepEqualExports = requireFastDeepEqual();
|
|
4
|
+
const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
|
|
2
5
|
export {
|
|
3
|
-
|
|
6
|
+
isEqual as default
|
|
4
7
|
};
|
|
5
8
|
//# sourceMappingURL=index4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const colors = require("../../../theme/colors.cjs");
|
|
5
|
+
const ActionIcon = require("../../primitives/ActionIcon/ActionIcon.cjs");
|
|
6
|
+
const Tooltip = require("../../primitives/Tooltip/Tooltip.cjs");
|
|
7
|
+
const defaultFilterIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
8
|
+
"svg",
|
|
9
|
+
{
|
|
10
|
+
width: "18",
|
|
11
|
+
height: "18",
|
|
12
|
+
viewBox: "0 0 24 24",
|
|
13
|
+
fill: "none",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
strokeWidth: "2",
|
|
16
|
+
strokeLinecap: "round",
|
|
17
|
+
strokeLinejoin: "round",
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22 3H2l8 9.46V19l4 2v-8.54L22 3z" })
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
function FilterToggle({
|
|
23
|
+
open = false,
|
|
24
|
+
active = false,
|
|
25
|
+
label = "Filters",
|
|
26
|
+
icon,
|
|
27
|
+
onClick,
|
|
28
|
+
size = 36,
|
|
29
|
+
radius = "md",
|
|
30
|
+
"aria-label": ariaLabel,
|
|
31
|
+
...rest
|
|
32
|
+
}) {
|
|
33
|
+
const highlighted = open || active;
|
|
34
|
+
const resolvedLabel = ariaLabel ?? (active ? `${label}, filters applied` : label);
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { label, withArrow: true, position: "top", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
+
ActionIcon.ActionIcon,
|
|
37
|
+
{
|
|
38
|
+
...rest,
|
|
39
|
+
"aria-expanded": open,
|
|
40
|
+
"aria-label": resolvedLabel,
|
|
41
|
+
color: highlighted ? void 0 : colors.colors.neutral,
|
|
42
|
+
onClick,
|
|
43
|
+
radius,
|
|
44
|
+
size,
|
|
45
|
+
variant: highlighted ? "light" : "subtle",
|
|
46
|
+
children: icon ?? defaultFilterIcon
|
|
47
|
+
}
|
|
48
|
+
) });
|
|
49
|
+
}
|
|
50
|
+
exports.FilterToggle = FilterToggle;
|
|
51
|
+
//# sourceMappingURL=FilterToggle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterToggle.cjs","sources":["../../../../src/components/generic/FilterToggle/FilterToggle.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon, type ActionIconProps } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Tooltip } from \"../../primitives/Tooltip/Tooltip\";\n\nexport interface FilterToggleProps\n extends Omit<\n ActionIconProps,\n \"children\" | \"variant\" | \"color\" | \"aria-expanded\" | \"aria-pressed\"\n > {\n /** Whether the filters panel is open. */\n open?: boolean;\n /** Whether any filter is currently applied (highlights even when closed). */\n active?: boolean;\n /** Tooltip and accessible name. @default \"Filters\" */\n label?: string;\n /** Icon rendered inside the button. @default outlined filter SVG */\n icon?: ReactNode;\n}\n\nconst defaultFilterIcon = (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\" />\n </svg>\n);\n\n/**\n * Filter icon button for list/search toolbars.\n * Pair with a caller-owned `Collapse` for the filter panel — this control only\n * standardizes the toggle chrome (idle / open / active).\n */\nexport function FilterToggle({\n open = false,\n active = false,\n label = \"Filters\",\n icon,\n onClick,\n size = 36,\n radius = \"md\",\n \"aria-label\": ariaLabel,\n ...rest\n}: FilterToggleProps) {\n const highlighted = open || active;\n const resolvedLabel = ariaLabel ?? (active ? `${label}, filters applied` : label);\n\n return (\n <Tooltip label={label} withArrow position=\"top\">\n <ActionIcon\n {...rest}\n aria-expanded={open}\n aria-label={resolvedLabel}\n color={highlighted ? undefined : colors.neutral}\n onClick={onClick}\n radius={radius}\n size={size}\n variant={highlighted ? \"light\" : \"subtle\"}\n >\n {icon ?? defaultFilterIcon}\n </ActionIcon>\n </Tooltip>\n );\n}\n"],"names":["jsx","Tooltip","ActionIcon","colors"],"mappings":";;;;;;AAoBA,MAAM,oBACJA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAAA,2BAAAA,IAAC,QAAA,EAAK,GAAE,oCAAA,CAAoC;AAAA,EAAA;AAC9C;AAQK,SAAS,aAAa;AAAA,EAC3B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,cAAc;AAAA,EACd,GAAG;AACL,GAAsB;AACpB,QAAM,cAAc,QAAQ;AAC5B,QAAM,gBAAgB,cAAc,SAAS,GAAG,KAAK,sBAAsB;AAE3E,wCACGC,iBAAA,EAAQ,OAAc,WAAS,MAAC,UAAS,OACxC,UAAAD,2BAAAA;AAAAA,IAACE,WAAAA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,iBAAe;AAAA,MACf,cAAY;AAAA,MACZ,OAAO,cAAc,SAAYC,OAAAA,OAAO;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,cAAc,UAAU;AAAA,MAEhC,UAAA,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEb;AAEJ;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ActionIconProps } from '../../primitives/ActionIcon/ActionIcon';
|
|
3
|
+
export interface FilterToggleProps extends Omit<ActionIconProps, "children" | "variant" | "color" | "aria-expanded" | "aria-pressed"> {
|
|
4
|
+
/** Whether the filters panel is open. */
|
|
5
|
+
open?: boolean;
|
|
6
|
+
/** Whether any filter is currently applied (highlights even when closed). */
|
|
7
|
+
active?: boolean;
|
|
8
|
+
/** Tooltip and accessible name. @default "Filters" */
|
|
9
|
+
label?: string;
|
|
10
|
+
/** Icon rendered inside the button. @default outlined filter SVG */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Filter icon button for list/search toolbars.
|
|
15
|
+
* Pair with a caller-owned `Collapse` for the filter panel — this control only
|
|
16
|
+
* standardizes the toggle chrome (idle / open / active).
|
|
17
|
+
*/
|
|
18
|
+
export declare function FilterToggle({ open, active, label, icon, onClick, size, radius, "aria-label": ariaLabel, ...rest }: FilterToggleProps): import("react").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=FilterToggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterToggle.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/FilterToggle/FilterToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAG1F,MAAM,WAAW,iBACf,SAAQ,IAAI,CACV,eAAe,EACf,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CACpE;IACD,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAkBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAY,EACZ,MAAc,EACd,KAAiB,EACjB,IAAI,EACJ,OAAO,EACP,IAAS,EACT,MAAa,EACb,YAAY,EAAE,SAAS,EACvB,GAAG,IAAI,EACR,EAAE,iBAAiB,+BAoBnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { colors } from "../../../theme/colors.js";
|
|
3
|
+
import { ActionIcon } from "../../primitives/ActionIcon/ActionIcon.js";
|
|
4
|
+
import { Tooltip } from "../../primitives/Tooltip/Tooltip.js";
|
|
5
|
+
const defaultFilterIcon = /* @__PURE__ */ jsx(
|
|
6
|
+
"svg",
|
|
7
|
+
{
|
|
8
|
+
width: "18",
|
|
9
|
+
height: "18",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
fill: "none",
|
|
12
|
+
stroke: "currentColor",
|
|
13
|
+
strokeWidth: "2",
|
|
14
|
+
strokeLinecap: "round",
|
|
15
|
+
strokeLinejoin: "round",
|
|
16
|
+
"aria-hidden": "true",
|
|
17
|
+
children: /* @__PURE__ */ jsx("path", { d: "M22 3H2l8 9.46V19l4 2v-8.54L22 3z" })
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
function FilterToggle({
|
|
21
|
+
open = false,
|
|
22
|
+
active = false,
|
|
23
|
+
label = "Filters",
|
|
24
|
+
icon,
|
|
25
|
+
onClick,
|
|
26
|
+
size = 36,
|
|
27
|
+
radius = "md",
|
|
28
|
+
"aria-label": ariaLabel,
|
|
29
|
+
...rest
|
|
30
|
+
}) {
|
|
31
|
+
const highlighted = open || active;
|
|
32
|
+
const resolvedLabel = ariaLabel ?? (active ? `${label}, filters applied` : label);
|
|
33
|
+
return /* @__PURE__ */ jsx(Tooltip, { label, withArrow: true, position: "top", children: /* @__PURE__ */ jsx(
|
|
34
|
+
ActionIcon,
|
|
35
|
+
{
|
|
36
|
+
...rest,
|
|
37
|
+
"aria-expanded": open,
|
|
38
|
+
"aria-label": resolvedLabel,
|
|
39
|
+
color: highlighted ? void 0 : colors.neutral,
|
|
40
|
+
onClick,
|
|
41
|
+
radius,
|
|
42
|
+
size,
|
|
43
|
+
variant: highlighted ? "light" : "subtle",
|
|
44
|
+
children: icon ?? defaultFilterIcon
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
FilterToggle
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=FilterToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterToggle.js","sources":["../../../../src/components/generic/FilterToggle/FilterToggle.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon, type ActionIconProps } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Tooltip } from \"../../primitives/Tooltip/Tooltip\";\n\nexport interface FilterToggleProps\n extends Omit<\n ActionIconProps,\n \"children\" | \"variant\" | \"color\" | \"aria-expanded\" | \"aria-pressed\"\n > {\n /** Whether the filters panel is open. */\n open?: boolean;\n /** Whether any filter is currently applied (highlights even when closed). */\n active?: boolean;\n /** Tooltip and accessible name. @default \"Filters\" */\n label?: string;\n /** Icon rendered inside the button. @default outlined filter SVG */\n icon?: ReactNode;\n}\n\nconst defaultFilterIcon = (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\" />\n </svg>\n);\n\n/**\n * Filter icon button for list/search toolbars.\n * Pair with a caller-owned `Collapse` for the filter panel — this control only\n * standardizes the toggle chrome (idle / open / active).\n */\nexport function FilterToggle({\n open = false,\n active = false,\n label = \"Filters\",\n icon,\n onClick,\n size = 36,\n radius = \"md\",\n \"aria-label\": ariaLabel,\n ...rest\n}: FilterToggleProps) {\n const highlighted = open || active;\n const resolvedLabel = ariaLabel ?? (active ? `${label}, filters applied` : label);\n\n return (\n <Tooltip label={label} withArrow position=\"top\">\n <ActionIcon\n {...rest}\n aria-expanded={open}\n aria-label={resolvedLabel}\n color={highlighted ? undefined : colors.neutral}\n onClick={onClick}\n radius={radius}\n size={size}\n variant={highlighted ? \"light\" : \"subtle\"}\n >\n {icon ?? defaultFilterIcon}\n </ActionIcon>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":";;;;AAoBA,MAAM,oBACJ;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA,oBAAC,QAAA,EAAK,GAAE,oCAAA,CAAoC;AAAA,EAAA;AAC9C;AAQK,SAAS,aAAa;AAAA,EAC3B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,cAAc;AAAA,EACd,GAAG;AACL,GAAsB;AACpB,QAAM,cAAc,QAAQ;AAC5B,QAAM,gBAAgB,cAAc,SAAS,GAAG,KAAK,sBAAsB;AAE3E,6BACG,SAAA,EAAQ,OAAc,WAAS,MAAC,UAAS,OACxC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,iBAAe;AAAA,MACf,cAAY;AAAA,MACZ,OAAO,cAAc,SAAY,OAAO;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,cAAc,UAAU;AAAA,MAEhC,UAAA,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEb;AAEJ;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const colors = require("../../../theme/colors.cjs");
|
|
6
|
+
const Badge = require("../../primitives/Badge/Badge.cjs");
|
|
7
|
+
const UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
|
|
8
|
+
const QuickFilterChip = React.forwardRef(
|
|
9
|
+
function QuickFilterChip2({
|
|
10
|
+
label,
|
|
11
|
+
count,
|
|
12
|
+
active = false,
|
|
13
|
+
onClick,
|
|
14
|
+
icon,
|
|
15
|
+
color = colors.colors.warning,
|
|
16
|
+
radius = "sm",
|
|
17
|
+
size = "lg",
|
|
18
|
+
style,
|
|
19
|
+
className,
|
|
20
|
+
disabled,
|
|
21
|
+
"aria-label": ariaLabel
|
|
22
|
+
}, ref) {
|
|
23
|
+
const displayLabel = typeof count === "number" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24
|
+
count,
|
|
25
|
+
" ",
|
|
26
|
+
label
|
|
27
|
+
] }) : label;
|
|
28
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
UnstyledButton.UnstyledButton,
|
|
30
|
+
{
|
|
31
|
+
"aria-label": ariaLabel,
|
|
32
|
+
"aria-pressed": active,
|
|
33
|
+
className,
|
|
34
|
+
disabled,
|
|
35
|
+
onClick,
|
|
36
|
+
ref,
|
|
37
|
+
style: { cursor: disabled ? void 0 : "pointer", ...style },
|
|
38
|
+
type: "button",
|
|
39
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
40
|
+
Badge.Badge,
|
|
41
|
+
{
|
|
42
|
+
color,
|
|
43
|
+
leftSection: icon,
|
|
44
|
+
radius,
|
|
45
|
+
size,
|
|
46
|
+
style: { pointerEvents: "none" },
|
|
47
|
+
styles: { label: { textTransform: "none" } },
|
|
48
|
+
variant: active ? "filled" : "light",
|
|
49
|
+
children: displayLabel
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
exports.QuickFilterChip = QuickFilterChip;
|
|
57
|
+
//# sourceMappingURL=QuickFilterChip.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickFilterChip.cjs","sources":["../../../../src/components/generic/QuickFilterChip/QuickFilterChip.tsx"],"sourcesContent":["import { type CSSProperties, forwardRef, type ReactNode } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { Badge, type BadgeProps } from \"../../primitives/Badge/Badge\";\nimport { UnstyledButton } from \"../../primitives/layout\";\n\nexport interface QuickFilterChipProps {\n /** Chip label. When `count` is set, rendered as `{count} {label}`. */\n label: ReactNode;\n /** Optional count prefix shown before the label. */\n count?: number;\n /** Whether this quick filter is currently applied. */\n active?: boolean;\n /** Click handler — typically toggles the filter on/off. */\n onClick: () => void;\n /** Leading icon (e.g. alert triangle). */\n icon?: ReactNode;\n /** Badge color. @default warning (orange attention styling) */\n color?: BadgeProps[\"color\"];\n /** Badge radius. @default \"sm\" */\n radius?: BadgeProps[\"radius\"];\n /** Badge size. @default \"lg\" */\n size?: BadgeProps[\"size\"];\n /** Root button class name. */\n className?: string;\n /** Root button style. */\n style?: CSSProperties;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible name override. Defaults to the text content of `label`. */\n \"aria-label\"?: string;\n}\n\n/**\n * Pressable chip for one-click list filters (needs attention, drafts, review, etc.).\n * Uses Fairmint Badge chrome — not MUI Chip.\n */\nexport const QuickFilterChip = forwardRef<HTMLButtonElement, QuickFilterChipProps>(\n function QuickFilterChip(\n {\n label,\n count,\n active = false,\n onClick,\n icon,\n color = colors.warning,\n radius = \"sm\",\n size = \"lg\",\n style,\n className,\n disabled,\n \"aria-label\": ariaLabel,\n },\n ref,\n ) {\n const displayLabel =\n typeof count === \"number\" ? (\n <>\n {count} {label}\n </>\n ) : (\n label\n );\n\n return (\n <UnstyledButton\n aria-label={ariaLabel}\n aria-pressed={active}\n className={className}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n style={{ cursor: disabled ? undefined : \"pointer\", ...style }}\n type=\"button\"\n >\n <Badge\n color={color}\n leftSection={icon}\n radius={radius}\n size={size}\n style={{ pointerEvents: \"none\" }}\n styles={{ label: { textTransform: \"none\" } }}\n variant={active ? \"filled\" : \"light\"}\n >\n {displayLabel}\n </Badge>\n </UnstyledButton>\n );\n },\n);\n"],"names":["forwardRef","QuickFilterChip","colors","jsxs","Fragment","jsx","UnstyledButton","Badge"],"mappings":";;;;;;;AAoCO,MAAM,kBAAkBA,MAAAA;AAAAA,EAC7B,SAASC,iBACP;AAAA,IACE;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,QAAQC,OAAAA,OAAO;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAAA,GAEhB,KACA;AACA,UAAM,eACJ,OAAO,UAAU,WACfC,2BAAAA,KAAAC,WAAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MAAM;AAAA,MAAE;AAAA,IAAA,EAAA,CACX,IAEA;AAGJ,WACEC,2BAAAA;AAAAA,MAACC,eAAAA;AAAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,gBAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,EAAE,QAAQ,WAAW,SAAY,WAAW,GAAG,MAAA;AAAA,QACtD,MAAK;AAAA,QAEL,UAAAD,2BAAAA;AAAAA,UAACE,MAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,aAAa;AAAA,YACb;AAAA,YACA;AAAA,YACA,OAAO,EAAE,eAAe,OAAA;AAAA,YACxB,QAAQ,EAAE,OAAO,EAAE,eAAe,SAAO;AAAA,YACzC,SAAS,SAAS,WAAW;AAAA,YAE5B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAGN;AACF;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { BadgeProps } from '../../primitives/Badge/Badge';
|
|
3
|
+
export interface QuickFilterChipProps {
|
|
4
|
+
/** Chip label. When `count` is set, rendered as `{count} {label}`. */
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
/** Optional count prefix shown before the label. */
|
|
7
|
+
count?: number;
|
|
8
|
+
/** Whether this quick filter is currently applied. */
|
|
9
|
+
active?: boolean;
|
|
10
|
+
/** Click handler — typically toggles the filter on/off. */
|
|
11
|
+
onClick: () => void;
|
|
12
|
+
/** Leading icon (e.g. alert triangle). */
|
|
13
|
+
icon?: ReactNode;
|
|
14
|
+
/** Badge color. @default warning (orange attention styling) */
|
|
15
|
+
color?: BadgeProps["color"];
|
|
16
|
+
/** Badge radius. @default "sm" */
|
|
17
|
+
radius?: BadgeProps["radius"];
|
|
18
|
+
/** Badge size. @default "lg" */
|
|
19
|
+
size?: BadgeProps["size"];
|
|
20
|
+
/** Root button class name. */
|
|
21
|
+
className?: string;
|
|
22
|
+
/** Root button style. */
|
|
23
|
+
style?: CSSProperties;
|
|
24
|
+
/** Disables the control. */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/** Accessible name override. Defaults to the text content of `label`. */
|
|
27
|
+
"aria-label"?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pressable chip for one-click list filters (needs attention, drafts, review, etc.).
|
|
31
|
+
* Uses Fairmint Badge chrome — not MUI Chip.
|
|
32
|
+
*/
|
|
33
|
+
export declare const QuickFilterChip: import('react').ForwardRefExoticComponent<QuickFilterChipProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
34
|
+
//# sourceMappingURL=QuickFilterChip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickFilterChip.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/QuickFilterChip/QuickFilterChip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,KAAK,EAAE,SAAS,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,kCAAkC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,gCAAgC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,oHAoD3B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { colors } from "../../../theme/colors.js";
|
|
4
|
+
import { Badge } from "../../primitives/Badge/Badge.js";
|
|
5
|
+
import { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
|
|
6
|
+
const QuickFilterChip = forwardRef(
|
|
7
|
+
function QuickFilterChip2({
|
|
8
|
+
label,
|
|
9
|
+
count,
|
|
10
|
+
active = false,
|
|
11
|
+
onClick,
|
|
12
|
+
icon,
|
|
13
|
+
color = colors.warning,
|
|
14
|
+
radius = "sm",
|
|
15
|
+
size = "lg",
|
|
16
|
+
style,
|
|
17
|
+
className,
|
|
18
|
+
disabled,
|
|
19
|
+
"aria-label": ariaLabel
|
|
20
|
+
}, ref) {
|
|
21
|
+
const displayLabel = typeof count === "number" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
+
count,
|
|
23
|
+
" ",
|
|
24
|
+
label
|
|
25
|
+
] }) : label;
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
UnstyledButton,
|
|
28
|
+
{
|
|
29
|
+
"aria-label": ariaLabel,
|
|
30
|
+
"aria-pressed": active,
|
|
31
|
+
className,
|
|
32
|
+
disabled,
|
|
33
|
+
onClick,
|
|
34
|
+
ref,
|
|
35
|
+
style: { cursor: disabled ? void 0 : "pointer", ...style },
|
|
36
|
+
type: "button",
|
|
37
|
+
children: /* @__PURE__ */ jsx(
|
|
38
|
+
Badge,
|
|
39
|
+
{
|
|
40
|
+
color,
|
|
41
|
+
leftSection: icon,
|
|
42
|
+
radius,
|
|
43
|
+
size,
|
|
44
|
+
style: { pointerEvents: "none" },
|
|
45
|
+
styles: { label: { textTransform: "none" } },
|
|
46
|
+
variant: active ? "filled" : "light",
|
|
47
|
+
children: displayLabel
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
export {
|
|
55
|
+
QuickFilterChip
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=QuickFilterChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickFilterChip.js","sources":["../../../../src/components/generic/QuickFilterChip/QuickFilterChip.tsx"],"sourcesContent":["import { type CSSProperties, forwardRef, type ReactNode } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { Badge, type BadgeProps } from \"../../primitives/Badge/Badge\";\nimport { UnstyledButton } from \"../../primitives/layout\";\n\nexport interface QuickFilterChipProps {\n /** Chip label. When `count` is set, rendered as `{count} {label}`. */\n label: ReactNode;\n /** Optional count prefix shown before the label. */\n count?: number;\n /** Whether this quick filter is currently applied. */\n active?: boolean;\n /** Click handler — typically toggles the filter on/off. */\n onClick: () => void;\n /** Leading icon (e.g. alert triangle). */\n icon?: ReactNode;\n /** Badge color. @default warning (orange attention styling) */\n color?: BadgeProps[\"color\"];\n /** Badge radius. @default \"sm\" */\n radius?: BadgeProps[\"radius\"];\n /** Badge size. @default \"lg\" */\n size?: BadgeProps[\"size\"];\n /** Root button class name. */\n className?: string;\n /** Root button style. */\n style?: CSSProperties;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible name override. Defaults to the text content of `label`. */\n \"aria-label\"?: string;\n}\n\n/**\n * Pressable chip for one-click list filters (needs attention, drafts, review, etc.).\n * Uses Fairmint Badge chrome — not MUI Chip.\n */\nexport const QuickFilterChip = forwardRef<HTMLButtonElement, QuickFilterChipProps>(\n function QuickFilterChip(\n {\n label,\n count,\n active = false,\n onClick,\n icon,\n color = colors.warning,\n radius = \"sm\",\n size = \"lg\",\n style,\n className,\n disabled,\n \"aria-label\": ariaLabel,\n },\n ref,\n ) {\n const displayLabel =\n typeof count === \"number\" ? (\n <>\n {count} {label}\n </>\n ) : (\n label\n );\n\n return (\n <UnstyledButton\n aria-label={ariaLabel}\n aria-pressed={active}\n className={className}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n style={{ cursor: disabled ? undefined : \"pointer\", ...style }}\n type=\"button\"\n >\n <Badge\n color={color}\n leftSection={icon}\n radius={radius}\n size={size}\n style={{ pointerEvents: \"none\" }}\n styles={{ label: { textTransform: \"none\" } }}\n variant={active ? \"filled\" : \"light\"}\n >\n {displayLabel}\n </Badge>\n </UnstyledButton>\n );\n },\n);\n"],"names":["QuickFilterChip"],"mappings":";;;;;AAoCO,MAAM,kBAAkB;AAAA,EAC7B,SAASA,iBACP;AAAA,IACE;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAAA,GAEhB,KACA;AACA,UAAM,eACJ,OAAO,UAAU,WACf,qBAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MAAM;AAAA,MAAE;AAAA,IAAA,EAAA,CACX,IAEA;AAGJ,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,gBAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,EAAE,QAAQ,WAAW,SAAY,WAAW,GAAG,MAAA;AAAA,QACtD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,aAAa;AAAA,YACb;AAAA,YACA;AAAA,YACA,OAAO,EAAE,eAAe,OAAA;AAAA,YACxB,QAAQ,EAAE,OAAO,EAAE,eAAe,SAAO;AAAA,YACzC,SAAS,SAAS,WAAW;AAAA,YAE5B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAGN;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInput.cjs","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { useDebouncedValue } from \"../../primitives/layout\";\nimport { TextInput, type TextInputProps } from \"../../primitives/TextInput/TextInput\";\n\nexport interface SearchInputProps extends Omit<TextInputProps, \"onChange\" | \"value\"> {\n /** Current search value (controlled). */\n value: string;\n /** Called with the debounced value after `debounceMs`. */\n onChange: (value: string) => void;\n /** Debounce delay in ms. @default 300 */\n debounceMs?: number;\n /** Left section icon. @default search icon SVG */\n searchIcon?: ReactNode;\n /** Clear button icon. @default × */\n clearIcon?: ReactNode;\n}\n\nexport function SearchInput({\n value,\n onChange,\n debounceMs = 300,\n searchIcon,\n clearIcon,\n placeholder = \"Search...\",\n ...rest\n}: SearchInputProps) {\n const [localValue, setLocalValue] = useState(value);\n const [debounced] = useDebouncedValue(localValue, debounceMs);\n const mounted = useRef(false);\n // Track the last value already reflected in the parent's `value` prop so we\n // never re-emit a stale debounced value after Clear (or after an external\n // `value` change) — the previous `skipNextDebounce` flag swallowed the *next*\n // debounced emit, which dropped pasted queries when `onChange` was a stable\n // callback (see ENG-535 regression test).\n const lastEmitted = useRef(value);\n // Keep `onChange` out of the emit effect deps. An inline callback would\n // otherwise re-run the effect on every parent render and restore a stale\n // `debounced`/`localValue` pair after an external `value` reset.\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => {\n setLocalValue(value);\n lastEmitted.current = value;\n }, [value]);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n // `debounced` lags `localValue`. Emitting while they disagree restores a\n // stale query — especially right after Clear, before the debounce catches up.\n if (debounced !== localValue) return;\n if (debounced === lastEmitted.current) return;\n lastEmitted.current = debounced;\n onChangeRef.current(debounced);\n }, [debounced, localValue]);\n\n const handleClear = () => {\n setLocalValue(\"\");\n lastEmitted.current = \"\";\n onChange(\"\");\n };\n\n const defaultSearchIcon = (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n\n return (\n <TextInput\n value={localValue}\n onChange={(e) => setLocalValue(e.currentTarget.value)}\n placeholder={placeholder}\n leftSection={searchIcon ?? defaultSearchIcon}\n rightSection={\n localValue ? (\n <ActionIcon\n variant=\"subtle\"\n color={colors.neutral}\n size=\"sm\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n {clearIcon ?? \"×\"}\n </ActionIcon>\n ) : null\n }\n {...rest}\n />\n );\n}\n"],"names":["useState","useDebouncedValue","useRef","useEffect","jsxs","jsx","TextInput","ActionIcon","colors"],"mappings":";;;;;;;;AAmBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAClD,QAAM,CAAC,SAAS,IAAIC,oCAAkB,YAAY,UAAU;AAC5D,QAAM,UAAUC,MAAAA,OAAO,KAAK;AAM5B,QAAM,cAAcA,MAAAA,OAAO,KAAK;AAIhC,QAAM,cAAcA,MAAAA,OAAO,QAAQ;AACnC,cAAY,UAAU;AAEtBC,QAAAA,UAAU,MAAM;AACd,kBAAc,KAAK;AACnB,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,KAAK,CAAC;AAEVA,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC,QAAQ,SAAS;AACpB,cAAQ,UAAU;AAClB;AAAA,IACF;AAGA,QAAI,cAAc,WAAY;AAC9B,QAAI,cAAc,YAAY,QAAS;AACvC,gBAAY,UAAU;AACtB,gBAAY,QAAQ,SAAS;AAAA,EAC/B,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,cAAc,MAAM;AACxB,kBAAc,EAAE;AAChB,gBAAY,UAAU;AACtB,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,oBACJC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAAC,+BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,QAC9BA,2BAAAA,IAAC,QAAA,EAAK,GAAE,mBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI/B,SACEA,2BAAAA;AAAAA,IAACC,UAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,EAAE,cAAc,KAAK;AAAA,MACpD;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,cACE,aACED,2BAAAA;AAAAA,QAACE,WAAAA;AAAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAOC,OAAAA,OAAO;AAAA,UACd,MAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAW;AAAA,UAEV,UAAA,aAAa;AAAA,QAAA;AAAA,MAAA,IAEd;AAAA,MAEL,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;;"}
|
|
1
|
+
{"version":3,"file":"SearchInput.cjs","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { useDebouncedValue } from \"../../primitives/layout\";\nimport { TextInput, type TextInputProps } from \"../../primitives/TextInput/TextInput\";\n\nexport interface SearchInputProps extends Omit<TextInputProps, \"onChange\" | \"value\"> {\n /** Current search value (controlled). */\n value: string;\n /** Called with the debounced value after `debounceMs`. */\n onChange: (value: string) => void;\n /** Debounce delay in ms. @default 300 */\n debounceMs?: number;\n /** Left section icon. @default search icon SVG */\n searchIcon?: ReactNode;\n /** Clear button icon. @default × */\n clearIcon?: ReactNode;\n}\n\nexport function SearchInput({\n value,\n onChange,\n debounceMs = 300,\n searchIcon,\n clearIcon,\n placeholder = \"Search...\",\n ...rest\n}: SearchInputProps) {\n const [localValue, setLocalValue] = useState(value);\n const [debounced] = useDebouncedValue(localValue, debounceMs);\n const mounted = useRef(false);\n // Track the last value already reflected in the parent's `value` prop so we\n // never re-emit a stale debounced value after Clear (or after an external\n // `value` change) — the previous `skipNextDebounce` flag swallowed the *next*\n // debounced emit, which dropped pasted queries when `onChange` was a stable\n // callback (see ENG-535 regression test).\n const lastEmitted = useRef(value);\n // Keep `onChange` out of the emit effect deps. An inline callback would\n // otherwise re-run the effect on every parent render and restore a stale\n // `debounced`/`localValue` pair after an external `value` reset.\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => {\n setLocalValue(value);\n lastEmitted.current = value;\n }, [value]);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n // `debounced` lags `localValue`. Emitting while they disagree restores a\n // stale query — especially right after Clear, before the debounce catches up.\n if (debounced !== localValue) return;\n if (debounced === lastEmitted.current) return;\n lastEmitted.current = debounced;\n onChangeRef.current(debounced);\n }, [debounced, localValue]);\n\n const handleClear = () => {\n setLocalValue(\"\");\n lastEmitted.current = \"\";\n onChange(\"\");\n };\n\n const defaultSearchIcon = (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n\n return (\n <TextInput\n size=\"sm\"\n value={localValue}\n onChange={(e) => setLocalValue(e.currentTarget.value)}\n placeholder={placeholder}\n leftSection={searchIcon ?? defaultSearchIcon}\n rightSection={\n localValue ? (\n <ActionIcon\n variant=\"subtle\"\n color={colors.neutral}\n size=\"sm\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n {clearIcon ?? \"×\"}\n </ActionIcon>\n ) : null\n }\n {...rest}\n />\n );\n}\n"],"names":["useState","useDebouncedValue","useRef","useEffect","jsxs","jsx","TextInput","ActionIcon","colors"],"mappings":";;;;;;;;AAmBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAS,KAAK;AAClD,QAAM,CAAC,SAAS,IAAIC,oCAAkB,YAAY,UAAU;AAC5D,QAAM,UAAUC,MAAAA,OAAO,KAAK;AAM5B,QAAM,cAAcA,MAAAA,OAAO,KAAK;AAIhC,QAAM,cAAcA,MAAAA,OAAO,QAAQ;AACnC,cAAY,UAAU;AAEtBC,QAAAA,UAAU,MAAM;AACd,kBAAc,KAAK;AACnB,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,KAAK,CAAC;AAEVA,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC,QAAQ,SAAS;AACpB,cAAQ,UAAU;AAClB;AAAA,IACF;AAGA,QAAI,cAAc,WAAY;AAC9B,QAAI,cAAc,YAAY,QAAS;AACvC,gBAAY,UAAU;AACtB,gBAAY,QAAQ,SAAS;AAAA,EAC/B,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,cAAc,MAAM;AACxB,kBAAc,EAAE;AAChB,gBAAY,UAAU;AACtB,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,oBACJC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAAC,+BAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,QAC9BA,2BAAAA,IAAC,QAAA,EAAK,GAAE,mBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI/B,SACEA,2BAAAA;AAAAA,IAACC,UAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,EAAE,cAAc,KAAK;AAAA,MACpD;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,cACE,aACED,2BAAAA;AAAAA,QAACE,WAAAA;AAAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAOC,OAAAA,OAAO;AAAA,UACd,MAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAW;AAAA,UAEV,UAAA,aAAa;AAAA,QAAA;AAAA,MAAA,IAEd;AAAA,MAEL,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAIpE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IAClF,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,UAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAyB,EACzB,GAAG,IAAI,EACR,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAIpE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IAClF,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,UAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAyB,EACzB,GAAG,IAAI,EACR,EAAE,gBAAgB,+BAgFlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInput.js","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { useDebouncedValue } from \"../../primitives/layout\";\nimport { TextInput, type TextInputProps } from \"../../primitives/TextInput/TextInput\";\n\nexport interface SearchInputProps extends Omit<TextInputProps, \"onChange\" | \"value\"> {\n /** Current search value (controlled). */\n value: string;\n /** Called with the debounced value after `debounceMs`. */\n onChange: (value: string) => void;\n /** Debounce delay in ms. @default 300 */\n debounceMs?: number;\n /** Left section icon. @default search icon SVG */\n searchIcon?: ReactNode;\n /** Clear button icon. @default × */\n clearIcon?: ReactNode;\n}\n\nexport function SearchInput({\n value,\n onChange,\n debounceMs = 300,\n searchIcon,\n clearIcon,\n placeholder = \"Search...\",\n ...rest\n}: SearchInputProps) {\n const [localValue, setLocalValue] = useState(value);\n const [debounced] = useDebouncedValue(localValue, debounceMs);\n const mounted = useRef(false);\n // Track the last value already reflected in the parent's `value` prop so we\n // never re-emit a stale debounced value after Clear (or after an external\n // `value` change) — the previous `skipNextDebounce` flag swallowed the *next*\n // debounced emit, which dropped pasted queries when `onChange` was a stable\n // callback (see ENG-535 regression test).\n const lastEmitted = useRef(value);\n // Keep `onChange` out of the emit effect deps. An inline callback would\n // otherwise re-run the effect on every parent render and restore a stale\n // `debounced`/`localValue` pair after an external `value` reset.\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => {\n setLocalValue(value);\n lastEmitted.current = value;\n }, [value]);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n // `debounced` lags `localValue`. Emitting while they disagree restores a\n // stale query — especially right after Clear, before the debounce catches up.\n if (debounced !== localValue) return;\n if (debounced === lastEmitted.current) return;\n lastEmitted.current = debounced;\n onChangeRef.current(debounced);\n }, [debounced, localValue]);\n\n const handleClear = () => {\n setLocalValue(\"\");\n lastEmitted.current = \"\";\n onChange(\"\");\n };\n\n const defaultSearchIcon = (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n\n return (\n <TextInput\n value={localValue}\n onChange={(e) => setLocalValue(e.currentTarget.value)}\n placeholder={placeholder}\n leftSection={searchIcon ?? defaultSearchIcon}\n rightSection={\n localValue ? (\n <ActionIcon\n variant=\"subtle\"\n color={colors.neutral}\n size=\"sm\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n {clearIcon ?? \"×\"}\n </ActionIcon>\n ) : null\n }\n {...rest}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;AAmBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,SAAS,IAAI,kBAAkB,YAAY,UAAU;AAC5D,QAAM,UAAU,OAAO,KAAK;AAM5B,QAAM,cAAc,OAAO,KAAK;AAIhC,QAAM,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AAEtB,YAAU,MAAM;AACd,kBAAc,KAAK;AACnB,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,KAAK,CAAC;AAEV,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,SAAS;AACpB,cAAQ,UAAU;AAClB;AAAA,IACF;AAGA,QAAI,cAAc,WAAY;AAC9B,QAAI,cAAc,YAAY,QAAS;AACvC,gBAAY,UAAU;AACtB,gBAAY,QAAQ,SAAS;AAAA,EAC/B,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,cAAc,MAAM;AACxB,kBAAc,EAAE;AAChB,gBAAY,UAAU;AACtB,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,oBACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,QAC9B,oBAAC,QAAA,EAAK,GAAE,mBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI/B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,EAAE,cAAc,KAAK;AAAA,MACpD;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,cACE,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAO,OAAO;AAAA,UACd,MAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAW;AAAA,UAEV,UAAA,aAAa;AAAA,QAAA;AAAA,MAAA,IAEd;AAAA,MAEL,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
1
|
+
{"version":3,"file":"SearchInput.js","sources":["../../../../src/components/generic/SearchInput/SearchInput.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { useDebouncedValue } from \"../../primitives/layout\";\nimport { TextInput, type TextInputProps } from \"../../primitives/TextInput/TextInput\";\n\nexport interface SearchInputProps extends Omit<TextInputProps, \"onChange\" | \"value\"> {\n /** Current search value (controlled). */\n value: string;\n /** Called with the debounced value after `debounceMs`. */\n onChange: (value: string) => void;\n /** Debounce delay in ms. @default 300 */\n debounceMs?: number;\n /** Left section icon. @default search icon SVG */\n searchIcon?: ReactNode;\n /** Clear button icon. @default × */\n clearIcon?: ReactNode;\n}\n\nexport function SearchInput({\n value,\n onChange,\n debounceMs = 300,\n searchIcon,\n clearIcon,\n placeholder = \"Search...\",\n ...rest\n}: SearchInputProps) {\n const [localValue, setLocalValue] = useState(value);\n const [debounced] = useDebouncedValue(localValue, debounceMs);\n const mounted = useRef(false);\n // Track the last value already reflected in the parent's `value` prop so we\n // never re-emit a stale debounced value after Clear (or after an external\n // `value` change) — the previous `skipNextDebounce` flag swallowed the *next*\n // debounced emit, which dropped pasted queries when `onChange` was a stable\n // callback (see ENG-535 regression test).\n const lastEmitted = useRef(value);\n // Keep `onChange` out of the emit effect deps. An inline callback would\n // otherwise re-run the effect on every parent render and restore a stale\n // `debounced`/`localValue` pair after an external `value` reset.\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => {\n setLocalValue(value);\n lastEmitted.current = value;\n }, [value]);\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n // `debounced` lags `localValue`. Emitting while they disagree restores a\n // stale query — especially right after Clear, before the debounce catches up.\n if (debounced !== localValue) return;\n if (debounced === lastEmitted.current) return;\n lastEmitted.current = debounced;\n onChangeRef.current(debounced);\n }, [debounced, localValue]);\n\n const handleClear = () => {\n setLocalValue(\"\");\n lastEmitted.current = \"\";\n onChange(\"\");\n };\n\n const defaultSearchIcon = (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n\n return (\n <TextInput\n size=\"sm\"\n value={localValue}\n onChange={(e) => setLocalValue(e.currentTarget.value)}\n placeholder={placeholder}\n leftSection={searchIcon ?? defaultSearchIcon}\n rightSection={\n localValue ? (\n <ActionIcon\n variant=\"subtle\"\n color={colors.neutral}\n size=\"sm\"\n onClick={handleClear}\n aria-label=\"Clear search\"\n >\n {clearIcon ?? \"×\"}\n </ActionIcon>\n ) : null\n }\n {...rest}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;AAmBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,SAAS,IAAI,kBAAkB,YAAY,UAAU;AAC5D,QAAM,UAAU,OAAO,KAAK;AAM5B,QAAM,cAAc,OAAO,KAAK;AAIhC,QAAM,cAAc,OAAO,QAAQ;AACnC,cAAY,UAAU;AAEtB,YAAU,MAAM;AACd,kBAAc,KAAK;AACnB,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,KAAK,CAAC;AAEV,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,SAAS;AACpB,cAAQ,UAAU;AAClB;AAAA,IACF;AAGA,QAAI,cAAc,WAAY;AAC9B,QAAI,cAAc,YAAY,QAAS;AACvC,gBAAY,UAAU;AACtB,gBAAY,QAAQ,SAAS;AAAA,EAC/B,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,cAAc,MAAM;AACxB,kBAAc,EAAE;AAChB,gBAAY,UAAU;AACtB,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,oBACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,QAC9B,oBAAC,QAAA,EAAK,GAAE,mBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI/B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,cAAc,EAAE,cAAc,KAAK;AAAA,MACpD;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,cACE,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAO,OAAO;AAAA,UACd,MAAK;AAAA,UACL,SAAS;AAAA,UACT,cAAW;AAAA,UAEV,UAAA,aAAa;AAAA,QAAA;AAAA,MAAA,IAEd;AAAA,MAEL,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNav.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNav.tsx"],"sourcesContent":["import { IconChevronDown, IconX } from \"@tabler/icons-react\";\nimport { type ReactNode, useState } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\nimport { overlayZIndexAboveLegacyShell } from \"../../../theme/zIndex\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Drawer } from \"../../primitives/Drawer/Drawer\";\nimport { Box, Divider, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\nimport { getSideNavItemLabelText, type SideNavItem, type SideNavSection } from \"../SideNav/SideNav\";\nimport { MOBILE_NAV_LOGO_HEIGHT } from \"./MobileNavHeader\";\n\n/** Full-bleed mobile nav sheet width — not the 260px desktop rail. */\nexport const MOBILE_NAV_WIDTH = \"100%\";\n\n/** Minimum touch target for destination / profile rows. */\nexport const MOBILE_NAV_ROW_MIN_HEIGHT = 48;\n\nexport interface MobileNavProfile {\n /** Primary line (user name). */\n displayName: string;\n /** Secondary line (company / email). */\n subline?: string;\n /** Avatar name for initials. Defaults to `displayName`. */\n avatarName?: string;\n /** Leading avatar node. When omitted, a text fallback is shown. */\n avatar?: ReactNode;\n}\n\nexport interface MobileNavProps {\n /** Whether the navigation sheet is open. */\n opened: boolean;\n /** Close handler (backdrop / escape). */\n onClose: () => void;\n /** Flat destination list when sections are not needed. */\n items?: SideNavItem[];\n /** Grouped destinations (section labels are not rendered — same as SideNav). */\n sections?: SideNavSection[];\n /** Leaf destination selected. Parents with children only expand/collapse. */\n onItemClick: (id: string) => void;\n /** Logo / brand chrome above destinations. */\n header?: ReactNode;\n /** Primary CTA above the profile (e.g. Start / Add investment). */\n cta?: ReactNode;\n /** Profile trigger shown at the bottom. Tapping calls `onProfileClick`. */\n profile?: MobileNavProfile;\n /** Called when the profile row is pressed (typically opens AccountSheet). */\n onProfileClick?: () => void;\n /** Accessible label for the navigation landmark. @default \"Main navigation\" */\n ariaLabel?: string;\n /** Overlay z-index. @default overlayZIndexAboveLegacyShell */\n zIndex?: number;\n /**\n * Where the dismiss control sits in the header row.\n * `end` matches Studio (close on the far right). `start` keeps it beside the\n * logo so the page-header hamburger and overlay close occupy the same slot.\n * @default \"end\"\n */\n closePosition?: \"start\" | \"end\";\n}\n\nfunction MobileNavRow({\n item,\n depth,\n onItemClick,\n}: {\n item: SideNavItem;\n depth: number;\n onItemClick: (id: string) => void;\n}) {\n const hasChildren = Boolean(item.children?.length);\n const labelText = getSideNavItemLabelText(item);\n const childActive = item.children?.some((child) => child.active) ?? false;\n const [opened, setOpened] = useState(Boolean(item.open) || childActive);\n const active = Boolean(item.active) && !hasChildren;\n\n const paddingLeft = 12 + depth * 16;\n\n return (\n <Box>\n <UnstyledButton\n type=\"button\"\n disabled={item.disabled}\n aria-label={labelText}\n aria-current={active ? \"page\" : undefined}\n aria-expanded={hasChildren ? opened : undefined}\n onClick={() => {\n if (hasChildren) {\n setOpened((value) => !value);\n return;\n }\n onItemClick(item.id);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n paddingLeft,\n paddingRight: 12,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n opacity: item.disabled ? 0.5 : 1,\n backgroundColor: active ? fairmintVars.colorSurfaceSelected : \"transparent\",\n color: active ? fairmintVars.colorIconOnSurfaceSelected : fairmintVars.colorTextPrimary,\n }}\n styles={{\n root: {\n \"&:hover:not(:disabled)\": {\n backgroundColor: active\n ? fairmintVars.colorSurfaceSelected\n : fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {item.icon ? (\n <Box\n component=\"span\"\n style={{\n display: \"inline-flex\",\n color: active\n ? fairmintVars.colorIconOnSurfaceSelected\n : fairmintVars.colorIconSecondary,\n flexShrink: 0,\n }}\n >\n {item.icon}\n </Box>\n ) : null}\n <Text\n size=\"md\"\n fw={active ? 600 : 500}\n style={{\n flex: 1,\n minWidth: 0,\n color: active ? fairmintVars.colorIconOnSurfaceSelected : undefined,\n }}\n truncate\n >\n {item.label}\n </Text>\n {item.rightSection}\n {hasChildren ? (\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{\n flexShrink: 0,\n transform: opened ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n color: fairmintVars.colorIconTertiary,\n }}\n />\n ) : null}\n </UnstyledButton>\n\n {hasChildren && opened ? (\n <Stack gap={4} mt={4}>\n {item.children?.map((child) => (\n <MobileNavRow key={child.id} item={child} depth={depth + 1} onItemClick={onItemClick} />\n ))}\n </Stack>\n ) : null}\n </Box>\n );\n}\n\n/**\n * Mobile-optimized navigation sheet for product shells.\n *\n * Full-bleed left drawer with 48px touch rows, pinned CTA + profile, and an\n * always-visible close control (full-bleed leaves no backdrop to dismiss).\n * Pair `onProfileClick` with {@link AccountSheet} for Sign out.\n */\nexport function MobileNav({\n opened,\n onClose,\n items = [],\n sections,\n onItemClick,\n header,\n cta,\n profile,\n onProfileClick,\n ariaLabel = \"Main navigation\",\n zIndex = overlayZIndexAboveLegacyShell,\n closePosition = \"end\",\n}: MobileNavProps) {\n const resolvedSections = sections ?? [{ id: \"main\", items }];\n\n const handleItemClick = (id: string) => {\n onItemClick(id);\n onClose();\n };\n\n return (\n <Drawer\n opened={opened}\n onClose={onClose}\n position=\"left\"\n size={MOBILE_NAV_WIDTH}\n padding={0}\n withCloseButton={false}\n zIndex={zIndex}\n styles={{\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n },\n body: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n height: \"100%\",\n minHeight: 0,\n overflow: \"hidden\",\n padding: 0,\n },\n header: {\n display: \"none\",\n },\n }}\n >\n <Stack\n component=\"nav\"\n gap=\"md\"\n aria-label={ariaLabel}\n style={{\n height: \"100%\",\n padding: 16,\n paddingBottom: \"max(16px, env(safe-area-inset-bottom))\",\n boxSizing: \"border-box\",\n }}\n >\n <Group\n justify={closePosition === \"end\" ? \"space-between\" : \"flex-start\"}\n wrap=\"nowrap\"\n align=\"center\"\n gap=\"md\"\n style={{ flexShrink: 0, minHeight: 32 }}\n >\n <Box\n style={{\n flex: closePosition === \"end\" ? 1 : undefined,\n minWidth: 0,\n display: \"flex\",\n alignItems: \"center\",\n minHeight: MOBILE_NAV_LOGO_HEIGHT,\n }}\n >\n {header}\n </Box>\n <ActionIcon\n type=\"button\"\n aria-label=\"Close navigation\"\n color=\"gray\"\n variant=\"subtle\"\n size=\"lg\"\n onClick={onClose}\n >\n <IconX size={20} stroke={1.5} />\n </ActionIcon>\n </Group>\n\n <Stack gap={4} style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n {resolvedSections.flatMap((section) =>\n section.items.map((item) => (\n <MobileNavRow\n key={`${section.id}:${item.id}`}\n item={item}\n depth={0}\n onItemClick={handleItemClick}\n />\n )),\n )}\n </Stack>\n\n {(cta || profile) && (\n <Stack gap=\"sm\" style={{ flexShrink: 0 }}>\n {cta ? <Box style={{ width: \"100%\" }}>{cta}</Box> : null}\n {cta && profile ? <Divider color={fairmintVars.colorBorderDefault} /> : null}\n {profile ? (\n <UnstyledButton\n type=\"button\"\n aria-label=\"Account menu\"\n aria-haspopup=\"dialog\"\n onClick={onProfileClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n padding: 8,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: onProfileClick ? \"pointer\" : \"default\",\n }}\n styles={{\n root: {\n \"&:hover\": {\n backgroundColor: fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {profile.avatar}\n <Stack gap={0} style={{ minWidth: 0, flex: 1 }}>\n <Text size=\"sm\" fw={600} truncate>\n {profile.displayName}\n </Text>\n {profile.subline && profile.subline !== profile.displayName ? (\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {profile.subline}\n </Text>\n ) : null}\n </Stack>\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{ color: fairmintVars.colorIconTertiary, flexShrink: 0 }}\n />\n </UnstyledButton>\n ) : null}\n </Stack>\n )}\n </Stack>\n </Drawer>\n );\n}\n"],"names":["getSideNavItemLabelText","useState","Box","jsxs","UnstyledButton","radii","fairmintVars","jsx","Text","IconChevronDown","Stack","zIndex","overlayZIndexAboveLegacyShell","Drawer","Group","MOBILE_NAV_LOGO_HEIGHT","ActionIcon","IconX","Divider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MobileNav.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNav.tsx"],"sourcesContent":["import { IconChevronDown, IconX } from \"@tabler/icons-react\";\nimport { type ReactNode, useState } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\nimport { overlayZIndexAboveLegacyShell } from \"../../../theme/zIndex\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Drawer } from \"../../primitives/Drawer/Drawer\";\nimport { Box, Divider, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\nimport { getSideNavItemLabelText, type SideNavItem, type SideNavSection } from \"../SideNav/SideNav\";\nimport { MOBILE_NAV_LOGO_HEIGHT } from \"./MobileNavHeader\";\n\n/** Full-bleed mobile nav sheet width — not the 260px desktop rail. */\nexport const MOBILE_NAV_WIDTH = \"100%\";\n\n/** Minimum touch target for destination / profile rows. */\nexport const MOBILE_NAV_ROW_MIN_HEIGHT = 48;\n\nexport interface MobileNavProfile {\n /** Primary line (user name). */\n displayName: string;\n /** Secondary line (company / email). */\n subline?: string;\n /** Avatar name for initials. Defaults to `displayName`. */\n avatarName?: string;\n /** Leading avatar node. When omitted, a text fallback is shown. */\n avatar?: ReactNode;\n}\n\nexport interface MobileNavProps {\n /** Whether the navigation sheet is open. */\n opened: boolean;\n /** Close handler (backdrop / escape). */\n onClose: () => void;\n /** Flat destination list when sections are not needed. */\n items?: SideNavItem[];\n /** Grouped destinations (section labels are not rendered — same as SideNav). */\n sections?: SideNavSection[];\n /** Leaf destination selected. Parents with children only expand/collapse. */\n onItemClick: (id: string) => void;\n /** Logo / brand chrome above destinations. */\n header?: ReactNode;\n /** Primary CTA above the profile (e.g. Start / Add investment). */\n cta?: ReactNode;\n /** Profile trigger shown at the bottom. Tapping calls `onProfileClick`. */\n profile?: MobileNavProfile;\n /** Called when the profile row is pressed (typically opens AccountSheet). */\n onProfileClick?: () => void;\n /** Accessible label for the navigation landmark. @default \"Main navigation\" */\n ariaLabel?: string;\n /** Overlay z-index. @default overlayZIndexAboveLegacyShell */\n zIndex?: number;\n /**\n * Where the dismiss control sits in the header row.\n * `end` (default) matches the page-header hamburger on the far right.\n * `start` places close beside the logo (legacy / white-label layouts).\n * @default \"end\"\n */\n closePosition?: \"start\" | \"end\";\n}\n\nfunction MobileNavRow({\n item,\n depth,\n onItemClick,\n}: {\n item: SideNavItem;\n depth: number;\n onItemClick: (id: string) => void;\n}) {\n const hasChildren = Boolean(item.children?.length);\n const labelText = getSideNavItemLabelText(item);\n const childActive = item.children?.some((child) => child.active) ?? false;\n const [opened, setOpened] = useState(Boolean(item.open) || childActive);\n const active = Boolean(item.active) && !hasChildren;\n\n const paddingLeft = 12 + depth * 16;\n\n return (\n <Box>\n <UnstyledButton\n type=\"button\"\n disabled={item.disabled}\n aria-label={labelText}\n aria-current={active ? \"page\" : undefined}\n aria-expanded={hasChildren ? opened : undefined}\n onClick={() => {\n if (hasChildren) {\n setOpened((value) => !value);\n return;\n }\n onItemClick(item.id);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n paddingLeft,\n paddingRight: 12,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n opacity: item.disabled ? 0.5 : 1,\n backgroundColor: active ? fairmintVars.colorSurfaceSelected : \"transparent\",\n color: active ? fairmintVars.colorIconOnSurfaceSelected : fairmintVars.colorTextPrimary,\n }}\n styles={{\n root: {\n \"&:hover:not(:disabled)\": {\n backgroundColor: active\n ? fairmintVars.colorSurfaceSelected\n : fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {item.icon ? (\n <Box\n component=\"span\"\n style={{\n display: \"inline-flex\",\n color: active\n ? fairmintVars.colorIconOnSurfaceSelected\n : fairmintVars.colorIconSecondary,\n flexShrink: 0,\n }}\n >\n {item.icon}\n </Box>\n ) : null}\n <Text\n size=\"md\"\n fw={active ? 600 : 500}\n style={{\n flex: 1,\n minWidth: 0,\n color: active ? fairmintVars.colorIconOnSurfaceSelected : undefined,\n }}\n truncate\n >\n {item.label}\n </Text>\n {item.rightSection}\n {hasChildren ? (\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{\n flexShrink: 0,\n transform: opened ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n color: fairmintVars.colorIconTertiary,\n }}\n />\n ) : null}\n </UnstyledButton>\n\n {hasChildren && opened ? (\n <Stack gap={4} mt={4}>\n {item.children?.map((child) => (\n <MobileNavRow key={child.id} item={child} depth={depth + 1} onItemClick={onItemClick} />\n ))}\n </Stack>\n ) : null}\n </Box>\n );\n}\n\n/**\n * Mobile-optimized navigation sheet for product shells.\n *\n * Full-bleed left drawer with 48px touch rows, pinned CTA + profile, and an\n * always-visible close control (full-bleed leaves no backdrop to dismiss).\n * Pair `onProfileClick` with {@link AccountSheet} for Sign out.\n */\nexport function MobileNav({\n opened,\n onClose,\n items = [],\n sections,\n onItemClick,\n header,\n cta,\n profile,\n onProfileClick,\n ariaLabel = \"Main navigation\",\n zIndex = overlayZIndexAboveLegacyShell,\n closePosition = \"end\",\n}: MobileNavProps) {\n const resolvedSections = sections ?? [{ id: \"main\", items }];\n\n const handleItemClick = (id: string) => {\n onItemClick(id);\n onClose();\n };\n\n return (\n <Drawer\n opened={opened}\n onClose={onClose}\n position=\"left\"\n size={MOBILE_NAV_WIDTH}\n padding={0}\n withCloseButton={false}\n zIndex={zIndex}\n styles={{\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n },\n body: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n height: \"100%\",\n minHeight: 0,\n overflow: \"hidden\",\n padding: 0,\n },\n header: {\n display: \"none\",\n },\n }}\n >\n <Stack\n component=\"nav\"\n gap=\"md\"\n aria-label={ariaLabel}\n style={{\n height: \"100%\",\n padding: 16,\n paddingBottom: \"max(16px, env(safe-area-inset-bottom))\",\n boxSizing: \"border-box\",\n }}\n >\n <Group\n justify={closePosition === \"end\" ? \"space-between\" : \"flex-start\"}\n wrap=\"nowrap\"\n align=\"center\"\n gap=\"md\"\n style={{ flexShrink: 0, minHeight: 32 }}\n >\n <Box\n style={{\n flex: closePosition === \"end\" ? 1 : undefined,\n minWidth: 0,\n display: \"flex\",\n alignItems: \"center\",\n minHeight: MOBILE_NAV_LOGO_HEIGHT,\n }}\n >\n {header}\n </Box>\n <ActionIcon\n type=\"button\"\n aria-label=\"Close navigation\"\n color=\"gray\"\n variant=\"subtle\"\n size=\"lg\"\n onClick={onClose}\n >\n <IconX size={20} stroke={1.5} />\n </ActionIcon>\n </Group>\n\n <Stack gap={4} style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n {resolvedSections.flatMap((section) =>\n section.items.map((item) => (\n <MobileNavRow\n key={`${section.id}:${item.id}`}\n item={item}\n depth={0}\n onItemClick={handleItemClick}\n />\n )),\n )}\n </Stack>\n\n {(cta || profile) && (\n <Stack gap=\"sm\" style={{ flexShrink: 0 }}>\n {cta ? <Box style={{ width: \"100%\" }}>{cta}</Box> : null}\n {cta && profile ? <Divider color={fairmintVars.colorBorderDefault} /> : null}\n {profile ? (\n <UnstyledButton\n type=\"button\"\n aria-label=\"Account menu\"\n aria-haspopup=\"dialog\"\n onClick={onProfileClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n padding: 8,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: onProfileClick ? \"pointer\" : \"default\",\n }}\n styles={{\n root: {\n \"&:hover\": {\n backgroundColor: fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {profile.avatar}\n <Stack gap={0} style={{ minWidth: 0, flex: 1 }}>\n <Text size=\"sm\" fw={600} truncate>\n {profile.displayName}\n </Text>\n {profile.subline && profile.subline !== profile.displayName ? (\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {profile.subline}\n </Text>\n ) : null}\n </Stack>\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{ color: fairmintVars.colorIconTertiary, flexShrink: 0 }}\n />\n </UnstyledButton>\n ) : null}\n </Stack>\n )}\n </Stack>\n </Drawer>\n );\n}\n"],"names":["getSideNavItemLabelText","useState","Box","jsxs","UnstyledButton","radii","fairmintVars","jsx","Text","IconChevronDown","Stack","zIndex","overlayZIndexAboveLegacyShell","Drawer","Group","MOBILE_NAV_LOGO_HEIGHT","ActionIcon","IconX","Divider"],"mappings":"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"}
|
|
@@ -39,8 +39,8 @@ export interface MobileNavProps {
|
|
|
39
39
|
zIndex?: number;
|
|
40
40
|
/**
|
|
41
41
|
* Where the dismiss control sits in the header row.
|
|
42
|
-
* `end` matches
|
|
43
|
-
*
|
|
42
|
+
* `end` (default) matches the page-header hamburger on the far right.
|
|
43
|
+
* `start` places close beside the logo (legacy / white-label layouts).
|
|
44
44
|
* @default "end"
|
|
45
45
|
*/
|
|
46
46
|
closePosition?: "start" | "end";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNav.js","sources":["../../../../src/components/layout/MobileNav/MobileNav.tsx"],"sourcesContent":["import { IconChevronDown, IconX } from \"@tabler/icons-react\";\nimport { type ReactNode, useState } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\nimport { overlayZIndexAboveLegacyShell } from \"../../../theme/zIndex\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Drawer } from \"../../primitives/Drawer/Drawer\";\nimport { Box, Divider, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\nimport { getSideNavItemLabelText, type SideNavItem, type SideNavSection } from \"../SideNav/SideNav\";\nimport { MOBILE_NAV_LOGO_HEIGHT } from \"./MobileNavHeader\";\n\n/** Full-bleed mobile nav sheet width — not the 260px desktop rail. */\nexport const MOBILE_NAV_WIDTH = \"100%\";\n\n/** Minimum touch target for destination / profile rows. */\nexport const MOBILE_NAV_ROW_MIN_HEIGHT = 48;\n\nexport interface MobileNavProfile {\n /** Primary line (user name). */\n displayName: string;\n /** Secondary line (company / email). */\n subline?: string;\n /** Avatar name for initials. Defaults to `displayName`. */\n avatarName?: string;\n /** Leading avatar node. When omitted, a text fallback is shown. */\n avatar?: ReactNode;\n}\n\nexport interface MobileNavProps {\n /** Whether the navigation sheet is open. */\n opened: boolean;\n /** Close handler (backdrop / escape). */\n onClose: () => void;\n /** Flat destination list when sections are not needed. */\n items?: SideNavItem[];\n /** Grouped destinations (section labels are not rendered — same as SideNav). */\n sections?: SideNavSection[];\n /** Leaf destination selected. Parents with children only expand/collapse. */\n onItemClick: (id: string) => void;\n /** Logo / brand chrome above destinations. */\n header?: ReactNode;\n /** Primary CTA above the profile (e.g. Start / Add investment). */\n cta?: ReactNode;\n /** Profile trigger shown at the bottom. Tapping calls `onProfileClick`. */\n profile?: MobileNavProfile;\n /** Called when the profile row is pressed (typically opens AccountSheet). */\n onProfileClick?: () => void;\n /** Accessible label for the navigation landmark. @default \"Main navigation\" */\n ariaLabel?: string;\n /** Overlay z-index. @default overlayZIndexAboveLegacyShell */\n zIndex?: number;\n /**\n * Where the dismiss control sits in the header row.\n * `end` matches Studio (close on the far right). `start` keeps it beside the\n * logo so the page-header hamburger and overlay close occupy the same slot.\n * @default \"end\"\n */\n closePosition?: \"start\" | \"end\";\n}\n\nfunction MobileNavRow({\n item,\n depth,\n onItemClick,\n}: {\n item: SideNavItem;\n depth: number;\n onItemClick: (id: string) => void;\n}) {\n const hasChildren = Boolean(item.children?.length);\n const labelText = getSideNavItemLabelText(item);\n const childActive = item.children?.some((child) => child.active) ?? false;\n const [opened, setOpened] = useState(Boolean(item.open) || childActive);\n const active = Boolean(item.active) && !hasChildren;\n\n const paddingLeft = 12 + depth * 16;\n\n return (\n <Box>\n <UnstyledButton\n type=\"button\"\n disabled={item.disabled}\n aria-label={labelText}\n aria-current={active ? \"page\" : undefined}\n aria-expanded={hasChildren ? opened : undefined}\n onClick={() => {\n if (hasChildren) {\n setOpened((value) => !value);\n return;\n }\n onItemClick(item.id);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n paddingLeft,\n paddingRight: 12,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n opacity: item.disabled ? 0.5 : 1,\n backgroundColor: active ? fairmintVars.colorSurfaceSelected : \"transparent\",\n color: active ? fairmintVars.colorIconOnSurfaceSelected : fairmintVars.colorTextPrimary,\n }}\n styles={{\n root: {\n \"&:hover:not(:disabled)\": {\n backgroundColor: active\n ? fairmintVars.colorSurfaceSelected\n : fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {item.icon ? (\n <Box\n component=\"span\"\n style={{\n display: \"inline-flex\",\n color: active\n ? fairmintVars.colorIconOnSurfaceSelected\n : fairmintVars.colorIconSecondary,\n flexShrink: 0,\n }}\n >\n {item.icon}\n </Box>\n ) : null}\n <Text\n size=\"md\"\n fw={active ? 600 : 500}\n style={{\n flex: 1,\n minWidth: 0,\n color: active ? fairmintVars.colorIconOnSurfaceSelected : undefined,\n }}\n truncate\n >\n {item.label}\n </Text>\n {item.rightSection}\n {hasChildren ? (\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{\n flexShrink: 0,\n transform: opened ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n color: fairmintVars.colorIconTertiary,\n }}\n />\n ) : null}\n </UnstyledButton>\n\n {hasChildren && opened ? (\n <Stack gap={4} mt={4}>\n {item.children?.map((child) => (\n <MobileNavRow key={child.id} item={child} depth={depth + 1} onItemClick={onItemClick} />\n ))}\n </Stack>\n ) : null}\n </Box>\n );\n}\n\n/**\n * Mobile-optimized navigation sheet for product shells.\n *\n * Full-bleed left drawer with 48px touch rows, pinned CTA + profile, and an\n * always-visible close control (full-bleed leaves no backdrop to dismiss).\n * Pair `onProfileClick` with {@link AccountSheet} for Sign out.\n */\nexport function MobileNav({\n opened,\n onClose,\n items = [],\n sections,\n onItemClick,\n header,\n cta,\n profile,\n onProfileClick,\n ariaLabel = \"Main navigation\",\n zIndex = overlayZIndexAboveLegacyShell,\n closePosition = \"end\",\n}: MobileNavProps) {\n const resolvedSections = sections ?? [{ id: \"main\", items }];\n\n const handleItemClick = (id: string) => {\n onItemClick(id);\n onClose();\n };\n\n return (\n <Drawer\n opened={opened}\n onClose={onClose}\n position=\"left\"\n size={MOBILE_NAV_WIDTH}\n padding={0}\n withCloseButton={false}\n zIndex={zIndex}\n styles={{\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n },\n body: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n height: \"100%\",\n minHeight: 0,\n overflow: \"hidden\",\n padding: 0,\n },\n header: {\n display: \"none\",\n },\n }}\n >\n <Stack\n component=\"nav\"\n gap=\"md\"\n aria-label={ariaLabel}\n style={{\n height: \"100%\",\n padding: 16,\n paddingBottom: \"max(16px, env(safe-area-inset-bottom))\",\n boxSizing: \"border-box\",\n }}\n >\n <Group\n justify={closePosition === \"end\" ? \"space-between\" : \"flex-start\"}\n wrap=\"nowrap\"\n align=\"center\"\n gap=\"md\"\n style={{ flexShrink: 0, minHeight: 32 }}\n >\n <Box\n style={{\n flex: closePosition === \"end\" ? 1 : undefined,\n minWidth: 0,\n display: \"flex\",\n alignItems: \"center\",\n minHeight: MOBILE_NAV_LOGO_HEIGHT,\n }}\n >\n {header}\n </Box>\n <ActionIcon\n type=\"button\"\n aria-label=\"Close navigation\"\n color=\"gray\"\n variant=\"subtle\"\n size=\"lg\"\n onClick={onClose}\n >\n <IconX size={20} stroke={1.5} />\n </ActionIcon>\n </Group>\n\n <Stack gap={4} style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n {resolvedSections.flatMap((section) =>\n section.items.map((item) => (\n <MobileNavRow\n key={`${section.id}:${item.id}`}\n item={item}\n depth={0}\n onItemClick={handleItemClick}\n />\n )),\n )}\n </Stack>\n\n {(cta || profile) && (\n <Stack gap=\"sm\" style={{ flexShrink: 0 }}>\n {cta ? <Box style={{ width: \"100%\" }}>{cta}</Box> : null}\n {cta && profile ? <Divider color={fairmintVars.colorBorderDefault} /> : null}\n {profile ? (\n <UnstyledButton\n type=\"button\"\n aria-label=\"Account menu\"\n aria-haspopup=\"dialog\"\n onClick={onProfileClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n padding: 8,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: onProfileClick ? \"pointer\" : \"default\",\n }}\n styles={{\n root: {\n \"&:hover\": {\n backgroundColor: fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {profile.avatar}\n <Stack gap={0} style={{ minWidth: 0, flex: 1 }}>\n <Text size=\"sm\" fw={600} truncate>\n {profile.displayName}\n </Text>\n {profile.subline && profile.subline !== profile.displayName ? (\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {profile.subline}\n </Text>\n ) : null}\n </Stack>\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{ color: fairmintVars.colorIconTertiary, flexShrink: 0 }}\n />\n </UnstyledButton>\n ) : null}\n </Stack>\n )}\n </Stack>\n </Drawer>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MobileNav.js","sources":["../../../../src/components/layout/MobileNav/MobileNav.tsx"],"sourcesContent":["import { IconChevronDown, IconX } from \"@tabler/icons-react\";\nimport { type ReactNode, useState } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\nimport { overlayZIndexAboveLegacyShell } from \"../../../theme/zIndex\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Drawer } from \"../../primitives/Drawer/Drawer\";\nimport { Box, Divider, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\nimport { getSideNavItemLabelText, type SideNavItem, type SideNavSection } from \"../SideNav/SideNav\";\nimport { MOBILE_NAV_LOGO_HEIGHT } from \"./MobileNavHeader\";\n\n/** Full-bleed mobile nav sheet width — not the 260px desktop rail. */\nexport const MOBILE_NAV_WIDTH = \"100%\";\n\n/** Minimum touch target for destination / profile rows. */\nexport const MOBILE_NAV_ROW_MIN_HEIGHT = 48;\n\nexport interface MobileNavProfile {\n /** Primary line (user name). */\n displayName: string;\n /** Secondary line (company / email). */\n subline?: string;\n /** Avatar name for initials. Defaults to `displayName`. */\n avatarName?: string;\n /** Leading avatar node. When omitted, a text fallback is shown. */\n avatar?: ReactNode;\n}\n\nexport interface MobileNavProps {\n /** Whether the navigation sheet is open. */\n opened: boolean;\n /** Close handler (backdrop / escape). */\n onClose: () => void;\n /** Flat destination list when sections are not needed. */\n items?: SideNavItem[];\n /** Grouped destinations (section labels are not rendered — same as SideNav). */\n sections?: SideNavSection[];\n /** Leaf destination selected. Parents with children only expand/collapse. */\n onItemClick: (id: string) => void;\n /** Logo / brand chrome above destinations. */\n header?: ReactNode;\n /** Primary CTA above the profile (e.g. Start / Add investment). */\n cta?: ReactNode;\n /** Profile trigger shown at the bottom. Tapping calls `onProfileClick`. */\n profile?: MobileNavProfile;\n /** Called when the profile row is pressed (typically opens AccountSheet). */\n onProfileClick?: () => void;\n /** Accessible label for the navigation landmark. @default \"Main navigation\" */\n ariaLabel?: string;\n /** Overlay z-index. @default overlayZIndexAboveLegacyShell */\n zIndex?: number;\n /**\n * Where the dismiss control sits in the header row.\n * `end` (default) matches the page-header hamburger on the far right.\n * `start` places close beside the logo (legacy / white-label layouts).\n * @default \"end\"\n */\n closePosition?: \"start\" | \"end\";\n}\n\nfunction MobileNavRow({\n item,\n depth,\n onItemClick,\n}: {\n item: SideNavItem;\n depth: number;\n onItemClick: (id: string) => void;\n}) {\n const hasChildren = Boolean(item.children?.length);\n const labelText = getSideNavItemLabelText(item);\n const childActive = item.children?.some((child) => child.active) ?? false;\n const [opened, setOpened] = useState(Boolean(item.open) || childActive);\n const active = Boolean(item.active) && !hasChildren;\n\n const paddingLeft = 12 + depth * 16;\n\n return (\n <Box>\n <UnstyledButton\n type=\"button\"\n disabled={item.disabled}\n aria-label={labelText}\n aria-current={active ? \"page\" : undefined}\n aria-expanded={hasChildren ? opened : undefined}\n onClick={() => {\n if (hasChildren) {\n setOpened((value) => !value);\n return;\n }\n onItemClick(item.id);\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n paddingLeft,\n paddingRight: 12,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n opacity: item.disabled ? 0.5 : 1,\n backgroundColor: active ? fairmintVars.colorSurfaceSelected : \"transparent\",\n color: active ? fairmintVars.colorIconOnSurfaceSelected : fairmintVars.colorTextPrimary,\n }}\n styles={{\n root: {\n \"&:hover:not(:disabled)\": {\n backgroundColor: active\n ? fairmintVars.colorSurfaceSelected\n : fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {item.icon ? (\n <Box\n component=\"span\"\n style={{\n display: \"inline-flex\",\n color: active\n ? fairmintVars.colorIconOnSurfaceSelected\n : fairmintVars.colorIconSecondary,\n flexShrink: 0,\n }}\n >\n {item.icon}\n </Box>\n ) : null}\n <Text\n size=\"md\"\n fw={active ? 600 : 500}\n style={{\n flex: 1,\n minWidth: 0,\n color: active ? fairmintVars.colorIconOnSurfaceSelected : undefined,\n }}\n truncate\n >\n {item.label}\n </Text>\n {item.rightSection}\n {hasChildren ? (\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{\n flexShrink: 0,\n transform: opened ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n color: fairmintVars.colorIconTertiary,\n }}\n />\n ) : null}\n </UnstyledButton>\n\n {hasChildren && opened ? (\n <Stack gap={4} mt={4}>\n {item.children?.map((child) => (\n <MobileNavRow key={child.id} item={child} depth={depth + 1} onItemClick={onItemClick} />\n ))}\n </Stack>\n ) : null}\n </Box>\n );\n}\n\n/**\n * Mobile-optimized navigation sheet for product shells.\n *\n * Full-bleed left drawer with 48px touch rows, pinned CTA + profile, and an\n * always-visible close control (full-bleed leaves no backdrop to dismiss).\n * Pair `onProfileClick` with {@link AccountSheet} for Sign out.\n */\nexport function MobileNav({\n opened,\n onClose,\n items = [],\n sections,\n onItemClick,\n header,\n cta,\n profile,\n onProfileClick,\n ariaLabel = \"Main navigation\",\n zIndex = overlayZIndexAboveLegacyShell,\n closePosition = \"end\",\n}: MobileNavProps) {\n const resolvedSections = sections ?? [{ id: \"main\", items }];\n\n const handleItemClick = (id: string) => {\n onItemClick(id);\n onClose();\n };\n\n return (\n <Drawer\n opened={opened}\n onClose={onClose}\n position=\"left\"\n size={MOBILE_NAV_WIDTH}\n padding={0}\n withCloseButton={false}\n zIndex={zIndex}\n styles={{\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n },\n body: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n height: \"100%\",\n minHeight: 0,\n overflow: \"hidden\",\n padding: 0,\n },\n header: {\n display: \"none\",\n },\n }}\n >\n <Stack\n component=\"nav\"\n gap=\"md\"\n aria-label={ariaLabel}\n style={{\n height: \"100%\",\n padding: 16,\n paddingBottom: \"max(16px, env(safe-area-inset-bottom))\",\n boxSizing: \"border-box\",\n }}\n >\n <Group\n justify={closePosition === \"end\" ? \"space-between\" : \"flex-start\"}\n wrap=\"nowrap\"\n align=\"center\"\n gap=\"md\"\n style={{ flexShrink: 0, minHeight: 32 }}\n >\n <Box\n style={{\n flex: closePosition === \"end\" ? 1 : undefined,\n minWidth: 0,\n display: \"flex\",\n alignItems: \"center\",\n minHeight: MOBILE_NAV_LOGO_HEIGHT,\n }}\n >\n {header}\n </Box>\n <ActionIcon\n type=\"button\"\n aria-label=\"Close navigation\"\n color=\"gray\"\n variant=\"subtle\"\n size=\"lg\"\n onClick={onClose}\n >\n <IconX size={20} stroke={1.5} />\n </ActionIcon>\n </Group>\n\n <Stack gap={4} style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n {resolvedSections.flatMap((section) =>\n section.items.map((item) => (\n <MobileNavRow\n key={`${section.id}:${item.id}`}\n item={item}\n depth={0}\n onItemClick={handleItemClick}\n />\n )),\n )}\n </Stack>\n\n {(cta || profile) && (\n <Stack gap=\"sm\" style={{ flexShrink: 0 }}>\n {cta ? <Box style={{ width: \"100%\" }}>{cta}</Box> : null}\n {cta && profile ? <Divider color={fairmintVars.colorBorderDefault} /> : null}\n {profile ? (\n <UnstyledButton\n type=\"button\"\n aria-label=\"Account menu\"\n aria-haspopup=\"dialog\"\n onClick={onProfileClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n minHeight: MOBILE_NAV_ROW_MIN_HEIGHT,\n padding: 8,\n borderRadius: radii.md,\n textAlign: \"left\",\n cursor: onProfileClick ? \"pointer\" : \"default\",\n }}\n styles={{\n root: {\n \"&:hover\": {\n backgroundColor: fairmintVars.colorBgHover,\n },\n },\n }}\n >\n {profile.avatar}\n <Stack gap={0} style={{ minWidth: 0, flex: 1 }}>\n <Text size=\"sm\" fw={600} truncate>\n {profile.displayName}\n </Text>\n {profile.subline && profile.subline !== profile.displayName ? (\n <Text size=\"xs\" c=\"dimmed\" truncate>\n {profile.subline}\n </Text>\n ) : null}\n </Stack>\n <IconChevronDown\n size={18}\n stroke={1.5}\n aria-hidden\n style={{ color: fairmintVars.colorIconTertiary, flexShrink: 0 }}\n />\n </UnstyledButton>\n ) : null}\n </Stack>\n )}\n </Stack>\n </Drawer>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const FairmintLogo = require("../../FairmintLogo/FairmintLogo.cjs");
|
|
5
5
|
const ActionIcon = require("../../primitives/ActionIcon/ActionIcon.cjs");
|
|
6
|
-
const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
|
|
7
6
|
const colors = require("../../../theme/colors.cjs");
|
|
7
|
+
const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
|
|
8
8
|
const MOBILE_NAV_HEADER_HEIGHT = 60;
|
|
9
9
|
const MOBILE_NAV_LOGO_WIDTH = 120;
|
|
10
10
|
const MOBILE_NAV_LOGO_HEIGHT = 28;
|
|
@@ -44,6 +44,23 @@ function MobileNavHeader({
|
|
|
44
44
|
style: { display: "block" }
|
|
45
45
|
}
|
|
46
46
|
) : null);
|
|
47
|
+
const menu = onMenuClick != null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
ActionIcon.ActionIcon,
|
|
49
|
+
{
|
|
50
|
+
type: "button",
|
|
51
|
+
"aria-label": "Open navigation",
|
|
52
|
+
color: colors.colors.neutral,
|
|
53
|
+
variant: "subtle",
|
|
54
|
+
w: MOBILE_NAV_MENU_SIZE,
|
|
55
|
+
h: MOBILE_NAV_MENU_SIZE,
|
|
56
|
+
onClick: onMenuClick,
|
|
57
|
+
children: menuIcon ?? defaultMenuIcon
|
|
58
|
+
}
|
|
59
|
+
) : null;
|
|
60
|
+
const trailing = rightSection != null || menu != null ? /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { wrap: "nowrap", gap: MOBILE_NAV_BRAND_GAP, align: "center", children: [
|
|
61
|
+
rightSection,
|
|
62
|
+
menu
|
|
63
|
+
] }) : null;
|
|
47
64
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
48
65
|
Group.Group,
|
|
49
66
|
{
|
|
@@ -56,23 +73,8 @@ function MobileNavHeader({
|
|
|
56
73
|
w: "100%",
|
|
57
74
|
bg: "body",
|
|
58
75
|
children: [
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
onMenuClick ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
-
ActionIcon.ActionIcon,
|
|
63
|
-
{
|
|
64
|
-
type: "button",
|
|
65
|
-
"aria-label": "Open navigation",
|
|
66
|
-
color: colors.colors.neutral,
|
|
67
|
-
variant: "subtle",
|
|
68
|
-
w: MOBILE_NAV_MENU_SIZE,
|
|
69
|
-
h: MOBILE_NAV_MENU_SIZE,
|
|
70
|
-
onClick: onMenuClick,
|
|
71
|
-
children: menuIcon ?? defaultMenuIcon
|
|
72
|
-
}
|
|
73
|
-
) : null
|
|
74
|
-
] }),
|
|
75
|
-
rightSection
|
|
76
|
+
mark,
|
|
77
|
+
trailing
|
|
76
78
|
]
|
|
77
79
|
}
|
|
78
80
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNavHeader.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between
|
|
1
|
+
{"version":3,"file":"MobileNavHeader.cjs","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n <Group wrap=\"nowrap\" gap={MOBILE_NAV_BRAND_GAP} align=\"center\">\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n justify=\"space-between\"\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":["jsxs","jsx","FairmintLogo","ActionIcon","colors","Group"],"mappings":";;;;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAAC,2BAAAA,IAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnBA,2BAAAA,IAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACCA,2BAAAA;AAAAA,IAACC,aAAAA;AAAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACbD,2BAAAA;AAAAA,IAACE,WAAAA;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAOC,OAAAA,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ,OAC9BJ,2BAAAA,KAACK,MAAAA,OAAA,EAAM,MAAK,UAAS,KAAK,sBAAsB,OAAM,UACnD,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,EAAA,EAAA,CACH,IACE;AAEN,SACEL,2BAAAA;AAAAA,IAACK,MAAAA;AAAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;;;;;;;"}
|
|
@@ -5,7 +5,7 @@ export declare const MOBILE_NAV_HEADER_HEIGHT = 60;
|
|
|
5
5
|
export declare const MOBILE_NAV_LOGO_WIDTH = 120;
|
|
6
6
|
/** Fairmint wordmark height in the mobile header and sheet. */
|
|
7
7
|
export declare const MOBILE_NAV_LOGO_HEIGHT = 28;
|
|
8
|
-
/** Space between
|
|
8
|
+
/** Space between trailing actions and the menu control. */
|
|
9
9
|
export declare const MOBILE_NAV_BRAND_GAP = 16;
|
|
10
10
|
/** Header horizontal padding. */
|
|
11
11
|
export declare const MOBILE_NAV_HEADER_PADDING_X = 16;
|
|
@@ -19,7 +19,7 @@ export interface MobileNavHeaderProps {
|
|
|
19
19
|
logo?: ReactNode;
|
|
20
20
|
/** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */
|
|
21
21
|
onMenuClick?: () => void;
|
|
22
|
-
/**
|
|
22
|
+
/** Trailing header actions before the hamburger (notifications, Ask AI). */
|
|
23
23
|
rightSection?: ReactNode;
|
|
24
24
|
/** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */
|
|
25
25
|
menuIcon?: ReactNode;
|
|
@@ -27,9 +27,9 @@ export interface MobileNavHeaderProps {
|
|
|
27
27
|
/**
|
|
28
28
|
* Canonical mobile page header for Fairmint product shells.
|
|
29
29
|
*
|
|
30
|
-
* Logo
|
|
30
|
+
* Logo on the left; optional `rightSection` then hamburger on the far right.
|
|
31
31
|
* Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens
|
|
32
|
-
* or extra wrappers.
|
|
32
|
+
* or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.
|
|
33
33
|
*/
|
|
34
34
|
export declare function MobileNavHeader({ logo, onMenuClick, rightSection, menuIcon, }: MobileNavHeaderProps): import("react").JSX.Element;
|
|
35
35
|
//# sourceMappingURL=MobileNavHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNavHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,
|
|
1
|
+
{"version":3,"file":"MobileNavHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,iCAAiC;AACjC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAoBvC,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,GACT,EAAE,oBAAoB,+BAiDtB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { FairmintLogo } from "../../FairmintLogo/FairmintLogo.js";
|
|
3
3
|
import { ActionIcon } from "../../primitives/ActionIcon/ActionIcon.js";
|
|
4
|
-
import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
|
|
5
4
|
import { colors } from "../../../theme/colors.js";
|
|
5
|
+
import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
|
|
6
6
|
const MOBILE_NAV_HEADER_HEIGHT = 60;
|
|
7
7
|
const MOBILE_NAV_LOGO_WIDTH = 120;
|
|
8
8
|
const MOBILE_NAV_LOGO_HEIGHT = 28;
|
|
@@ -42,6 +42,23 @@ function MobileNavHeader({
|
|
|
42
42
|
style: { display: "block" }
|
|
43
43
|
}
|
|
44
44
|
) : null);
|
|
45
|
+
const menu = onMenuClick != null ? /* @__PURE__ */ jsx(
|
|
46
|
+
ActionIcon,
|
|
47
|
+
{
|
|
48
|
+
type: "button",
|
|
49
|
+
"aria-label": "Open navigation",
|
|
50
|
+
color: colors.neutral,
|
|
51
|
+
variant: "subtle",
|
|
52
|
+
w: MOBILE_NAV_MENU_SIZE,
|
|
53
|
+
h: MOBILE_NAV_MENU_SIZE,
|
|
54
|
+
onClick: onMenuClick,
|
|
55
|
+
children: menuIcon ?? defaultMenuIcon
|
|
56
|
+
}
|
|
57
|
+
) : null;
|
|
58
|
+
const trailing = rightSection != null || menu != null ? /* @__PURE__ */ jsxs(Group, { wrap: "nowrap", gap: MOBILE_NAV_BRAND_GAP, align: "center", children: [
|
|
59
|
+
rightSection,
|
|
60
|
+
menu
|
|
61
|
+
] }) : null;
|
|
45
62
|
return /* @__PURE__ */ jsxs(
|
|
46
63
|
Group,
|
|
47
64
|
{
|
|
@@ -54,23 +71,8 @@ function MobileNavHeader({
|
|
|
54
71
|
w: "100%",
|
|
55
72
|
bg: "body",
|
|
56
73
|
children: [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
onMenuClick ? /* @__PURE__ */ jsx(
|
|
60
|
-
ActionIcon,
|
|
61
|
-
{
|
|
62
|
-
type: "button",
|
|
63
|
-
"aria-label": "Open navigation",
|
|
64
|
-
color: colors.neutral,
|
|
65
|
-
variant: "subtle",
|
|
66
|
-
w: MOBILE_NAV_MENU_SIZE,
|
|
67
|
-
h: MOBILE_NAV_MENU_SIZE,
|
|
68
|
-
onClick: onMenuClick,
|
|
69
|
-
children: menuIcon ?? defaultMenuIcon
|
|
70
|
-
}
|
|
71
|
-
) : null
|
|
72
|
-
] }),
|
|
73
|
-
rightSection
|
|
74
|
+
mark,
|
|
75
|
+
trailing
|
|
74
76
|
]
|
|
75
77
|
}
|
|
76
78
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNavHeader.js","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between
|
|
1
|
+
{"version":3,"file":"MobileNavHeader.js","sources":["../../../../src/components/layout/MobileNav/MobileNavHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme\";\nimport { FairmintLogo } from \"../../FairmintLogo/FairmintLogo\";\nimport { ActionIcon } from \"../../primitives/ActionIcon/ActionIcon\";\nimport { Group } from \"../../primitives/layout\";\n\n/** Product-shell mobile header height (Studio + Investor). */\nexport const MOBILE_NAV_HEADER_HEIGHT = 60;\n/** Fairmint wordmark width in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_WIDTH = 120;\n/** Fairmint wordmark height in the mobile header and sheet. */\nexport const MOBILE_NAV_LOGO_HEIGHT = 28;\n/** Space between trailing actions and the menu control. */\nexport const MOBILE_NAV_BRAND_GAP = 16;\n/** Header horizontal padding. */\nexport const MOBILE_NAV_HEADER_PADDING_X = 16;\n/** Menu control hit target (Mantine `lg`). */\nexport const MOBILE_NAV_MENU_SIZE = 36;\n\nconst defaultMenuIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </svg>\n);\n\nexport interface MobileNavHeaderProps {\n /**\n * Override the default Fairmint wordmark (white-label portals).\n * When omitted and `onMenuClick` is set, the canonical 120×28 Fairmint logo is used.\n */\n logo?: ReactNode;\n /** Opens the MobileNav sheet. Omit on desktop where SideNav owns destinations. */\n onMenuClick?: () => void;\n /** Trailing header actions before the hamburger (notifications, Ask AI). */\n rightSection?: ReactNode;\n /** Menu glyph. Defaults to an outlined hamburger so the component never imports an icon library. */\n menuIcon?: ReactNode;\n}\n\n/**\n * Canonical mobile page header for Fairmint product shells.\n *\n * Logo on the left; optional `rightSection` then hamburger on the far right.\n * Pixel metrics are fixed so Studio and Investor cannot drift via theme tokens\n * or extra wrappers. Sign out belongs in AccountSheet / the user menu — not here.\n */\nexport function MobileNavHeader({\n logo,\n onMenuClick,\n rightSection,\n menuIcon,\n}: MobileNavHeaderProps) {\n const mark =\n logo ??\n (onMenuClick ? (\n <FairmintLogo\n width={MOBILE_NAV_LOGO_WIDTH}\n height={MOBILE_NAV_LOGO_HEIGHT}\n style={{ display: \"block\" }}\n />\n ) : null);\n\n const menu =\n onMenuClick != null ? (\n <ActionIcon\n type=\"button\"\n aria-label=\"Open navigation\"\n color={colors.neutral}\n variant=\"subtle\"\n w={MOBILE_NAV_MENU_SIZE}\n h={MOBILE_NAV_MENU_SIZE}\n onClick={onMenuClick}\n >\n {menuIcon ?? defaultMenuIcon}\n </ActionIcon>\n ) : null;\n\n const trailing =\n rightSection != null || menu != null ? (\n <Group wrap=\"nowrap\" gap={MOBILE_NAV_BRAND_GAP} align=\"center\">\n {rightSection}\n {menu}\n </Group>\n ) : null;\n\n return (\n <Group\n h={MOBILE_NAV_HEADER_HEIGHT}\n px={MOBILE_NAV_HEADER_PADDING_X}\n justify=\"space-between\"\n wrap=\"nowrap\"\n align=\"center\"\n gap={0}\n w=\"100%\"\n bg=\"body\"\n >\n {mark}\n {trailing}\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,2BAA2B;AAEjC,MAAM,wBAAwB;AAE9B,MAAM,yBAAyB;AAE/B,MAAM,uBAAuB;AAE7B,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB;AAEpC,MAAM,kBACJ;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAK,GAAE,UAAA,CAAU;AAAA,MAClB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,MACnB,oBAAC,QAAA,EAAK,GAAE,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AACrB;AAwBK,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OACJ,SACC,cACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,SAAS,QAAA;AAAA,IAAQ;AAAA,EAAA,IAE1B;AAEN,QAAM,OACJ,eAAe,OACb;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MAER,UAAA,YAAY;AAAA,IAAA;AAAA,EAAA,IAEb;AAEN,QAAM,WACJ,gBAAgB,QAAQ,QAAQ,OAC9B,qBAAC,OAAA,EAAM,MAAK,UAAS,KAAK,sBAAsB,OAAM,UACnD,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,EAAA,EAAA,CACH,IACE;AAEN,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,KAAK;AAAA,MACL,GAAE;AAAA,MACF,IAAG;AAAA,MAEF,UAAA;AAAA,QAAA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
package/dist/fairmint-ui.cjs
CHANGED
|
@@ -36,12 +36,14 @@ const EmptyState = require("./components/generic/EmptyState/EmptyState.cjs");
|
|
|
36
36
|
const ErrorPage = require("./components/generic/ErrorPage/ErrorPage.cjs");
|
|
37
37
|
const Eyebrow = require("./components/generic/Eyebrow/Eyebrow.cjs");
|
|
38
38
|
const FileDropzone = require("./components/generic/FileDropzone/FileDropzone.cjs");
|
|
39
|
+
const FilterToggle = require("./components/generic/FilterToggle/FilterToggle.cjs");
|
|
39
40
|
const ListRow = require("./components/generic/ListRow/ListRow.cjs");
|
|
40
41
|
const MultiSelectSearch = require("./components/generic/MultiSelectSearch/MultiSelectSearch.cjs");
|
|
41
42
|
const NotificationRow = require("./components/generic/NotificationRow/NotificationRow.cjs");
|
|
42
43
|
const Percent = require("./components/generic/Percent/Percent.cjs");
|
|
43
44
|
const PhotoCropModal = require("./components/generic/PhotoCropModal/PhotoCropModal.cjs");
|
|
44
45
|
const ProcessingState = require("./components/generic/ProcessingState/ProcessingState.cjs");
|
|
46
|
+
const QuickFilterChip = require("./components/generic/QuickFilterChip/QuickFilterChip.cjs");
|
|
45
47
|
const RadioCard = require("./components/generic/RadioCard/RadioCard.cjs");
|
|
46
48
|
const SearchInput = require("./components/generic/SearchInput/SearchInput.cjs");
|
|
47
49
|
const StatCard = require("./components/generic/StatCard/StatCard.cjs");
|
|
@@ -206,12 +208,14 @@ exports.Eyebrow = Eyebrow.Eyebrow;
|
|
|
206
208
|
exports.FILE_DROPZONE_DEFAULT_MAX_FILES = FileDropzone.FILE_DROPZONE_DEFAULT_MAX_FILES;
|
|
207
209
|
exports.FILE_DROPZONE_DEFAULT_SUPPORTED_TYPES = FileDropzone.FILE_DROPZONE_DEFAULT_SUPPORTED_TYPES;
|
|
208
210
|
exports.FileDropzone = FileDropzone.FileDropzone;
|
|
211
|
+
exports.FilterToggle = FilterToggle.FilterToggle;
|
|
209
212
|
exports.ListRow = ListRow.ListRow;
|
|
210
213
|
exports.MultiSelectSearch = MultiSelectSearch.MultiSelectSearch;
|
|
211
214
|
exports.NotificationRow = NotificationRow.NotificationRow;
|
|
212
215
|
exports.Percent = Percent.Percent;
|
|
213
216
|
exports.PhotoCropModal = PhotoCropModal.PhotoCropModal;
|
|
214
217
|
exports.ProcessingState = ProcessingState.ProcessingState;
|
|
218
|
+
exports.QuickFilterChip = QuickFilterChip.QuickFilterChip;
|
|
215
219
|
exports.RadioCard = RadioCard.RadioCard;
|
|
216
220
|
exports.SearchInput = SearchInput.SearchInput;
|
|
217
221
|
exports.StatCard = StatCard.StatCard;
|
package/dist/fairmint-ui.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fairmint-ui.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fairmint-ui.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/fairmint-ui.js
CHANGED
|
@@ -34,12 +34,14 @@ import { EmptyState } from "./components/generic/EmptyState/EmptyState.js";
|
|
|
34
34
|
import { ErrorPage } from "./components/generic/ErrorPage/ErrorPage.js";
|
|
35
35
|
import { Eyebrow } from "./components/generic/Eyebrow/Eyebrow.js";
|
|
36
36
|
import { FILE_DROPZONE_DEFAULT_MAX_FILES, FILE_DROPZONE_DEFAULT_SUPPORTED_TYPES, FileDropzone } from "./components/generic/FileDropzone/FileDropzone.js";
|
|
37
|
+
import { FilterToggle } from "./components/generic/FilterToggle/FilterToggle.js";
|
|
37
38
|
import { ListRow } from "./components/generic/ListRow/ListRow.js";
|
|
38
39
|
import { MultiSelectSearch } from "./components/generic/MultiSelectSearch/MultiSelectSearch.js";
|
|
39
40
|
import { NotificationRow } from "./components/generic/NotificationRow/NotificationRow.js";
|
|
40
41
|
import { Percent } from "./components/generic/Percent/Percent.js";
|
|
41
42
|
import { PhotoCropModal } from "./components/generic/PhotoCropModal/PhotoCropModal.js";
|
|
42
43
|
import { ProcessingState } from "./components/generic/ProcessingState/ProcessingState.js";
|
|
44
|
+
import { QuickFilterChip } from "./components/generic/QuickFilterChip/QuickFilterChip.js";
|
|
43
45
|
import { RadioCard } from "./components/generic/RadioCard/RadioCard.js";
|
|
44
46
|
import { SearchInput } from "./components/generic/SearchInput/SearchInput.js";
|
|
45
47
|
import { StatCard } from "./components/generic/StatCard/StatCard.js";
|
|
@@ -297,6 +299,7 @@ export {
|
|
|
297
299
|
FileDropzone,
|
|
298
300
|
FileIcon,
|
|
299
301
|
FilterListIcon,
|
|
302
|
+
FilterToggle,
|
|
300
303
|
Flex,
|
|
301
304
|
FolderIcon,
|
|
302
305
|
Form,
|
|
@@ -399,6 +402,7 @@ export {
|
|
|
399
402
|
Popover,
|
|
400
403
|
ProcessingState,
|
|
401
404
|
Progress,
|
|
405
|
+
QuickFilterChip,
|
|
402
406
|
RIBBON_BACKGROUND_CLASS,
|
|
403
407
|
RIBBON_BAND_GRADIENTS,
|
|
404
408
|
Radio,
|
package/dist/fairmint-ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fairmint-ui.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fairmint-ui.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -72,6 +72,8 @@ export type { EyebrowProps } from './components/generic/Eyebrow/Eyebrow';
|
|
|
72
72
|
export { Eyebrow } from './components/generic/Eyebrow/Eyebrow';
|
|
73
73
|
export type { FileDropzoneProps, FileDropzoneRejection, } from './components/generic/FileDropzone/FileDropzone';
|
|
74
74
|
export { FILE_DROPZONE_DEFAULT_MAX_FILES, FILE_DROPZONE_DEFAULT_SUPPORTED_TYPES, FileDropzone, } from './components/generic/FileDropzone/FileDropzone';
|
|
75
|
+
export type { FilterToggleProps } from './components/generic/FilterToggle/FilterToggle';
|
|
76
|
+
export { FilterToggle } from './components/generic/FilterToggle/FilterToggle';
|
|
75
77
|
export type { ListRowProps } from './components/generic/ListRow/ListRow';
|
|
76
78
|
export { ListRow } from './components/generic/ListRow/ListRow';
|
|
77
79
|
export type { MultiSelectSearchData, MultiSelectSearchOption, MultiSelectSearchOptionGroup, MultiSelectSearchProps, } from './components/generic/MultiSelectSearch/MultiSelectSearch';
|
|
@@ -84,6 +86,8 @@ export type { PhotoCropModalProps } from './components/generic/PhotoCropModal/Ph
|
|
|
84
86
|
export { PhotoCropModal } from './components/generic/PhotoCropModal/PhotoCropModal';
|
|
85
87
|
export type { ProcessingStateProps } from './components/generic/ProcessingState/ProcessingState';
|
|
86
88
|
export { ProcessingState } from './components/generic/ProcessingState/ProcessingState';
|
|
89
|
+
export type { QuickFilterChipProps } from './components/generic/QuickFilterChip/QuickFilterChip';
|
|
90
|
+
export { QuickFilterChip } from './components/generic/QuickFilterChip/QuickFilterChip';
|
|
87
91
|
export type { RadioCardProps } from './components/generic/RadioCard/RadioCard';
|
|
88
92
|
export { RadioCard } from './components/generic/RadioCard/RadioCard';
|
|
89
93
|
export type { SearchInputProps } from './components/generic/SearchInput/SearchInput';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const React = require("react");
|
|
4
|
-
const index = require("../../../../../../_virtual/
|
|
4
|
+
const index = require("../../../../../../_virtual/index4.cjs");
|
|
5
5
|
const getStatus = require("../../get-status/get-status.cjs");
|
|
6
6
|
const clearListState = require("../../lists/clear-list-state.cjs");
|
|
7
7
|
const getPath = require("../../paths/get-path.cjs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useRef, useCallback } from "react";
|
|
2
|
-
import isEqual from "../../../../../../_virtual/
|
|
2
|
+
import isEqual from "../../../../../../_virtual/index4.js";
|
|
3
3
|
import { getStatus } from "../../get-status/get-status.js";
|
|
4
4
|
import { clearListState } from "../../lists/clear-list-state.js";
|
|
5
5
|
import { getPath } from "../../paths/get-path.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const index$1 = require("../../_virtual/
|
|
3
|
+
const index$1 = require("../../_virtual/index3.cjs");
|
|
4
4
|
const index = require("./node_modules/react-is/index.cjs");
|
|
5
5
|
const factoryWithTypeCheckers = require("./factoryWithTypeCheckers.cjs");
|
|
6
6
|
const factoryWithThrowingShims = require("./factoryWithThrowingShims.cjs");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as propTypes } from "../../_virtual/
|
|
1
|
+
import { __module as propTypes } from "../../_virtual/index3.js";
|
|
2
2
|
import { __require as requireReactIs } from "./node_modules/react-is/index.js";
|
|
3
3
|
import { __require as requireFactoryWithTypeCheckers } from "./factoryWithTypeCheckers.js";
|
|
4
4
|
import { __require as requireFactoryWithThrowingShims } from "./factoryWithThrowingShims.js";
|