@fairmint/ui 0.3.16 → 0.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/components/generic/Banner/Banner.cjs +11 -10
  2. package/dist/components/generic/Banner/Banner.cjs.map +1 -1
  3. package/dist/components/generic/Banner/Banner.d.ts +1 -1
  4. package/dist/components/generic/Banner/Banner.d.ts.map +1 -1
  5. package/dist/components/generic/Banner/Banner.js +11 -10
  6. package/dist/components/generic/Banner/Banner.js.map +1 -1
  7. package/dist/components/primitives/Alert/Alert.cjs +198 -57
  8. package/dist/components/primitives/Alert/Alert.cjs.map +1 -1
  9. package/dist/components/primitives/Alert/Alert.d.ts +19 -3
  10. package/dist/components/primitives/Alert/Alert.d.ts.map +1 -1
  11. package/dist/components/primitives/Alert/Alert.js +199 -58
  12. package/dist/components/primitives/Alert/Alert.js.map +1 -1
  13. package/dist/components/primitives/index.d.ts +1 -1
  14. package/dist/components/primitives/index.d.ts.map +1 -1
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/notify.cjs +84 -4
  18. package/dist/notify.cjs.map +1 -1
  19. package/dist/notify.d.ts +44 -7
  20. package/dist/notify.d.ts.map +1 -1
  21. package/dist/notify.js +84 -4
  22. package/dist/notify.js.map +1 -1
  23. package/dist/snackbarCompat.cjs +78 -21
  24. package/dist/snackbarCompat.cjs.map +1 -1
  25. package/dist/snackbarCompat.d.ts.map +1 -1
  26. package/dist/snackbarCompat.js +78 -21
  27. package/dist/snackbarCompat.js.map +1 -1
  28. package/dist/theme/index.cjs +76 -0
  29. package/dist/theme/index.cjs.map +1 -1
  30. package/dist/theme/index.d.ts.map +1 -1
  31. package/dist/theme/index.js +76 -0
  32. package/dist/theme/index.js.map +1 -1
  33. package/package.json +1 -1
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const index = require("../../../theme/index.cjs");
4
5
  const colors = require("../../../theme/colors.cjs");
6
+ const Button = require("../Button/Button.cjs");
5
7
  const sx = require("../sx.cjs");
8
+ const spacing = require("../../../theme/spacing.cjs");
6
9
  const Alert$1 = require("../../../node_modules/@mantine/core/esm/components/Alert/Alert.cjs");
