@fairmint/ui 0.3.9 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) 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/FairmintProvider/FairmintProvider.cjs +1 -1
  10. package/dist/components/FairmintProvider/FairmintProvider.cjs.map +1 -1
  11. package/dist/components/FairmintProvider/FairmintProvider.d.ts.map +1 -1
  12. package/dist/components/FairmintProvider/FairmintProvider.js +1 -1
  13. package/dist/components/FairmintProvider/FairmintProvider.js.map +1 -1
  14. package/dist/components/LoadingOverlay/LoadingOverlay.cjs +1 -1
  15. package/dist/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  16. package/dist/components/LoadingOverlay/LoadingOverlay.d.ts.map +1 -1
  17. package/dist/components/LoadingOverlay/LoadingOverlay.js +2 -2
  18. package/dist/components/LoadingOverlay/LoadingOverlay.js.map +1 -1
  19. package/dist/components/LoadingSpinner/LoadingSpinner.cjs +2 -2
  20. package/dist/components/LoadingSpinner/LoadingSpinner.cjs.map +1 -1
  21. package/dist/components/LoadingSpinner/LoadingSpinner.js +3 -3
  22. package/dist/components/LoadingSpinner/LoadingSpinner.js.map +1 -1
  23. package/dist/components/form/SignatureNameField/SignatureNameField.cjs +56 -0
  24. package/dist/components/form/SignatureNameField/SignatureNameField.cjs.map +1 -0
  25. package/dist/components/form/SignatureNameField/SignatureNameField.d.ts +18 -0
  26. package/dist/components/form/SignatureNameField/SignatureNameField.d.ts.map +1 -0
  27. package/dist/components/form/SignatureNameField/SignatureNameField.js +56 -0
  28. package/dist/components/form/SignatureNameField/SignatureNameField.js.map +1 -0
  29. package/dist/components/generic/Banner/Banner.cjs +46 -11
  30. package/dist/components/generic/Banner/Banner.cjs.map +1 -1
  31. package/dist/components/generic/Banner/Banner.d.ts.map +1 -1
  32. package/dist/components/generic/Banner/Banner.js +47 -12
  33. package/dist/components/generic/Banner/Banner.js.map +1 -1
  34. package/dist/components/generic/CompanyBanner/CompanyBanner.cjs +1 -1
  35. package/dist/components/generic/CompanyBanner/CompanyBanner.cjs.map +1 -1
  36. package/dist/components/generic/CompanyBanner/CompanyBanner.js +2 -2
  37. package/dist/components/generic/CompanyBanner/CompanyBanner.js.map +1 -1
  38. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.cjs +3 -3
  39. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.cjs.map +1 -1
  40. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.js +4 -4
  41. package/dist/components/generic/ConfidentialityBanner/ConfidentialityBanner.js.map +1 -1
  42. package/dist/components/generic/DataRow/DataRow.cjs +4 -5
  43. package/dist/components/generic/DataRow/DataRow.cjs.map +1 -1
  44. package/dist/components/generic/DataRow/DataRow.d.ts.map +1 -1
  45. package/dist/components/generic/DataRow/DataRow.js +5 -6
  46. package/dist/components/generic/DataRow/DataRow.js.map +1 -1
  47. package/dist/components/generic/DocumentRow/DocumentRow.cjs +97 -28
  48. package/dist/components/generic/DocumentRow/DocumentRow.cjs.map +1 -1
  49. package/dist/components/generic/DocumentRow/DocumentRow.d.ts.map +1 -1
  50. package/dist/components/generic/DocumentRow/DocumentRow.js +98 -29
  51. package/dist/components/generic/DocumentRow/DocumentRow.js.map +1 -1
  52. package/dist/components/generic/Eyebrow/Eyebrow.cjs +6 -1
  53. package/dist/components/generic/Eyebrow/Eyebrow.cjs.map +1 -1
  54. package/dist/components/generic/Eyebrow/Eyebrow.d.ts +2 -2
  55. package/dist/components/generic/Eyebrow/Eyebrow.d.ts.map +1 -1
  56. package/dist/components/generic/Eyebrow/Eyebrow.js +7 -2
  57. package/dist/components/generic/Eyebrow/Eyebrow.js.map +1 -1
  58. package/dist/components/generic/FileDropzone/FileDropzone.cjs +38 -20
  59. package/dist/components/generic/FileDropzone/FileDropzone.cjs.map +1 -1
  60. package/dist/components/generic/FileDropzone/FileDropzone.d.ts.map +1 -1
  61. package/dist/components/generic/FileDropzone/FileDropzone.js +39 -21
  62. package/dist/components/generic/FileDropzone/FileDropzone.js.map +1 -1
  63. package/dist/components/generic/PhotoCropModal/PhotoCropModal.cjs +1 -1
  64. package/dist/components/generic/PhotoCropModal/PhotoCropModal.cjs.map +1 -1
  65. package/dist/components/generic/PhotoCropModal/PhotoCropModal.js +2 -2
  66. package/dist/components/generic/PhotoCropModal/PhotoCropModal.js.map +1 -1
  67. package/dist/components/generic/ProcessingState/ProcessingState.cjs +11 -2
  68. package/dist/components/generic/ProcessingState/ProcessingState.cjs.map +1 -1
  69. package/dist/components/generic/ProcessingState/ProcessingState.d.ts.map +1 -1
  70. package/dist/components/generic/ProcessingState/ProcessingState.js +12 -3
  71. package/dist/components/generic/ProcessingState/ProcessingState.js.map +1 -1
  72. package/dist/components/generic/RadioCard/RadioCard.cjs +7 -7
  73. package/dist/components/generic/RadioCard/RadioCard.cjs.map +1 -1
  74. package/dist/components/generic/RadioCard/RadioCard.js +8 -8
  75. package/dist/components/generic/RadioCard/RadioCard.js.map +1 -1
  76. package/dist/components/generic/StatCard/StatCard.cjs +27 -18
  77. package/dist/components/generic/StatCard/StatCard.cjs.map +1 -1
  78. package/dist/components/generic/StatCard/StatCard.d.ts.map +1 -1
  79. package/dist/components/generic/StatCard/StatCard.js +27 -18
  80. package/dist/components/generic/StatCard/StatCard.js.map +1 -1
  81. package/dist/components/generic/StepCard/StepCard.cjs +2 -2
  82. package/dist/components/generic/StepCard/StepCard.cjs.map +1 -1
  83. package/dist/components/generic/StepCard/StepCard.d.ts.map +1 -1
  84. package/dist/components/generic/StepCard/StepCard.js +3 -3
  85. package/dist/components/generic/StepCard/StepCard.js.map +1 -1
  86. package/dist/components/layout/SideNav/SideNav.cjs +2 -2
  87. package/dist/components/layout/SideNav/SideNav.cjs.map +1 -1
  88. package/dist/components/layout/SideNav/SideNav.js +3 -3
  89. package/dist/components/layout/SideNav/SideNav.js.map +1 -1
  90. package/dist/components/primitives/Badge/Badge.cjs +11 -3
  91. package/dist/components/primitives/Badge/Badge.cjs.map +1 -1
  92. package/dist/components/primitives/Badge/Badge.d.ts.map +1 -1
  93. package/dist/components/primitives/Badge/Badge.js +12 -4
  94. package/dist/components/primitives/Badge/Badge.js.map +1 -1
  95. package/dist/components/primitives/muiCompat.cjs +41 -44
  96. package/dist/components/primitives/muiCompat.cjs.map +1 -1
  97. package/dist/components/primitives/muiCompat.d.ts +21 -21
  98. package/dist/components/primitives/muiCompat.d.ts.map +1 -1
  99. package/dist/components/primitives/muiCompat.js +42 -45
  100. package/dist/components/primitives/muiCompat.js.map +1 -1
  101. package/dist/components/primitives/sx.cjs +21 -25
  102. package/dist/components/primitives/sx.cjs.map +1 -1
  103. package/dist/components/primitives/sx.d.ts.map +1 -1
  104. package/dist/components/primitives/sx.js +22 -26
  105. package/dist/components/primitives/sx.js.map +1 -1
  106. package/dist/components/specific/DocumentRow/DocumentRow.cjs +14 -1
  107. package/dist/components/specific/DocumentRow/DocumentRow.cjs.map +1 -1
  108. package/dist/components/specific/DocumentRow/DocumentRow.d.ts.map +1 -1
  109. package/dist/components/specific/DocumentRow/DocumentRow.js +14 -1
  110. package/dist/components/specific/DocumentRow/DocumentRow.js.map +1 -1
  111. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.cjs +2 -2
  112. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.cjs.map +1 -1
  113. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.js +3 -3
  114. package/dist/components/specific/InvestorProfileCard/InvestorProfileCard.js.map +1 -1
  115. package/dist/fairmint-ui.cjs +3 -0
  116. package/dist/fairmint-ui.cjs.map +1 -1
  117. package/dist/fairmint-ui.js +4 -1
  118. package/dist/fairmint-ui.js.map +1 -1
  119. package/dist/index.d.ts +3 -1
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/mui-icons.cjs +7 -7
  122. package/dist/mui-icons.cjs.map +1 -1
  123. package/dist/mui-icons.js +8 -8
  124. package/dist/mui-icons.js.map +1 -1
  125. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.cjs +1 -1
  126. package/dist/node_modules/@mantine/form/esm/hooks/use-form-status/use-form-status.js +1 -1
  127. package/dist/node_modules/prop-types/index.cjs +1 -1
  128. package/dist/node_modules/prop-types/index.js +1 -1
  129. package/dist/styles.css +35 -0
  130. package/dist/theme/index.cjs +329 -28
  131. package/dist/theme/index.cjs.map +1 -1
  132. package/dist/theme/index.d.ts +85 -17
  133. package/dist/theme/index.d.ts.map +1 -1
  134. package/dist/theme/index.js +329 -28
  135. package/dist/theme/index.js.map +1 -1
  136. package/package.json +1 -1
