@fairmint/ui 0.4.9 → 0.4.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.
Files changed (146) hide show
  1. package/dist/components/BrandedLoadingScreen/BrandedLoadingScreen.cjs +1 -1
  2. package/dist/components/BrandedLoadingScreen/BrandedLoadingScreen.js +1 -1
  3. package/dist/components/ErrorFallback/ErrorFallback.cjs +1 -1
  4. package/dist/components/ErrorFallback/ErrorFallback.js +1 -1
  5. package/dist/components/form/FormField.cjs +1 -1
  6. package/dist/components/form/FormField.js +1 -1
  7. package/dist/components/generic/AgentSuggestion/AgentSuggestion.cjs +1 -1
  8. package/dist/components/generic/AgentSuggestion/AgentSuggestion.js +1 -1
  9. package/dist/components/generic/Banner/Banner.cjs +1 -1
  10. package/dist/components/generic/Banner/Banner.js +1 -1
  11. package/dist/components/generic/BottomSheet/BottomSheet.cjs +1 -1
  12. package/dist/components/generic/BottomSheet/BottomSheet.js +1 -1
  13. package/dist/components/generic/CompanyBanner/CompanyBanner.cjs +1 -1
  14. package/dist/components/generic/CompanyBanner/CompanyBanner.js +1 -1
  15. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.cjs +1 -1
  16. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.js +1 -1
  17. package/dist/components/generic/Currency/Currency.cjs +1 -1
  18. package/dist/components/generic/Currency/Currency.js +1 -1
  19. package/dist/components/generic/DataRow/DataRow.cjs +24 -3
  20. package/dist/components/generic/DataRow/DataRow.cjs.map +1 -1
  21. package/dist/components/generic/DataRow/DataRow.d.ts.map +1 -1
  22. package/dist/components/generic/DataRow/DataRow.js +24 -3
  23. package/dist/components/generic/DataRow/DataRow.js.map +1 -1
  24. package/dist/components/generic/DataTable/DataTable.cjs +2 -2
  25. package/dist/components/generic/DataTable/DataTable.cjs.map +1 -1
  26. package/dist/components/generic/DataTable/DataTable.js +2 -2
  27. package/dist/components/generic/DataTable/DataTable.js.map +1 -1
  28. package/dist/components/generic/DateDisplay/DateDisplay.cjs +1 -1
  29. package/dist/components/generic/DateDisplay/DateDisplay.js +1 -1
  30. package/dist/components/generic/DocumentRow/DocumentRow.cjs +1 -1
  31. package/dist/components/generic/DocumentRow/DocumentRow.js +1 -1
  32. package/dist/components/generic/EditableSection/EditableSection.cjs +1 -1
  33. package/dist/components/generic/EditableSection/EditableSection.js +1 -1
  34. package/dist/components/generic/EmptyState/EmptyState.cjs +1 -1
  35. package/dist/components/generic/EmptyState/EmptyState.js +1 -1
  36. package/dist/components/generic/ErrorPage/ErrorPage.cjs +1 -1
  37. package/dist/components/generic/ErrorPage/ErrorPage.js +1 -1
  38. package/dist/components/generic/Eyebrow/Eyebrow.cjs +1 -1
  39. package/dist/components/generic/Eyebrow/Eyebrow.js +1 -1
  40. package/dist/components/generic/FileDropzone/FileDropzone.cjs +1 -1
  41. package/dist/components/generic/FileDropzone/FileDropzone.js +1 -1
  42. package/dist/components/generic/ListRow/ListRow.cjs +5 -4
  43. package/dist/components/generic/ListRow/ListRow.cjs.map +1 -1
  44. package/dist/components/generic/ListRow/ListRow.d.ts.map +1 -1
  45. package/dist/components/generic/ListRow/ListRow.js +5 -4
  46. package/dist/components/generic/ListRow/ListRow.js.map +1 -1
  47. package/dist/components/generic/MultiSelectSearch/MultiSelectSearch.cjs +1 -1
  48. package/dist/components/generic/MultiSelectSearch/MultiSelectSearch.js +1 -1
  49. package/dist/components/generic/NotificationRow/NotificationRow.cjs +1 -1
  50. package/dist/components/generic/NotificationRow/NotificationRow.js +1 -1
  51. package/dist/components/generic/Percent/Percent.cjs +1 -1
  52. package/dist/components/generic/Percent/Percent.js +1 -1
  53. package/dist/components/generic/PhotoCropModal/PhotoCropModal.cjs +1 -1
  54. package/dist/components/generic/PhotoCropModal/PhotoCropModal.js +1 -1
  55. package/dist/components/generic/ProcessingState/ProcessingState.cjs +1 -1
  56. package/dist/components/generic/ProcessingState/ProcessingState.js +1 -1
  57. package/dist/components/generic/RadioCard/RadioCard.cjs +1 -1
  58. package/dist/components/generic/RadioCard/RadioCard.js +1 -1
  59. package/dist/components/generic/StatCard/StatCard.cjs +1 -1
  60. package/dist/components/generic/StatCard/StatCard.js +1 -1
  61. package/dist/components/generic/StepCard/StepCard.cjs +3 -2
  62. package/dist/components/generic/StepCard/StepCard.cjs.map +1 -1
  63. package/dist/components/generic/StepCard/StepCard.d.ts.map +1 -1
  64. package/dist/components/generic/StepCard/StepCard.js +3 -2
  65. package/dist/components/generic/StepCard/StepCard.js.map +1 -1
  66. package/dist/components/generic/StepProgress/StepProgress.cjs +11 -7
  67. package/dist/components/generic/StepProgress/StepProgress.cjs.map +1 -1
  68. package/dist/components/generic/StepProgress/StepProgress.d.ts.map +1 -1
  69. package/dist/components/generic/StepProgress/StepProgress.js +11 -7
  70. package/dist/components/generic/StepProgress/StepProgress.js.map +1 -1
  71. package/dist/components/generic/TablePagination/TablePagination.cjs +1 -1
  72. package/dist/components/generic/TablePagination/TablePagination.js +1 -1
  73. package/dist/components/generic/TaskInboxPopover/TaskInboxPopover.cjs +1 -1
  74. package/dist/components/generic/TaskInboxPopover/TaskInboxPopover.js +1 -1
  75. package/dist/components/generic/TaskRow/TaskRow.cjs +1 -1
  76. package/dist/components/generic/TaskRow/TaskRow.js +1 -1
  77. package/dist/components/layout/AccountSheet/AccountSheet.cjs +1 -1
  78. package/dist/components/layout/AccountSheet/AccountSheet.js +1 -1
  79. package/dist/components/layout/MobileNav/MobileNav.cjs +1 -1
  80. package/dist/components/layout/MobileNav/MobileNav.js +1 -1
  81. package/dist/components/layout/PageHeader/PageHeader.cjs +1 -1
  82. package/dist/components/layout/PageHeader/PageHeader.js +1 -1
  83. package/dist/components/primitives/Glossary/GlossaryContext.cjs +39 -0
  84. package/dist/components/primitives/Glossary/GlossaryContext.cjs.map +1 -0
  85. package/dist/components/primitives/Glossary/GlossaryContext.d.ts +49 -0
  86. package/dist/components/primitives/Glossary/GlossaryContext.d.ts.map +1 -0
  87. package/dist/components/primitives/Glossary/GlossaryContext.js +39 -0
  88. package/dist/components/primitives/Glossary/GlossaryContext.js.map +1 -0
  89. package/dist/components/primitives/Glossary/GlossaryTerm.cjs +147 -0
  90. package/dist/components/primitives/Glossary/GlossaryTerm.cjs.map +1 -0
  91. package/dist/components/primitives/Glossary/GlossaryTerm.d.ts +10 -0
  92. package/dist/components/primitives/Glossary/GlossaryTerm.d.ts.map +1 -0
  93. package/dist/components/primitives/Glossary/GlossaryTerm.js +147 -0
  94. package/dist/components/primitives/Glossary/GlossaryTerm.js.map +1 -0
  95. package/dist/components/primitives/Glossary/index.d.ts +3 -0
  96. package/dist/components/primitives/Glossary/index.d.ts.map +1 -0
  97. package/dist/components/primitives/Text/Text.cjs +112 -0
  98. package/dist/components/primitives/Text/Text.cjs.map +1 -0
  99. package/dist/components/primitives/Text/Text.d.ts +22 -0
  100. package/dist/components/primitives/Text/Text.d.ts.map +1 -0
  101. package/dist/components/primitives/Text/Text.js +112 -0
  102. package/dist/components/primitives/Text/Text.js.map +1 -0
  103. package/dist/components/primitives/Text/index.d.ts +2 -0
  104. package/dist/components/primitives/Text/index.d.ts.map +1 -0
  105. package/dist/components/primitives/index.d.ts +2 -0
  106. package/dist/components/primitives/index.d.ts.map +1 -1
  107. package/dist/components/primitives/layout.cjs.map +1 -1
  108. package/dist/components/primitives/layout.d.ts +2 -1
  109. package/dist/components/primitives/layout.d.ts.map +1 -1
  110. package/dist/components/primitives/layout.js.map +1 -1
  111. package/dist/components/primitives/muiCompat.cjs +8 -8
  112. package/dist/components/primitives/muiCompat.cjs.map +1 -1
  113. package/dist/components/primitives/muiCompat.d.ts.map +1 -1
  114. package/dist/components/primitives/muiCompat.js +8 -8
  115. package/dist/components/primitives/muiCompat.js.map +1 -1
  116. package/dist/components/specific/DocumentRow/DocumentRow.cjs +1 -1
  117. package/dist/components/specific/DocumentRow/DocumentRow.js +1 -1
  118. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.cjs +1 -1
  119. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.js +1 -1
  120. package/dist/components/specific/WalletList/WalletList.cjs +1 -1
  121. package/dist/components/specific/WalletList/WalletList.js +1 -1
  122. package/dist/components/specific/WalletListItem/WalletListItem.cjs +3 -2
  123. package/dist/components/specific/WalletListItem/WalletListItem.cjs.map +1 -1
  124. package/dist/components/specific/WalletListItem/WalletListItem.d.ts.map +1 -1
  125. package/dist/components/specific/WalletListItem/WalletListItem.js +3 -2
  126. package/dist/components/specific/WalletListItem/WalletListItem.js.map +1 -1
  127. package/dist/constants/glossary.cjs +210 -0
  128. package/dist/constants/glossary.cjs.map +1 -0
  129. package/dist/constants/glossary.d.ts +26 -0
  130. package/dist/constants/glossary.d.ts.map +1 -0
  131. package/dist/constants/glossary.js +210 -0
  132. package/dist/constants/glossary.js.map +1 -0
  133. package/dist/fairmint-ui.cjs +13 -1
  134. package/dist/fairmint-ui.cjs.map +1 -1
  135. package/dist/fairmint-ui.js +13 -1
  136. package/dist/fairmint-ui.js.map +1 -1
  137. package/dist/index.d.ts +3 -0
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/styles.css +7 -12
  140. package/dist/utils/glossaryMatcher.cjs +89 -0
  141. package/dist/utils/glossaryMatcher.cjs.map +1 -0
  142. package/dist/utils/glossaryMatcher.d.ts +23 -0
  143. package/dist/utils/glossaryMatcher.d.ts.map +1 -0
  144. package/dist/utils/glossaryMatcher.js +89 -0
  145. package/dist/utils/glossaryMatcher.js.map +1 -0
  146. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { fairmintVars } from "../../../theme/index.js";
