@fairmint/ui 0.3.9 → 0.3.11
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/FairmintProvider/FairmintProvider.cjs +1 -1
- package/dist/components/FairmintProvider/FairmintProvider.cjs.map +1 -1
- package/dist/components/FairmintProvider/FairmintProvider.d.ts.map +1 -1
- package/dist/components/FairmintProvider/FairmintProvider.js +1 -1
- package/dist/components/FairmintProvider/FairmintProvider.js.map +1 -1
- package/dist/components/LoadingOverlay/LoadingOverlay.cjs +1 -1
- package/dist/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
- package/dist/components/LoadingOverlay/LoadingOverlay.d.ts.map +1 -1
- package/dist/components/LoadingOverlay/LoadingOverlay.js +2 -2
- package/dist/components/LoadingOverlay/LoadingOverlay.js.map +1 -1
- package/dist/components/LoadingSpinner/LoadingSpinner.cjs +2 -2
- package/dist/components/LoadingSpinner/LoadingSpinner.cjs.map +1 -1
- package/dist/components/LoadingSpinner/LoadingSpinner.js +3 -3
- package/dist/components/LoadingSpinner/LoadingSpinner.js.map +1 -1
- package/dist/components/form/SignatureNameField/SignatureNameField.cjs +56 -0
- package/dist/components/form/SignatureNameField/SignatureNameField.cjs.map +1 -0
- package/dist/components/form/SignatureNameField/SignatureNameField.d.ts +18 -0
- package/dist/components/form/SignatureNameField/SignatureNameField.d.ts.map +1 -0
- package/dist/components/form/SignatureNameField/SignatureNameField.js +56 -0
- package/dist/components/form/SignatureNameField/SignatureNameField.js.map +1 -0
- package/dist/components/generic/Banner/Banner.cjs +46 -11
- package/dist/components/generic/Banner/Banner.cjs.map +1 -1
- package/dist/components/generic/Banner/Banner.d.ts.map +1 -1
- package/dist/components/generic/Banner/Banner.js +47 -12
- package/dist/components/generic/Banner/Banner.js.map +1 -1
- package/dist/components/generic/CompanyBanner/CompanyBanner.cjs +1 -1
- package/dist/components/generic/CompanyBanner/CompanyBanner.cjs.map +1 -1
- package/dist/components/generic/CompanyBanner/CompanyBanner.js +2 -2
- package/dist/components/generic/CompanyBanner/CompanyBanner.js.map +1 -1
- package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.cjs +3 -3
- package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.cjs.map +1 -1
- package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.js +4 -4
- package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.js.map +1 -1
- package/dist/components/generic/DataRow/DataRow.cjs +4 -5
- package/dist/components/generic/DataRow/DataRow.cjs.map +1 -1
- package/dist/components/generic/DataRow/DataRow.d.ts.map +1 -1
- package/dist/components/generic/DataRow/DataRow.js +5 -6
- package/dist/components/generic/DataRow/DataRow.js.map +1 -1
- package/dist/components/generic/DocumentRow/DocumentRow.cjs +97 -28
- package/dist/components/generic/DocumentRow/DocumentRow.cjs.map +1 -1
- package/dist/components/generic/DocumentRow/DocumentRow.d.ts.map +1 -1
- package/dist/components/generic/DocumentRow/DocumentRow.js +98 -29
- package/dist/components/generic/DocumentRow/DocumentRow.js.map +1 -1
- package/dist/components/generic/Eyebrow/Eyebrow.cjs +6 -1
- package/dist/components/generic/Eyebrow/Eyebrow.cjs.map +1 -1
- package/dist/components/generic/Eyebrow/Eyebrow.d.ts +2 -2
- package/dist/components/generic/Eyebrow/Eyebrow.d.ts.map +1 -1
- package/dist/components/generic/Eyebrow/Eyebrow.js +7 -2
- package/dist/components/generic/Eyebrow/Eyebrow.js.map +1 -1
- package/dist/components/generic/FileDropzone/FileDropzone.cjs +38 -20
- package/dist/components/generic/FileDropzone/FileDropzone.cjs.map +1 -1
- package/dist/components/generic/FileDropzone/FileDropzone.d.ts.map +1 -1
- package/dist/components/generic/FileDropzone/FileDropzone.js +39 -21
- package/dist/components/generic/FileDropzone/FileDropzone.js.map +1 -1
- package/dist/components/generic/PhotoCropModal/PhotoCropModal.cjs +1 -1
- package/dist/components/generic/PhotoCropModal/PhotoCropModal.cjs.map +1 -1
- package/dist/components/generic/PhotoCropModal/PhotoCropModal.js +2 -2
- package/dist/components/generic/PhotoCropModal/PhotoCropModal.js.map +1 -1
- package/dist/components/generic/ProcessingState/ProcessingState.cjs +11 -2
- package/dist/components/generic/ProcessingState/ProcessingState.cjs.map +1 -1
- package/dist/components/generic/ProcessingState/ProcessingState.d.ts.map +1 -1
- package/dist/components/generic/ProcessingState/ProcessingState.js +12 -3
- package/dist/components/generic/ProcessingState/ProcessingState.js.map +1 -1
- package/dist/components/generic/RadioCard/RadioCard.cjs +7 -7
- package/dist/components/generic/RadioCard/RadioCard.cjs.map +1 -1
- package/dist/components/generic/RadioCard/RadioCard.js +8 -8
- package/dist/components/generic/RadioCard/RadioCard.js.map +1 -1
- package/dist/components/generic/StatCard/StatCard.cjs +27 -18
- package/dist/components/generic/StatCard/StatCard.cjs.map +1 -1
- package/dist/components/generic/StatCard/StatCard.d.ts.map +1 -1
- package/dist/components/generic/StatCard/StatCard.js +27 -18
- package/dist/components/generic/StatCard/StatCard.js.map +1 -1
- package/dist/components/generic/StepCard/StepCard.cjs +2 -2
- package/dist/components/generic/StepCard/StepCard.cjs.map +1 -1
- package/dist/components/generic/StepCard/StepCard.d.ts.map +1 -1
- package/dist/components/generic/StepCard/StepCard.js +3 -3
- package/dist/components/generic/StepCard/StepCard.js.map +1 -1
- package/dist/components/layout/SideNav/SideNav.cjs +2 -2
- package/dist/components/layout/SideNav/SideNav.cjs.map +1 -1
- package/dist/components/layout/SideNav/SideNav.js +3 -3
- package/dist/components/layout/SideNav/SideNav.js.map +1 -1
- package/dist/components/primitives/Badge/Badge.cjs +11 -3
- package/dist/components/primitives/Badge/Badge.cjs.map +1 -1
- package/dist/components/primitives/Badge/Badge.d.ts.map +1 -1
- package/dist/components/primitives/Badge/Badge.js +12 -4
- package/dist/components/primitives/Badge/Badge.js.map +1 -1
- package/dist/components/primitives/muiCompat.cjs +41 -44
- package/dist/components/primitives/muiCompat.cjs.map +1 -1
- package/dist/components/primitives/muiCompat.d.ts +21 -21
- package/dist/components/primitives/muiCompat.d.ts.map +1 -1
- package/dist/components/primitives/muiCompat.js +42 -45
- package/dist/components/primitives/muiCompat.js.map +1 -1
- package/dist/components/primitives/sx.cjs +21 -25
- package/dist/components/primitives/sx.cjs.map +1 -1
- package/dist/components/primitives/sx.d.ts.map +1 -1
- package/dist/components/primitives/sx.js +22 -26
- package/dist/components/primitives/sx.js.map +1 -1
- package/dist/components/specific/DocumentRow/DocumentRow.cjs +14 -1
- package/dist/components/specific/DocumentRow/DocumentRow.cjs.map +1 -1
- package/dist/components/specific/DocumentRow/DocumentRow.d.ts.map +1 -1
- package/dist/components/specific/DocumentRow/DocumentRow.js +14 -1
- package/dist/components/specific/DocumentRow/DocumentRow.js.map +1 -1
- package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.cjs +2 -2
- package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.cjs.map +1 -1
- package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.js +3 -3
- package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.js.map +1 -1
- package/dist/fairmint-ui.cjs +3 -0
- package/dist/fairmint-ui.cjs.map +1 -1
- package/dist/fairmint-ui.js +4 -1
- package/dist/fairmint-ui.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/mui-icons.cjs +7 -7
- package/dist/mui-icons.cjs.map +1 -1
- package/dist/mui-icons.js +8 -8
- package/dist/mui-icons.js.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/dist/styles.css +35 -0
- package/dist/theme/index.cjs +329 -28
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.d.ts +85 -17
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +329 -28
- package/dist/theme/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { fairmintVars } from "../../../theme/index.js";
|
|
3
3
|
import { Box, Stack } from "../../primitives/layout.js";
|
|
4
4
|
import { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
|
|
5
5
|
import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
|
|
@@ -22,8 +22,8 @@ function RadioCard({
|
|
|
22
22
|
width: "100%",
|
|
23
23
|
padding: 16,
|
|
24
24
|
borderRadius: 12,
|
|
25
|
-
border: `
|
|
26
|
-
background: selected ?
|
|
25
|
+
border: `1px solid ${selected ? fairmintVars.colorBrandPrimary : fairmintVars.colorBorderDefault}`,
|
|
26
|
+
background: selected ? fairmintVars.colorBgBrandSubtle : fairmintVars.colorBgSurface,
|
|
27
27
|
transition: "all 120ms ease",
|
|
28
28
|
textAlign: "left"
|
|
29
29
|
},
|
|
@@ -40,12 +40,12 @@ function RadioCard({
|
|
|
40
40
|
gap: 8
|
|
41
41
|
},
|
|
42
42
|
children: [
|
|
43
|
-
/* @__PURE__ */ jsx(Text, { fw: 600, size: "sm", c:
|
|
43
|
+
/* @__PURE__ */ jsx(Text, { fw: 600, size: "sm", c: fairmintVars.colorTextPrimary, children: title }),
|
|
44
44
|
badge
|
|
45
45
|
]
|
|
46
46
|
}
|
|
47
47
|
),
|
|
48
|
-
description && /* @__PURE__ */ jsx(Text, { size: "xs", c:
|
|
48
|
+
description && /* @__PURE__ */ jsx(Text, { size: "xs", c: fairmintVars.colorTextSecondary, lh: 1.5, children: description })
|
|
49
49
|
] }),
|
|
50
50
|
/* @__PURE__ */ jsx(
|
|
51
51
|
Box,
|
|
@@ -54,8 +54,8 @@ function RadioCard({
|
|
|
54
54
|
width: 18,
|
|
55
55
|
height: 18,
|
|
56
56
|
borderRadius: "50%",
|
|
57
|
-
border: `2px solid ${selected ?
|
|
58
|
-
background: selected ?
|
|
57
|
+
border: `2px solid ${selected ? fairmintVars.colorBrandPrimary : fairmintVars.colorBorderDefault}`,
|
|
58
|
+
background: selected ? fairmintVars.colorBrandPrimary : "transparent",
|
|
59
59
|
position: "relative",
|
|
60
60
|
flexShrink: 0,
|
|
61
61
|
marginTop: 2
|
|
@@ -67,7 +67,7 @@ function RadioCard({
|
|
|
67
67
|
position: "absolute",
|
|
68
68
|
inset: 4,
|
|
69
69
|
borderRadius: "50%",
|
|
70
|
-
background:
|
|
70
|
+
background: fairmintVars.colorTextInverse
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioCard.js","sources":["../../../../src/components/generic/RadioCard/RadioCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"RadioCard.js","sources":["../../../../src/components/generic/RadioCard/RadioCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { Box, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\n\nexport interface RadioCardProps {\n /** Whether this card is currently selected. */\n selected: boolean;\n /** Primary label (top-left). */\n title: ReactNode;\n /** Supporting description below the title. */\n description?: ReactNode;\n /** Optional pill / chip rendered next to the title (top-right). */\n badge?: ReactNode;\n /** Optional leading slot (icon / small avatar / number badge). */\n leading?: ReactNode;\n /** Triggered when the card is clicked. */\n onSelect: () => void;\n}\n\n/**\n * Selectable card with a title + description and a radio dot affordance.\n *\n * Used for any \"pick one from a few\" UX: funding methods, accreditation\n * categories, tax classifications, plan tiers, etc. The visual treatment\n * (indigo border + tinted background when active, radio dot on the\n * right) is the standard Fairmint pattern so users learn it once and\n * apply it everywhere.\n */\nexport function RadioCard({\n selected,\n title,\n description,\n badge,\n leading,\n onSelect,\n}: RadioCardProps) {\n return (\n <UnstyledButton\n onClick={onSelect}\n role=\"radio\"\n aria-checked={selected}\n style={{\n display: \"block\",\n width: \"100%\",\n padding: 16,\n borderRadius: 12,\n border: `1px solid ${selected ? fairmintVars.colorBrandPrimary : fairmintVars.colorBorderDefault}`,\n background: selected ? fairmintVars.colorBgBrandSubtle : fairmintVars.colorBgSurface,\n transition: \"all 120ms ease\",\n textAlign: \"left\",\n }}\n >\n <Box style={{ display: \"flex\", gap: 12, alignItems: \"flex-start\" }}>\n {leading && <Box style={{ flexShrink: 0 }}>{leading}</Box>}\n <Stack gap={2} style={{ minWidth: 0, flex: 1 }}>\n <Box\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"baseline\",\n gap: 8,\n }}\n >\n <Text fw={600} size=\"sm\" c={fairmintVars.colorTextPrimary}>\n {title}\n </Text>\n {badge}\n </Box>\n {description && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary} lh={1.5}>\n {description}\n </Text>\n )}\n </Stack>\n <Box\n style={{\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n border: `2px solid ${selected ? fairmintVars.colorBrandPrimary : fairmintVars.colorBorderDefault}`,\n background: selected ? fairmintVars.colorBrandPrimary : \"transparent\",\n position: \"relative\",\n flexShrink: 0,\n marginTop: 2,\n }}\n >\n {selected && (\n <Box\n style={{\n position: \"absolute\",\n inset: 4,\n borderRadius: \"50%\",\n background: fairmintVars.colorTextInverse,\n }}\n />\n )}\n </Box>\n </Box>\n </UnstyledButton>\n );\n}\n"],"names":[],"mappings":";;;;;AA4BO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,MAAK;AAAA,MACL,gBAAc;AAAA,MACd,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ,aAAa,WAAW,aAAa,oBAAoB,aAAa,kBAAkB;AAAA,QAChG,YAAY,WAAW,aAAa,qBAAqB,aAAa;AAAA,QACtE,YAAY;AAAA,QACZ,WAAW;AAAA,MAAA;AAAA,MAGb,UAAA,qBAAC,KAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,IAAI,YAAY,aAAA,GACjD,UAAA;AAAA,QAAA,+BAAY,KAAA,EAAI,OAAO,EAAE,YAAY,EAAA,GAAM,UAAA,SAAQ;AAAA,QACpD,qBAAC,OAAA,EAAM,KAAK,GAAG,OAAO,EAAE,UAAU,GAAG,MAAM,EAAA,GACzC,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,YAAY;AAAA,gBACZ,KAAK;AAAA,cAAA;AAAA,cAGP,UAAA;AAAA,gBAAA,oBAAC,MAAA,EAAK,IAAI,KAAK,MAAK,MAAK,GAAG,aAAa,kBACtC,UAAA,MAAA,CACH;AAAA,gBACC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF,eACC,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAAoB,IAAI,KACrD,UAAA,YAAA,CACH;AAAA,QAAA,GAEJ;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,QAAQ,aAAa,WAAW,aAAa,oBAAoB,aAAa,kBAAkB;AAAA,cAChG,YAAY,WAAW,aAAa,oBAAoB;AAAA,cACxD,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,WAAW;AAAA,YAAA;AAAA,YAGZ,UAAA,YACC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO;AAAA,kBACL,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,YAAY,aAAa;AAAA,gBAAA;AAAA,cAC3B;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAEJ,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -15,24 +15,33 @@ function StatCard({
|
|
|
15
15
|
trend,
|
|
16
16
|
...rest
|
|
17
17
|
}) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
const isNeutral = color === "neutral";
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20
|
+
Card.Card,
|
|
21
|
+
{
|
|
22
|
+
bg: isNeutral ? index.fairmintVars.colorBgSurface : `${color}.0`,
|
|
23
|
+
bd: isNeutral ? `1px solid ${index.fairmintVars.colorBorderDefault}` : `1px solid ${color}.2`,
|
|
24
|
+
...rest,
|
|
25
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { justify: "space-between", align: "flex-start", children: [
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsxs(layout.Stack, { gap: 4, children: [
|
|
27
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28
|
+
Text.Text,
|
|
29
|
+
{
|
|
30
|
+
size: "xs",
|
|
31
|
+
fw: 600,
|
|
32
|
+
tt: "uppercase",
|
|
33
|
+
c: isNeutral ? index.fairmintVars.colorTextTertiary : `${color}.6`,
|
|
34
|
+
style: { letterSpacing: "0.05em" },
|
|
35
|
+
children: label
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 700, size: "xl", lh: 1, children: value }),
|
|
39
|
+
trend && /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { size: "xs", c: index.fairmintVars.colorTextSecondary, children: trend })
|
|
40
|
+
] }),
|
|
41
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(layout.Box, { c: `${color}.5`, fz: "1.5rem", children: icon })
|
|
42
|
+
] })
|
|
43
|
+
}
|
|
44
|
+
);
|
|
36
45
|
}
|
|
37
46
|
exports.StatCard = StatCard;
|
|
38
47
|
//# sourceMappingURL=StatCard.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatCard.cjs","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Card, type CardProps } from \"../../primitives/Card/Card\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface StatCardProps extends Omit<CardProps, \"children\"> {\n /** Card label (e.g., \"Total Value\"). */\n label: string;\n /** Formatted value string (e.g., \"$125,000\"). */\n value: string;\n /** Optional icon element. */\n icon?: ReactNode;\n /**\n * Mantine color name for the gradient background.\n * @default colors.primary\n */\n color?: string;\n /** Optional trend or supporting text below the value. */\n trend?: string;\n}\n\nexport function StatCard({\n label,\n value,\n icon,\n color = colors.primary,\n trend,\n ...rest\n}: StatCardProps) {\n return (\n <Card
|
|
1
|
+
{"version":3,"file":"StatCard.cjs","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Card, type CardProps } from \"../../primitives/Card/Card\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface StatCardProps extends Omit<CardProps, \"children\"> {\n /** Card label (e.g., \"Total Value\"). */\n label: string;\n /** Formatted value string (e.g., \"$125,000\"). */\n value: string;\n /** Optional icon element. */\n icon?: ReactNode;\n /**\n * Mantine color name for the gradient background.\n * @default colors.primary\n */\n color?: string;\n /** Optional trend or supporting text below the value. */\n trend?: string;\n}\n\nexport function StatCard({\n label,\n value,\n icon,\n color = colors.primary,\n trend,\n ...rest\n}: StatCardProps) {\n const isNeutral = color === \"neutral\";\n\n return (\n <Card\n bg={isNeutral ? fairmintVars.colorBgSurface : `${color}.0`}\n bd={isNeutral ? `1px solid ${fairmintVars.colorBorderDefault}` : `1px solid ${color}.2`}\n {...rest}\n >\n <Group justify=\"space-between\" align=\"flex-start\">\n <Stack gap={4}>\n <Text\n size=\"xs\"\n fw={600}\n tt=\"uppercase\"\n c={isNeutral ? fairmintVars.colorTextTertiary : `${color}.6`}\n style={{ letterSpacing: \"0.05em\" }}\n >\n {label}\n </Text>\n <Text fw={700} size=\"xl\" lh={1}>\n {value}\n </Text>\n {trend && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary}>\n {trend}\n </Text>\n )}\n </Stack>\n {icon && (\n <Box c={`${color}.5`} fz=\"1.5rem\">\n {icon}\n </Box>\n )}\n </Group>\n </Card>\n );\n}\n"],"names":["colors","jsx","Card","fairmintVars","jsxs","Group","Stack","Text","Box"],"mappings":";;;;;;;;;AAsBO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQA,OAAAA,OAAO;AAAA,EACf;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,YAAY,UAAU;AAE5B,SACEC,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACC,IAAI,YAAYC,MAAAA,aAAa,iBAAiB,GAAG,KAAK;AAAA,MACtD,IAAI,YAAY,aAAaA,MAAAA,aAAa,kBAAkB,KAAK,aAAa,KAAK;AAAA,MAClF,GAAG;AAAA,MAEJ,UAAAC,2BAAAA,KAACC,MAAAA,OAAA,EAAM,SAAQ,iBAAgB,OAAM,cACnC,UAAA;AAAA,QAAAD,2BAAAA,KAACE,OAAAA,OAAA,EAAM,KAAK,GACV,UAAA;AAAA,UAAAL,2BAAAA;AAAAA,YAACM,KAAAA;AAAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,IAAI;AAAA,cACJ,IAAG;AAAA,cACH,GAAG,YAAYJ,MAAAA,aAAa,oBAAoB,GAAG,KAAK;AAAA,cACxD,OAAO,EAAE,eAAe,SAAA;AAAA,cAEvB,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEHF,2BAAAA,IAACM,KAAAA,QAAK,IAAI,KAAK,MAAK,MAAK,IAAI,GAC1B,UAAA,MAAA,CACH;AAAA,UACC,wCACEA,WAAA,EAAK,MAAK,MAAK,GAAGJ,mBAAa,oBAC7B,UAAA,MAAA,CACH;AAAA,QAAA,GAEJ;AAAA,QACC,uCACEK,YAAA,EAAI,GAAG,GAAG,KAAK,MAAM,IAAG,UACtB,UAAA,KAAA,CACH;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAChE,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAsB,EACtB,KAAK,EACL,GAAG,IAAI,EACR,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"StatCard.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAChE,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAsB,EACtB,KAAK,EACL,GAAG,IAAI,EACR,EAAE,aAAa,2CAqCf"}
|
|
@@ -13,24 +13,33 @@ function StatCard({
|
|
|
13
13
|
trend,
|
|
14
14
|
...rest
|
|
15
15
|
}) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
const isNeutral = color === "neutral";
|
|
17
|
+
return /* @__PURE__ */ jsx(
|
|
18
|
+
Card,
|
|
19
|
+
{
|
|
20
|
+
bg: isNeutral ? fairmintVars.colorBgSurface : `${color}.0`,
|
|
21
|
+
bd: isNeutral ? `1px solid ${fairmintVars.colorBorderDefault}` : `1px solid ${color}.2`,
|
|
22
|
+
...rest,
|
|
23
|
+
children: /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "flex-start", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
25
|
+
/* @__PURE__ */ jsx(
|
|
26
|
+
Text,
|
|
27
|
+
{
|
|
28
|
+
size: "xs",
|
|
29
|
+
fw: 600,
|
|
30
|
+
tt: "uppercase",
|
|
31
|
+
c: isNeutral ? fairmintVars.colorTextTertiary : `${color}.6`,
|
|
32
|
+
style: { letterSpacing: "0.05em" },
|
|
33
|
+
children: label
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ jsx(Text, { fw: 700, size: "xl", lh: 1, children: value }),
|
|
37
|
+
trend && /* @__PURE__ */ jsx(Text, { size: "xs", c: fairmintVars.colorTextSecondary, children: trend })
|
|
38
|
+
] }),
|
|
39
|
+
icon && /* @__PURE__ */ jsx(Box, { c: `${color}.5`, fz: "1.5rem", children: icon })
|
|
40
|
+
] })
|
|
41
|
+
}
|
|
42
|
+
);
|
|
34
43
|
}
|
|
35
44
|
export {
|
|
36
45
|
StatCard
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatCard.js","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Card, type CardProps } from \"../../primitives/Card/Card\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface StatCardProps extends Omit<CardProps, \"children\"> {\n /** Card label (e.g., \"Total Value\"). */\n label: string;\n /** Formatted value string (e.g., \"$125,000\"). */\n value: string;\n /** Optional icon element. */\n icon?: ReactNode;\n /**\n * Mantine color name for the gradient background.\n * @default colors.primary\n */\n color?: string;\n /** Optional trend or supporting text below the value. */\n trend?: string;\n}\n\nexport function StatCard({\n label,\n value,\n icon,\n color = colors.primary,\n trend,\n ...rest\n}: StatCardProps) {\n return (\n <Card
|
|
1
|
+
{"version":3,"file":"StatCard.js","sources":["../../../../src/components/generic/StatCard/StatCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Card, type CardProps } from \"../../primitives/Card/Card\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface StatCardProps extends Omit<CardProps, \"children\"> {\n /** Card label (e.g., \"Total Value\"). */\n label: string;\n /** Formatted value string (e.g., \"$125,000\"). */\n value: string;\n /** Optional icon element. */\n icon?: ReactNode;\n /**\n * Mantine color name for the gradient background.\n * @default colors.primary\n */\n color?: string;\n /** Optional trend or supporting text below the value. */\n trend?: string;\n}\n\nexport function StatCard({\n label,\n value,\n icon,\n color = colors.primary,\n trend,\n ...rest\n}: StatCardProps) {\n const isNeutral = color === \"neutral\";\n\n return (\n <Card\n bg={isNeutral ? fairmintVars.colorBgSurface : `${color}.0`}\n bd={isNeutral ? `1px solid ${fairmintVars.colorBorderDefault}` : `1px solid ${color}.2`}\n {...rest}\n >\n <Group justify=\"space-between\" align=\"flex-start\">\n <Stack gap={4}>\n <Text\n size=\"xs\"\n fw={600}\n tt=\"uppercase\"\n c={isNeutral ? fairmintVars.colorTextTertiary : `${color}.6`}\n style={{ letterSpacing: \"0.05em\" }}\n >\n {label}\n </Text>\n <Text fw={700} size=\"xl\" lh={1}>\n {value}\n </Text>\n {trend && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary}>\n {trend}\n </Text>\n )}\n </Stack>\n {icon && (\n <Box c={`${color}.5`} fz=\"1.5rem\">\n {icon}\n </Box>\n )}\n </Group>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAsBO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,OAAO;AAAA,EACf;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,YAAY,UAAU;AAE5B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,YAAY,aAAa,iBAAiB,GAAG,KAAK;AAAA,MACtD,IAAI,YAAY,aAAa,aAAa,kBAAkB,KAAK,aAAa,KAAK;AAAA,MAClF,GAAG;AAAA,MAEJ,UAAA,qBAAC,OAAA,EAAM,SAAQ,iBAAgB,OAAM,cACnC,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAM,KAAK,GACV,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,IAAI;AAAA,cACJ,IAAG;AAAA,cACH,GAAG,YAAY,aAAa,oBAAoB,GAAG,KAAK;AAAA,cACxD,OAAO,EAAE,eAAe,SAAA;AAAA,cAEvB,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEH,oBAAC,QAAK,IAAI,KAAK,MAAK,MAAK,IAAI,GAC1B,UAAA,MAAA,CACH;AAAA,UACC,6BACE,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAC7B,UAAA,MAAA,CACH;AAAA,QAAA,GAEJ;AAAA,QACC,4BACE,KAAA,EAAI,GAAG,GAAG,KAAK,MAAM,IAAG,UACtB,UAAA,KAAA,CACH;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -52,8 +52,8 @@ function StepCard({
|
|
|
52
52
|
style: {
|
|
53
53
|
flexShrink: 0,
|
|
54
54
|
pointerEvents: "none",
|
|
55
|
-
background: done ? index.
|
|
56
|
-
color: done ?
|
|
55
|
+
background: done ? index.fairmintVars.colorBrandPrimary : index.fairmintVars.colorBgSurfaceSecondary,
|
|
56
|
+
color: done ? index.fairmintVars.colorTextInverse : index.fairmintVars.colorTextPrimary,
|
|
57
57
|
border: done ? void 0 : `1px solid ${index.fairmintVars.colorBorderDefault}`
|
|
58
58
|
},
|
|
59
59
|
children: done ? doneIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 700, fz: 14, children: index$1 })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepCard.cjs","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"StepCard.cjs","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars, responsiveTypography } from \"../../../theme\";\nimport { Box, Group, Paper, Stack, Text, ThemeIcon } from \"../../primitives/layout\";\n\n/** Default check glyph shown when `done === true`. Inline SVG — check only, no circle outline. */\nconst DefaultCheckIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nexport interface StepCardProps {\n /** 1-indexed step number shown in the indicator when not done. */\n index: number;\n /** Step title. */\n title: string;\n /** Optional supporting text below the title. */\n description?: string;\n /** When true, the indicator flips from the number to a check glyph. */\n done?: boolean;\n /**\n * Override the icon shown when `done === true`. Defaults to a check-only\n * glyph. Accept-as-ReactNode so consumers don't need to import an icon library.\n */\n doneIcon?: ReactNode;\n /** Step content rendered below the header. */\n children: ReactNode;\n}\n\n/**\n * Numbered step card used in multi-section wizards and form flows.\n *\n * The numbered indicator on the left flips to a check when the step is\n * marked done — a quiet progress signal that doesn't compete with the\n * right-column summary or page-level progress UI. Each step sits in\n * its own `Paper` for clear visual separation.\n *\n * The header indicator is the focal point; consumers control the body\n * via `children`.\n */\nexport function StepCard({\n index,\n title,\n description,\n done = false,\n doneIcon,\n children,\n}: StepCardProps) {\n return (\n <Paper\n radius=\"lg\"\n p={{ base: \"md\", sm: \"xl\" }}\n style={{\n background: fairmintVars.colorBgSurface,\n border: `1px solid ${fairmintVars.colorBorderDefault}`,\n }}\n >\n <Stack gap=\"md\">\n <Group gap=\"md\" align=\"flex-start\" wrap=\"nowrap\">\n <ThemeIcon\n size={32}\n radius=\"xl\"\n variant={done ? \"filled\" : \"light\"}\n color={done ? \"indigo\" : \"gray\"}\n aria-label={done ? `Step ${index} complete` : `Step ${index}`}\n style={{\n flexShrink: 0,\n pointerEvents: \"none\",\n background: done\n ? fairmintVars.colorBrandPrimary\n : fairmintVars.colorBgSurfaceSecondary,\n color: done ? fairmintVars.colorTextInverse : fairmintVars.colorTextPrimary,\n border: done ? undefined : `1px solid ${fairmintVars.colorBorderDefault}`,\n }}\n >\n {done ? (\n (doneIcon ?? <DefaultCheckIcon />)\n ) : (\n <Text fw={700} fz={14}>\n {index}\n </Text>\n )}\n </ThemeIcon>\n <Box style={{ minWidth: 0, flex: 1 }}>\n <Text\n fw={700}\n fz={responsiveTypography.cardTitle}\n c={fairmintVars.colorTextPrimary}\n lh={1.3}\n >\n {title}\n </Text>\n {description && (\n <Text size=\"sm\" c={fairmintVars.colorTextSecondary} lh={1.5} mt={4}>\n {description}\n </Text>\n )}\n </Box>\n </Group>\n <Box pl={{ base: 0, sm: 48 }}>{children}</Box>\n </Stack>\n </Paper>\n );\n}\n"],"names":["jsx","index","Paper","fairmintVars","jsxs","Stack","Group","ThemeIcon","Text","Box","responsiveTypography"],"mappings":";;;;;;;;;AAKA,MAAM,mBAAmB,MACvBA,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,kBAAA,CAAkB;AAAA,EAAA;AAC5B;AAgCK,SAAS,SAAS;AAAA,EAAA,OACvBC;AAAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAkB;AAChB,SACED,2BAAAA;AAAAA,IAACE,OAAAA;AAAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,GAAG,EAAE,MAAM,MAAM,IAAI,KAAA;AAAA,MACrB,OAAO;AAAA,QACL,YAAYC,MAAAA,aAAa;AAAA,QACzB,QAAQ,aAAaA,MAAAA,aAAa,kBAAkB;AAAA,MAAA;AAAA,MAGtD,UAAAC,2BAAAA,KAACC,OAAAA,OAAA,EAAM,KAAI,MACT,UAAA;AAAA,QAAAD,gCAACE,MAAAA,SAAM,KAAI,MAAK,OAAM,cAAa,MAAK,UACtC,UAAA;AAAA,UAAAN,2BAAAA;AAAAA,YAACO,UAAAA;AAAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAS,OAAO,WAAW;AAAA,cAC3B,OAAO,OAAO,WAAW;AAAA,cACzB,cAAY,OAAO,QAAQN,OAAK,cAAc,QAAQA,OAAK;AAAA,cAC3D,OAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,eAAe;AAAA,gBACf,YAAY,OACRE,MAAAA,aAAa,oBACbA,MAAAA,aAAa;AAAA,gBACjB,OAAO,OAAOA,MAAAA,aAAa,mBAAmBA,MAAAA,aAAa;AAAA,gBAC3D,QAAQ,OAAO,SAAY,aAAaA,MAAAA,aAAa,kBAAkB;AAAA,cAAA;AAAA,cAGxE,UAAA,OACE,YAAYH,2BAAAA,IAAC,kBAAA,CAAA,CAAiB,IAE/BA,2BAAAA,IAACQ,KAAAA,MAAA,EAAK,IAAI,KAAK,IAAI,IAChB,UAAAP,QAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJG,gCAACK,OAAAA,OAAI,OAAO,EAAE,UAAU,GAAG,MAAM,KAC/B,UAAA;AAAA,YAAAT,2BAAAA;AAAAA,cAACQ,KAAAA;AAAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAIE,qBAAAA,qBAAqB;AAAA,gBACzB,GAAGP,MAAAA,aAAa;AAAA,gBAChB,IAAI;AAAA,gBAEH,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,eACCH,2BAAAA,IAACQ,KAAAA,MAAA,EAAK,MAAK,MAAK,GAAGL,MAAAA,aAAa,oBAAoB,IAAI,KAAK,IAAI,GAC9D,UAAA,YAAA,CACH;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA,GACF;AAAA,QACAH,+BAACS,OAAAA,OAAI,IAAI,EAAE,MAAM,GAAG,IAAI,GAAA,GAAO,SAAA,CAAS;AAAA,MAAA,EAAA,CAC1C;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepCard.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqBvC,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"StepCard.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqBvC,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,aAAa,2CAwDf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { fairmintVars
|
|
2
|
+
import { fairmintVars } from "../../../theme/index.js";
|
|
3
3
|
import { Paper, Stack, Box } from "../../primitives/layout.js";
|
|
4
4
|
import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
|
|
5
5
|
import { ThemeIcon } from "../../../node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.js";
|
|
@@ -50,8 +50,8 @@ function StepCard({
|
|
|
50
50
|
style: {
|
|
51
51
|
flexShrink: 0,
|
|
52
52
|
pointerEvents: "none",
|
|
53
|
-
background: done ?
|
|
54
|
-
color: done ?
|
|
53
|
+
background: done ? fairmintVars.colorBrandPrimary : fairmintVars.colorBgSurfaceSecondary,
|
|
54
|
+
color: done ? fairmintVars.colorTextInverse : fairmintVars.colorTextPrimary,
|
|
55
55
|
border: done ? void 0 : `1px solid ${fairmintVars.colorBorderDefault}`
|
|
56
56
|
},
|
|
57
57
|
children: done ? doneIcon ?? /* @__PURE__ */ jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsx(Text, { fw: 700, fz: 14, children: index })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepCard.js","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"StepCard.js","sources":["../../../../src/components/generic/StepCard/StepCard.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars, responsiveTypography } from \"../../../theme\";\nimport { Box, Group, Paper, Stack, Text, ThemeIcon } from \"../../primitives/layout\";\n\n/** Default check glyph shown when `done === true`. Inline SVG — check only, no circle outline. */\nconst DefaultCheckIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nexport interface StepCardProps {\n /** 1-indexed step number shown in the indicator when not done. */\n index: number;\n /** Step title. */\n title: string;\n /** Optional supporting text below the title. */\n description?: string;\n /** When true, the indicator flips from the number to a check glyph. */\n done?: boolean;\n /**\n * Override the icon shown when `done === true`. Defaults to a check-only\n * glyph. Accept-as-ReactNode so consumers don't need to import an icon library.\n */\n doneIcon?: ReactNode;\n /** Step content rendered below the header. */\n children: ReactNode;\n}\n\n/**\n * Numbered step card used in multi-section wizards and form flows.\n *\n * The numbered indicator on the left flips to a check when the step is\n * marked done — a quiet progress signal that doesn't compete with the\n * right-column summary or page-level progress UI. Each step sits in\n * its own `Paper` for clear visual separation.\n *\n * The header indicator is the focal point; consumers control the body\n * via `children`.\n */\nexport function StepCard({\n index,\n title,\n description,\n done = false,\n doneIcon,\n children,\n}: StepCardProps) {\n return (\n <Paper\n radius=\"lg\"\n p={{ base: \"md\", sm: \"xl\" }}\n style={{\n background: fairmintVars.colorBgSurface,\n border: `1px solid ${fairmintVars.colorBorderDefault}`,\n }}\n >\n <Stack gap=\"md\">\n <Group gap=\"md\" align=\"flex-start\" wrap=\"nowrap\">\n <ThemeIcon\n size={32}\n radius=\"xl\"\n variant={done ? \"filled\" : \"light\"}\n color={done ? \"indigo\" : \"gray\"}\n aria-label={done ? `Step ${index} complete` : `Step ${index}`}\n style={{\n flexShrink: 0,\n pointerEvents: \"none\",\n background: done\n ? fairmintVars.colorBrandPrimary\n : fairmintVars.colorBgSurfaceSecondary,\n color: done ? fairmintVars.colorTextInverse : fairmintVars.colorTextPrimary,\n border: done ? undefined : `1px solid ${fairmintVars.colorBorderDefault}`,\n }}\n >\n {done ? (\n (doneIcon ?? <DefaultCheckIcon />)\n ) : (\n <Text fw={700} fz={14}>\n {index}\n </Text>\n )}\n </ThemeIcon>\n <Box style={{ minWidth: 0, flex: 1 }}>\n <Text\n fw={700}\n fz={responsiveTypography.cardTitle}\n c={fairmintVars.colorTextPrimary}\n lh={1.3}\n >\n {title}\n </Text>\n {description && (\n <Text size=\"sm\" c={fairmintVars.colorTextSecondary} lh={1.5} mt={4}>\n {description}\n </Text>\n )}\n </Box>\n </Group>\n <Box pl={{ base: 0, sm: 48 }}>{children}</Box>\n </Stack>\n </Paper>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAKA,MAAM,mBAAmB,MACvB;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,kBAAA,CAAkB;AAAA,EAAA;AAC5B;AAgCK,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAkB;AAChB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,GAAG,EAAE,MAAM,MAAM,IAAI,KAAA;AAAA,MACrB,OAAO;AAAA,QACL,YAAY,aAAa;AAAA,QACzB,QAAQ,aAAa,aAAa,kBAAkB;AAAA,MAAA;AAAA,MAGtD,UAAA,qBAAC,OAAA,EAAM,KAAI,MACT,UAAA;AAAA,QAAA,qBAAC,SAAM,KAAI,MAAK,OAAM,cAAa,MAAK,UACtC,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAS,OAAO,WAAW;AAAA,cAC3B,OAAO,OAAO,WAAW;AAAA,cACzB,cAAY,OAAO,QAAQ,KAAK,cAAc,QAAQ,KAAK;AAAA,cAC3D,OAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,eAAe;AAAA,gBACf,YAAY,OACR,aAAa,oBACb,aAAa;AAAA,gBACjB,OAAO,OAAO,aAAa,mBAAmB,aAAa;AAAA,gBAC3D,QAAQ,OAAO,SAAY,aAAa,aAAa,kBAAkB;AAAA,cAAA;AAAA,cAGxE,UAAA,OACE,YAAY,oBAAC,kBAAA,CAAA,CAAiB,IAE/B,oBAAC,MAAA,EAAK,IAAI,KAAK,IAAI,IAChB,UAAA,MAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJ,qBAAC,OAAI,OAAO,EAAE,UAAU,GAAG,MAAM,KAC/B,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,IAAI,qBAAqB;AAAA,gBACzB,GAAG,aAAa;AAAA,gBAChB,IAAI;AAAA,gBAEH,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,eACC,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAAoB,IAAI,KAAK,IAAI,GAC9D,UAAA,YAAA,CACH;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA,GACF;AAAA,QACA,oBAAC,OAAI,IAAI,EAAE,MAAM,GAAG,IAAI,GAAA,GAAO,SAAA,CAAS;AAAA,MAAA,EAAA,CAC1C;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -17,11 +17,11 @@ function SideNav({ items, onItemClick, color = "indigo" }) {
|
|
|
17
17
|
style: { borderRadius: index.radii.md },
|
|
18
18
|
styles: {
|
|
19
19
|
root: {
|
|
20
|
-
color: item.active ?
|
|
20
|
+
color: item.active ? index.fairmintVars.colorTextPrimary : index.fairmintVars.colorTextSecondary,
|
|
21
21
|
fontWeight: item.active ? 500 : 400
|
|
22
22
|
},
|
|
23
23
|
section: {
|
|
24
|
-
color: item.active ?
|
|
24
|
+
color: item.active ? index.fairmintVars.colorBrandPrimary : index.fairmintVars.colorIconTertiary
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.cjs","sources":["../../../../src/components/layout/SideNav/SideNav.tsx"],"sourcesContent":["import { NavLink, Stack } from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"SideNav.cjs","sources":["../../../../src/components/layout/SideNav/SideNav.tsx"],"sourcesContent":["import { NavLink, Stack } from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\n\nexport interface SideNavItem {\n /** Unique identifier for this nav item (e.g., route path or slug). */\n id: string;\n /** Display label. */\n label: string;\n /** Icon element. */\n icon?: ReactNode;\n /** Whether this item is currently active. */\n active?: boolean;\n}\n\nexport interface SideNavProps {\n /** Navigation items to render. */\n items: SideNavItem[];\n /** Callback when a nav item is clicked. Receives the item's `id`. */\n onItemClick: (id: string) => void;\n /** Active color. @default \"indigo\" */\n color?: string;\n}\n\nexport function SideNav({ items, onItemClick, color = \"indigo\" }: SideNavProps) {\n return (\n <Stack component=\"nav\" gap={4} p=\"md\" aria-label=\"Main navigation\">\n {items.map((item) => (\n <NavLink\n key={item.id}\n label={item.label}\n leftSection={item.icon}\n active={item.active}\n onClick={() => onItemClick(item.id)}\n color={color}\n variant=\"light\"\n style={{ borderRadius: radii.md }}\n styles={{\n root: {\n color: item.active ? fairmintVars.colorTextPrimary : fairmintVars.colorTextSecondary,\n fontWeight: item.active ? 500 : 400,\n },\n section: {\n color: item.active ? fairmintVars.colorBrandPrimary : fairmintVars.colorIconTertiary,\n },\n }}\n />\n ))}\n </Stack>\n );\n}\n"],"names":["jsx","Stack","NavLink","radii","fairmintVars"],"mappings":";;;;;;AAwBO,SAAS,QAAQ,EAAE,OAAO,aAAa,QAAQ,YAA0B;AAC9E,SACEA,2BAAAA,IAACC,MAAAA,OAAA,EAAM,WAAU,OAAM,KAAK,GAAG,GAAE,MAAK,cAAW,mBAC9C,UAAA,MAAM,IAAI,CAAC,SACVD,2BAAAA;AAAAA,IAACE,QAAAA;AAAAA,IAAA;AAAA,MAEC,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,SAAS,MAAM,YAAY,KAAK,EAAE;AAAA,MAClC;AAAA,MACA,SAAQ;AAAA,MACR,OAAO,EAAE,cAAcC,MAAAA,MAAM,GAAA;AAAA,MAC7B,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,OAAO,KAAK,SAASC,MAAAA,aAAa,mBAAmBA,MAAAA,aAAa;AAAA,UAClE,YAAY,KAAK,SAAS,MAAM;AAAA,QAAA;AAAA,QAElC,SAAS;AAAA,UACP,OAAO,KAAK,SAASA,MAAAA,aAAa,oBAAoBA,MAAAA,aAAa;AAAA,QAAA;AAAA,MACrE;AAAA,IACF;AAAA,IAhBK,KAAK;AAAA,EAAA,CAkBb,GACH;AAEJ;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { fairmintVars, radii } from "../../../theme/index.js";
|
|
3
3
|
import { Stack } from "../../../node_modules/@mantine/core/esm/components/Stack/Stack.js";
|
|
4
4
|
import { NavLink } from "../../../node_modules/@mantine/core/esm/components/NavLink/NavLink.js";
|
|
5
5
|
function SideNav({ items, onItemClick, color = "indigo" }) {
|
|
@@ -15,11 +15,11 @@ function SideNav({ items, onItemClick, color = "indigo" }) {
|
|
|
15
15
|
style: { borderRadius: radii.md },
|
|
16
16
|
styles: {
|
|
17
17
|
root: {
|
|
18
|
-
color: item.active ?
|
|
18
|
+
color: item.active ? fairmintVars.colorTextPrimary : fairmintVars.colorTextSecondary,
|
|
19
19
|
fontWeight: item.active ? 500 : 400
|
|
20
20
|
},
|
|
21
21
|
section: {
|
|
22
|
-
color: item.active ?
|
|
22
|
+
color: item.active ? fairmintVars.colorBrandPrimary : fairmintVars.colorIconTertiary
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.js","sources":["../../../../src/components/layout/SideNav/SideNav.tsx"],"sourcesContent":["import { NavLink, Stack } from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"SideNav.js","sources":["../../../../src/components/layout/SideNav/SideNav.tsx"],"sourcesContent":["import { NavLink, Stack } from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport { fairmintVars, radii } from \"../../../theme\";\n\nexport interface SideNavItem {\n /** Unique identifier for this nav item (e.g., route path or slug). */\n id: string;\n /** Display label. */\n label: string;\n /** Icon element. */\n icon?: ReactNode;\n /** Whether this item is currently active. */\n active?: boolean;\n}\n\nexport interface SideNavProps {\n /** Navigation items to render. */\n items: SideNavItem[];\n /** Callback when a nav item is clicked. Receives the item's `id`. */\n onItemClick: (id: string) => void;\n /** Active color. @default \"indigo\" */\n color?: string;\n}\n\nexport function SideNav({ items, onItemClick, color = \"indigo\" }: SideNavProps) {\n return (\n <Stack component=\"nav\" gap={4} p=\"md\" aria-label=\"Main navigation\">\n {items.map((item) => (\n <NavLink\n key={item.id}\n label={item.label}\n leftSection={item.icon}\n active={item.active}\n onClick={() => onItemClick(item.id)}\n color={color}\n variant=\"light\"\n style={{ borderRadius: radii.md }}\n styles={{\n root: {\n color: item.active ? fairmintVars.colorTextPrimary : fairmintVars.colorTextSecondary,\n fontWeight: item.active ? 500 : 400,\n },\n section: {\n color: item.active ? fairmintVars.colorBrandPrimary : fairmintVars.colorIconTertiary,\n },\n }}\n />\n ))}\n </Stack>\n );\n}\n"],"names":[],"mappings":";;;;AAwBO,SAAS,QAAQ,EAAE,OAAO,aAAa,QAAQ,YAA0B;AAC9E,SACE,oBAAC,OAAA,EAAM,WAAU,OAAM,KAAK,GAAG,GAAE,MAAK,cAAW,mBAC9C,UAAA,MAAM,IAAI,CAAC,SACV;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,SAAS,MAAM,YAAY,KAAK,EAAE;AAAA,MAClC;AAAA,MACA,SAAQ;AAAA,MACR,OAAO,EAAE,cAAc,MAAM,GAAA;AAAA,MAC7B,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,OAAO,KAAK,SAAS,aAAa,mBAAmB,aAAa;AAAA,UAClE,YAAY,KAAK,SAAS,MAAM;AAAA,QAAA;AAAA,QAElC,SAAS;AAAA,UACP,OAAO,KAAK,SAAS,aAAa,oBAAoB,aAAa;AAAA,QAAA;AAAA,MACrE;AAAA,IACF;AAAA,IAhBK,KAAK;AAAA,EAAA,CAkBb,GACH;AAEJ;"}
|
|
@@ -15,14 +15,22 @@ const compatBadgeColorMap = {
|
|
|
15
15
|
success: colors.colors.success,
|
|
16
16
|
warning: colors.colors.warning
|
|
17
17
|
};
|
|
18
|
+
const semanticSolidColorMap = {
|
|
19
|
+
error: "var(--fairmint-color-error-solid)",
|
|
20
|
+
indigo: "var(--fairmint-color-brand-primary)",
|
|
21
|
+
info: "var(--fairmint-color-info-solid)",
|
|
22
|
+
success: "var(--fairmint-color-success-solid)",
|
|
23
|
+
warning: "var(--fairmint-color-warning-solid)"
|
|
24
|
+
};
|
|
18
25
|
const resolveBadgeColor = (color) => {
|
|
19
|
-
if (!color) return
|
|
26
|
+
if (!color) return index.fairmintVars.colorErrorSolid;
|
|
20
27
|
const mappedColor = compatBadgeColorMap[color] || color;
|
|
21
28
|
if (mappedColor.startsWith("#") || mappedColor.startsWith("rgb") || mappedColor.startsWith("hsl"))
|
|
22
29
|
return mappedColor;
|
|
23
30
|
if (mappedColor.startsWith("var(")) return mappedColor;
|
|
24
|
-
const [colorName, shade
|
|
25
|
-
|
|
31
|
+
const [colorName, shade] = mappedColor.split(".");
|
|
32
|
+
if (!shade && semanticSolidColorMap[colorName]) return semanticSolidColorMap[colorName];
|
|
33
|
+
return `var(--mantine-color-${colorName}-${shade ?? "6"})`;
|
|
26
34
|
};
|
|
27
35
|
const resolveAnchorStyle = (anchorOrigin) => {
|
|
28
36
|
const vertical = anchorOrigin?.vertical ?? "top";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.cjs","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"sourcesContent":["import { Badge as MantineBadge, type BadgeProps as MantineBadgeProps } from \"@mantine/core\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { forwardRef } from \"react\";\nimport { commonColors } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\ntype BadgeAnchorOrigin = {\n horizontal?: \"left\" | \"right\";\n vertical?: \"bottom\" | \"top\";\n};\n\nexport interface BadgeProps extends MantineBadgeProps {\n anchorOrigin?: BadgeAnchorOrigin;\n badgeContent?: ReactNode;\n dot?: boolean;\n invisible?: boolean;\n max?: number;\n overlap?: \"circular\" | \"rectangular\";\n processing?: boolean;\n showZero?: boolean;\n sx?: Sx;\n}\n\nconst compatBadgeColorMap: Record<string, string> = {\n default: colors.neutral,\n error: colors.error,\n info: colors.info,\n primary: colors.primary,\n secondary: colors.neutral,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst resolveBadgeColor = (color: MantineBadgeProps[\"color\"]): string => {\n if (!color) return
|
|
1
|
+
{"version":3,"file":"Badge.cjs","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"sourcesContent":["import { Badge as MantineBadge, type BadgeProps as MantineBadgeProps } from \"@mantine/core\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { forwardRef } from \"react\";\nimport { commonColors, fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\ntype BadgeAnchorOrigin = {\n horizontal?: \"left\" | \"right\";\n vertical?: \"bottom\" | \"top\";\n};\n\nexport interface BadgeProps extends MantineBadgeProps {\n anchorOrigin?: BadgeAnchorOrigin;\n badgeContent?: ReactNode;\n dot?: boolean;\n invisible?: boolean;\n max?: number;\n overlap?: \"circular\" | \"rectangular\";\n processing?: boolean;\n showZero?: boolean;\n sx?: Sx;\n}\n\nconst compatBadgeColorMap: Record<string, string> = {\n default: colors.neutral,\n error: colors.error,\n info: colors.info,\n primary: colors.primary,\n secondary: colors.neutral,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst semanticSolidColorMap: Record<string, string> = {\n error: \"var(--fairmint-color-error-solid)\",\n indigo: \"var(--fairmint-color-brand-primary)\",\n info: \"var(--fairmint-color-info-solid)\",\n success: \"var(--fairmint-color-success-solid)\",\n warning: \"var(--fairmint-color-warning-solid)\",\n};\n\nconst resolveBadgeColor = (color: MantineBadgeProps[\"color\"]): string => {\n if (!color) return fairmintVars.colorErrorSolid;\n const mappedColor = compatBadgeColorMap[color] || color;\n if (mappedColor.startsWith(\"#\") || mappedColor.startsWith(\"rgb\") || mappedColor.startsWith(\"hsl\"))\n return mappedColor;\n if (mappedColor.startsWith(\"var(\")) return mappedColor;\n\n const [colorName, shade] = mappedColor.split(\".\");\n if (!shade && semanticSolidColorMap[colorName]) return semanticSolidColorMap[colorName];\n\n return `var(--mantine-color-${colorName}-${shade ?? \"6\"})`;\n};\n\nconst resolveAnchorStyle = (anchorOrigin?: BadgeAnchorOrigin): CSSProperties => {\n const vertical = anchorOrigin?.vertical ?? \"top\";\n const horizontal = anchorOrigin?.horizontal ?? \"right\";\n\n return {\n [horizontal]: -4,\n [vertical]: -4,\n };\n};\n\nconst formatBadgeContent = (badgeContent: ReactNode, max?: number) => {\n if (typeof badgeContent !== \"number\" || max === undefined || badgeContent <= max) {\n return badgeContent;\n }\n\n return `${max}+`;\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n anchorOrigin,\n badgeContent,\n children,\n color,\n dot,\n invisible,\n max,\n overlap: _overlap,\n processing: _processing,\n showZero,\n sx,\n style,\n variant = \"light\",\n ...props\n },\n ref,\n ) => {\n const sxStyle = useSxStyle(sx);\n\n if (dot || badgeContent !== undefined) {\n const shouldHideBadge = invisible || (!dot && badgeContent === 0 && !showZero);\n\n return (\n <span\n {...props}\n ref={ref}\n style={{\n display: \"inline-flex\",\n lineHeight: 1,\n position: \"relative\",\n ...sxStyle,\n ...(style as CSSProperties),\n }}\n >\n {children}\n {shouldHideBadge ? null : (\n <span\n aria-hidden={dot ? \"true\" : undefined}\n style={{\n backgroundColor: resolveBadgeColor(color),\n border: \"2px solid var(--mantine-color-body)\",\n borderRadius: 999,\n color: commonColors.white,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 10,\n fontWeight: 700,\n lineHeight: 1,\n minHeight: dot ? 10 : 16,\n minWidth: dot ? 10 : 16,\n padding: dot ? 0 : \"0 4px\",\n position: \"absolute\",\n ...resolveAnchorStyle(anchorOrigin),\n }}\n >\n {!dot && formatBadgeContent(badgeContent, max)}\n </span>\n )}\n </span>\n );\n }\n\n return (\n <MantineBadge\n component=\"span\"\n color={color}\n variant={variant}\n {...props}\n style={{ ...sxStyle, ...style }}\n ref={ref}\n >\n {children}\n </MantineBadge>\n );\n },\n);\nBadge.displayName = \"Badge\";\n"],"names":["colors","fairmintVars","forwardRef","sx","useSxStyle","jsxs","jsx","commonColors","MantineBadge"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,EAAE,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAE5C,KAAK,iBAAiB,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,EAAE,CAAC;CACT;
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,EAAE,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAE5C,KAAK,iBAAiB,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,EAAE,CAAC;CACT;AAmDD,eAAO,MAAM,KAAK,wGA+EjB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
|
-
import { commonColors } from "../../../theme/index.js";
|
|
3
|
+
import { commonColors, fairmintVars } from "../../../theme/index.js";
|
|
4
4
|
import { colors } from "../../../theme/colors.js";
|
|
5
5
|
import { useSxStyle } from "../sx.js";
|
|
6
6
|
import { Badge as Badge$1 } from "../../../node_modules/@mantine/core/esm/components/Badge/Badge.js";
|
|
@@ -13,14 +13,22 @@ const compatBadgeColorMap = {
|
|
|
13
13
|
success: colors.success,
|
|
14
14
|
warning: colors.warning
|
|
15
15
|
};
|
|
16
|
+
const semanticSolidColorMap = {
|
|
17
|
+
error: "var(--fairmint-color-error-solid)",
|
|
18
|
+
indigo: "var(--fairmint-color-brand-primary)",
|
|
19
|
+
info: "var(--fairmint-color-info-solid)",
|
|
20
|
+
success: "var(--fairmint-color-success-solid)",
|
|
21
|
+
warning: "var(--fairmint-color-warning-solid)"
|
|
22
|
+
};
|
|
16
23
|
const resolveBadgeColor = (color) => {
|
|
17
|
-
if (!color) return
|
|
24
|
+
if (!color) return fairmintVars.colorErrorSolid;
|
|
18
25
|
const mappedColor = compatBadgeColorMap[color] || color;
|
|
19
26
|
if (mappedColor.startsWith("#") || mappedColor.startsWith("rgb") || mappedColor.startsWith("hsl"))
|
|
20
27
|
return mappedColor;
|
|
21
28
|
if (mappedColor.startsWith("var(")) return mappedColor;
|
|
22
|
-
const [colorName, shade
|
|
23
|
-
|
|
29
|
+
const [colorName, shade] = mappedColor.split(".");
|
|
30
|
+
if (!shade && semanticSolidColorMap[colorName]) return semanticSolidColorMap[colorName];
|
|
31
|
+
return `var(--mantine-color-${colorName}-${shade ?? "6"})`;
|
|
24
32
|
};
|
|
25
33
|
const resolveAnchorStyle = (anchorOrigin) => {
|
|
26
34
|
const vertical = anchorOrigin?.vertical ?? "top";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"sourcesContent":["import { Badge as MantineBadge, type BadgeProps as MantineBadgeProps } from \"@mantine/core\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { forwardRef } from \"react\";\nimport { commonColors } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\ntype BadgeAnchorOrigin = {\n horizontal?: \"left\" | \"right\";\n vertical?: \"bottom\" | \"top\";\n};\n\nexport interface BadgeProps extends MantineBadgeProps {\n anchorOrigin?: BadgeAnchorOrigin;\n badgeContent?: ReactNode;\n dot?: boolean;\n invisible?: boolean;\n max?: number;\n overlap?: \"circular\" | \"rectangular\";\n processing?: boolean;\n showZero?: boolean;\n sx?: Sx;\n}\n\nconst compatBadgeColorMap: Record<string, string> = {\n default: colors.neutral,\n error: colors.error,\n info: colors.info,\n primary: colors.primary,\n secondary: colors.neutral,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst resolveBadgeColor = (color: MantineBadgeProps[\"color\"]): string => {\n if (!color) return
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../../../src/components/primitives/Badge/Badge.tsx"],"sourcesContent":["import { Badge as MantineBadge, type BadgeProps as MantineBadgeProps } from \"@mantine/core\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { forwardRef } from \"react\";\nimport { commonColors, fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\ntype BadgeAnchorOrigin = {\n horizontal?: \"left\" | \"right\";\n vertical?: \"bottom\" | \"top\";\n};\n\nexport interface BadgeProps extends MantineBadgeProps {\n anchorOrigin?: BadgeAnchorOrigin;\n badgeContent?: ReactNode;\n dot?: boolean;\n invisible?: boolean;\n max?: number;\n overlap?: \"circular\" | \"rectangular\";\n processing?: boolean;\n showZero?: boolean;\n sx?: Sx;\n}\n\nconst compatBadgeColorMap: Record<string, string> = {\n default: colors.neutral,\n error: colors.error,\n info: colors.info,\n primary: colors.primary,\n secondary: colors.neutral,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst semanticSolidColorMap: Record<string, string> = {\n error: \"var(--fairmint-color-error-solid)\",\n indigo: \"var(--fairmint-color-brand-primary)\",\n info: \"var(--fairmint-color-info-solid)\",\n success: \"var(--fairmint-color-success-solid)\",\n warning: \"var(--fairmint-color-warning-solid)\",\n};\n\nconst resolveBadgeColor = (color: MantineBadgeProps[\"color\"]): string => {\n if (!color) return fairmintVars.colorErrorSolid;\n const mappedColor = compatBadgeColorMap[color] || color;\n if (mappedColor.startsWith(\"#\") || mappedColor.startsWith(\"rgb\") || mappedColor.startsWith(\"hsl\"))\n return mappedColor;\n if (mappedColor.startsWith(\"var(\")) return mappedColor;\n\n const [colorName, shade] = mappedColor.split(\".\");\n if (!shade && semanticSolidColorMap[colorName]) return semanticSolidColorMap[colorName];\n\n return `var(--mantine-color-${colorName}-${shade ?? \"6\"})`;\n};\n\nconst resolveAnchorStyle = (anchorOrigin?: BadgeAnchorOrigin): CSSProperties => {\n const vertical = anchorOrigin?.vertical ?? \"top\";\n const horizontal = anchorOrigin?.horizontal ?? \"right\";\n\n return {\n [horizontal]: -4,\n [vertical]: -4,\n };\n};\n\nconst formatBadgeContent = (badgeContent: ReactNode, max?: number) => {\n if (typeof badgeContent !== \"number\" || max === undefined || badgeContent <= max) {\n return badgeContent;\n }\n\n return `${max}+`;\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n anchorOrigin,\n badgeContent,\n children,\n color,\n dot,\n invisible,\n max,\n overlap: _overlap,\n processing: _processing,\n showZero,\n sx,\n style,\n variant = \"light\",\n ...props\n },\n ref,\n ) => {\n const sxStyle = useSxStyle(sx);\n\n if (dot || badgeContent !== undefined) {\n const shouldHideBadge = invisible || (!dot && badgeContent === 0 && !showZero);\n\n return (\n <span\n {...props}\n ref={ref}\n style={{\n display: \"inline-flex\",\n lineHeight: 1,\n position: \"relative\",\n ...sxStyle,\n ...(style as CSSProperties),\n }}\n >\n {children}\n {shouldHideBadge ? null : (\n <span\n aria-hidden={dot ? \"true\" : undefined}\n style={{\n backgroundColor: resolveBadgeColor(color),\n border: \"2px solid var(--mantine-color-body)\",\n borderRadius: 999,\n color: commonColors.white,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 10,\n fontWeight: 700,\n lineHeight: 1,\n minHeight: dot ? 10 : 16,\n minWidth: dot ? 10 : 16,\n padding: dot ? 0 : \"0 4px\",\n position: \"absolute\",\n ...resolveAnchorStyle(anchorOrigin),\n }}\n >\n {!dot && formatBadgeContent(badgeContent, max)}\n </span>\n )}\n </span>\n );\n }\n\n return (\n <MantineBadge\n component=\"span\"\n color={color}\n variant={variant}\n {...props}\n style={{ ...sxStyle, ...style }}\n ref={ref}\n >\n {children}\n </MantineBadge>\n );\n },\n);\nBadge.displayName = \"Badge\";\n"],"names":["MantineBadge"],"mappings":"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"}
|