@@ -1,18 +1,17 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { neutralColors } from "../../../theme/index.js";
3
- import { colors } from "../../../theme/colors.js";
2
+ import { fairmintVars } from "../../../theme/index.js";
4
3
  import { Box, Stack } from "../../primitives/layout.js";
5
4
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
6
5
  import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
7
6
  function DataRow({ label, value, accent = false }) {
8
7
  return /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "flex-start", gap: "md", wrap: "nowrap", children: [
9
- /* @__PURE__ */ jsx(Text, { size: "sm", c: neutralColors[600], style: { flexShrink: 0 }, children: label }),
8
+ /* @__PURE__ */ jsx(Text, { size: "sm", c: fairmintVars.colorTextSecondary, style: { flexShrink: 0 }, children: label }),
10
9
  value === null ? /* @__PURE__ */ jsx(RedactedValue, {}) : typeof value === "string" ? /* @__PURE__ */ jsx(
11
10
  Text,
12
11
  {
13
12
  size: "sm",
14
13
  fw: accent ? 700 : 500,
15
- c: accent ? `${colors.success}.8` : neutralColors[900],
14
+ c: accent ? fairmintVars.colorSuccessText : fairmintVars.colorTextPrimary,
16
15
  ta: "right",
17
16
  style: { minWidth: 0 },
18
17
  children: value
@@ -21,7 +20,7 @@ function DataRow({ label, value, accent = false }) {
21
20
  ] });
22
21
  }
23
22
  function StackedValue({ values }) {
24
- return /* @__PURE__ */ jsx(Stack, { gap: 2, align: "flex-end", children: values.map((v) => /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, c: neutralColors[800], ta: "right", children: v }, v)) });
23
+ return /* @__PURE__ */ jsx(Stack, { gap: 2, align: "flex-end", children: values.map((v) => /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, c: fairmintVars.colorTextPrimary, ta: "right", children: v }, v)) });
25
24
  }
26
25
  function RedactedValue({ width = 80 } = {}) {
27
26
  return /* @__PURE__ */ jsx(
@@ -33,7 +32,7 @@ function RedactedValue({ width = 80 } = {}) {
33
32
  height: 14,
34
33
  width,
35
34
  borderRadius: 4,
36
- background: `repeating-linear-gradient(135deg, ${neutralColors[200]} 0 4px, ${neutralColors[100]} 4px 8px)`
35
+ background: `repeating-linear-gradient(135deg, ${fairmintVars.colorBorderDefault} 0 4px, ${fairmintVars.colorBgHover} 4px 8px)`
37
36
  }
38
37
  }
39
38
  );
