@fairmint/ui 0.3.17 → 0.3.19

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 (29) hide show
  1. package/dist/_virtual/index3.cjs +3 -5
  2. package/dist/_virtual/index3.cjs.map +1 -1
  3. package/dist/_virtual/index3.js +2 -5
  4. package/dist/_virtual/index3.js.map +1 -1
  5. package/dist/_virtual/index4.cjs +5 -3
  6. package/dist/_virtual/index4.cjs.map +1 -1
  7. package/dist/_virtual/index4.js +5 -2
  8. package/dist/_virtual/index4.js.map +1 -1
  9. package/dist/components/generic/Banner/Banner.cjs +14 -11
  10. package/dist/components/generic/Banner/Banner.cjs.map +1 -1
  11. package/dist/components/generic/Banner/Banner.d.ts +1 -1
  12. package/dist/components/generic/Banner/Banner.d.ts.map +1 -1
  13. package/dist/components/generic/Banner/Banner.js +14 -11
  14. package/dist/components/generic/Banner/Banner.js.map +1 -1
  15. package/dist/components/primitives/Alert/Alert.cjs +204 -57
  16. package/dist/components/primitives/Alert/Alert.cjs.map +1 -1
  17. package/dist/components/primitives/Alert/Alert.d.ts +19 -3
  18. package/dist/components/primitives/Alert/Alert.d.ts.map +1 -1
  19. package/dist/components/primitives/Alert/Alert.js +205 -58
  20. package/dist/components/primitives/Alert/Alert.js.map +1 -1
  21. package/dist/components/primitives/index.d.ts +1 -1
  22. package/dist/components/primitives/index.d.ts.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.cjs +1 -1
  26. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.js +1 -1
  27. package/dist/node_modules/prop-types/index.cjs +1 -1
  28. package/dist/node_modules/prop-types/index.js +1 -1
  29. 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,142 @@ 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
+ // Top-align the icon with the title rather than centering against multi-line body.
136
+ wrapper: {
137
+ alignItems: "flex-start"
138
+ },
139
+ body: {
140
+ // Tighter than Mantine's default spacing.xs between title and body.
141
+ gap: "0.25rem"
142
+ },
143
+ title: {
144
+ color: index.fairmintVars.colorTextPrimary,
145
+ fontWeight: 600
146
+ },
147
+ label: {
148
+ color: index.fairmintVars.colorTextPrimary
149
+ },
150
+ message: {
151
+ color: index.fairmintVars.colorTextSecondary
152
+ },
153
+ icon: {
154
+ backgroundColor: "transparent",
155
+ color: tokens.icon,
156
+ width: 20,
157
+ height: 20,
158
+ minWidth: 20,
159
+ // Match the root padding used when there is no icon (spacing.md).
160
+ marginInlineEnd: spacing.spacing.md
161
+ }
162
+ };
163
+ const mergePart = (key, override) => ({ ...surfaceStyles[key], ...override });
164
+ const mergedStyles = typeof styles === "function" ? (theme, params, ctx) => {
165
+ const resolved = styles(theme, params, ctx);
166
+ return {
167
+ ...surfaceStyles,
168
+ ...resolved,
169
+ root: mergePart("root", resolved.root),
170
+ wrapper: mergePart("wrapper", resolved.wrapper),
171
+ body: mergePart("body", resolved.body),
172
+ title: mergePart("title", resolved.title),
173
+ label: mergePart("label", resolved.label),
174
+ message: mergePart("message", resolved.message),
175
+ icon: mergePart("icon", resolved.icon)
176
+ };
177
+ } : {
178
+ ...surfaceStyles,
179
+ ...styles,
180
+ root: mergePart("root", styles?.root),
181
+ wrapper: mergePart("wrapper", styles?.wrapper),
182
+ body: mergePart("body", styles?.body),
183
+ title: mergePart("title", styles?.title),
184
+ label: mergePart("label", styles?.label),
185
+ message: mergePart("message", styles?.message),
186
+ icon: mergePart("icon", styles?.icon)
187
+ };
81
188
  const classNameMap = typeof classNames === "function" ? void 0 : classNames;
82
189
  return /* @__PURE__ */ jsxRuntime.jsxs(
83
190
  Alert$1.Alert,
84
191
  {
85
- className: [
192
+ className: needsCompat ? [
86
193
  "MuiAlert-root",
87
194
  "fairmint-alert-root",
88
- severityClass,
89
- fairmintSeverityClass,
195
+ severity ? `MuiAlert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0,
196
+ severity ? `fairmint-alert-standard${String(severity).charAt(0).toUpperCase()}${String(severity).slice(1)}` : void 0,
90
197
  className
91
- ].filter(Boolean).join(" "),
92
- classNames: {
198
+ ].filter(Boolean).join(" ") : className,
199
+ classNames: needsCompat ? {
93
200
  ...classNameMap,
94
201
  body: ["fairmint-alert-body", classNameMap?.body].filter(Boolean).join(" "),
95
202
  icon: ["fairmint-alert-icon", classNameMap?.icon].filter(Boolean).join(" "),
96
203
  message: ["fairmint-alert-message", classNameMap?.message].filter(Boolean).join(" "),
97
204
  root: ["fairmint-alert-root", classNameMap?.root].filter(Boolean).join(" "),
98
205
  wrapper: ["fairmint-alert-wrapper", classNameMap?.wrapper].filter(Boolean).join(" ")
206
+ } : classNames,
207
+ color: resolvedColor,
208
+ "data-tone": tone,
209
+ icon: resolvedIcon,
210
+ radius: "lg",
211
+ style: {
212
+ ...sxStyle,
213
+ ...style
99
214
  },
100
- color: severity ? colorMap[severity] || severity : color,
101
- icon: icon ?? (severity ? iconMap[severity] : void 0),
102
- style: { ...sxStyle, ...style },
215
+ styles: mergedStyles,
216
+ vars: () => ({
217
+ root: {
218
+ "--alert-bg": tokens.background,
219
+ "--alert-color": tokens.icon,
220
+ "--alert-bd": `1px solid ${tokens.border}`
221
+ }
222
+ }),
223
+ variant,
103
224
  ...props,
104
225
  children: [
105
226
  children,
106
- action ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-alert-action", children: action }) : null
227
+ action ? /* @__PURE__ */ jsxRuntime.jsx(
228
+ "span",
229
+ {
230
+ className: "fairmint-alert-action",
231
+ style: {
232
+ display: "block",
233
+ marginTop: spacing.spacing.xs
234
+ },
235
+ children: /* @__PURE__ */ jsxRuntime.jsx(
236
+ Button.Button,
237
+ {
238
+ ...action,
239
+ color: resolvedColor,
240
+ size: action.size ?? "sm",
241
+ variant: actionVariant(tone),
242
+ style: {
243
+ ...action.style,
244
+ boxSizing: "border-box",
245
+ maxWidth: "100%",
246
+ overflowWrap: "anywhere",
247
+ whiteSpace: "normal"
248
+ },
249
+ children: action.label
250
+ }
251
+ )
252
+ }
253
+ ) : null
107
254
  ]
108
255
  }
109
256
  );
@@ -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 // Top-align the icon with the title rather than centering against multi-line body.\n wrapper: {\n alignItems: \"flex-start\",\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 wrapper: mergePart(\"wrapper\", resolved.wrapper),\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 wrapper: mergePart(\"wrapper\", styles?.wrapper),\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,2CA2JZ"}