7
10
  const colorMap = {
8
11
  error: colors.colors.error,
@@ -10,43 +13,99 @@ const colorMap = {
10
13
  success: colors.colors.success,
11
14
  warning: colors.colors.warning
12
15
  };
13
- const severityIconPathMap = {
14
- error: [
15
- "M12 9v4",
16
- "M12 17h.01",
17
- "M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z"
18
- ],
19
- info: ["M12 16v-4", "M12 8h.01", "M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z"],
20
- success: ["m9 12 2 2 4-4", "M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z"],
21
- warning: [
22
- "M12 9v4",
23
- "M12 17h.01",
24
- "M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z"
25
- ]
16
+ const TONE_TOKENS = {
17
+ info: {
18
+ background: index.fairmintVars.colorInfoBg,
19
+ border: index.fairmintVars.colorInfoBorder,
20
+ icon: index.fairmintVars.colorInfoText
21
+ },
22
+ success: {
23
+ background: index.fairmintVars.colorSuccessBg,
24
+ border: index.fairmintVars.colorSuccessBorder,
25
+ icon: index.fairmintVars.colorSuccessText
26
+ },
27
+ warning: {
28
+ background: index.fairmintVars.colorWarningBg,
29
+ border: index.fairmintVars.colorWarningBorder,
30
+ icon: index.fairmintVars.colorWarningText
31
+ },
32
+ error: {
33
+ background: index.fairmintVars.colorErrorBg,
34
+ border: index.fairmintVars.colorErrorBorder,
35
+ icon: index.fairmintVars.colorErrorText
36
+ }
26
37
  };
27
- const SeverityIcon = ({ severity }) => /* @__PURE__ */ jsxRuntime.jsx(
28
- "svg",
29
- {
30
- "aria-hidden": "true",
31
- "data-fairmint-alert-icon": severity,
38
+ const SeverityIcon = ({ tone }) => {
39
+ const commonProps = {
40
+ width: 20,
41
+ height: 20,
42
+ viewBox: "0 0 24 24",
32
43
  fill: "none",
33
- focusable: "false",
34
- height: "18",
35
44
  stroke: "currentColor",
45
+ strokeWidth: 1.75,
36
46
  strokeLinecap: "round",
37
47
  strokeLinejoin: "round",
38
- strokeWidth: "2",
39
- viewBox: "0 0 24 24",
40
- width: "18",
41
- xmlns: "http://www.w3.org/2000/svg",
42
- children: (severityIconPathMap[severity] || severityIconPathMap.info).map((path) => /* @__PURE__ */ jsxRuntime.jsx("path", { d: path }, path))
48
+ "aria-hidden": true,
49
+ "data-fairmint-alert-icon": tone
50
+ };
51
+ if (tone === "success") {
52
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { ...commonProps, children: [
53
+ /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Success" }),
54
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9" }),
55
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m8.5 12 2.25 2.25L15.75 9" })
56
+ ] });
57
+ }
58
+ if (tone === "warning") {
59
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { ...commonProps, children: [
60
+ /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Warning" }),
61
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.3 4.2 2.6 18a2 2 0 0 0 1.75 3h15.3a2 2 0 0 0 1.75-3L13.7 4.2a2 2 0 0 0-3.4 0Z" }),
62
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 9v4" }),
63
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 17h.01" })
64
+ ] });
65
+ }
66
+ if (tone === "error") {
67
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { ...commonProps, children: [
68
+ /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Error" }),
69
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9" }),
70
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9 9 6 6" }),
71
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m15 9-6 6" })
72
+ ] });
73
+ }
74
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { ...commonProps, children: [
75
+ /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Information" }),
76
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9" }),
77
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 11v5" }),
78
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 8h.01" })
79
+ ] });
80
+ };
81
+ const COLOR_TO_TONE = {
82
+ error: "error",
83
+ red: "error",
84
+ danger: "error",
85
+ warning: "warning",
86
+ yellow: "warning",
87
+ orange: "warning",
88
+ success: "success",
89
+ green: "success",
90
+ teal: "success",
91
+ info: "info",
92
+ blue: "info",
93
+ indigo: "info"
94
+ };
95
+ function resolveTone(severity, color) {
96
+ if (severity) {
97
+ const fromSeverity = COLOR_TO_TONE[String(severity).toLowerCase()];
98
+ if (fromSeverity) return fromSeverity;
99
+ }
100
+ if (typeof color === "string") {
101
+ const fromColor = COLOR_TO_TONE[color] ?? COLOR_TO_TONE[color.toLowerCase()];
102
+ if (fromColor) return fromColor;
43
103
  }
44
- );
45
- const iconMap = {
46
- error: /* @__PURE__ */ jsxRuntime.jsx(SeverityIcon, { severity: "error" }),
47
- info: /* @__PURE__ */ jsxRuntime.jsx(SeverityIcon, { severity: "info" }),
48
- success: /* @__PURE__ */ jsxRuntime.jsx(SeverityIcon, { severity: "success" }),
49
- warning: /* @__PURE__ */ jsxRuntime.jsx(SeverityIcon, { severity: "warning" })
104
+ return "info";
105
+ }
106
+ const actionVariant = (tone) => {
107
+ if (tone === "info") return "light";
108
+ return "filled";
50
109
  };