3
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
3
+ import { Text } from "../../primitives/Text/Text.js";
4
4
  function Eyebrow({
5
5
  children,
6
6
  size = "xs",
@@ -8,7 +8,7 @@ const Loader = require("../../primitives/Loader/Loader.cjs");
8
8
  const layout = require("../../primitives/layout.cjs");
9
9
  const Banner = require("../Banner/Banner.cjs");
10
10
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
11
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
11
+ const Text = require("../../primitives/Text/Text.cjs");
12
12
  const ThemeIcon = require("../../../node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.cjs");
13
13
  const errorTextProps = {
14
14
  size: "xs",
@@ -6,7 +6,7 @@ import { Loader } from "../../primitives/Loader/Loader.js";
6
6
  import { Stack, Box } from "../../primitives/layout.js";
7
7
  import { Banner } from "../Banner/Banner.js";
8
8
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
9
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
9
+ import { Text } from "../../primitives/Text/Text.js";
10
10
  import { ThemeIcon } from "../../../node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.js";
11
11
  const errorTextProps = {
12
12
  size: "xs",
@@ -6,7 +6,7 @@ const colors = require("../../../theme/colors.cjs");
6
6
  const Avatar = require("../../primitives/Avatar/Avatar.cjs");
7
7
  const layout = require("../../primitives/layout.cjs");
8
8
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
9
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
9
+ const Text = require("../../primitives/Text/Text.cjs");
10
10
  const UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
11
11
  const DefaultChevronIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
12
12
  "svg",
@@ -57,18 +57,19 @@ function ListRow({
57
57
  }
58
58
  ),
59
59
  /* @__PURE__ */ jsxRuntime.jsxs(layout.Box, { flex: 1, miw: 0, children: [
60
- /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 500, size: "sm", truncate: true, children: title }),
61
- subtitle && /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { size: "xs", c: index.fairmintVars.colorTextSecondary, lh: 1.3, children: subtitle })
60
+ /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 500, size: "sm", truncate: true, glossary: false, children: title }),
61
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { size: "xs", c: index.fairmintVars.colorTextSecondary, lh: 1.3, glossary: false, children: subtitle })
62
62
  ] }),
