@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 +1 @@
1
- {"version":3,"file":"StepProgress.js","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":[],"mappings":"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"}
1
+ {"version":3,"file":"StepProgress.js","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":[],"mappings":"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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const Select = require("../../primitives/Select/Select.cjs");
5
5
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
6
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
6
+ const Text = require("../../primitives/Text/Text.cjs");
7
7
  const Pagination = require("../../../node_modules/@mantine/core/esm/components/Pagination/Pagination.cjs");
8
8
  function toSelectOption(option) {
9
9
  if (option && typeof option === "object") {
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { Select } from "../../primitives/Select/Select.js";
3
3
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
4
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
4
+ import { Text } from "../../primitives/Text/Text.js";
5
5
  import { Pagination } from "../../../node_modules/@mantine/core/esm/components/Pagination/Pagination.js";
6
6
  function toSelectOption(option) {
7
7
  if (option && typeof option === "object") {
@@ -5,7 +5,7 @@ const index = require("../../../theme/index.cjs");
5
5
  const layout = require("../../primitives/layout.cjs");
6
6
  const Popover = require("../../primitives/Popover/Popover.cjs");
7
7
  const zIndex = require("../../../theme/zIndex.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 ScrollArea = require("../../../node_modules/@mantine/core/esm/components/ScrollArea/ScrollArea.cjs");
10
10
  const DEFAULT_EMPTY_MESSAGE = "There are no tasks to do right now. You'll see a badge on this icon when there are.";
11
11
  function TaskInboxPopover({
@@ -3,7 +3,7 @@ import { fairmintVars } from "../../../theme/index.js";
3
3
  import { Box, Stack } from "../../primitives/layout.js";
4
4
  import { Popover } from "../../primitives/Popover/Popover.js";
5
5
  import { overlayZIndexAboveLegacyShell } from "../../../theme/zIndex.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 { ScrollArea } from "../../../node_modules/@mantine/core/esm/components/ScrollArea/ScrollArea.js";
8
8
  const DEFAULT_EMPTY_MESSAGE = "There are no tasks to do right now. You'll see a badge on this icon when there are.";
9
9
  function TaskInboxPopover({
@@ -7,7 +7,7 @@ const ActionIcon = require("../../primitives/ActionIcon/ActionIcon.cjs");
7
7
  const Button = require("../../primitives/Button/Button.cjs");
8
8
  const layout = require("../../primitives/layout.cjs");
9
9
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.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 PRIORITY_SEVERITY_COLORS = {
12
12
  critical: index.fairmintVars.colorErrorText,
13
13
  // Mid warning ramp (amber) — clearer than warning-text/solid brown vs error red.
@@ -5,7 +5,7 @@ import { ActionIcon } from "../../primitives/ActionIcon/ActionIcon.js";
5
5
  import { Button } from "../../primitives/Button/Button.js";
6
6
  import { Box, Stack } from "../../primitives/layout.js";
7
7
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
8
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
8
+ import { Text } from "../../primitives/Text/Text.js";
9
9
  const PRIORITY_SEVERITY_COLORS = {
10
10
  critical: fairmintVars.colorErrorText,
11
11
  // Mid warning ramp (amber) — clearer than warning-text/solid brown vs error red.
@@ -7,7 +7,7 @@ const BottomSheet = require("../../generic/BottomSheet/BottomSheet.cjs");
7
7
  const Avatar = require("../../primitives/Avatar/Avatar.cjs");
8
8
  const layout = require("../../primitives/layout.cjs");
9
9
  const colors = require("../../../theme/colors.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 UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
12
12
  const ACCOUNT_SHEET_ROW_MIN_HEIGHT = 48;
13
13
  function resolvePaintColor(color) {
@@ -5,7 +5,7 @@ import { BottomSheet } from "../../generic/BottomSheet/BottomSheet.js";
5
5
  import { Avatar } from "../../primitives/Avatar/Avatar.js";
6
6
  import { Box, Stack, Divider } from "../../primitives/layout.js";
7
7
  import { colors } from "../../../theme/colors.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 { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
10
10
  const ACCOUNT_SHEET_ROW_MIN_HEIGHT = 48;
11
11
  function resolvePaintColor(color) {
@@ -12,7 +12,7 @@ const MobileNavHeader = require("./MobileNavHeader.cjs");
12
12
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
13
13
  const IconX = require("../../../node_modules/@tabler/icons-react/dist/esm/icons/IconX.cjs");
14
14
  const UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
15
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
15
+ const Text = require("../../primitives/Text/Text.cjs");
16
16
  const IconChevronDown = require("../../../node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.cjs");
17
17
  const MOBILE_NAV_WIDTH = "100%";
18
18
  const MOBILE_NAV_ROW_MIN_HEIGHT = 48;
@@ -10,7 +10,7 @@ import { MOBILE_NAV_LOGO_HEIGHT } from "./MobileNavHeader.js";
10
10
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
11
11
  import IconX from "../../../node_modules/@tabler/icons-react/dist/esm/icons/IconX.js";
12
12
  import { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
13
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
13
+ import { Text } from "../../primitives/Text/Text.js";
14
14
  import IconChevronDown from "../../../node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.js";
15
15
  const MOBILE_NAV_WIDTH = "100%";
16
16
  const MOBILE_NAV_ROW_MIN_HEIGHT = 48;
@@ -6,7 +6,7 @@ const layout = require("../../primitives/layout.cjs");
6
6
  const Group = require("../../../node_modules/@mantine/core/esm/components/Group/Group.cjs");
7
7
  const Title = require("../../../node_modules/@mantine/core/esm/components/Title/Title.cjs");
8
8
  const responsiveTypography = require("../../../theme/responsiveTypography.cjs");
9
- const Text = require("../../../node_modules/@mantine/core/esm/components/Text/Text.cjs");
9
+ const Text = require("../../primitives/Text/Text.cjs");
10
10
  function PageHeader({ title, subtitle, action }) {
11
11
  return /* @__PURE__ */ jsxRuntime.jsxs(Group.Group, { justify: "space-between", align: "flex-start", mb: "lg", children: [
12
12
  /* @__PURE__ */ jsxRuntime.jsxs(layout.Stack, { gap: 4, children: [
@@ -4,7 +4,7 @@ import { Stack } from "../../primitives/layout.js";
4
4
  import { Group } from "../../../node_modules/@mantine/core/esm/components/Group/Group.js";
5
5
  import { Title } from "../../../node_modules/@mantine/core/esm/components/Title/Title.js";
6
6
  import { responsiveTypography } from "../../../theme/responsiveTypography.js";
7
- import { Text } from "../../../node_modules/@mantine/core/esm/components/Text/Text.js";
7
+ import { Text } from "../../primitives/Text/Text.js";
8
8
  function PageHeader({ title, subtitle, action }) {
9
9
  return /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "flex-start", mb: "lg", children: [
10
10
  /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const glossary = require("../../../constants/glossary.cjs");
6
+ const GlossaryContext = React.createContext(null);
7
+ function GlossaryProvider({
8
+ children,
9
+ enabled = true,
10
+ terms = glossary.FINANCIAL_GLOSSARY,
11
+ onTermClick,
12
+ learnMoreText = "Click to learn more"
13
+ }) {
14
+ const value = React.useMemo(
15
+ () => ({
16
+ enabled,
17
+ terms,
18
+ onTermClick,
19
+ learnMoreText
20
+ }),
21
+ [enabled, terms, onTermClick, learnMoreText]
22
+ );
23
+ return /* @__PURE__ */ jsxRuntime.jsx(GlossaryContext.Provider, { value, children });
24
+ }
25
+ function useGlossaryContext() {
26
+ return React.useContext(GlossaryContext);
27
+ }
28
+ const GlossaryScopeContext = React.createContext(null);
29
+ function GlossaryScope({ children }) {
30
+ return /* @__PURE__ */ jsxRuntime.jsx(GlossaryScopeContext.Provider, { value: { active: true }, children });
31
+ }
32
+ function useGlossaryScope() {
33
+ return React.useContext(GlossaryScopeContext);
34
+ }
35
+ exports.GlossaryProvider = GlossaryProvider;
36
+ exports.GlossaryScope = GlossaryScope;
37
+ exports.useGlossaryContext = useGlossaryContext;
38
+ exports.useGlossaryScope = useGlossaryScope;
39
+ //# sourceMappingURL=GlossaryContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlossaryContext.cjs","sources":["../../../../src/components/primitives/Glossary/GlossaryContext.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { createContext, useContext, useMemo } from \"react\";\nimport {\n FINANCIAL_GLOSSARY,\n type GlossaryTerm,\n type GlossaryTermData,\n type GlossaryTermDefinition,\n} from \"../../../constants/glossary\";\n\nexport type { GlossaryTermData, GlossaryTermDefinition };\n\nexport interface GlossaryContextValue {\n /** Whether glossary term matching and linkification is enabled. @default true */\n enabled: boolean;\n /** Active dictionary of terms to match against. Defaults to FINANCIAL_GLOSSARY. */\n terms: readonly GlossaryTerm[];\n /**\n * Optional click handler called when an interactive glossary term is activated.\n * If provided, terms render with interactive click affordances (e.g. opens Cap Table AI).\n * If omitted, terms render as definition-only glossary items with informative tooltips.\n */\n onTermClick?: (term: GlossaryTerm) => void;\n /**\n * Optional call-to-action text displayed in the tooltip footer when `onTermClick` is defined.\n * @default \"Click to learn more\"\n */\n learnMoreText?: string;\n}\n\nexport interface GlossaryProviderProps {\n children: ReactNode;\n /** Whether glossary term matching is active. Defaults to true. */\n enabled?: boolean;\n /** Custom dictionary of terms to replace the standard financial glossary. */\n terms?: readonly GlossaryTerm[];\n /** Callback fired when a user clicks/taps an interactive glossary term. */\n onTermClick?: (term: GlossaryTerm) => void;\n /** Custom tooltip action label (e.g. \"Click to learn more with Cap Table AI\"). */\n learnMoreText?: string;\n}\n\nconst GlossaryContext = createContext<GlossaryContextValue | null>(null);\n\nexport function GlossaryProvider({\n children,\n enabled = true,\n terms = FINANCIAL_GLOSSARY,\n onTermClick,\n learnMoreText = \"Click to learn more\",\n}: GlossaryProviderProps) {\n const value = useMemo<GlossaryContextValue>(\n () => ({\n enabled,\n terms,\n onTermClick,\n learnMoreText,\n }),\n [enabled, terms, onTermClick, learnMoreText],\n );\n\n return <GlossaryContext.Provider value={value}>{children}</GlossaryContext.Provider>;\n}\n\nexport function useGlossaryContext(): GlossaryContextValue | null {\n return useContext(GlossaryContext);\n}\n\n/**\n * Marks a section where automatic glossary parsing is enabled.\n *\n * Each `<Text>` block deduplicates its own terms to avoid repetitive visual noise\n * within a paragraph. The scope intentionally does not coordinate ownership across\n * components, which keeps glossary output stable across updates and unmounts.\n */\nexport interface GlossaryScopeContextValue {\n active: true;\n}\n\nconst GlossaryScopeContext = createContext<GlossaryScopeContextValue | null>(null);\n\nexport interface GlossaryScopeProps {\n children: ReactNode;\n}\n\nexport function GlossaryScope({ children }: GlossaryScopeProps) {\n return (\n <GlossaryScopeContext.Provider value={{ active: true }}>\n {children}\n </GlossaryScopeContext.Provider>\n );\n}\n\nexport function useGlossaryScope(): GlossaryScopeContextValue | null {\n return useContext(GlossaryScopeContext);\n}\n"],"names":["createContext","FINANCIAL_GLOSSARY","useMemo","jsx","useContext"],"mappings":";;;;;AAyCA,MAAM,kBAAkBA,MAAAA,cAA2C,IAAI;AAEhE,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,QAAQC,SAAAA;AAAAA,EACR;AAAA,EACA,gBAAgB;AAClB,GAA0B;AACxB,QAAM,QAAQC,MAAAA;AAAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,CAAC,SAAS,OAAO,aAAa,aAAa;AAAA,EAAA;AAG7C,SAAOC,2BAAAA,IAAC,gBAAgB,UAAhB,EAAyB,OAAe,SAAA,CAAS;AAC3D;AAEO,SAAS,qBAAkD;AAChE,SAAOC,MAAAA,WAAW,eAAe;AACnC;AAaA,MAAM,uBAAuBJ,MAAAA,cAAgD,IAAI;AAM1E,SAAS,cAAc,EAAE,YAAgC;AAC9D,SACEG,2BAAAA,IAAC,qBAAqB,UAArB,EAA8B,OAAO,EAAE,QAAQ,QAC7C,UACH;AAEJ;AAEO,SAAS,mBAAqD;AACnE,SAAOC,MAAAA,WAAW,oBAAoB;AACxC;;;;;"}
@@ -0,0 +1,49 @@
1
+ import { ReactNode } from 'react';
2
+ import { GlossaryTerm, GlossaryTermData, GlossaryTermDefinition } from '../../../constants/glossary';
3
+ export type { GlossaryTermData, GlossaryTermDefinition };
4
+ export interface GlossaryContextValue {
5
+ /** Whether glossary term matching and linkification is enabled. @default true */
6
+ enabled: boolean;
7
+ /** Active dictionary of terms to match against. Defaults to FINANCIAL_GLOSSARY. */
8
+ terms: readonly GlossaryTerm[];
9
+ /**
10
+ * Optional click handler called when an interactive glossary term is activated.
11
+ * If provided, terms render with interactive click affordances (e.g. opens Cap Table AI).
12
+ * If omitted, terms render as definition-only glossary items with informative tooltips.
13
+ */
14
+ onTermClick?: (term: GlossaryTerm) => void;
15
+ /**
16
+ * Optional call-to-action text displayed in the tooltip footer when `onTermClick` is defined.
17
+ * @default "Click to learn more"
18
+ */
19
+ learnMoreText?: string;
20
+ }
21
+ export interface GlossaryProviderProps {
22
+ children: ReactNode;
23
+ /** Whether glossary term matching is active. Defaults to true. */
24
+ enabled?: boolean;
25
+ /** Custom dictionary of terms to replace the standard financial glossary. */
26
+ terms?: readonly GlossaryTerm[];
27
+ /** Callback fired when a user clicks/taps an interactive glossary term. */
28
+ onTermClick?: (term: GlossaryTerm) => void;
29
+ /** Custom tooltip action label (e.g. "Click to learn more with Cap Table AI"). */
30
+ learnMoreText?: string;
31
+ }
32
+ export declare function GlossaryProvider({ children, enabled, terms, onTermClick, learnMoreText, }: GlossaryProviderProps): import("react").JSX.Element;
33
+ export declare function useGlossaryContext(): GlossaryContextValue | null;
34
+ /**
35
+ * Marks a section where automatic glossary parsing is enabled.
36
+ *
37
+ * Each `<Text>` block deduplicates its own terms to avoid repetitive visual noise
38
+ * within a paragraph. The scope intentionally does not coordinate ownership across
39
+ * components, which keeps glossary output stable across updates and unmounts.
40
+ */
41
+ export interface GlossaryScopeContextValue {
42
+ active: true;
43
+ }
44
+ export interface GlossaryScopeProps {
45
+ children: ReactNode;
46
+ }
47
+ export declare function GlossaryScope({ children }: GlossaryScopeProps): import("react").JSX.Element;
48
+ export declare function useGlossaryScope(): GlossaryScopeContextValue | null;
49
+ //# sourceMappingURL=GlossaryContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlossaryContext.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Glossary/GlossaryContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAc,EACd,KAA0B,EAC1B,WAAW,EACX,aAAqC,GACtC,EAAE,qBAAqB,+BAYvB;AAED,wBAAgB,kBAAkB,IAAI,oBAAoB,GAAG,IAAI,CAEhE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,IAAI,CAAC;CACd;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAM7D;AAED,wBAAgB,gBAAgB,IAAI,yBAAyB,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,39 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo, useContext, createContext } from "react";
3
+ import { FINANCIAL_GLOSSARY } from "../../../constants/glossary.js";
4
+ const GlossaryContext = createContext(null);
5
+ function GlossaryProvider({
6
+ children,
7
+ enabled = true,
8
+ terms = FINANCIAL_GLOSSARY,
9
+ onTermClick,
10
+ learnMoreText = "Click to learn more"
11
+ }) {
12
+ const value = useMemo(
13
+ () => ({
14
+ enabled,
15
+ terms,
16
+ onTermClick,
17
+ learnMoreText
18
+ }),
19
+ [enabled, terms, onTermClick, learnMoreText]
20
+ );
21
+ return /* @__PURE__ */ jsx(GlossaryContext.Provider, { value, children });
22
+ }
23
+ function useGlossaryContext() {
24
+ return useContext(GlossaryContext);
25
+ }
26
+ const GlossaryScopeContext = createContext(null);
27
+ function GlossaryScope({ children }) {
28
+ return /* @__PURE__ */ jsx(GlossaryScopeContext.Provider, { value: { active: true }, children });
29
+ }
30
+ function useGlossaryScope() {
31
+ return useContext(GlossaryScopeContext);
32
+ }
33
+ export {
34
+ GlossaryProvider,
35
+ GlossaryScope,
36
+ useGlossaryContext,
37
+ useGlossaryScope
38
+ };
39
+ //# sourceMappingURL=GlossaryContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlossaryContext.js","sources":["../../../../src/components/primitives/Glossary/GlossaryContext.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { createContext, useContext, useMemo } from \"react\";\nimport {\n FINANCIAL_GLOSSARY,\n type GlossaryTerm,\n type GlossaryTermData,\n type GlossaryTermDefinition,\n} from \"../../../constants/glossary\";\n\nexport type { GlossaryTermData, GlossaryTermDefinition };\n\nexport interface GlossaryContextValue {\n /** Whether glossary term matching and linkification is enabled. @default true */\n enabled: boolean;\n /** Active dictionary of terms to match against. Defaults to FINANCIAL_GLOSSARY. */\n terms: readonly GlossaryTerm[];\n /**\n * Optional click handler called when an interactive glossary term is activated.\n * If provided, terms render with interactive click affordances (e.g. opens Cap Table AI).\n * If omitted, terms render as definition-only glossary items with informative tooltips.\n */\n onTermClick?: (term: GlossaryTerm) => void;\n /**\n * Optional call-to-action text displayed in the tooltip footer when `onTermClick` is defined.\n * @default \"Click to learn more\"\n */\n learnMoreText?: string;\n}\n\nexport interface GlossaryProviderProps {\n children: ReactNode;\n /** Whether glossary term matching is active. Defaults to true. */\n enabled?: boolean;\n /** Custom dictionary of terms to replace the standard financial glossary. */\n terms?: readonly GlossaryTerm[];\n /** Callback fired when a user clicks/taps an interactive glossary term. */\n onTermClick?: (term: GlossaryTerm) => void;\n /** Custom tooltip action label (e.g. \"Click to learn more with Cap Table AI\"). */\n learnMoreText?: string;\n}\n\nconst GlossaryContext = createContext<GlossaryContextValue | null>(null);\n\nexport function GlossaryProvider({\n children,\n enabled = true,\n terms = FINANCIAL_GLOSSARY,\n onTermClick,\n learnMoreText = \"Click to learn more\",\n}: GlossaryProviderProps) {\n const value = useMemo<GlossaryContextValue>(\n () => ({\n enabled,\n terms,\n onTermClick,\n learnMoreText,\n }),\n [enabled, terms, onTermClick, learnMoreText],\n );\n\n return <GlossaryContext.Provider value={value}>{children}</GlossaryContext.Provider>;\n}\n\nexport function useGlossaryContext(): GlossaryContextValue | null {\n return useContext(GlossaryContext);\n}\n\n/**\n * Marks a section where automatic glossary parsing is enabled.\n *\n * Each `<Text>` block deduplicates its own terms to avoid repetitive visual noise\n * within a paragraph. The scope intentionally does not coordinate ownership across\n * components, which keeps glossary output stable across updates and unmounts.\n */\nexport interface GlossaryScopeContextValue {\n active: true;\n}\n\nconst GlossaryScopeContext = createContext<GlossaryScopeContextValue | null>(null);\n\nexport interface GlossaryScopeProps {\n children: ReactNode;\n}\n\nexport function GlossaryScope({ children }: GlossaryScopeProps) {\n return (\n <GlossaryScopeContext.Provider value={{ active: true }}>\n {children}\n </GlossaryScopeContext.Provider>\n );\n}\n\nexport function useGlossaryScope(): GlossaryScopeContextValue | null {\n return useContext(GlossaryScopeContext);\n}\n"],"names":[],"mappings":";;;AAyCA,MAAM,kBAAkB,cAA2C,IAAI;AAEhE,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,QAAQ;AAAA,EACR;AAAA,EACA,gBAAgB;AAClB,GAA0B;AACxB,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,CAAC,SAAS,OAAO,aAAa,aAAa;AAAA,EAAA;AAG7C,SAAO,oBAAC,gBAAgB,UAAhB,EAAyB,OAAe,SAAA,CAAS;AAC3D;AAEO,SAAS,qBAAkD;AAChE,SAAO,WAAW,eAAe;AACnC;AAaA,MAAM,uBAAuB,cAAgD,IAAI;AAM1E,SAAS,cAAc,EAAE,YAAgC;AAC9D,SACE,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,EAAE,QAAQ,QAC7C,UACH;AAEJ;AAEO,SAAS,mBAAqD;AACnE,SAAO,WAAW,oBAAoB;AACxC;"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const useIsMobile = require("../../../hooks/useIsMobile.cjs");
6
+ const Popover = require("../Popover/Popover.cjs");
7
+ const Tooltip = require("../Tooltip/Tooltip.cjs");
8
+ const GlossaryContext = require("./GlossaryContext.cjs");
9
+ const UnstyledButton = require("../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.cjs");
10
+ function GlossaryTerm({ term, children }) {
11
+ const glossary = GlossaryContext.useGlossaryContext();
12
+ const isMobile = useIsMobile.useIsMobile();
13
+ const onTermClick = glossary?.onTermClick;
14
+ const learnMoreText = glossary?.learnMoreText ?? "Click to learn more";
15
+ const [mobileOpened, setMobileOpened] = React.useState(false);
16
+ const handleAction = React.useCallback(() => {
17
+ if (!onTermClick) return;
18
+ setMobileOpened(false);
19
+ onTermClick(term);
20
+ }, [onTermClick, term]);
21
+ const handleClick = (e) => {
22
+ e.stopPropagation();
23
+ if (isMobile) {
24
+ setMobileOpened((prev) => !prev);
25
+ return;
26
+ }
27
+ if (onTermClick) {
28
+ e.preventDefault();
29
+ handleAction();
30
+ }
31
+ };
32
+ const handleKeyDown = (e) => {
33
+ if (isMobile) {
34
+ if (e.key === "Enter" || e.key === " ") {
35
+ e.preventDefault();
36
+ e.stopPropagation();
37
+ setMobileOpened((prev) => !prev);
38
+ }
39
+ return;
40
+ }
41
+ if ((e.key === "Enter" || e.key === " ") && onTermClick) {
42
+ e.preventDefault();
43
+ e.stopPropagation();
44
+ handleAction();
45
+ }
46
+ };
47
+ const termStyle = {
48
+ display: "inline",
49
+ padding: 0,
50
+ border: 0,
51
+ background: "transparent",
52
+ color: "inherit",
53
+ font: "inherit",
54
+ textDecoration: "underline dotted",
55
+ textDecorationColor: "color-mix(in srgb, currentColor 55%, transparent)",
56
+ textDecorationThickness: "1px",
57
+ textUnderlineOffset: "3px",
58
+ cursor: onTermClick ? isMobile ? "help" : "pointer" : "help"
59
+ };
60
+ const tooltipContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: [
61
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: term.explanation }),
62
+ onTermClick && (isMobile ? /* @__PURE__ */ jsxRuntime.jsxs(
63
+ "button",
64
+ {
65
+ onClick: (e) => {
66
+ e.stopPropagation();
67
+ handleAction();
68
+ },
69
+ style: {
70
+ background: "transparent",
71
+ border: 0,
72
+ padding: 0,
73
+ color: "inherit",
74
+ font: "inherit",
75
+ fontSize: "11px",
76
+ opacity: 0.85,
77
+ fontWeight: 500,
78
+ cursor: "pointer",
79
+ textAlign: "left",
80
+ textDecoration: "underline"
81
+ },
82
+ type: "button",
83
+ children: [
84
+ learnMoreText,
85
+ " →"
86
+ ]
87
+ }
88
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "11px", opacity: 0.85, fontWeight: 500 }, children: learnMoreText }))
89
+ ] });
90
+ if (isMobile) {
91
+ return (
92
+ // The wrapper stops the completed Popover click from reaching parent cards
93
+ // without blocking Popover.Target's own toggle handler.
94
+ // biome-ignore lint/a11y/noStaticElementInteractions: propagation boundary around an interactive Popover
95
+ // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard activation does not bubble as a parent click
96
+ /* @__PURE__ */ jsxRuntime.jsx("span", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsxs(
97
+ Popover.Popover,
98
+ {
99
+ onChange: setMobileOpened,
100
+ onClose: () => setMobileOpened(false),
101
+ opened: mobileOpened,
102
+ position: "top",
103
+ shadow: "md",
104
+ transitionProps: { duration: 0, exitDuration: 0 },
105
+ withArrow: true,
106
+ width: 260,
107
+ children: [
108
+ /* @__PURE__ */ jsxRuntime.jsx(Popover.Popover.Target, { children: /* @__PURE__ */ jsxRuntime.jsx(
109
+ UnstyledButton.UnstyledButton,
110
+ {
111
+ onClick: handleClick,
112
+ onKeyDown: handleKeyDown,
113
+ style: termStyle,
114
+ type: "button",
115
+ children
116
+ }
117
+ ) }),
118
+ /* @__PURE__ */ jsxRuntime.jsx(Popover.Popover.Dropdown, { style: mobileOpened ? { display: "block" } : void 0, children: tooltipContent })
119
+ ]
120
+ }
121
+ ) })
122
+ );
123
+ }
124
+ return /* @__PURE__ */ jsxRuntime.jsx(
125
+ Tooltip.Tooltip,
126
+ {
127
+ events: { focus: true, hover: true, touch: true },
128
+ label: tooltipContent,
129
+ multiline: true,
130
+ styles: onTermClick ? { tooltip: { pointerEvents: "auto" } } : void 0,
131
+ w: 260,
132
+ withArrow: true,
133
+ children: /* @__PURE__ */ jsxRuntime.jsx(
134
+ UnstyledButton.UnstyledButton,
135
+ {
136
+ onClick: handleClick,
137
+ onKeyDown: handleKeyDown,
138
+ style: termStyle,
139
+ type: "button",
140
+ children
141
+ }
142
+ )
143
+ }
144
+ );
145
+ }
146
+ exports.GlossaryTerm = GlossaryTerm;
147
+ //# sourceMappingURL=GlossaryTerm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlossaryTerm.cjs","sources":["../../../../src/components/primitives/Glossary/GlossaryTerm.tsx"],"sourcesContent":["import type { CSSProperties, KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { useCallback, useState } from \"react\";\nimport type { GlossaryTerm as GlossaryTermData } from \"../../../constants/glossary\";\nimport { useIsMobile } from \"../../../hooks/useIsMobile\";\nimport { UnstyledButton } from \"../layout\";\nimport { Popover } from \"../Popover/Popover\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { useGlossaryContext } from \"./GlossaryContext\";\n\nexport interface GlossaryTermProps {\n /** The glossary term data. */\n term: GlossaryTermData;\n /** The text displayed in the copy (matches source text casing). */\n children: ReactNode;\n}\n\nexport function GlossaryTerm({ term, children }: GlossaryTermProps) {\n const glossary = useGlossaryContext();\n const isMobile = useIsMobile();\n const onTermClick = glossary?.onTermClick;\n const learnMoreText = glossary?.learnMoreText ?? \"Click to learn more\";\n\n const [mobileOpened, setMobileOpened] = useState(false);\n\n const handleAction = useCallback(() => {\n if (!onTermClick) return;\n setMobileOpened(false);\n onTermClick(term);\n }, [onTermClick, term]);\n\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n if (isMobile) {\n setMobileOpened((prev) => !prev);\n return;\n }\n\n if (onTermClick) {\n e.preventDefault();\n handleAction();\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isMobile) {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n setMobileOpened((prev) => !prev);\n }\n return;\n }\n\n if ((e.key === \"Enter\" || e.key === \" \") && onTermClick) {\n e.preventDefault();\n e.stopPropagation();\n handleAction();\n }\n };\n\n const termStyle: CSSProperties = {\n display: \"inline\",\n padding: 0,\n border: 0,\n background: \"transparent\",\n color: \"inherit\",\n font: \"inherit\",\n textDecoration: \"underline dotted\",\n textDecorationColor: \"color-mix(in srgb, currentColor 55%, transparent)\",\n textDecorationThickness: \"1px\",\n textUnderlineOffset: \"3px\",\n cursor: onTermClick ? (isMobile ? \"help\" : \"pointer\") : \"help\",\n };\n\n const tooltipContent = (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n <span>{term.explanation}</span>\n {onTermClick &&\n (isMobile ? (\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleAction();\n }}\n style={{\n background: \"transparent\",\n border: 0,\n padding: 0,\n color: \"inherit\",\n font: \"inherit\",\n fontSize: \"11px\",\n opacity: 0.85,\n fontWeight: 500,\n cursor: \"pointer\",\n textAlign: \"left\",\n textDecoration: \"underline\",\n }}\n type=\"button\"\n >\n {learnMoreText} →\n </button>\n ) : (\n <span style={{ fontSize: \"11px\", opacity: 0.85, fontWeight: 500 }}>{learnMoreText}</span>\n ))}\n </div>\n );\n\n if (isMobile) {\n return (\n // The wrapper stops the completed Popover click from reaching parent cards\n // without blocking Popover.Target's own toggle handler.\n // biome-ignore lint/a11y/noStaticElementInteractions: propagation boundary around an interactive Popover\n // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard activation does not bubble as a parent click\n <span onClick={(event) => event.stopPropagation()}>\n <Popover\n onChange={setMobileOpened}\n onClose={() => setMobileOpened(false)}\n opened={mobileOpened}\n position=\"top\"\n shadow=\"md\"\n transitionProps={{ duration: 0, exitDuration: 0 }}\n withArrow\n width={260}\n >\n <Popover.Target>\n <UnstyledButton\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n style={termStyle}\n type=\"button\"\n >\n {children}\n </UnstyledButton>\n </Popover.Target>\n <Popover.Dropdown style={mobileOpened ? { display: \"block\" } : undefined}>\n {tooltipContent}\n </Popover.Dropdown>\n </Popover>\n </span>\n );\n }\n\n return (\n <Tooltip\n events={{ focus: true, hover: true, touch: true } as const}\n label={tooltipContent}\n multiline\n styles={onTermClick ? { tooltip: { pointerEvents: \"auto\" } } : undefined}\n w={260}\n withArrow\n >\n <UnstyledButton\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n style={termStyle}\n type=\"button\"\n >\n {children}\n </UnstyledButton>\n </Tooltip>\n );\n}\n"],"names":["useGlossaryContext","useIsMobile","useState","useCallback","jsxs","jsx","Popover","UnstyledButton","Tooltip"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from 'react';
2
+ import { GlossaryTerm as GlossaryTermData } from '../../../constants/glossary';
3
+ export interface GlossaryTermProps {
4
+ /** The glossary term data. */
5
+ term: GlossaryTermData;
6
+ /** The text displayed in the copy (matches source text casing). */
7
+ children: ReactNode;
8
+ }
9
+ export declare function GlossaryTerm({ term, children }: GlossaryTermProps): import("react").JSX.Element;
10
+ //# sourceMappingURL=GlossaryTerm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlossaryTerm.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/Glossary/GlossaryTerm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4C,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAOpF,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAiJjE"}