@@ -1 +1 @@
1
- {"version":3,"file":"DataRow.js","sources":["../../../../src/components/generic/DataRow/DataRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { neutralColors } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface DataRowProps {\n /** Left-aligned label. */\n label: string;\n /**\n * Right-aligned value.\n *\n * - `string` — rendered as styled `Text` (accent-aware).\n * - `ReactNode` — rendered as-is. Pass `<StackedValue values={...}/>`\n * for a vertical list, or any other JSX (badges, icons, links).\n * - `null` — renders a `<RedactedValue>` placeholder. No real\n * value lives in the DOM, so a pre-auth dev-tools inspection\n * reveals nothing.\n */\n value: ReactNode | null;\n /**\n * When true, a string `value` renders in success-green bold weight.\n * Use for highlighted rows like fees, carry, or \"yes\" answers.\n */\n accent?: boolean;\n}\n\n/**\n * One label / value row used by terms panels, profile sections, and\n * any \"definition list\" UX.\n *\n * The `null` → redacted placeholder convention is a security primitive:\n * when content is behind a gate, pass `null` and the placeholder shows\n * a dotted strip without leaking the real value into the DOM.\n */\nexport function DataRow({ label, value, accent = false }: DataRowProps) {\n return (\n <Group justify=\"space-between\" align=\"flex-start\" gap=\"md\" wrap=\"nowrap\">\n <Text size=\"sm\" c={neutralColors[600]} style={{ flexShrink: 0 }}>\n {label}\n </Text>\n {value === null ? (\n <RedactedValue />\n ) : typeof value === \"string\" ? (\n <Text\n size=\"sm\"\n fw={accent ? 700 : 500}\n c={accent ? `${colors.success}.8` : neutralColors[900]}\n ta=\"right\"\n style={{ minWidth: 0 }}\n >\n {value}\n </Text>\n ) : (\n value\n )}\n </Group>\n );\n}\n\nexport interface StackedValueProps {\n /** List of strings to render as a vertical, right-aligned stack. */\n values: ReadonlyArray<string>;\n}\n\n/**\n * Right-aligned vertical stack of values. Compose with `DataRow`\n * when a single label has multiple values (e.g., \"Funding: USDC / USDT\n * / Wire\" rendered as three lines stacked under the \"Funding\" label).\n */\nexport function StackedValue({ values }: StackedValueProps) {\n return (\n <Stack gap={2} align=\"flex-end\">\n {values.map((v) => (\n <Text key={v} size=\"sm\" fw={500} c={neutralColors[800]} ta=\"right\">\n {v}\n </Text>\n ))}\n </Stack>\n );\n}\n\nexport interface RedactedValueProps {\n /** Width of the placeholder strip in pixels. @default 80 */\n width?: number;\n}\n\n/**\n * Source-safe placeholder — a fixed-width dotted strip rendered when\n * a value is gated. No real value lives in the DOM, so a pre-auth\n * dev-tools inspection reveals nothing.\n */\nexport function RedactedValue({ width = 80 }: RedactedValueProps = {}) {\n return (\n <Box\n role=\"img\"\n aria-label=\"Redacted — sign in to view\"\n style={{\n height: 14,\n width,\n borderRadius: 4,\n background: `repeating-linear-gradient(135deg, ${neutralColors[200]} 0 4px, ${neutralColors[100]} 4px 8px)`,\n }}\n />\n );\n}\n"],"names":[],"mappings":";;;;;;AAkCO,SAAS,QAAQ,EAAE,OAAO,OAAO,SAAS,SAAuB;AACtE,SACE,qBAAC,SAAM,SAAQ,iBAAgB,OAAM,cAAa,KAAI,MAAK,MAAK,UAC9D,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,cAAc,GAAG,GAAG,OAAO,EAAE,YAAY,EAAA,GACzD,UAAA,MAAA,CACH;AAAA,IACC,UAAU,OACT,oBAAC,iBAAc,IACb,OAAO,UAAU,WACnB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI,SAAS,MAAM;AAAA,QACnB,GAAG,SAAS,GAAG,OAAO,OAAO,OAAO,cAAc,GAAG;AAAA,QACrD,IAAG;AAAA,QACH,OAAO,EAAE,UAAU,EAAA;AAAA,QAElB,UAAA;AAAA,MAAA;AAAA,IAAA,IAGH;AAAA,EAAA,GAEJ;AAEJ;AAYO,SAAS,aAAa,EAAE,UAA6B;AAC1D,SACE,oBAAC,OAAA,EAAM,KAAK,GAAG,OAAM,YAClB,UAAA,OAAO,IAAI,CAAC,MACX,oBAAC,MAAA,EAAa,MAAK,MAAK,IAAI,KAAK,GAAG,cAAc,GAAG,GAAG,IAAG,SACxD,UAAA,EAAA,GADQ,CAEX,CACD,EAAA,CACH;AAEJ;AAYO,SAAS,cAAc,EAAE,QAAQ,GAAA,IAA2B,CAAA,GAAI;AACrE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA,cAAc;AAAA,QACd,YAAY,qCAAqC,cAAc,GAAG,CAAC,WAAW,cAAc,GAAG,CAAC;AAAA,MAAA;AAAA,IAClG;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"DataRow.js","sources":["../../../../src/components/generic/DataRow/DataRow.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { Box, Group, Stack, Text } from \"../../primitives/layout\";\n\nexport interface DataRowProps {\n /** Left-aligned label. */\n label: string;\n /**\n * Right-aligned value.\n *\n * - `string` — rendered as styled `Text` (accent-aware).\n * - `ReactNode` — rendered as-is. Pass `<StackedValue values={...}/>`\n * for a vertical list, or any other JSX (badges, icons, links).\n * - `null` — renders a `<RedactedValue>` placeholder. No real\n * value lives in the DOM, so a pre-auth dev-tools inspection\n * reveals nothing.\n */\n value: ReactNode | null;\n /**\n * When true, a string `value` renders in success-green bold weight.\n * Use for highlighted rows like fees, carry, or \"yes\" answers.\n */\n accent?: boolean;\n}\n\n/**\n * One label / value row used by terms panels, profile sections, and\n * any \"definition list\" UX.\n *\n * The `null` → redacted placeholder convention is a security primitive:\n * when content is behind a gate, pass `null` and the placeholder shows\n * a dotted strip without leaking the real value into the DOM.\n */\nexport function DataRow({ label, value, accent = false }: DataRowProps) {\n return (\n <Group justify=\"space-between\" align=\"flex-start\" gap=\"md\" wrap=\"nowrap\">\n <Text size=\"sm\" c={fairmintVars.colorTextSecondary} style={{ flexShrink: 0 }}>\n {label}\n </Text>\n {value === null ? (\n <RedactedValue />\n ) : typeof value === \"string\" ? (\n <Text\n size=\"sm\"\n fw={accent ? 700 : 500}\n c={accent ? fairmintVars.colorSuccessText : fairmintVars.colorTextPrimary}\n ta=\"right\"\n style={{ minWidth: 0 }}\n >\n {value}\n </Text>\n ) : (\n value\n )}\n </Group>\n );\n}\n\nexport interface StackedValueProps {\n /** List of strings to render as a vertical, right-aligned stack. */\n values: ReadonlyArray<string>;\n}\n\n/**\n * Right-aligned vertical stack of values. Compose with `DataRow`\n * when a single label has multiple values (e.g., \"Funding: USDC / USDT\n * / Wire\" rendered as three lines stacked under the \"Funding\" label).\n */\nexport function StackedValue({ values }: StackedValueProps) {\n return (\n <Stack gap={2} align=\"flex-end\">\n {values.map((v) => (\n <Text key={v} size=\"sm\" fw={500} c={fairmintVars.colorTextPrimary} ta=\"right\">\n {v}\n </Text>\n ))}\n </Stack>\n );\n}\n\nexport interface RedactedValueProps {\n /** Width of the placeholder strip in pixels. @default 80 */\n width?: number;\n}\n\n/**\n * Source-safe placeholder — a fixed-width dotted strip rendered when\n * a value is gated. No real value lives in the DOM, so a pre-auth\n * dev-tools inspection reveals nothing.\n */\nexport function RedactedValue({ width = 80 }: RedactedValueProps = {}) {\n return (\n <Box\n role=\"img\"\n aria-label=\"Redacted — sign in to view\"\n style={{\n height: 14,\n width,\n borderRadius: 4,\n background: `repeating-linear-gradient(135deg, ${fairmintVars.colorBorderDefault} 0 4px, ${fairmintVars.colorBgHover} 4px 8px)`,\n }}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAiCO,SAAS,QAAQ,EAAE,OAAO,OAAO,SAAS,SAAuB;AACtE,SACE,qBAAC,SAAM,SAAQ,iBAAgB,OAAM,cAAa,KAAI,MAAK,MAAK,UAC9D,UAAA;AAAA,IAAA,oBAAC,MAAA,EAAK,MAAK,MAAK,GAAG,aAAa,oBAAoB,OAAO,EAAE,YAAY,EAAA,GACtE,UAAA,MAAA,CACH;AAAA,IACC,UAAU,OACT,oBAAC,iBAAc,IACb,OAAO,UAAU,WACnB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAI,SAAS,MAAM;AAAA,QACnB,GAAG,SAAS,aAAa,mBAAmB,aAAa;AAAA,QACzD,IAAG;AAAA,QACH,OAAO,EAAE,UAAU,EAAA;AAAA,QAElB,UAAA;AAAA,MAAA;AAAA,IAAA,IAGH;AAAA,EAAA,GAEJ;AAEJ;AAYO,SAAS,aAAa,EAAE,UAA6B;AAC1D,SACE,oBAAC,OAAA,EAAM,KAAK,GAAG,OAAM,YAClB,UAAA,OAAO,IAAI,CAAC,MACX,oBAAC,MAAA,EAAa,MAAK,MAAK,IAAI,KAAK,GAAG,aAAa,kBAAkB,IAAG,SACnE,UAAA,EAAA,GADQ,CAEX,CACD,EAAA,CACH;AAEJ;AAYO,SAAS,cAAc,EAAE,QAAQ,GAAA,IAA2B,CAAA,GAAI;AACrE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA,cAAc;AAAA,QACd,YAAY,qCAAqC,aAAa,kBAAkB,WAAW,aAAa,YAAY;AAAA,MAAA;AAAA,IACtH;AAAA,EAAA;AAGN;"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const index = require("../../../theme/index.cjs");
5
- const colors = require("../../../theme/colors.cjs");
6
5
  const Loader = require("../../primitives/Loader/Loader.cjs");
7
6
  const layout = require("../../primitives/layout.cjs");
8
7
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
@@ -87,60 +86,121 @@ function DefaultAlertIcon() {
87
86
  }
88
87
  );
89
88
  }