63
63
  /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { gap: 6, wrap: "nowrap", children: [
64
64
  rightSection ?? (value !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(layout.Stack, { gap: 2, align: "flex-end", children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 500, size: "sm", style: { whiteSpace: "nowrap" }, children: value }),
65
+ /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 500, size: "sm", style: { whiteSpace: "nowrap" }, glossary: false, children: value }),
66
66
  valueSubtitle && /* @__PURE__ */ jsxRuntime.jsx(
67
67
  Text.Text,
68
68
  {
69
69
  size: "xs",
70
70
  c: index.fairmintVars.colorTextSecondary,
71
71
  style: { whiteSpace: "nowrap" },
72
+ glossary: false,
72
73
  children: valueSubtitle
73
74
  }
74
75
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ListRow.cjs","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Avatar } from \"../../primitives/Avatar/Avatar\";\nimport { Box, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\n\nexport interface ListRowProps {\n /** Avatar image URL. Falls back to name-derived initial. */\n avatarSrc?: string;\n /** @deprecated Use `avatarName` instead. Preserved for backwards compatibility. */\n avatarFallback?: string;\n /**\n * Name used to derive a fallback initial and deterministic avatar color.\n * Defaults to `title` when omitted.\n */\n avatarName?: string;\n /** Explicit avatar background color override. When set, takes precedence over the name-derived color. */\n avatarColor?: string;\n /**\n * When true and `avatarColor` is omitted, the Avatar primitive derives a\n * deterministic background color from `avatarName` / `title`.\n * @default false\n */\n avatarColorFromName?: boolean;\n /** Primary text. */\n title: string;\n /** Secondary text below title. */\n subtitle?: string;\n /** Right-aligned value text. */\n value?: string;\n /** Right-aligned secondary value text (below `value`). */\n valueSubtitle?: string;\n /** Right section slot — overrides `value`/`valueSubtitle` if provided. */\n rightSection?: ReactNode;\n /** Show chevron indicator. @default true when onClick is provided */\n showChevron?: boolean;\n /** Chevron icon override. */\n chevronIcon?: ReactNode;\n /** Click handler. Makes the row interactive. */\n onClick?: () => void;\n /** Entrance animation delay in seconds. Omit to skip animation. */\n animationDelay?: number;\n /** Whether this row is selected (highlighted state). @default false */\n isSelected?: boolean;\n /** aria-label for the button. Defaults to title. */\n ariaLabel?: string;\n}\n\nconst DefaultChevronIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport function ListRow({\n avatarSrc,\n avatarFallback,\n avatarColor,\n avatarColorFromName = false,\n title,\n avatarName = title,\n subtitle,\n value,\n valueSubtitle,\n rightSection,\n showChevron,\n chevronIcon,\n onClick,\n animationDelay,\n isSelected = false,\n ariaLabel,\n}: ListRowProps) {\n const animate = animationDelay !== undefined;\n const isClickable = Boolean(onClick);\n const displayChevron = showChevron ?? isClickable;\n\n const content = (\n <Group gap=\"sm\" wrap=\"nowrap\">\n <Avatar\n src={avatarSrc}\n alt={title}\n name={avatarName}\n size={40}\n color={avatarColor ?? (avatarColorFromName ? undefined : colors.primary)}\n >\n {avatarFallback}\n </Avatar>\n\n <Box flex={1} miw={0}>\n <Text fw={500} size=\"sm\" truncate>\n {title}\n </Text>\n {subtitle && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary} lh={1.3}>\n {subtitle}\n </Text>\n )}\n </Box>\n\n <Group gap={6} wrap=\"nowrap\">\n {rightSection ??\n (value !== undefined && (\n <Stack gap={2} align=\"flex-end\">\n <Text fw={500} size=\"sm\" style={{ whiteSpace: \"nowrap\" }}>\n {value}\n </Text>\n {valueSubtitle && (\n <Text\n size=\"xs\"\n c={fairmintVars.colorTextSecondary}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {valueSubtitle}\n </Text>\n )}\n </Stack>\n ))}\n {displayChevron &&\n (chevronIcon ?? (\n <Box c={fairmintVars.colorTextTertiary} style={{ flexShrink: 0 }}>\n <DefaultChevronIcon />\n </Box>\n ))}\n </Group>\n </Group>\n );\n\n const animationStyle = animate\n ? {\n opacity: 0 as const,\n animation: \"rowSlideIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) forwards\",\n animationDelay: `${animationDelay}s`,\n }\n : undefined;\n\n if (!isClickable) {\n return (\n <Box\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n >\n {content}\n </Box>\n );\n }\n\n return (\n <UnstyledButton\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n onClick={onClick}\n className=\"fairmint-list-row\"\n w=\"100%\"\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n aria-label={ariaLabel ?? title}\n >\n {content}\n </UnstyledButton>\n );\n}\n"],"names":["jsx","jsxs","Group","Avatar","colors","Box","Text","fairmintVars","Stack","UnstyledButton"],"mappings":";;;;;;;;;;AAgDA,MAAM,qBAAqB,MACzBA,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,gBAAA,CAAgB;AAAA,EAAA;AAC1B;AAGK,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AACF,GAAiB;AACf,QAAM,UAAU,mBAAmB;AACnC,QAAM,cAAc,QAAQ,OAAO;AACnC,QAAM,iBAAiB,eAAe;AAEtC,QAAM,UACJC,2BAAAA,KAACC,aAAA,EAAM,KAAI,MAAK,MAAK,UACnB,UAAA;AAAA,IAAAF,2BAAAA;AAAAA,MAACG,OAAAA;AAAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,gBAAgB,sBAAsB,SAAYC,OAAAA,OAAO;AAAA,QAE/D,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGHH,2BAAAA,KAACI,OAAAA,KAAA,EAAI,MAAM,GAAG,KAAK,GACjB,UAAA;AAAA,MAAAL,2BAAAA,IAACM,KAAAA,QAAK,IAAI,KAAK,MAAK,MAAK,UAAQ,MAC9B,UAAA,MAAA,CACH;AAAA,MACC,YACCN,2BAAAA,IAACM,KAAAA,MAAA,EAAK,MAAK,MAAK,GAAGC,MAAAA,aAAa,oBAAoB,IAAI,KACrD,UAAA,SAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IAEAN,2BAAAA,KAACC,MAAAA,OAAA,EAAM,KAAK,GAAG,MAAK,UACjB,UAAA;AAAA,MAAA,iBACE,UAAU,UACTD,2BAAAA,KAACO,OAAAA,SAAM,KAAK,GAAG,OAAM,YACnB,UAAA;AAAA,QAAAR,2BAAAA,IAACM,KAAAA,MAAA,EAAK,IAAI,KAAK,MAAK,MAAK,OAAO,EAAE,YAAY,SAAA,GAC3C,UAAA,MAAA,CACH;AAAA,QACC,iBACCN,2BAAAA;AAAAA,UAACM,KAAAA;AAAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAGC,MAAAA,aAAa;AAAA,YAChB,OAAO,EAAE,YAAY,SAAA;AAAA,YAEpB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,MAEH,mBACE,eACCP,+BAACK,OAAAA,KAAA,EAAI,GAAGE,MAAAA,aAAa,mBAAmB,OAAO,EAAE,YAAY,EAAA,GAC3D,UAAAP,2BAAAA,IAAC,sBAAmB,GACtB;AAAA,IAAA,EAAA,CAEN;AAAA,EAAA,GACF;AAGF,QAAM,iBAAiB,UACnB;AAAA,IACE,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB,GAAG,cAAc;AAAA,EAAA,IAEnC;AAEJ,MAAI,CAAC,aAAa;AAChB,WACEA,2BAAAA;AAAAA,MAACK,OAAAA;AAAAA,MAAA;AAAA,QACC,IAAI,aAAaE,mBAAa,uBAAuB;AAAA,QACrD,IAAG;AAAA,QACH,IAAG;AAAA,QACH,OAAO;AAAA,QAEN,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,SACEP,2BAAAA;AAAAA,IAACS,eAAAA;AAAAA,IAAA;AAAA,MACC,IAAI,aAAaF,mBAAa,uBAAuB;AAAA,MACrD;AAAA,MACA,WAAU;AAAA,MACV,GAAE;AAAA,MACF,IAAG;AAAA,MACH,IAAG;AAAA,MACH,OAAO;AAAA,MACP,cAAY,aAAa;AAAA,MAExB,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
1
+ {"version":3,"file":"ListRow.cjs","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Avatar } from \"../../primitives/Avatar/Avatar\";\nimport { Box, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\n\nexport interface ListRowProps {\n /** Avatar image URL. Falls back to name-derived initial. */\n avatarSrc?: string;\n /** @deprecated Use `avatarName` instead. Preserved for backwards compatibility. */\n avatarFallback?: string;\n /**\n * Name used to derive a fallback initial and deterministic avatar color.\n * Defaults to `title` when omitted.\n */\n avatarName?: string;\n /** Explicit avatar background color override. When set, takes precedence over the name-derived color. */\n avatarColor?: string;\n /**\n * When true and `avatarColor` is omitted, the Avatar primitive derives a\n * deterministic background color from `avatarName` / `title`.\n * @default false\n */\n avatarColorFromName?: boolean;\n /** Primary text. */\n title: string;\n /** Secondary text below title. */\n subtitle?: string;\n /** Right-aligned value text. */\n value?: string;\n /** Right-aligned secondary value text (below `value`). */\n valueSubtitle?: string;\n /** Right section slot — overrides `value`/`valueSubtitle` if provided. */\n rightSection?: ReactNode;\n /** Show chevron indicator. @default true when onClick is provided */\n showChevron?: boolean;\n /** Chevron icon override. */\n chevronIcon?: ReactNode;\n /** Click handler. Makes the row interactive. */\n onClick?: () => void;\n /** Entrance animation delay in seconds. Omit to skip animation. */\n animationDelay?: number;\n /** Whether this row is selected (highlighted state). @default false */\n isSelected?: boolean;\n /** aria-label for the button. Defaults to title. */\n ariaLabel?: string;\n}\n\nconst DefaultChevronIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport function ListRow({\n avatarSrc,\n avatarFallback,\n avatarColor,\n avatarColorFromName = false,\n title,\n avatarName = title,\n subtitle,\n value,\n valueSubtitle,\n rightSection,\n showChevron,\n chevronIcon,\n onClick,\n animationDelay,\n isSelected = false,\n ariaLabel,\n}: ListRowProps) {\n const animate = animationDelay !== undefined;\n const isClickable = Boolean(onClick);\n const displayChevron = showChevron ?? isClickable;\n\n const content = (\n <Group gap=\"sm\" wrap=\"nowrap\">\n <Avatar\n src={avatarSrc}\n alt={title}\n name={avatarName}\n size={40}\n color={avatarColor ?? (avatarColorFromName ? undefined : colors.primary)}\n >\n {avatarFallback}\n </Avatar>\n\n <Box flex={1} miw={0}>\n <Text fw={500} size=\"sm\" truncate glossary={false}>\n {title}\n </Text>\n {subtitle && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary} lh={1.3} glossary={false}>\n {subtitle}\n </Text>\n )}\n </Box>\n\n <Group gap={6} wrap=\"nowrap\">\n {rightSection ??\n (value !== undefined && (\n <Stack gap={2} align=\"flex-end\">\n <Text fw={500} size=\"sm\" style={{ whiteSpace: \"nowrap\" }} glossary={false}>\n {value}\n </Text>\n {valueSubtitle && (\n <Text\n size=\"xs\"\n c={fairmintVars.colorTextSecondary}\n style={{ whiteSpace: \"nowrap\" }}\n glossary={false}\n >\n {valueSubtitle}\n </Text>\n )}\n </Stack>\n ))}\n {displayChevron &&\n (chevronIcon ?? (\n <Box c={fairmintVars.colorTextTertiary} style={{ flexShrink: 0 }}>\n <DefaultChevronIcon />\n </Box>\n ))}\n </Group>\n </Group>\n );\n\n const animationStyle = animate\n ? {\n opacity: 0 as const,\n animation: \"rowSlideIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) forwards\",\n animationDelay: `${animationDelay}s`,\n }\n : undefined;\n\n if (!isClickable) {\n return (\n <Box\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n >\n {content}\n </Box>\n );\n }\n\n return (\n <UnstyledButton\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n onClick={onClick}\n className=\"fairmint-list-row\"\n w=\"100%\"\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n aria-label={ariaLabel ?? title}\n >\n {content}\n </UnstyledButton>\n );\n}\n"],"names":["jsx","jsxs","Group","Avatar","colors","Box","Text","fairmintVars","Stack","UnstyledButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListRow.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,cAAc,EACd,WAAW,EACX,mBAA2B,EAC3B,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,UAAkB,EAClB,SAAS,GACV,EAAE,YAAY,+BA2Fd"}
1
+ {"version":3,"file":"ListRow.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,cAAc,EACd,WAAW,EACX,mBAA2B,EAC3B,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,UAAkB,EAClB,SAAS,GACV,EAAE,YAAY,+BA4Fd"}
@@ -4,7 +4,7 @@ import { colors } from "../../../theme/colors.js";
4
4
  import { Avatar } from "../../primitives/Avatar/Avatar.js";