51
110
  function Alert({
52
111
  action,
@@ -56,54 +115,136 @@ function Alert({
56
115
  color,
57
116
  icon,
58
117
  severity,
118
+ styles,
59
119
  sx: sx$1,
60
120
  style,
121
+ variant = "light",
61
122
  ...props
62
123
  }) {
63
124
  const sxStyle = sx.useSxStyle(sx$1);
64
- const needsCompat = severity !== void 0 || sx$1 !== void 0 || action !== void 0;
65
- if (!needsCompat) {
66
- return /* @__PURE__ */ jsxRuntime.jsx(
67
- Alert$1.Alert,
68
- {
69
- className,
70
- classNames,
71
- color,
72
- icon,
73
- style: { ...sxStyle, ...style },
74
- ...props,
75
- children
76
- }
77
- );
78
- }
79
- const severityClass = severity ? `MuiAlert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0;
80
- const fairmintSeverityClass = severity ? `fairmint-alert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0;
125
+ const tone = resolveTone(severity, color);
126
+ const tokens = TONE_TOKENS[tone];
127
+ const resolvedColor = severity ? colorMap[severity] || severity : color ?? colors.colors.info;
128
+ const needsCompat = severity !== void 0 || sx$1 !== void 0;
129
+ const resolvedIcon = icon === null ? null : icon ?? /* @__PURE__ */ jsxRuntime.jsx(SeverityIcon, { tone });
130
+ const surfaceStyles = {
131
+ root: {
132
+ // Slightly more room on the trailing edge than Mantine's symmetric md.
133
+ paddingInlineEnd: spacing.spacing.lg
134
+ },
135
+ body: {
136
+ // Tighter than Mantine's default spacing.xs between title and body.
137
+ gap: "0.25rem"
138
+ },
139
+ title: {
140
+ color: index.fairmintVars.colorTextPrimary,
141
+ fontWeight: 600
142
+ },
143
+ label: {
144
+ color: index.fairmintVars.colorTextPrimary
145
+ },
146
+ message: {
147
+ color: index.fairmintVars.colorTextSecondary
148
+ },
149
+ icon: {
150
+ backgroundColor: "transparent",
151
+ color: tokens.icon,
152
+ width: 20,
153
+ height: 20,
154
+ minWidth: 20,
155
+ // Match the root padding used when there is no icon (spacing.md).
156
+ marginInlineEnd: spacing.spacing.md
157
+ }
158
+ };
159
+ const mergePart = (key, override) => ({ ...surfaceStyles[key], ...override });
160
+ const mergedStyles = typeof styles === "function" ? (theme, params, ctx) => {
161
+ const resolved = styles(theme, params, ctx);
162
+ return {
163
+ ...surfaceStyles,
164
+ ...resolved,
165
+ root: mergePart("root", resolved.root),
166
+ body: mergePart("body", resolved.body),
167
+ title: mergePart("title", resolved.title),
168
+ label: mergePart("label", resolved.label),
169
+ message: mergePart("message", resolved.message),
170
+ icon: mergePart("icon", resolved.icon)
171
+ };
172
+ } : {
173
+ ...surfaceStyles,
174
+ ...styles,
175
+ root: mergePart("root", styles?.root),
176
+ body: mergePart("body", styles?.body),
177
+ title: mergePart("title", styles?.title),
178
+ label: mergePart("label", styles?.label),
179
+ message: mergePart("message", styles?.message),
180
+ icon: mergePart("icon", styles?.icon)
181
+ };
81
182
  const classNameMap = typeof classNames === "function" ? void 0 : classNames;
82
183
  return /* @__PURE__ */ jsxRuntime.jsxs(
83
184
  Alert$1.Alert,
84
185
  {
85
- className: [
186
+ className: needsCompat ? [
86
187
  "MuiAlert-root",
87
188
  "fairmint-alert-root",
88
- severityClass,
89
- fairmintSeverityClass,
189
+ severity ? `MuiAlert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0,
190
+ severity ? `fairmint-alert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0,
90
191
  className
91
- ].filter(Boolean).join(" "),
92
- classNames: {
192
+ ].filter(Boolean).join(" ") : className,
193
+ classNames: needsCompat ? {
93
194
  ...classNameMap,
94
195
  body: ["fairmint-alert-body", classNameMap?.body].filter(Boolean).join(" "),
95
196
  icon: ["fairmint-alert-icon", classNameMap?.icon].filter(Boolean).join(" "),
96
197
  message: ["fairmint-alert-message", classNameMap?.message].filter(Boolean).join(" "),
97
198
  root: ["fairmint-alert-root", classNameMap?.root].filter(Boolean).join(" "),
98
199
  wrapper: ["fairmint-alert-wrapper", classNameMap?.wrapper].filter(Boolean).join(" ")
200
+ } : classNames,
201
+ color: resolvedColor,
202
+ "data-tone": tone,
203
+ icon: resolvedIcon,
204
+ radius: "lg",
205
+ style: {
206
+ ...sxStyle,
207
+ ...style
99
208
  },
100
- color: severity ? colorMap[severity] || severity : color,
101
- icon: icon ?? (severity ? iconMap[severity] : void 0),
102
- style: { ...sxStyle, ...style },
209
+ styles: mergedStyles,
210
+ vars: () => ({
211
+ root: {
212
+ "--alert-bg": tokens.background,
213
+ "--alert-color": tokens.icon,
214
+ "--alert-bd": `1px solid ${tokens.border}`
215
+ }
216
+ }),
217
+ variant,
103
218
  ...props,
104
219
  children: [
105
220
  children,
106
- action ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-alert-action", children: action }) : null
221
+ action ? /* @__PURE__ */ jsxRuntime.jsx(
222
+ "span",
223
+ {
224
+ className: "fairmint-alert-action",
225
+ style: {
226
+ display: "block",
227
+ marginTop: spacing.spacing.xs
228
+ },
229
+ children: /* @__PURE__ */ jsxRuntime.jsx(
230
+ Button.Button,
231
+ {
232
+ ...action,
233
+ color: resolvedColor,
234
+ size: action.size ?? "sm",
235
+ variant: actionVariant(tone),
236
+ style: {
237
+ ...action.style,
238
+ boxSizing: "border-box",
239
+ maxWidth: "100%",
240
+ overflowWrap: "anywhere",
241
+ whiteSpace: "normal"
242
+ },
243
+ children: action.label
244
+ }
245
+ )
246
+ }
247
+ ) : null
107
248
  ]
108
249
  }
109
250
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.cjs","sources":["../../../../src/components/primitives/Alert/Alert.tsx"],"sourcesContent":["import { Alert as MantineAlert, type AlertProps as MantineAlertProps } from \"@mantine/core\";\nimport type { ReactNode } from \"react\";\nimport { colors } from \"../../../theme/colors\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\nexport interface AlertProps extends MantineAlertProps {\n action?: ReactNode;\n severity?: string;\n sx?: Sx;\n}\n\nconst colorMap: Record<string, string> = {\n error: colors.error,\n info: colors.info,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst severityIconPathMap: Record<string, string[]> = {\n error: [\n \"M12 9v4\",\n \"M12 17h.01\",\n \"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\",\n ],\n info: [\"M12 16v-4\", \"M12 8h.01\", \"M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z\"],\n success: [\"m9 12 2 2 4-4\", \"M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0Z\"],\n warning: [\n \"M12 9v4\",\n \"M12 17h.01\",\n \"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\",\n ],\n};\n\nconst SeverityIcon = ({ severity }: { severity: string }) => (\n <svg\n aria-hidden=\"true\"\n data-fairmint-alert-icon={severity}\n fill=\"none\"\n focusable=\"false\"\n height=\"18\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {(severityIconPathMap[severity] || severityIconPathMap.info).map((path) => (\n <path d={path} key={path} />\n ))}\n </svg>\n);\n\nconst iconMap: Record<string, ReactNode> = {\n error: <SeverityIcon severity=\"error\" />,\n info: <SeverityIcon severity=\"info\" />,\n success: <SeverityIcon severity=\"success\" />,\n warning: <SeverityIcon severity=\"warning\" />,\n};\n\nexport function Alert({\n action,\n children,\n className,\n classNames,\n color,\n icon,\n severity,\n sx,\n style,\n ...props\n}: AlertProps) {\n const sxStyle = useSxStyle(sx);\n const needsCompat = severity !== undefined || sx !== undefined || action !== undefined;\n\n if (!needsCompat) {\n return (\n <MantineAlert\n className={className}\n classNames={classNames}\n color={color}\n icon={icon}\n style={{ ...sxStyle, ...style }}\n {...props}\n >\n {children}\n </MantineAlert>\n );\n }\n\n const severityClass = severity\n ? `MuiAlert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}`\n : undefined;\n const fairmintSeverityClass = severity\n ? `fairmint-alert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}`\n : undefined;\n const classNameMap = typeof classNames === \"function\" ? undefined : classNames;\n\n return (\n <MantineAlert\n className={[\n \"MuiAlert-root\",\n \"fairmint-alert-root\",\n severityClass,\n fairmintSeverityClass,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n classNames={{\n ...classNameMap,\n body: [\"fairmint-alert-body\", classNameMap?.body].filter(Boolean).join(\" \"),\n icon: [\"fairmint-alert-icon\", classNameMap?.icon].filter(Boolean).join(\" \"),\n message: [\"fairmint-alert-message\", classNameMap?.message].filter(Boolean).join(\" \"),\n root: [\"fairmint-alert-root\", classNameMap?.root].filter(Boolean).join(\" \"),\n wrapper: [\"fairmint-alert-wrapper\", classNameMap?.wrapper].filter(Boolean).join(\" \"),\n }}\n color={severity ? colorMap[severity] || severity : color}\n icon={icon ?? (severity ? iconMap[severity] : undefined)}\n style={{ ...sxStyle, ...style }}\n {...props}\n >\n {children}\n {action ? <span className=\"fairmint-alert-action\">{action}</span> : null}\n </MantineAlert>\n );\n}\n"],"names":["colors","jsx","sx","useSxStyle","MantineAlert","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Alert.cjs","sources":["../../../../src/components/primitives/Alert/Alert.tsx"],"sourcesContent":["import { Alert as MantineAlert, type AlertProps as MantineAlertProps } from \"@mantine/core\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { fairmintVars, spacing } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Button, type ButtonProps } from \"../Button/Button\";\nimport { type Sx, useSxStyle } from \"../sx\";\n\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface AlertActionProps extends Omit<ButtonProps, \"children\" | \"color\" | \"variant\"> {\n /** Visible action label. */\n label: ReactNode;\n}\n\nexport interface AlertProps extends Omit<MantineAlertProps, \"icon\"> {\n /**\n * Optional CTA rendered with Banner-aligned button styling.\n * Prefer this over embedding buttons in `children`.\n */\n action?: AlertActionProps;\n /** MUI-compat severity. Prefer Fairmint color tokens via `color`. */\n severity?: string;\n sx?: Sx;\n /**\n * Icon before content. Pass `null` to hide.\n * When omitted, a default tone icon is shown.\n */\n icon?: ReactNode | null;\n}\n\nconst colorMap: Record<string, string> = {\n error: colors.error,\n info: colors.info,\n success: colors.success,\n warning: colors.warning,\n};\n\nconst TONE_TOKENS = {\n info: {\n background: fairmintVars.colorInfoBg,\n border: fairmintVars.colorInfoBorder,\n icon: fairmintVars.colorInfoText,\n },\n success: {\n background: fairmintVars.colorSuccessBg,\n border: fairmintVars.colorSuccessBorder,\n icon: fairmintVars.colorSuccessText,\n },\n warning: {\n background: fairmintVars.colorWarningBg,\n border: fairmintVars.colorWarningBorder,\n icon: fairmintVars.colorWarningText,\n },\n error: {\n background: fairmintVars.colorErrorBg,\n border: fairmintVars.colorErrorBorder,\n icon: fairmintVars.colorErrorText,\n },\n} as const;\n\nconst SeverityIcon = ({ tone }: { tone: AlertTone }) => {\n const commonProps = {\n width: 20,\n height: 20,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1.75,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n \"aria-hidden\": true,\n \"data-fairmint-alert-icon\": tone,\n };\n\n if (tone === \"success\") {\n return (\n <svg {...commonProps}>\n <title>Success</title>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m8.5 12 2.25 2.25L15.75 9\" />\n </svg>\n );\n }\n\n if (tone === \"warning\") {\n return (\n <svg {...commonProps}>\n <title>Warning</title>\n <path d=\"M10.3 4.2 2.6 18a2 2 0 0 0 1.75 3h15.3a2 2 0 0 0 1.75-3L13.7 4.2a2 2 0 0 0-3.4 0Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n }\n\n if (tone === \"error\") {\n return (\n <svg {...commonProps}>\n <title>Error</title>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m9 9 6 6\" />\n <path d=\"m15 9-6 6\" />\n </svg>\n );\n }\n\n return (\n <svg {...commonProps}>\n <title>Information</title>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 11v5\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n};\n\nconst COLOR_TO_TONE: Record<string, AlertTone> = {\n error: \"error\",\n red: \"error\",\n danger: \"error\",\n warning: \"warning\",\n yellow: \"warning\",\n orange: \"warning\",\n success: \"success\",\n green: \"success\",\n teal: \"success\",\n info: \"info\",\n blue: \"info\",\n indigo: \"info\",\n};\n\nfunction resolveTone(severity?: string, color?: MantineAlertProps[\"color\"]): AlertTone {\n if (severity) {\n const fromSeverity = COLOR_TO_TONE[String(severity).toLowerCase()];\n if (fromSeverity) return fromSeverity;\n }\n\n if (typeof color === \"string\") {\n const fromColor = COLOR_TO_TONE[color] ?? COLOR_TO_TONE[color.toLowerCase()];\n if (fromColor) return fromColor;\n }\n\n return \"info\";\n}\n\nconst actionVariant = (tone: AlertTone): ButtonProps[\"variant\"] => {\n if (tone === \"info\") return \"light\";\n return \"filled\";\n};\n\nexport function Alert({\n action,\n children,\n className,\n classNames,\n color,\n icon,\n severity,\n styles,\n sx,\n style,\n variant = \"light\",\n ...props\n}: AlertProps) {\n const sxStyle = useSxStyle(sx);\n const tone = resolveTone(severity, color);\n const tokens = TONE_TOKENS[tone];\n const resolvedColor = severity ? colorMap[severity] || severity : (color ?? colors.info);\n const needsCompat = severity !== undefined || sx !== undefined;\n const resolvedIcon = icon === null ? null : (icon ?? <SeverityIcon tone={tone} />);\n\n const surfaceStyles = {\n root: {\n // Slightly more room on the trailing edge than Mantine's symmetric md.\n paddingInlineEnd: spacing.lg,\n } as CSSProperties,\n body: {\n // Tighter than Mantine's default spacing.xs between title and body.\n gap: \"0.25rem\",\n } as CSSProperties,\n title: {\n color: fairmintVars.colorTextPrimary,\n fontWeight: 600,\n } as CSSProperties,\n label: {\n color: fairmintVars.colorTextPrimary,\n } as CSSProperties,\n message: {\n color: fairmintVars.colorTextSecondary,\n } as CSSProperties,\n icon: {\n backgroundColor: \"transparent\",\n color: tokens.icon,\n width: 20,\n height: 20,\n minWidth: 20,\n // Match the root padding used when there is no icon (spacing.md).\n marginInlineEnd: spacing.md,\n } as CSSProperties,\n };\n\n const mergePart = (\n key: keyof typeof surfaceStyles,\n override: CSSProperties | undefined,\n ): CSSProperties => ({ ...surfaceStyles[key], ...override });\n\n const mergedStyles: AlertProps[\"styles\"] =\n typeof styles === \"function\"\n ? (theme, params, ctx) => {\n const resolved = styles(theme, params, ctx);\n return {\n ...surfaceStyles,\n ...resolved,\n root: mergePart(\"root\", resolved.root),\n body: mergePart(\"body\", resolved.body),\n title: mergePart(\"title\", resolved.title),\n label: mergePart(\"label\", resolved.label),\n message: mergePart(\"message\", resolved.message),\n icon: mergePart(\"icon\", resolved.icon),\n };\n }\n : {\n ...surfaceStyles,\n ...styles,\n root: mergePart(\"root\", styles?.root),\n body: mergePart(\"body\", styles?.body),\n title: mergePart(\"title\", styles?.title),\n label: mergePart(\"label\", styles?.label),\n message: mergePart(\"message\", styles?.message),\n icon: mergePart(\"icon\", styles?.icon),\n };\n\n const classNameMap = typeof classNames === \"function\" ? undefined : classNames;\n\n return (\n <MantineAlert\n className={\n needsCompat\n ? [\n \"MuiAlert-root\",\n \"fairmint-alert-root\",\n severity\n ? `MuiAlert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}`\n : undefined,\n severity\n ? `fairmint-alert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}`\n : undefined,\n className,\n ]\n .filter(Boolean)\n .join(\" \")\n : className\n }\n classNames={\n needsCompat\n ? {\n ...classNameMap,\n body: [\"fairmint-alert-body\", classNameMap?.body].filter(Boolean).join(\" \"),\n icon: [\"fairmint-alert-icon\", classNameMap?.icon].filter(Boolean).join(\" \"),\n message: [\"fairmint-alert-message\", classNameMap?.message].filter(Boolean).join(\" \"),\n root: [\"fairmint-alert-root\", classNameMap?.root].filter(Boolean).join(\" \"),\n wrapper: [\"fairmint-alert-wrapper\", classNameMap?.wrapper].filter(Boolean).join(\" \"),\n }\n : classNames\n }\n color={resolvedColor}\n data-tone={tone}\n icon={resolvedIcon}\n radius=\"lg\"\n style={{\n ...sxStyle,\n ...style,\n }}\n styles={mergedStyles}\n vars={() => ({\n root: {\n \"--alert-bg\": tokens.background,\n \"--alert-color\": tokens.icon,\n \"--alert-bd\": `1px solid ${tokens.border}`,\n },\n })}\n variant={variant}\n {...props}\n >\n {children}\n {action ? (\n <span\n className=\"fairmint-alert-action\"\n style={{\n display: \"block\",\n marginTop: spacing.xs,\n }}\n >\n <Button\n {...action}\n color={resolvedColor}\n size={action.size ?? \"sm\"}\n variant={actionVariant(tone)}\n style={{\n ...action.style,\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\n overflowWrap: \"anywhere\",\n whiteSpace: \"normal\",\n }}\n >\n {action.label}\n </Button>\n </span>\n ) : null}\n </MantineAlert>\n );\n}\n"],"names":["colors","fairmintVars","jsxs","jsx","sx","useSxStyle","spacing","MantineAlert","Button"],"mappings":"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"}
@@ -1,10 +1,26 @@
1
1
  import { AlertProps as MantineAlertProps } from '@mantine/core';
2
2
  import { ReactNode } from 'react';
3
+ import { ButtonProps } from '../Button/Button';
3
4
  import { Sx } from '../sx';
4
- export interface AlertProps extends MantineAlertProps {
5
- action?: ReactNode;
5
+ export type AlertTone = "info" | "success" | "warning" | "error";
6
+ export interface AlertActionProps extends Omit<ButtonProps, "children" | "color" | "variant"> {
7
+ /** Visible action label. */
8
+ label: ReactNode;
9
+ }
10
+ export interface AlertProps extends Omit<MantineAlertProps, "icon"> {
11
+ /**
12
+ * Optional CTA rendered with Banner-aligned button styling.
13
+ * Prefer this over embedding buttons in `children`.
14
+ */
15
+ action?: AlertActionProps;
16
+ /** MUI-compat severity. Prefer Fairmint color tokens via `color`. */
6
17
  severity?: string;
7
18
  sx?: Sx;
19
+ /**
20
+ * Icon before content. Pass `null` to hide.
21
+ * When omitted, a default tone icon is shown.
22
+ */
23
+ icon?: ReactNode | null;
8
24
  }
9
- export declare function Alert({ action, children, className, classNames, color, icon, severity, sx, style, ...props }: AlertProps): import("react/jsx-runtime").JSX.Element;
25
+ export declare function Alert({ action, children, className, classNames, color, icon, severity, styles, sx, style, variant, ...props }: AlertProps): import("react/jsx-runtime").JSX.Element;
10
26
  //# sourceMappingURL=Alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Alert/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,EAAE,CAAC;CACT;AAoDD,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,EAAE,EACF,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,2CAuDZ"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Alert/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,UAAU,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IAC3F,4BAA4B;IAC5B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACjE;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,EAAE,CAAC;IACR;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AA0HD,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,EAAE,EACF,KAAK,EACL,OAAiB,EACjB,GAAG,KAAK,EACT,EAAE,UAAU,2CAqJZ"}