90
- function statusIconColor(status) {
89
+ function statusLabelColor(status, selected) {
90
+ if (selected) return index.fairmintVars.colorInfoText;
91
91
  switch (status) {
92
92
  case "complete":
93
- return colors.colors.success;
93
+ return index.fairmintVars.colorSuccessText;
94
94
  case "attention":
95
- return colors.colors.warning;
95
+ return index.fairmintVars.colorWarningText;
96
96
  case "error":
97
- return colors.colors.error;
97
+ return index.fairmintVars.colorErrorText;
98
98
  case "uploading":
99
99
  case "processing":
100
- return colors.colors.primary;
100
+ return index.fairmintVars.colorBrandPrimary;
101
101
  default:
102
- return colors.colors.neutral;
102
+ return index.fairmintVars.colorTextTertiary;
103
103
  }
104
104
  }
105
- function statusLabelColor(status, selected) {
106
- if (selected) return index.semanticColors.info;
105
+ function statusIconStyle(status) {
107
106
  switch (status) {
108
107
  case "complete":
109
- return index.semanticColors.success;
108
+ return {
109
+ backgroundColor: index.fairmintVars.colorSuccessBg,
110
+ color: index.fairmintVars.colorSuccessText
111
+ };
110
112
  case "attention":
111
- return index.semanticColors.warning;
113
+ return {
114
+ backgroundColor: index.fairmintVars.colorWarningBg,
115
+ color: index.fairmintVars.colorWarningText
116
+ };
112
117
  case "error":
113
- return index.semanticColors.error;
114
- case "uploading":
115
- case "processing":
116
- return index.brandColors.indigo;
118
+ return {
119
+ backgroundColor: index.fairmintVars.colorErrorBg,
120
+ color: index.fairmintVars.colorErrorText
121
+ };
117
122
  default:
118
- return index.neutralColors[500];
123
+ return {
124
+ backgroundColor: index.fairmintVars.colorBgSurfaceSecondary,
125
+ color: index.fairmintVars.colorIconSecondary
126
+ };
119
127
  }
120
128
  }
121
129
  function DefaultStatusIcon({ status }) {
122
130
  if (status === "uploading" || status === "processing") {
123
- return /* @__PURE__ */ jsxRuntime.jsx(Loader.Loader, { size: 14, color: colors.colors.primary, "aria-hidden": true });
131
+ return /* @__PURE__ */ jsxRuntime.jsx(Loader.Loader, { size: 14, color: index.fairmintVars.colorBrandPrimary, "aria-hidden": true });
124
132
  }
125
133
  if (status === "complete") {
126
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeIcon.ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.colors.success, "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(DefaultCheckIcon, {}) });
134
+ return /* @__PURE__ */ jsxRuntime.jsx(
135
+ ThemeIcon.ThemeIcon,
136
+ {
137
+ size: 20,
138
+ radius: "xl",
139
+ variant: "light",
140
+ color: "success",
141
+ style: statusIconStyle(status),
142
+ "aria-hidden": true,
143
+ children: /* @__PURE__ */ jsxRuntime.jsx(DefaultCheckIcon, {})
144
+ }
145
+ );
127
146
  }
128
147
  if (status === "attention") {
129
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeIcon.ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.colors.warning, "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(DefaultAlertIcon, {}) });
148
+ return /* @__PURE__ */ jsxRuntime.jsx(
149
+ ThemeIcon.ThemeIcon,
150
+ {
151
+ size: 20,
152
+ radius: "xl",
153
+ variant: "light",
154
+ color: "warning",
155
+ style: statusIconStyle(status),
156
+ "aria-hidden": true,
157
+ children: /* @__PURE__ */ jsxRuntime.jsx(DefaultAlertIcon, {})
158
+ }
159
+ );
130
160
  }
131
161
  if (status === "error") {
132
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeIcon.ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.colors.error, "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(DefaultAlertIcon, {}) });
162
+ return /* @__PURE__ */ jsxRuntime.jsx(
163
+ ThemeIcon.ThemeIcon,
164
+ {
165
+ size: 20,
166
+ radius: "xl",
167
+ variant: "light",
168
+ color: "error",
169
+ style: statusIconStyle(status),
170
+ "aria-hidden": true,
171
+ children: /* @__PURE__ */ jsxRuntime.jsx(DefaultAlertIcon, {})
172
+ }
173
+ );
133
174
  }
134
175
  if (status === "queued") {
135
- return /* @__PURE__ */ jsxRuntime.jsx(layout.Box, { c: index.neutralColors[400], style: { display: "flex", flexShrink: 0 }, "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(DefaultClockIcon, {}) });
176
+ return /* @__PURE__ */ jsxRuntime.jsx(
177
+ layout.Box,
178
+ {
179
+ c: index.fairmintVars.colorIconTertiary,
180
+ style: { display: "flex", flexShrink: 0 },
181
+ "aria-hidden": true,
182
+ children: /* @__PURE__ */ jsxRuntime.jsx(DefaultClockIcon, {})
183
+ }
184
+ );
136
185
  }
137
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeIcon.ThemeIcon, { size: 20, radius: "md", variant: "light", color: statusIconColor(status), "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(DefaultFileIcon, {}) });
186
+ return /* @__PURE__ */ jsxRuntime.jsx(
187
+ ThemeIcon.ThemeIcon,
188
+ {
189
+ size: 20,
190
+ radius: "md",
191
+ variant: "light",
192
+ color: "gray",
193
+ style: statusIconStyle(status),
194
+ "aria-hidden": true,
195
+ children: /* @__PURE__ */ jsxRuntime.jsx(DefaultFileIcon, {})
196
+ }
197
+ );
138
198
  }
139
199
  function ProcessingLabelStyles() {
140
200
  return /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
141
201
  .document-row-status--live {
142
202
  display: inline-block;
143
- background-image: linear-gradient(90deg, ${index.brandColors.indigo}, ${index.brandColors.purple}, ${index.brandColors.indigo});
203
+ background-image: linear-gradient(90deg, ${index.fairmintVars.colorBrandPrimary}, ${index.fairmintVars.colorBrandPurple}, ${index.fairmintVars.colorBrandPrimary});
144
204
  background-size: 200% auto;
145
205
  -webkit-background-clip: text;
146
206
  background-clip: text;
@@ -152,7 +212,7 @@ function ProcessingLabelStyles() {
152
212
  .document-row-status--live {
153
213
  animation: none;
154
214
  background-image: none;
155
- color: ${index.neutralColors[600]};
215
+ color: ${index.fairmintVars.colorTextTertiary};
156
216
  }
157
217
  }
158
218
  ` });
@@ -173,8 +233,8 @@ function DocumentStatusRow({
173
233
  const hasActivationTarget = Boolean(onClick);
174
234
  const isClickable = hasActivationTarget && !disabled;
175
235
  const isLive = status === "uploading" || status === "processing";
176
- const borderColor = selected ? index.semanticColors.info : status === "error" ? `${index.semanticColors.error}55` : status === "attention" ? `${index.semanticColors.warning}66` : index.neutralColors[200];
177
- const background = selected ? `${index.semanticColors.info}0a` : status === "error" ? `${index.semanticColors.error}08` : void 0;
236
+ const borderColor = selected ? index.fairmintVars.colorInfoBorder : status === "error" ? `color-mix(in srgb, ${index.fairmintVars.colorErrorBorder} 55%, transparent)` : status === "attention" ? `color-mix(in srgb, ${index.fairmintVars.colorWarningBorder} 66%, transparent)` : index.fairmintVars.colorBorderDefault;
237
+ const background = selected ? `color-mix(in srgb, ${index.fairmintVars.colorInfoBg} 55%, transparent)` : status === "error" ? `color-mix(in srgb, ${index.fairmintVars.colorErrorBg} 20%, transparent)` : void 0;
178
238
  const resolvedAriaLabel = ariaLabel ?? `${fileName}. ${statusLabel}`;
179
239
  const statusAnnouncement = `${fileName}: ${statusLabel}`;
180
240
  const hasDescription = description != null && description !== "";
@@ -191,14 +251,23 @@ function DocumentStatusRow({
191
251
  {
192
252
  size: "sm",
193
253
  fw: 500,
194
- c: index.neutralColors[900],
254
+ c: index.fairmintVars.colorTextPrimary,
195
255
  lineClamp: 1,
196
256
  title: fileName,
197
257
  style: { minWidth: 0 },
198
258
  children: fileName
199
259
  }
200
260
  ),
201
- hasDescription ? typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Text.Text, { size: "xs", c: index.neutralColors[500], lineClamp: 2, style: { minWidth: 0 }, children: description }) : description : null
261
+ hasDescription ? typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
262
+ Text.Text,
263
+ {
264
+ size: "xs",
265
+ c: index.fairmintVars.colorTextSecondary,
266
+ lineClamp: 2,
267
+ style: { minWidth: 0 },
268
+ children: description
269
+ }
270
+ ) : description : null
202
271
  ] })
203
272
  ] });
204
273
  const statusAndActions = /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { gap: "xs", wrap: "nowrap", style: { flexShrink: 0 }, children: [
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentRow.cjs","sources":["../../../../src/components/generic/DocumentRow/DocumentRow.tsx"],"sourcesContent":["import type { ReactNode, SyntheticEvent } from \"react\";\nimport { brandColors, neutralColors, semanticColors } from \"../../../theme\";\nimport { colors } from \"../../../theme/colors\";\nimport { Loader } from \"../../primitives/Loader/Loader\";\nimport { Box, Group, Stack, Text, ThemeIcon, UnstyledButton } from \"../../primitives/layout\";\n\n/** Visual processing vocabulary for a source document after selection. */\nexport type DocumentStatusRowStatus =\n | \"staged\"\n | \"uploading\"\n | \"queued\"\n | \"processing\"\n | \"complete\"\n | \"attention\"\n | \"error\";\n\nexport interface DocumentStatusRowProps {\n /** Source document filename. */\n fileName: string;\n /**\n * Neutral visual state. Product meaning (classified, approved, needs review)\n * belongs in `statusLabel`, not in this enum.\n */\n status: DocumentStatusRowStatus;\n /**\n * Caller-supplied status word or short phrase. Required so status is never\n * communicated by color or animation alone.\n */\n statusLabel: string;\n /** Optional secondary description or metadata beneath the filename. */\n description?: ReactNode;\n /** Leading icon override. Defaults to a status-appropriate glyph. */\n icon?: ReactNode;\n /** Open / disclosed appearance (independent of `status`). Exposed as `aria-expanded` when `onClick` is set. @default false */\n selected?: boolean;\n /** Makes the primary row activatable (mouse + keyboard). */\n onClick?: () => void;\n /**\n * Trailing actions (remove, retry, download, open). Rendered outside the\n * clickable hit target so action clicks do not also activate the row.\n */\n actions?: ReactNode;\n /** Optional detail content beneath the primary row. */\n detail?: ReactNode;\n /** Softens chrome and, with `onClick`, renders a disabled button that blocks activation. @default false */\n disabled?: boolean;\n /** Accessible name when `onClick` is set. Defaults to fileName + statusLabel. */\n ariaLabel?: string;\n}\n\nfunction DefaultFileIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\nfunction DefaultCheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction DefaultClockIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 6v6l4 2\" />\n </svg>\n );\n}\n\nfunction DefaultAlertIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n\nfunction statusIconColor(status: DocumentStatusRowStatus): string {\n switch (status) {\n case \"complete\":\n return colors.success;\n case \"attention\":\n return colors.warning;\n case \"error\":\n return colors.error;\n case \"uploading\":\n case \"processing\":\n return colors.primary;\n default:\n return colors.neutral;\n }\n}\n\nfunction statusLabelColor(status: DocumentStatusRowStatus, selected: boolean): string {\n if (selected) return semanticColors.info;\n switch (status) {\n case \"complete\":\n return semanticColors.success;\n case \"attention\":\n return semanticColors.warning;\n case \"error\":\n return semanticColors.error;\n case \"uploading\":\n case \"processing\":\n return brandColors.indigo;\n default:\n return neutralColors[500];\n }\n}\n\nfunction DefaultStatusIcon({ status }: { status: DocumentStatusRowStatus }) {\n if (status === \"uploading\" || status === \"processing\") {\n return <Loader size={14} color={colors.primary} aria-hidden />;\n }\n if (status === \"complete\") {\n return (\n <ThemeIcon size={20} radius=\"xl\" variant=\"light\" color={colors.success} aria-hidden>\n <DefaultCheckIcon />\n </ThemeIcon>\n );\n }\n if (status === \"attention\") {\n return (\n <ThemeIcon size={20} radius=\"xl\" variant=\"light\" color={colors.warning} aria-hidden>\n <DefaultAlertIcon />\n </ThemeIcon>\n );\n }\n if (status === \"error\") {\n return (\n <ThemeIcon size={20} radius=\"xl\" variant=\"light\" color={colors.error} aria-hidden>\n <DefaultAlertIcon />\n </ThemeIcon>\n );\n }\n if (status === \"queued\") {\n return (\n <Box c={neutralColors[400]} style={{ display: \"flex\", flexShrink: 0 }} aria-hidden>\n <DefaultClockIcon />\n </Box>\n );\n }\n return (\n <ThemeIcon size={20} radius=\"md\" variant=\"light\" color={statusIconColor(status)} aria-hidden>\n <DefaultFileIcon />\n </ThemeIcon>\n );\n}\n\nfunction ProcessingLabelStyles() {\n return (\n <style>{`\n .document-row-status--live {\n display: inline-block;\n background-image: linear-gradient(90deg, ${brandColors.indigo}, ${brandColors.purple}, ${brandColors.indigo});\n background-size: 200% auto;\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n font-weight: 500;\n animation: gradientFlow 2.2s linear infinite;\n }\n @media (prefers-reduced-motion: reduce) {\n .document-row-status--live {\n animation: none;\n background-image: none;\n color: ${neutralColors[600]};\n }\n }\n `}</style>\n );\n}\n\n/**\n * Neutral source-document row for upload → process → settle flows.\n *\n * Owns visual state and accessibility for one uploaded file. Does not own OCR,\n * classification, extraction, approval, polling, or product retry logic — the\n * caller supplies `statusLabel`, actions, and meaning.\n *\n * Layout: a single row with minimal separation. Do not wrap lists of these in\n * an extra card/panel unless the app owns that composition (e.g. a processing\n * container pattern).\n */\nexport function DocumentStatusRow({\n fileName,\n status,\n statusLabel,\n description,\n icon,\n selected = false,\n onClick,\n actions,\n detail,\n disabled = false,\n ariaLabel,\n}: DocumentStatusRowProps) {\n const hasActivationTarget = Boolean(onClick);\n const isClickable = hasActivationTarget && !disabled;\n const isLive = status === \"uploading\" || status === \"processing\";\n const borderColor = selected\n ? semanticColors.info\n : status === \"error\"\n ? `${semanticColors.error}55`\n : status === \"attention\"\n ? `${semanticColors.warning}66`\n : neutralColors[200];\n const background = selected\n ? `${semanticColors.info}0a`\n : status === \"error\"\n ? `${semanticColors.error}08`\n : undefined;\n const resolvedAriaLabel = ariaLabel ?? `${fileName}. ${statusLabel}`;\n /** Accessible status announcement includes filename so lists of rows stay distinct. */\n const statusAnnouncement = `${fileName}: ${statusLabel}`;\n const hasDescription = description != null && description !== \"\";\n /** Single-line rows center icon/title/actions; multi-line keeps icon top-aligned with the title. */\n const rowAlign = hasDescription ? \"flex-start\" : \"center\";\n\n const activate = () => {\n if (!isClickable) return;\n onClick?.();\n };\n\n const primaryContent = (\n <Group gap=\"sm\" wrap=\"nowrap\" align={rowAlign} style={{ minWidth: 0, flex: 1 }} miw={0}>\n <Box style={{ flexShrink: 0, display: \"flex\", alignItems: \"center\" }}>\n {icon ?? <DefaultStatusIcon status={status} />}\n </Box>\n <Stack gap={2} style={{ minWidth: 0, flex: 1 }} miw={0}>\n <Text\n size=\"sm\"\n fw={500}\n c={neutralColors[900]}\n lineClamp={1}\n title={fileName}\n style={{ minWidth: 0 }}\n >\n {fileName}\n </Text>\n {hasDescription ? (\n typeof description === \"string\" ? (\n <Text size=\"xs\" c={neutralColors[500]} lineClamp={2} style={{ minWidth: 0 }}>\n {description}\n </Text>\n ) : (\n description\n )\n ) : null}\n </Stack>\n </Group>\n );\n\n const statusAndActions = (\n <Group gap=\"xs\" wrap=\"nowrap\" style={{ flexShrink: 0 }}>\n {isLive ? (\n <>\n <Text\n size=\"xs\"\n className=\"document-row-status--live\"\n role=\"status\"\n aria-label={statusAnnouncement}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {statusLabel}\n </Text>\n <ProcessingLabelStyles />\n </>\n ) : (\n <Text\n size=\"xs\"\n fw={selected ? 500 : 400}\n c={statusLabelColor(status, selected)}\n role=\"status\"\n aria-label={statusAnnouncement}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {statusLabel}\n </Text>\n )}\n {actions}\n </Group>\n );\n\n return (\n <Box\n data-testid=\"document-row\"\n data-status={status}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n className=\"document-row\"\n w=\"100%\"\n miw={0}\n style={{\n borderRadius: 10,\n border: `1px solid ${borderColor}`,\n background: background ?? \"transparent\",\n opacity: disabled ? 0.6 : 1,\n transition: \"border-color 0.18s ease, background-color 0.18s ease\",\n }}\n >\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n gap=\"sm\"\n px=\"sm\"\n py={8}\n align={rowAlign}\n style={{ minWidth: 0 }}\n >\n {hasActivationTarget ? (\n <UnstyledButton\n onClick={activate}\n disabled={disabled}\n aria-label={resolvedAriaLabel}\n aria-expanded={selected}\n style={{\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n minWidth: 0,\n flex: 1,\n textAlign: \"left\",\n }}\n >\n {primaryContent}\n </UnstyledButton>\n ) : (\n primaryContent\n )}\n {statusAndActions}\n </Group>\n\n {detail != null ? (\n <Box\n px=\"sm\"\n pb=\"sm\"\n pt={0}\n onClick={(event: SyntheticEvent) => event.stopPropagation()}\n onKeyDown={(event: SyntheticEvent) => event.stopPropagation()}\n >\n {detail}\n </Box>\n ) : null}\n </Box>\n );\n}\n"],"names":["jsxs","jsx","colors","semanticColors","brandColors","neutralColors","Loader","ThemeIcon","Box","Group","Stack","Text","Fragment","UnstyledButton"],"mappings":"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"}
1
+ {"version":3,"file":"DocumentRow.cjs","sources":["../../../../src/components/generic/DocumentRow/DocumentRow.tsx"],"sourcesContent":["import type { ReactNode, SyntheticEvent } from \"react\";\nimport { fairmintVars } from \"../../../theme\";\nimport { Loader } from \"../../primitives/Loader/Loader\";\nimport { Box, Group, Stack, Text, ThemeIcon, UnstyledButton } from \"../../primitives/layout\";\n\n/** Visual processing vocabulary for a source document after selection. */\nexport type DocumentStatusRowStatus =\n | \"staged\"\n | \"uploading\"\n | \"queued\"\n | \"processing\"\n | \"complete\"\n | \"attention\"\n | \"error\";\n\nexport interface DocumentStatusRowProps {\n /** Source document filename. */\n fileName: string;\n /**\n * Neutral visual state. Product meaning (classified, approved, needs review)\n * belongs in `statusLabel`, not in this enum.\n */\n status: DocumentStatusRowStatus;\n /**\n * Caller-supplied status word or short phrase. Required so status is never\n * communicated by color or animation alone.\n */\n statusLabel: string;\n /** Optional secondary description or metadata beneath the filename. */\n description?: ReactNode;\n /** Leading icon override. Defaults to a status-appropriate glyph. */\n icon?: ReactNode;\n /** Open / disclosed appearance (independent of `status`). Exposed as `aria-expanded` when `onClick` is set. @default false */\n selected?: boolean;\n /** Makes the primary row activatable (mouse + keyboard). */\n onClick?: () => void;\n /**\n * Trailing actions (remove, retry, download, open). Rendered outside the\n * clickable hit target so action clicks do not also activate the row.\n */\n actions?: ReactNode;\n /** Optional detail content beneath the primary row. */\n detail?: ReactNode;\n /** Softens chrome and, with `onClick`, renders a disabled button that blocks activation. @default false */\n disabled?: boolean;\n /** Accessible name when `onClick` is set. Defaults to fileName + statusLabel. */\n ariaLabel?: string;\n}\n\nfunction DefaultFileIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\nfunction DefaultCheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction DefaultClockIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 6v6l4 2\" />\n </svg>\n );\n}\n\nfunction DefaultAlertIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n\nfunction statusLabelColor(status: DocumentStatusRowStatus, selected: boolean): string {\n if (selected) return fairmintVars.colorInfoText;\n switch (status) {\n case \"complete\":\n return fairmintVars.colorSuccessText;\n case \"attention\":\n return fairmintVars.colorWarningText;\n case \"error\":\n return fairmintVars.colorErrorText;\n case \"uploading\":\n case \"processing\":\n return fairmintVars.colorBrandPrimary;\n default:\n return fairmintVars.colorTextTertiary;\n }\n}\n\nfunction statusIconStyle(status: DocumentStatusRowStatus) {\n switch (status) {\n case \"complete\":\n return {\n backgroundColor: fairmintVars.colorSuccessBg,\n color: fairmintVars.colorSuccessText,\n };\n case \"attention\":\n return {\n backgroundColor: fairmintVars.colorWarningBg,\n color: fairmintVars.colorWarningText,\n };\n case \"error\":\n return {\n backgroundColor: fairmintVars.colorErrorBg,\n color: fairmintVars.colorErrorText,\n };\n default:\n return {\n backgroundColor: fairmintVars.colorBgSurfaceSecondary,\n color: fairmintVars.colorIconSecondary,\n };\n }\n}\n\nfunction DefaultStatusIcon({ status }: { status: DocumentStatusRowStatus }) {\n if (status === \"uploading\" || status === \"processing\") {\n return <Loader size={14} color={fairmintVars.colorBrandPrimary} aria-hidden />;\n }\n if (status === \"complete\") {\n return (\n <ThemeIcon\n size={20}\n radius=\"xl\"\n variant=\"light\"\n color=\"success\"\n style={statusIconStyle(status)}\n aria-hidden\n >\n <DefaultCheckIcon />\n </ThemeIcon>\n );\n }\n if (status === \"attention\") {\n return (\n <ThemeIcon\n size={20}\n radius=\"xl\"\n variant=\"light\"\n color=\"warning\"\n style={statusIconStyle(status)}\n aria-hidden\n >\n <DefaultAlertIcon />\n </ThemeIcon>\n );\n }\n if (status === \"error\") {\n return (\n <ThemeIcon\n size={20}\n radius=\"xl\"\n variant=\"light\"\n color=\"error\"\n style={statusIconStyle(status)}\n aria-hidden\n >\n <DefaultAlertIcon />\n </ThemeIcon>\n );\n }\n if (status === \"queued\") {\n return (\n <Box\n c={fairmintVars.colorIconTertiary}\n style={{ display: \"flex\", flexShrink: 0 }}\n aria-hidden\n >\n <DefaultClockIcon />\n </Box>\n );\n }\n return (\n <ThemeIcon\n size={20}\n radius=\"md\"\n variant=\"light\"\n color=\"gray\"\n style={statusIconStyle(status)}\n aria-hidden\n >\n <DefaultFileIcon />\n </ThemeIcon>\n );\n}\n\nfunction ProcessingLabelStyles() {\n return (\n <style>{`\n .document-row-status--live {\n display: inline-block;\n background-image: linear-gradient(90deg, ${fairmintVars.colorBrandPrimary}, ${fairmintVars.colorBrandPurple}, ${fairmintVars.colorBrandPrimary});\n background-size: 200% auto;\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n font-weight: 500;\n animation: gradientFlow 2.2s linear infinite;\n }\n @media (prefers-reduced-motion: reduce) {\n .document-row-status--live {\n animation: none;\n background-image: none;\n color: ${fairmintVars.colorTextTertiary};\n }\n }\n `}</style>\n );\n}\n\n/**\n * Neutral source-document row for upload → process → settle flows.\n *\n * Owns visual state and accessibility for one uploaded file. Does not own OCR,\n * classification, extraction, approval, polling, or product retry logic — the\n * caller supplies `statusLabel`, actions, and meaning.\n *\n * Layout: a single row with minimal separation. Do not wrap lists of these in\n * an extra card/panel unless the app owns that composition (e.g. a processing\n * container pattern).\n */\nexport function DocumentStatusRow({\n fileName,\n status,\n statusLabel,\n description,\n icon,\n selected = false,\n onClick,\n actions,\n detail,\n disabled = false,\n ariaLabel,\n}: DocumentStatusRowProps) {\n const hasActivationTarget = Boolean(onClick);\n const isClickable = hasActivationTarget && !disabled;\n const isLive = status === \"uploading\" || status === \"processing\";\n const borderColor = selected\n ? fairmintVars.colorInfoBorder\n : status === \"error\"\n ? `color-mix(in srgb, ${fairmintVars.colorErrorBorder} 55%, transparent)`\n : status === \"attention\"\n ? `color-mix(in srgb, ${fairmintVars.colorWarningBorder} 66%, transparent)`\n : fairmintVars.colorBorderDefault;\n const background = selected\n ? `color-mix(in srgb, ${fairmintVars.colorInfoBg} 55%, transparent)`\n : status === \"error\"\n ? `color-mix(in srgb, ${fairmintVars.colorErrorBg} 20%, transparent)`\n : undefined;\n const resolvedAriaLabel = ariaLabel ?? `${fileName}. ${statusLabel}`;\n /** Accessible status announcement includes filename so lists of rows stay distinct. */\n const statusAnnouncement = `${fileName}: ${statusLabel}`;\n const hasDescription = description != null && description !== \"\";\n /** Single-line rows center icon/title/actions; multi-line keeps icon top-aligned with the title. */\n const rowAlign = hasDescription ? \"flex-start\" : \"center\";\n\n const activate = () => {\n if (!isClickable) return;\n onClick?.();\n };\n\n const primaryContent = (\n <Group gap=\"sm\" wrap=\"nowrap\" align={rowAlign} style={{ minWidth: 0, flex: 1 }} miw={0}>\n <Box style={{ flexShrink: 0, display: \"flex\", alignItems: \"center\" }}>\n {icon ?? <DefaultStatusIcon status={status} />}\n </Box>\n <Stack gap={2} style={{ minWidth: 0, flex: 1 }} miw={0}>\n <Text\n size=\"sm\"\n fw={500}\n c={fairmintVars.colorTextPrimary}\n lineClamp={1}\n title={fileName}\n style={{ minWidth: 0 }}\n >\n {fileName}\n </Text>\n {hasDescription ? (\n typeof description === \"string\" ? (\n <Text\n size=\"xs\"\n c={fairmintVars.colorTextSecondary}\n lineClamp={2}\n style={{ minWidth: 0 }}\n >\n {description}\n </Text>\n ) : (\n description\n )\n ) : null}\n </Stack>\n </Group>\n );\n\n const statusAndActions = (\n <Group gap=\"xs\" wrap=\"nowrap\" style={{ flexShrink: 0 }}>\n {isLive ? (\n <>\n <Text\n size=\"xs\"\n className=\"document-row-status--live\"\n role=\"status\"\n aria-label={statusAnnouncement}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {statusLabel}\n </Text>\n <ProcessingLabelStyles />\n </>\n ) : (\n <Text\n size=\"xs\"\n fw={selected ? 500 : 400}\n c={statusLabelColor(status, selected)}\n role=\"status\"\n aria-label={statusAnnouncement}\n style={{ whiteSpace: \"nowrap\" }}\n >\n {statusLabel}\n </Text>\n )}\n {actions}\n </Group>\n );\n\n return (\n <Box\n data-testid=\"document-row\"\n data-status={status}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n className=\"document-row\"\n w=\"100%\"\n miw={0}\n style={{\n borderRadius: 10,\n border: `1px solid ${borderColor}`,\n background: background ?? \"transparent\",\n opacity: disabled ? 0.6 : 1,\n transition: \"border-color 0.18s ease, background-color 0.18s ease\",\n }}\n >\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n gap=\"sm\"\n px=\"sm\"\n py={8}\n align={rowAlign}\n style={{ minWidth: 0 }}\n >\n {hasActivationTarget ? (\n <UnstyledButton\n onClick={activate}\n disabled={disabled}\n aria-label={resolvedAriaLabel}\n aria-expanded={selected}\n style={{\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n minWidth: 0,\n flex: 1,\n textAlign: \"left\",\n }}\n >\n {primaryContent}\n </UnstyledButton>\n ) : (\n primaryContent\n )}\n {statusAndActions}\n </Group>\n\n {detail != null ? (\n <Box\n px=\"sm\"\n pb=\"sm\"\n pt={0}\n onClick={(event: SyntheticEvent) => event.stopPropagation()}\n onKeyDown={(event: SyntheticEvent) => event.stopPropagation()}\n >\n {detail}\n </Box>\n ) : null}\n </Box>\n );\n}\n"],"names":["jsxs","jsx","fairmintVars","Loader","ThemeIcon","Box","Group","Stack","Text","Fragment","UnstyledButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentRow.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/DocumentRow/DocumentRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAMvD,0EAA0E;AAC1E,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,EAAE,uBAAuB,CAAC;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8KD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAgB,EAChB,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAgB,EAChB,SAAS,GACV,EAAE,sBAAsB,2CAoJxB"}
1
+ {"version":3,"file":"DocumentRow.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/DocumentRow/DocumentRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAKvD,0EAA0E;AAC1E,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,EAAE,uBAAuB,CAAC;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuND;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAgB,EAChB,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAgB,EAChB,SAAS,GACV,EAAE,sBAAsB,2CAyJxB"}
@@ -1,6 +1,5 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { semanticColors, neutralColors, brandColors } from "../../../theme/index.js";
3
- import { colors } from "../../../theme/colors.js";
2
+ import { fairmintVars } from "../../../theme/index.js";
4
3
  import { Loader } from "../../primitives/Loader/Loader.js";
5
4
  import { Box, Stack } from "../../primitives/layout.js";
6
5
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
@@ -85,60 +84,121 @@ function DefaultAlertIcon() {
85
84
  }
86
85
  );
87
86
  }
88
- function statusIconColor(status) {
87
+ function statusLabelColor(status, selected) {
88
+ if (selected) return fairmintVars.colorInfoText;
89
89
  switch (status) {
90
90
  case "complete":
91
- return colors.success;
91
+ return fairmintVars.colorSuccessText;
92
92
  case "attention":
93
- return colors.warning;
93
+ return fairmintVars.colorWarningText;
94
94
  case "error":
95
- return colors.error;
95
+ return fairmintVars.colorErrorText;
96
96
  case "uploading":
97
97
  case "processing":
98
- return colors.primary;
98
+ return fairmintVars.colorBrandPrimary;
99
99
  default:
100
- return colors.neutral;
100
+ return fairmintVars.colorTextTertiary;
101
101
  }
102
102
  }
103
- function statusLabelColor(status, selected) {
104
- if (selected) return semanticColors.info;
103
+ function statusIconStyle(status) {
105
104
  switch (status) {
106
105
  case "complete":
107
- return semanticColors.success;
106
+ return {
107
+ backgroundColor: fairmintVars.colorSuccessBg,
108
+ color: fairmintVars.colorSuccessText
109
+ };
108
110
  case "attention":
109
- return semanticColors.warning;
111
+ return {
112
+ backgroundColor: fairmintVars.colorWarningBg,
113
+ color: fairmintVars.colorWarningText
114
+ };
110
115
  case "error":
111
- return semanticColors.error;
112
- case "uploading":
113
- case "processing":
114
- return brandColors.indigo;
116
+ return {
117
+ backgroundColor: fairmintVars.colorErrorBg,
118
+ color: fairmintVars.colorErrorText
119
+ };
115
120
  default:
116
- return neutralColors[500];
121
+ return {
122
+ backgroundColor: fairmintVars.colorBgSurfaceSecondary,
123
+ color: fairmintVars.colorIconSecondary
124
+ };
117
125
  }
118
126
  }
119
127
  function DefaultStatusIcon({ status }) {
120
128
  if (status === "uploading" || status === "processing") {
121
- return /* @__PURE__ */ jsx(Loader, { size: 14, color: colors.primary, "aria-hidden": true });
129
+ return /* @__PURE__ */ jsx(Loader, { size: 14, color: fairmintVars.colorBrandPrimary, "aria-hidden": true });
122
130
  }
123
131
  if (status === "complete") {
124
- return /* @__PURE__ */ jsx(ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.success, "aria-hidden": true, children: /* @__PURE__ */ jsx(DefaultCheckIcon, {}) });
132
+ return /* @__PURE__ */ jsx(
133
+ ThemeIcon,
134
+ {
135
+ size: 20,
136
+ radius: "xl",
137
+ variant: "light",
138
+ color: "success",
139
+ style: statusIconStyle(status),
140
+ "aria-hidden": true,
141
+ children: /* @__PURE__ */ jsx(DefaultCheckIcon, {})
142
+ }
143
+ );
125
144
  }
126
145
  if (status === "attention") {
127
- return /* @__PURE__ */ jsx(ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.warning, "aria-hidden": true, children: /* @__PURE__ */ jsx(DefaultAlertIcon, {}) });
146
+ return /* @__PURE__ */ jsx(
147
+ ThemeIcon,
148
+ {
149
+ size: 20,
150
+ radius: "xl",
151
+ variant: "light",
152
+ color: "warning",
153
+ style: statusIconStyle(status),
154
+ "aria-hidden": true,
155
+ children: /* @__PURE__ */ jsx(DefaultAlertIcon, {})
156
+ }
157
+ );
128
158
  }
129
159
  if (status === "error") {
130
- return /* @__PURE__ */ jsx(ThemeIcon, { size: 20, radius: "xl", variant: "light", color: colors.error, "aria-hidden": true, children: /* @__PURE__ */ jsx(DefaultAlertIcon, {}) });
160
+ return /* @__PURE__ */ jsx(
161
+ ThemeIcon,
162
+ {
163
+ size: 20,
164
+ radius: "xl",
165
+ variant: "light",
166
+ color: "error",
167
+ style: statusIconStyle(status),
168
+ "aria-hidden": true,
169
+ children: /* @__PURE__ */ jsx(DefaultAlertIcon, {})
170
+ }
171
+ );
131
172
  }
132
173
  if (status === "queued") {
133
- return /* @__PURE__ */ jsx(Box, { c: neutralColors[400], style: { display: "flex", flexShrink: 0 }, "aria-hidden": true, children: /* @__PURE__ */ jsx(DefaultClockIcon, {}) });
174
+ return /* @__PURE__ */ jsx(
175
+ Box,
176
+ {
177
+ c: fairmintVars.colorIconTertiary,
178
+ style: { display: "flex", flexShrink: 0 },
179
+ "aria-hidden": true,
180
+ children: /* @__PURE__ */ jsx(DefaultClockIcon, {})
181
+ }
182
+ );
134
183
  }
135
- return /* @__PURE__ */ jsx(ThemeIcon, { size: 20, radius: "md", variant: "light", color: statusIconColor(status), "aria-hidden": true, children: /* @__PURE__ */ jsx(DefaultFileIcon, {}) });
184
+ return /* @__PURE__ */ jsx(
185
+ ThemeIcon,
186
+ {
187
+ size: 20,
188
+ radius: "md",
189
+ variant: "light",
190
+ color: "gray",
191
+ style: statusIconStyle(status),
192
+ "aria-hidden": true,
193
+ children: /* @__PURE__ */ jsx(DefaultFileIcon, {})
194
+ }
195
+ );
136
196
  }
137
197
  function ProcessingLabelStyles() {
138
198
  return /* @__PURE__ */ jsx("style", { children: `
139
199
  .document-row-status--live {
140
200
  display: inline-block;
141
- background-image: linear-gradient(90deg, ${brandColors.indigo}, ${brandColors.purple}, ${brandColors.indigo});
201
+ background-image: linear-gradient(90deg, ${fairmintVars.colorBrandPrimary}, ${fairmintVars.colorBrandPurple}, ${fairmintVars.colorBrandPrimary});
142
202
  background-size: 200% auto;
143
203
  -webkit-background-clip: text;
144
204
  background-clip: text;
@@ -150,7 +210,7 @@ function ProcessingLabelStyles() {
150
210
  .document-row-status--live {
151
211
  animation: none;
152
212
  background-image: none;
153
- color: ${neutralColors[600]};
213
+ color: ${fairmintVars.colorTextTertiary};
154
214
  }
155
215
  }
156
216
  ` });
@@ -171,8 +231,8 @@ function DocumentStatusRow({
171
231
  const hasActivationTarget = Boolean(onClick);
172
232
  const isClickable = hasActivationTarget && !disabled;
173
233
  const isLive = status === "uploading" || status === "processing";
174
- const borderColor = selected ? semanticColors.info : status === "error" ? `${semanticColors.error}55` : status === "attention" ? `${semanticColors.warning}66` : neutralColors[200];
175
- const background = selected ? `${semanticColors.info}0a` : status === "error" ? `${semanticColors.error}08` : void 0;
234
+ const borderColor = selected ? fairmintVars.colorInfoBorder : status === "error" ? `color-mix(in srgb, ${fairmintVars.colorErrorBorder} 55%, transparent)` : status === "attention" ? `color-mix(in srgb, ${fairmintVars.colorWarningBorder} 66%, transparent)` : fairmintVars.colorBorderDefault;
235
+ const background = selected ? `color-mix(in srgb, ${fairmintVars.colorInfoBg} 55%, transparent)` : status === "error" ? `color-mix(in srgb, ${fairmintVars.colorErrorBg} 20%, transparent)` : void 0;
176
236
  const resolvedAriaLabel = ariaLabel ?? `${fileName}. ${statusLabel}`;
177
237
  const statusAnnouncement = `${fileName}: ${statusLabel}`;
178
238
  const hasDescription = description != null && description !== "";
@@ -189,14 +249,23 @@ function DocumentStatusRow({
189
249
  {
190
250
  size: "sm",
191
251
  fw: 500,
192
- c: neutralColors[900],
252
+ c: fairmintVars.colorTextPrimary,
193
253
  lineClamp: 1,
194
254
  title: fileName,
195
255
  style: { minWidth: 0 },
196
256
  children: fileName
197
257
  }
198
258
  ),
199
- hasDescription ? typeof description === "string" ? /* @__PURE__ */ jsx(Text, { size: "xs", c: neutralColors[500], lineClamp: 2, style: { minWidth: 0 }, children: description }) : description : null
259
+ hasDescription ? typeof description === "string" ? /* @__PURE__ */ jsx(
260
+ Text,
261
+ {
262
+ size: "xs",
263
+ c: fairmintVars.colorTextSecondary,
264
+ lineClamp: 2,
265
+ style: { minWidth: 0 },
266
+ children: description
267
+ }
268
+ ) : description : null
200
269
  ] })
201
270
  ] });
202
271
  const statusAndActions = /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", style: { flexShrink: 0 }, children: [