5
5
  import { Box, Stack } from "../../primitives/layout.js";
6
6
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
7
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
7
+ import { Text } from "../../primitives/Text/Text.js";
8
8
  import { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
9
9
  const DefaultChevronIcon = () => /* @__PURE__ */ jsx(
10
10
  "svg",
@@ -55,18 +55,19 @@ function ListRow({
55
55
  }
56
56
  ),
57
57
  /* @__PURE__ */ jsxs(Box, { flex: 1, miw: 0, children: [
58
- /* @__PURE__ */ jsx(Text, { fw: 500, size: "sm", truncate: true, children: title }),
59
- subtitle && /* @__PURE__ */ jsx(Text, { size: "xs", c: fairmintVars.colorTextSecondary, lh: 1.3, children: subtitle })
58
+ /* @__PURE__ */ jsx(Text, { fw: 500, size: "sm", truncate: true, glossary: false, children: title }),
59
+ subtitle && /* @__PURE__ */ jsx(Text, { size: "xs", c: fairmintVars.colorTextSecondary, lh: 1.3, glossary: false, children: subtitle })
60
60
  ] }),
61
61
  /* @__PURE__ */ jsxs(Group, { gap: 6, wrap: "nowrap", children: [
62
62
  rightSection ?? (value !== void 0 && /* @__PURE__ */ jsxs(Stack, { gap: 2, align: "flex-end", children: [
63
- /* @__PURE__ */ jsx(Text, { fw: 500, size: "sm", style: { whiteSpace: "nowrap" }, children: value }),
63
+ /* @__PURE__ */ jsx(Text, { fw: 500, size: "sm", style: { whiteSpace: "nowrap" }, glossary: false, children: value }),
64
64
  valueSubtitle && /* @__PURE__ */ jsx(
65
65
  Text,
66
66
  {
67
67
  size: "xs",
68
68
  c: fairmintVars.colorTextSecondary,
69
69
  style: { whiteSpace: "nowrap" },
70
+ glossary: false,
70
71
  children: valueSubtitle
71
72
  }
72
73
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ListRow.js","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Avatar } from \"../../primitives/Avatar/Avatar\";\nimport { Box, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\n\nexport interface ListRowProps {\n /** Avatar image URL. Falls back to name-derived initial. */\n avatarSrc?: string;\n /** @deprecated Use `avatarName` instead. Preserved for backwards compatibility. */\n avatarFallback?: string;\n /**\n * Name used to derive a fallback initial and deterministic avatar color.\n * Defaults to `title` when omitted.\n */\n avatarName?: string;\n /** Explicit avatar background color override. When set, takes precedence over the name-derived color. */\n avatarColor?: string;\n /**\n * When true and `avatarColor` is omitted, the Avatar primitive derives a\n * deterministic background color from `avatarName` / `title`.\n * @default false\n */\n avatarColorFromName?: boolean;\n /** Primary text. */\n title: string;\n /** Secondary text below title. */\n subtitle?: string;\n /** Right-aligned value text. */\n value?: string;\n /** Right-aligned secondary value text (below `value`). */\n valueSubtitle?: string;\n /** Right section slot — overrides `value`/`valueSubtitle` if provided. */\n rightSection?: ReactNode;\n /** Show chevron indicator. @default true when onClick is provided */\n showChevron?: boolean;\n /** Chevron icon override. */\n chevronIcon?: ReactNode;\n /** Click handler. Makes the row interactive. */\n onClick?: () => void;\n /** Entrance animation delay in seconds. Omit to skip animation. */\n animationDelay?: number;\n /** Whether this row is selected (highlighted state). @default false */\n isSelected?: boolean;\n /** aria-label for the button. Defaults to title. */\n ariaLabel?: string;\n}\n\nconst DefaultChevronIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport function ListRow({\n avatarSrc,\n avatarFallback,\n avatarColor,\n avatarColorFromName = false,\n title,\n avatarName = title,\n subtitle,\n value,\n valueSubtitle,\n rightSection,\n showChevron,\n chevronIcon,\n onClick,\n animationDelay,\n isSelected = false,\n ariaLabel,\n}: ListRowProps) {\n const animate = animationDelay !== undefined;\n const isClickable = Boolean(onClick);\n const displayChevron = showChevron ?? isClickable;\n\n const content = (\n <Group gap=\"sm\" wrap=\"nowrap\">\n <Avatar\n src={avatarSrc}\n alt={title}\n name={avatarName}\n size={40}\n color={avatarColor ?? (avatarColorFromName ? undefined : colors.primary)}\n >\n {avatarFallback}\n </Avatar>\n\n <Box flex={1} miw={0}>\n <Text fw={500} size=\"sm\" truncate>\n {title}\n </Text>\n {subtitle && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary} lh={1.3}>\n {subtitle}\n </Text>\n )}\n </Box>\n\n <Group gap={6} wrap=\"nowrap\">\n {rightSection ??\n (value !== undefined && (\n <Stack gap={2} align=\"flex-end\">\n <Text fw={500} size=\"sm\" style={{ whiteSpace: \"nowrap\" }}>\n {value}\n </Text>\n {valueSubtitle && (\n <Text\n size=\"xs\"\n c={fairmintVars.colorTextSecondary}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {valueSubtitle}\n </Text>\n )}\n </Stack>\n ))}\n {displayChevron &&\n (chevronIcon ?? (\n <Box c={fairmintVars.colorTextTertiary} style={{ flexShrink: 0 }}>\n <DefaultChevronIcon />\n </Box>\n ))}\n </Group>\n </Group>\n );\n\n const animationStyle = animate\n ? {\n opacity: 0 as const,\n animation: \"rowSlideIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) forwards\",\n animationDelay: `${animationDelay}s`,\n }\n : undefined;\n\n if (!isClickable) {\n return (\n <Box\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n >\n {content}\n </Box>\n );\n }\n\n return (\n <UnstyledButton\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n onClick={onClick}\n className=\"fairmint-list-row\"\n w=\"100%\"\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n aria-label={ariaLabel ?? title}\n >\n {content}\n </UnstyledButton>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAgDA,MAAM,qBAAqB,MACzB;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,gBAAA,CAAgB;AAAA,EAAA;AAC1B;AAGK,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AACF,GAAiB;AACf,QAAM,UAAU,mBAAmB;AACnC,QAAM,cAAc,QAAQ,OAAO;AACnC,QAAM,iBAAiB,eAAe;AAEtC,QAAM,UACJ,qBAAC,OAAA,EAAM,KAAI,MAAK,MAAK,UACnB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,gBAAgB,sBAAsB,SAAY,OAAO;AAAA,QAE/D,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,qBAAC,KAAA,EAAI,MAAM,GAAG,KAAK,GACjB,UAAA;AAAA,MAAA,oBAAC,QAAK,IAAI,KAAK,MAAK,MAAK,UAAQ,MAC9B,UAAA,MAAA,CACH;AAAA,MACC,YACC,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAAoB,IAAI,KACrD,UAAA,SAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IAEA,qBAAC,OAAA,EAAM,KAAK,GAAG,MAAK,UACjB,UAAA;AAAA,MAAA,iBACE,UAAU,UACT,qBAAC,SAAM,KAAK,GAAG,OAAM,YACnB,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,IAAI,KAAK,MAAK,MAAK,OAAO,EAAE,YAAY,SAAA,GAC3C,UAAA,MAAA,CACH;AAAA,QACC,iBACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAG,aAAa;AAAA,YAChB,OAAO,EAAE,YAAY,SAAA;AAAA,YAEpB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,MAEH,mBACE,eACC,oBAAC,KAAA,EAAI,GAAG,aAAa,mBAAmB,OAAO,EAAE,YAAY,EAAA,GAC3D,UAAA,oBAAC,sBAAmB,GACtB;AAAA,IAAA,EAAA,CAEN;AAAA,EAAA,GACF;AAGF,QAAM,iBAAiB,UACnB;AAAA,IACE,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB,GAAG,cAAc;AAAA,EAAA,IAEnC;AAEJ,MAAI,CAAC,aAAa;AAChB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,aAAa,aAAa,uBAAuB;AAAA,QACrD,IAAG;AAAA,QACH,IAAG;AAAA,QACH,OAAO;AAAA,QAEN,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,aAAa,aAAa,uBAAuB;AAAA,MACrD;AAAA,MACA,WAAU;AAAA,MACV,GAAE;AAAA,MACF,IAAG;AAAA,MACH,IAAG;AAAA,MACH,OAAO;AAAA,MACP,cAAY,aAAa;AAAA,MAExB,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"ListRow.js","sources":["../../../../src/components/generic/ListRow/ListRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Avatar } from \"../../primitives/Avatar/Avatar\";\nimport { Box, Group, Stack, Text, UnstyledButton } from \"../../primitives/layout\";\n\nexport interface ListRowProps {\n /** Avatar image URL. Falls back to name-derived initial. */\n avatarSrc?: string;\n /** @deprecated Use `avatarName` instead. Preserved for backwards compatibility. */\n avatarFallback?: string;\n /**\n * Name used to derive a fallback initial and deterministic avatar color.\n * Defaults to `title` when omitted.\n */\n avatarName?: string;\n /** Explicit avatar background color override. When set, takes precedence over the name-derived color. */\n avatarColor?: string;\n /**\n * When true and `avatarColor` is omitted, the Avatar primitive derives a\n * deterministic background color from `avatarName` / `title`.\n * @default false\n */\n avatarColorFromName?: boolean;\n /** Primary text. */\n title: string;\n /** Secondary text below title. */\n subtitle?: string;\n /** Right-aligned value text. */\n value?: string;\n /** Right-aligned secondary value text (below `value`). */\n valueSubtitle?: string;\n /** Right section slot — overrides `value`/`valueSubtitle` if provided. */\n rightSection?: ReactNode;\n /** Show chevron indicator. @default true when onClick is provided */\n showChevron?: boolean;\n /** Chevron icon override. */\n chevronIcon?: ReactNode;\n /** Click handler. Makes the row interactive. */\n onClick?: () => void;\n /** Entrance animation delay in seconds. Omit to skip animation. */\n animationDelay?: number;\n /** Whether this row is selected (highlighted state). @default false */\n isSelected?: boolean;\n /** aria-label for the button. Defaults to title. */\n ariaLabel?: string;\n}\n\nconst DefaultChevronIcon = () => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport function ListRow({\n avatarSrc,\n avatarFallback,\n avatarColor,\n avatarColorFromName = false,\n title,\n avatarName = title,\n subtitle,\n value,\n valueSubtitle,\n rightSection,\n showChevron,\n chevronIcon,\n onClick,\n animationDelay,\n isSelected = false,\n ariaLabel,\n}: ListRowProps) {\n const animate = animationDelay !== undefined;\n const isClickable = Boolean(onClick);\n const displayChevron = showChevron ?? isClickable;\n\n const content = (\n <Group gap=\"sm\" wrap=\"nowrap\">\n <Avatar\n src={avatarSrc}\n alt={title}\n name={avatarName}\n size={40}\n color={avatarColor ?? (avatarColorFromName ? undefined : colors.primary)}\n >\n {avatarFallback}\n </Avatar>\n\n <Box flex={1} miw={0}>\n <Text fw={500} size=\"sm\" truncate glossary={false}>\n {title}\n </Text>\n {subtitle && (\n <Text size=\"xs\" c={fairmintVars.colorTextSecondary} lh={1.3} glossary={false}>\n {subtitle}\n </Text>\n )}\n </Box>\n\n <Group gap={6} wrap=\"nowrap\">\n {rightSection ??\n (value !== undefined && (\n <Stack gap={2} align=\"flex-end\">\n <Text fw={500} size=\"sm\" style={{ whiteSpace: \"nowrap\" }} glossary={false}>\n {value}\n </Text>\n {valueSubtitle && (\n <Text\n size=\"xs\"\n c={fairmintVars.colorTextSecondary}\n style={{ whiteSpace: \"nowrap\" }}\n glossary={false}\n >\n {valueSubtitle}\n </Text>\n )}\n </Stack>\n ))}\n {displayChevron &&\n (chevronIcon ?? (\n <Box c={fairmintVars.colorTextTertiary} style={{ flexShrink: 0 }}>\n <DefaultChevronIcon />\n </Box>\n ))}\n </Group>\n </Group>\n );\n\n const animationStyle = animate\n ? {\n opacity: 0 as const,\n animation: \"rowSlideIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) forwards\",\n animationDelay: `${animationDelay}s`,\n }\n : undefined;\n\n if (!isClickable) {\n return (\n <Box\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n >\n {content}\n </Box>\n );\n }\n\n return (\n <UnstyledButton\n bg={isSelected ? fairmintVars.colorSurfaceSelected : undefined}\n onClick={onClick}\n className=\"fairmint-list-row\"\n w=\"100%\"\n py=\"sm\"\n px=\"md\"\n style={animationStyle}\n aria-label={ariaLabel ?? title}\n >\n {content}\n </UnstyledButton>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAgDA,MAAM,qBAAqB,MACzB;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,gBAAA,CAAgB;AAAA,EAAA;AAC1B;AAGK,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AACF,GAAiB;AACf,QAAM,UAAU,mBAAmB;AACnC,QAAM,cAAc,QAAQ,OAAO;AACnC,QAAM,iBAAiB,eAAe;AAEtC,QAAM,UACJ,qBAAC,OAAA,EAAM,KAAI,MAAK,MAAK,UACnB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO,gBAAgB,sBAAsB,SAAY,OAAO;AAAA,QAE/D,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,qBAAC,KAAA,EAAI,MAAM,GAAG,KAAK,GACjB,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAK,IAAI,KAAK,MAAK,MAAK,UAAQ,MAAC,UAAU,OACzC,UAAA,MAAA,CACH;AAAA,MACC,YACC,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAAoB,IAAI,KAAK,UAAU,OACpE,UAAA,SAAA,CACH;AAAA,IAAA,GAEJ;AAAA,IAEA,qBAAC,OAAA,EAAM,KAAK,GAAG,MAAK,UACjB,UAAA;AAAA,MAAA,iBACE,UAAU,UACT,qBAAC,SAAM,KAAK,GAAG,OAAM,YACnB,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,IAAI,KAAK,MAAK,MAAK,OAAO,EAAE,YAAY,SAAA,GAAY,UAAU,OACjE,UAAA,OACH;AAAA,QACC,iBACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAG,aAAa;AAAA,YAChB,OAAO,EAAE,YAAY,SAAA;AAAA,YACrB,UAAU;AAAA,YAET,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,MAEH,mBACE,eACC,oBAAC,KAAA,EAAI,GAAG,aAAa,mBAAmB,OAAO,EAAE,YAAY,EAAA,GAC3D,UAAA,oBAAC,sBAAmB,GACtB;AAAA,IAAA,EAAA,CAEN;AAAA,EAAA,GACF;AAGF,QAAM,iBAAiB,UACnB;AAAA,IACE,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB,GAAG,cAAc;AAAA,EAAA,IAEnC;AAEJ,MAAI,CAAC,aAAa;AAChB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,aAAa,aAAa,uBAAuB;AAAA,QACrD,IAAG;AAAA,QACH,IAAG;AAAA,QACH,OAAO;AAAA,QAEN,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,aAAa,aAAa,uBAAuB;AAAA,MACrD;AAAA,MACA,WAAU;AAAA,MACV,GAAE;AAAA,MACF,IAAG;AAAA,MACH,IAAG;AAAA,MACH,OAAO;AAAA,MACP,cAAY,aAAa;AAAA,MAExB,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -5,7 +5,7 @@ const React = require("react");
5
5
  const colors = require("../../../theme/colors.cjs");
6
6
  const layout = require("../../primitives/layout.cjs");
7
7
  const MultiSelect = require("../../primitives/MultiSelect/MultiSelect.cjs");
8
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
8
+ const Text = require("../../primitives/Text/Text.cjs");
9
9
  const multiSelectSearchDefaultFilter = ({
10
10
  options,
11
11
  search,
@@ -3,7 +3,7 @@ import { forwardRef, useMemo } from "react";
3
3
  import { colors } from "../../../theme/colors.js";
4
4
  import { Stack } from "../../primitives/layout.js";
5
5
  import { MultiSelect } from "../../primitives/MultiSelect/MultiSelect.js";
6
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
6
+ import { Text } from "../../primitives/Text/Text.js";
7
7
  const multiSelectSearchDefaultFilter = ({
8
8
  options,
9
9
  search,
@@ -8,7 +8,7 @@ const Badge = require("../../primitives/Badge/Badge.cjs");
8
8
  const layout = require("../../primitives/layout.cjs");
9
9
  const ColorDot = require("../ColorDot/ColorDot.cjs");
10
10
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
11
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
11
+ const Text = require("../../primitives/Text/Text.cjs");
12
12
  const SEVERITY_BADGE_COLORS = {
13
13
  critical: colors.colors.error,
14
14
  high: colors.colors.warning,
@@ -6,7 +6,7 @@ import { Badge } from "../../primitives/Badge/Badge.js";
6
6
  import { Box, Stack } from "../../primitives/layout.js";
7
7
  import { ColorDot } from "../ColorDot/ColorDot.js";
8
8
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
9
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
9
+ import { Text } from "../../primitives/Text/Text.js";
10
10
  const SEVERITY_BADGE_COLORS = {
11
11
  critical: colors.error,
12
12
  high: colors.warning,
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const format = require("../../../utils/format.cjs");
5
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
5
+ const Text = require("../../primitives/Text/Text.cjs");
6
6
  function Percent({ value, decimals = 2, ...rest }) {
7
7
  return /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { component: "span", ...rest, children: format.formatPercent(value, decimals) });
8
8
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { formatPercent } from "../../../utils/format.js";
3
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
3
+ import { Text } from "../../primitives/Text/Text.js";
4
4
  function Percent({ value, decimals = 2, ...rest }) {
5
5
  return /* @__PURE__ */ jsx(Text, { component: "span", ...rest, children: formatPercent(value, decimals) });
6
6
  }
@@ -7,7 +7,7 @@ const index = require("../../../theme/index.cjs");
7
7
  const Button = require("../../primitives/Button/Button.cjs");
8
8
  const layout = require("../../primitives/layout.cjs");
9
9
  const Modal = require("../../primitives/Modal/Modal.cjs");
10
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
10
+ const Text = require("../../primitives/Text/Text.cjs");
11
11
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
12
12
  const colors = require("../../../theme/colors.cjs");
13
13
  async function getCroppedBlob(imageSrc, croppedAreaPixels) {
@@ -5,7 +5,7 @@ import { fairmintVars, radii } from "../../../theme/index.js";
5
5
  import { Button } from "../../primitives/Button/Button.js";
6
6
  import { Stack, Box } from "../../primitives/layout.js";
7
7
  import { Modal } from "../../primitives/Modal/Modal.js";
8
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
8
+ import { Text } from "../../primitives/Text/Text.js";
9
9
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
10
10
  import { colors } from "../../../theme/colors.js";
11
11
  async function getCroppedBlob(imageSrc, croppedAreaPixels) {
@@ -5,7 +5,7 @@ const index = require("../../../theme/index.cjs");
5
5
  const layout = require("../../primitives/layout.cjs");
6
6
  const AnimateIn = require("../AnimateIn/AnimateIn.cjs");
7
7
  const Title = require("../../../node_modules/@mantine/core/esm/components/Title/Title.cjs");
8
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
8
+ const Text = require("../../primitives/Text/Text.cjs");
9
9
  const Anchor = require("../../../node_modules/@mantine/core/esm/components/Anchor/Anchor.cjs");
10
10
  const zIndex = require("../../../theme/zIndex.cjs");
11
11
  function ProcessingState({
@@ -3,7 +3,7 @@ import { fairmintVars } from "../../../theme/index.js";
3
3
  import { Box, Stack } from "../../primitives/layout.js";
4
4
  import { AnimateIn } from "../AnimateIn/AnimateIn.js";
5
5
  import { Title } from "../../../node_modules/@mantine/core/esm/components/Title/Title.js";
6
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
6
+ import { Text } from "../../primitives/Text/Text.js";
7
7
  import { Anchor } from "../../../node_modules/@mantine/core/esm/components/Anchor/Anchor.js";
8
8
  import { overlayZIndexAboveLegacyShell } from "../../../theme/zIndex.js";
9
9
  function ProcessingState({
@@ -4,7 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const index = require("../../../theme/index.cjs");
5
5
  const layout = require("../../primitives/layout.cjs");
6
6
  const UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
7
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
7
+ const Text = require("../../primitives/Text/Text.cjs");
8
8
  function RadioCard({
9
9
  selected,
10
10
  title,
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
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
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
5
+ import { Text } from "../../primitives/Text/Text.js";
6
6
  function RadioCard({
7
7
  selected,
8
8
  title,
@@ -9,7 +9,7 @@ const Card = require("../../primitives/Card/Card.cjs");
9
9
  const layout = require("../../primitives/layout.cjs");
10
10
  const Tooltip = require("../../primitives/Tooltip/Tooltip.cjs");
11
11
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
12
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
12
+ const Text = require("../../primitives/Text/Text.cjs");
13
13
  function DefaultInfoIcon() {
14
14
  return /* @__PURE__ */ jsxRuntime.jsxs(
15
15
  "svg",
@@ -7,7 +7,7 @@ import { Card } from "../../primitives/Card/Card.js";
7
7
  import { Stack, Box } from "../../primitives/layout.js";
8
8
  import { Tooltip } from "../../primitives/Tooltip/Tooltip.js";
9
9
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
10
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
10
+ import { Text } from "../../primitives/Text/Text.js";
11
11
  function DefaultInfoIcon() {
12
12
  return /* @__PURE__ */ jsxs(
13
13
  "svg",
@@ -5,7 +5,7 @@ const index = require("../../../theme/index.cjs");
5
5
  const layout = require("../../primitives/layout.cjs");
6
6
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
7
7
  const ThemeIcon = require("../../../node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.cjs");
8
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
8
+ const Text = require("../../primitives/Text/Text.cjs");
9
9
  const responsiveTypography = require("../../../theme/responsiveTypography.cjs");
10
10
  const DefaultCheckIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
11
11
  "svg",
@@ -56,7 +56,7 @@ function StepCard({
56
56
  color: done ? index.fairmintVars.colorTextInverse : index.fairmintVars.colorTextPrimary,
57
57
  border: done ? void 0 : `1px solid ${index.fairmintVars.colorBorderDefault}`
58
58
  },
59
- children: done ? doneIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 700, fz: 14, children: index$1 })
59
+ children: done ? doneIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { fw: 700, fz: 14, glossary: false, children: index$1 })
60
60
  }
61
61
  ),
62
62
  /* @__PURE__ */ jsxRuntime.jsxs(layout.Box, { style: { minWidth: 0, flex: 1 }, children: [
@@ -67,6 +67,7 @@ function StepCard({
67
67
  fz: responsiveTypography.responsiveTypography.cardTitle,
68
68
  c: index.fairmintVars.colorTextPrimary,
69
69
  lh: 1.3,
70
+ glossary: false,
70
71
  children: title
71
72
  }
72
73
  ),
@@ -1 +1 @@
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
+ {"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} glossary={false}>\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 glossary={false}\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,+BAACQ,KAAAA,MAAA,EAAK,IAAI,KAAK,IAAI,IAAI,UAAU,OAC9B,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,gBACJ,UAAU;AAAA,gBAET,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,+BAwDf"}
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,+BAyDf"}
@@ -3,7 +3,7 @@ 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";
6
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
6
+ import { Text } from "../../primitives/Text/Text.js";
7
7
  import { responsiveTypography } from "../../../theme/responsiveTypography.js";
8
8
  const DefaultCheckIcon = () => /* @__PURE__ */ jsx(
9
9
  "svg",
@@ -54,7 +54,7 @@ function StepCard({
54
54
  color: done ? fairmintVars.colorTextInverse : fairmintVars.colorTextPrimary,
55
55
  border: done ? void 0 : `1px solid ${fairmintVars.colorBorderDefault}`
56
56
  },
57
- children: done ? doneIcon ?? /* @__PURE__ */ jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsx(Text, { fw: 700, fz: 14, children: index })
57
+ children: done ? doneIcon ?? /* @__PURE__ */ jsx(DefaultCheckIcon, {}) : /* @__PURE__ */ jsx(Text, { fw: 700, fz: 14, glossary: false, children: index })
58
58
  }
59
59
  ),
60
60
  /* @__PURE__ */ jsxs(Box, { style: { minWidth: 0, flex: 1 }, children: [
@@ -65,6 +65,7 @@ function StepCard({
65
65
  fz: responsiveTypography.cardTitle,
66
66
  c: fairmintVars.colorTextPrimary,
67
67
  lh: 1.3,
68
+ glossary: false,
68
69
  children: title
69
70
  }
70
71
  ),
@@ -1 +1 @@
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;"}
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} glossary={false}>\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 glossary={false}\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,IAAI,UAAU,OAC9B,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,gBACJ,UAAU;AAAA,gBAET,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;"}
@@ -40,15 +40,19 @@ function StepProgress({
40
40
  const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);
41
41
  const rootStyle = {
42
42
  "--fairmint-step-progress-brand": index.brandColors.indigo,
43
- "--fairmint-step-progress-border": index.fairmintVars.colorBorderDefault,
43
+ // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.
44
+ "--fairmint-step-progress-border": index.fairmintVars.colorTextSecondary,
45
+ // Kept off the ring token: the ring carries the step number and needs 3:1, the
46
+ // connector is decorative and reads as a hairline between pills.
47
+ "--fairmint-step-progress-connector": index.fairmintVars.colorBorderDefault,
44
48
  "--fairmint-step-progress-text-primary": index.fairmintVars.colorTextPrimary,
45
- "--fairmint-step-progress-text-secondary": index.fairmintVars.colorTextSecondary,
46
- "--fairmint-step-progress-surface-selected": index.fairmintVars.colorSurfaceSelected,
47
- // One shared accent tone for anything bordering/reading on colorSurfaceSelected,
48
- // instead of two adjacent-but-different indigo shades competing.
49
- "--fairmint-step-progress-active-border": index.indigoColors[2],
49
+ // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.
50
+ "--fairmint-step-progress-text-secondary": index.fairmintVars.colorTextPrimary,
51
+ // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.
52
+ "--fairmint-step-progress-surface-selected": index.fairmintVars.colorBgBrandSubtleHover,
53
+ "--fairmint-step-progress-active-border": index.indigoColors[3],
50
54
  "--fairmint-step-progress-active-indicator-text": index.commonColors.white,
51
- "--fairmint-step-progress-complete-border": index.indigoColors[2],
55
+ "--fairmint-step-progress-complete-border": index.indigoColors[3],
52
56
  "--fairmint-step-progress-complete-text": index.fairmintVars.colorIconOnSurfaceSelected
53
57
  };
54
58
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"StepProgress.cjs","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /** Called with the 1-indexed step number when a pill is activated. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\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\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n): StepProgressStepStatus => {\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n if (steps.length === 0) return null;\n\n const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n \"--fairmint-step-progress-border\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextSecondary,\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorSurfaceSelected,\n // One shared accent tone for anything bordering/reading on colorSurfaceSelected,\n // instead of two adjacent-but-different indigo shades competing.\n \"--fairmint-step-progress-active-border\": indigoColors[2],\n \"--fairmint-step-progress-active-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-complete-border\": indigoColors[2],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n };\n\n return (\n <Box\n component=\"nav\"\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n style={rootStyle}\n >\n <ol className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);\n const isInteractive = Boolean(onStepChange) && !step.disabled;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? <CheckIcon /> : stepNumber}\n </span>\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":["jsx","brandColors","fairmintVars","indigoColors","commonColors","Box","index","jsxs","Fragment","UnstyledButton"],"mappings":"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"}
1
+ {"version":3,"file":"StepProgress.cjs","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /** Called with the 1-indexed step number when a pill is activated. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\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\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n): StepProgressStepStatus => {\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n if (steps.length === 0) return null;\n\n const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.\n \"--fairmint-step-progress-border\": fairmintVars.colorTextSecondary,\n // Kept off the ring token: the ring carries the step number and needs 3:1, the\n // connector is decorative and reads as a hairline between pills.\n \"--fairmint-step-progress-connector\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextPrimary,\n // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorBgBrandSubtleHover,\n \"--fairmint-step-progress-active-border\": indigoColors[3],\n \"--fairmint-step-progress-active-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-complete-border\": indigoColors[3],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n };\n\n return (\n <Box\n component=\"nav\"\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n style={rootStyle}\n >\n <ol className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);\n const isInteractive = Boolean(onStepChange) && !step.disabled;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? <CheckIcon /> : stepNumber}\n </span>\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":["jsx","brandColors","fairmintVars","indigoColors","commonColors","Box","index","jsxs","Fragment","UnstyledButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuBD,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,EACtB,YAAY,MAAM,EAClB,YAAY,MAAM,KACjB,sBAIF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,UAAU,EACV,WAA0B,EAC1B,YAAY,EACZ,SAAsB,GACvB,EAAE,iBAAiB,sCAgFnB;AAED,eAAO,MAAM,+BAA+B,SAAS,CAAC"}
1
+ {"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuBD,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,EACtB,YAAY,MAAM,EAClB,YAAY,MAAM,KACjB,sBAIF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,UAAU,EACV,WAA0B,EAC1B,YAAY,EACZ,SAAsB,GACvB,EAAE,iBAAiB,sCAoFnB;AAED,eAAO,MAAM,+BAA+B,SAAS,CAAC"}
@@ -38,15 +38,19 @@ function StepProgress({
38
38
  const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);
39
39
  const rootStyle = {
40
40
  "--fairmint-step-progress-brand": brandColors.indigo,
41
- "--fairmint-step-progress-border": fairmintVars.colorBorderDefault,
41
+ // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.
42
+ "--fairmint-step-progress-border": fairmintVars.colorTextSecondary,
43
+ // Kept off the ring token: the ring carries the step number and needs 3:1, the
44
+ // connector is decorative and reads as a hairline between pills.
45
+ "--fairmint-step-progress-connector": fairmintVars.colorBorderDefault,
42
46
  "--fairmint-step-progress-text-primary": fairmintVars.colorTextPrimary,
43
- "--fairmint-step-progress-text-secondary": fairmintVars.colorTextSecondary,
44
- "--fairmint-step-progress-surface-selected": fairmintVars.colorSurfaceSelected,
45
- // One shared accent tone for anything bordering/reading on colorSurfaceSelected,
46
- // instead of two adjacent-but-different indigo shades competing.
47
- "--fairmint-step-progress-active-border": indigoColors[2],
47
+ // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.
48
+ "--fairmint-step-progress-text-secondary": fairmintVars.colorTextPrimary,
49
+ // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.
50
+ "--fairmint-step-progress-surface-selected": fairmintVars.colorBgBrandSubtleHover,
51
+ "--fairmint-step-progress-active-border": indigoColors[3],
48
52
  "--fairmint-step-progress-active-indicator-text": commonColors.white,
49
- "--fairmint-step-progress-complete-border": indigoColors[2],
53
+ "--fairmint-step-progress-complete-border": indigoColors[3],
50
54
  "--fairmint-step-progress-complete-text": fairmintVars.colorIconOnSurfaceSelected
51
55
  };
52
56
  return /* @__PURE__ */ jsx(