@salt-ds/lab 1.0.0-alpha.14 → 1.0.0-alpha.15

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 (162) hide show
  1. package/dist-cjs/badge/Badge.css.js +1 -1
  2. package/dist-cjs/badge/Badge.js +7 -23
  3. package/dist-cjs/badge/Badge.js.map +1 -1
  4. package/dist-cjs/content-status/ContentStatus.js +0 -2
  5. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  6. package/dist-cjs/content-status/internal/StatusIndicator.js +0 -2
  7. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  8. package/dist-cjs/drawer/Drawer.css.js +1 -1
  9. package/dist-cjs/drawer/Drawer.js +39 -45
  10. package/dist-cjs/drawer/Drawer.js.map +1 -1
  11. package/dist-cjs/drawer/useDrawer.js +31 -0
  12. package/dist-cjs/drawer/useDrawer.js.map +1 -0
  13. package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
  14. package/dist-cjs/index.js +4 -7
  15. package/dist-cjs/index.js.map +1 -1
  16. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  17. package/dist-cjs/list-next/ListItemNext.js +17 -6
  18. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  19. package/dist-cjs/list-next/ListNext.js +21 -10
  20. package/dist-cjs/list-next/ListNext.js.map +1 -1
  21. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  22. package/dist-cjs/list-next/useList.js +96 -37
  23. package/dist-cjs/list-next/useList.js.map +1 -1
  24. package/dist-cjs/nav-item/ExpansionButton.js +1 -1
  25. package/dist-cjs/nav-item/ExpansionButton.js.map +1 -1
  26. package/dist-cjs/nav-item/NavItem.css.js +1 -1
  27. package/dist-cjs/nav-item/NavItem.js +11 -1
  28. package/dist-cjs/nav-item/NavItem.js.map +1 -1
  29. package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
  30. package/dist-cjs/progress/CircularProgress/CircularProgress.js +44 -51
  31. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  32. package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
  33. package/dist-cjs/progress/LinearProgress/LinearProgress.js +9 -49
  34. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  35. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js +1 -1
  36. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js +5 -13
  37. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  38. package/dist-cjs/stepped-tracker/SteppedTracker.css.js +1 -1
  39. package/dist-cjs/stepped-tracker/SteppedTracker.js +0 -5
  40. package/dist-cjs/stepped-tracker/SteppedTracker.js.map +1 -1
  41. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js +1 -7
  42. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js.map +1 -1
  43. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js +1 -1
  44. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  45. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +2 -14
  46. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  47. package/dist-cjs/switch/Switch.css.js +1 -1
  48. package/dist-cjs/switch/Switch.js +67 -72
  49. package/dist-cjs/switch/Switch.js.map +1 -1
  50. package/dist-cjs/toast-group/ToastGroup.css.js +6 -0
  51. package/dist-cjs/toast-group/ToastGroup.css.js.map +1 -0
  52. package/dist-cjs/toast-group/ToastGroup.js +32 -0
  53. package/dist-cjs/toast-group/ToastGroup.js.map +1 -0
  54. package/dist-es/badge/Badge.css.js +1 -1
  55. package/dist-es/badge/Badge.js +9 -25
  56. package/dist-es/badge/Badge.js.map +1 -1
  57. package/dist-es/content-status/ContentStatus.js +0 -2
  58. package/dist-es/content-status/ContentStatus.js.map +1 -1
  59. package/dist-es/content-status/internal/StatusIndicator.js +0 -2
  60. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  61. package/dist-es/drawer/Drawer.css.js +1 -1
  62. package/dist-es/drawer/Drawer.js +40 -46
  63. package/dist-es/drawer/Drawer.js.map +1 -1
  64. package/dist-es/drawer/useDrawer.js +27 -0
  65. package/dist-es/drawer/useDrawer.js.map +1 -0
  66. package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
  67. package/dist-es/index.js +2 -3
  68. package/dist-es/index.js.map +1 -1
  69. package/dist-es/list-next/ListItemNext.css.js +1 -1
  70. package/dist-es/list-next/ListItemNext.js +17 -6
  71. package/dist-es/list-next/ListItemNext.js.map +1 -1
  72. package/dist-es/list-next/ListNext.js +21 -10
  73. package/dist-es/list-next/ListNext.js.map +1 -1
  74. package/dist-es/list-next/ListNextContext.js.map +1 -1
  75. package/dist-es/list-next/useList.js +98 -39
  76. package/dist-es/list-next/useList.js.map +1 -1
  77. package/dist-es/nav-item/ExpansionButton.js +2 -2
  78. package/dist-es/nav-item/ExpansionButton.js.map +1 -1
  79. package/dist-es/nav-item/NavItem.css.js +1 -1
  80. package/dist-es/nav-item/NavItem.js +11 -1
  81. package/dist-es/nav-item/NavItem.js.map +1 -1
  82. package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
  83. package/dist-es/progress/CircularProgress/CircularProgress.js +45 -52
  84. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  85. package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
  86. package/dist-es/progress/LinearProgress/LinearProgress.js +9 -49
  87. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  88. package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js +1 -1
  89. package/dist-es/stepped-tracker/StepLabel/StepLabel.js +7 -15
  90. package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  91. package/dist-es/stepped-tracker/SteppedTracker.css.js +1 -1
  92. package/dist-es/stepped-tracker/SteppedTracker.js +1 -6
  93. package/dist-es/stepped-tracker/SteppedTracker.js.map +1 -1
  94. package/dist-es/stepped-tracker/SteppedTrackerContext.js +1 -7
  95. package/dist-es/stepped-tracker/SteppedTrackerContext.js.map +1 -1
  96. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js +1 -1
  97. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  98. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +3 -15
  99. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  100. package/dist-es/switch/Switch.css.js +1 -1
  101. package/dist-es/switch/Switch.js +70 -75
  102. package/dist-es/switch/Switch.js.map +1 -1
  103. package/dist-es/toast-group/ToastGroup.css.js +4 -0
  104. package/dist-es/toast-group/ToastGroup.css.js.map +1 -0
  105. package/dist-es/toast-group/ToastGroup.js +28 -0
  106. package/dist-es/toast-group/ToastGroup.js.map +1 -0
  107. package/dist-types/badge/Badge.d.ts +5 -16
  108. package/dist-types/content-status/internal/StatusIndicator.d.ts +2 -2
  109. package/dist-types/dialog/internal/DialogContext.d.ts +1 -1
  110. package/dist-types/drawer/Drawer.d.ts +3 -12
  111. package/dist-types/drawer/index.d.ts +1 -0
  112. package/dist-types/drawer/useDrawer.d.ts +27 -0
  113. package/dist-types/index.d.ts +1 -2
  114. package/dist-types/list-next/ListItemNext.d.ts +6 -1
  115. package/dist-types/list-next/ListNext.d.ts +7 -2
  116. package/dist-types/list-next/ListNextContext.d.ts +4 -2
  117. package/dist-types/list-next/useList.d.ts +15 -7
  118. package/dist-types/nav-item/NavItem.d.ts +29 -1
  119. package/dist-types/progress/CircularProgress/CircularProgress.d.ts +1 -21
  120. package/dist-types/progress/LinearProgress/LinearProgress.d.ts +1 -26
  121. package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +3 -5
  122. package/dist-types/stepped-tracker/SteppedTrackerContext.d.ts +1 -4
  123. package/dist-types/stepped-tracker/TrackerStep/index.d.ts +0 -1
  124. package/dist-types/switch/Switch.d.ts +43 -6
  125. package/dist-types/toast-group/ToastGroup.d.ts +5 -0
  126. package/dist-types/toast-group/index.d.ts +1 -0
  127. package/package.json +3 -3
  128. package/dist-cjs/control-label/ControlLabel.css.js +0 -6
  129. package/dist-cjs/control-label/ControlLabel.css.js.map +0 -1
  130. package/dist-cjs/control-label/ControlLabel.js +0 -48
  131. package/dist-cjs/control-label/ControlLabel.js.map +0 -1
  132. package/dist-cjs/multiline-input/MultilineInput.css.js +0 -6
  133. package/dist-cjs/multiline-input/MultilineInput.css.js.map +0 -1
  134. package/dist-cjs/multiline-input/MultilineInput.js +0 -162
  135. package/dist-cjs/multiline-input/MultilineInput.js.map +0 -1
  136. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +0 -21
  137. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +0 -1
  138. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js +0 -71
  139. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js.map +0 -1
  140. package/dist-cjs/switch/assets/CheckedIcon.js +0 -34
  141. package/dist-cjs/switch/assets/CheckedIcon.js.map +0 -1
  142. package/dist-es/control-label/ControlLabel.css.js +0 -4
  143. package/dist-es/control-label/ControlLabel.css.js.map +0 -1
  144. package/dist-es/control-label/ControlLabel.js +0 -43
  145. package/dist-es/control-label/ControlLabel.js.map +0 -1
  146. package/dist-es/multiline-input/MultilineInput.css.js +0 -4
  147. package/dist-es/multiline-input/MultilineInput.css.js.map +0 -1
  148. package/dist-es/multiline-input/MultilineInput.js +0 -158
  149. package/dist-es/multiline-input/MultilineInput.js.map +0 -1
  150. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +0 -16
  151. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +0 -1
  152. package/dist-es/stepped-tracker/useDetectTruncatedText.js +0 -69
  153. package/dist-es/stepped-tracker/useDetectTruncatedText.js.map +0 -1
  154. package/dist-es/switch/assets/CheckedIcon.js +0 -30
  155. package/dist-es/switch/assets/CheckedIcon.js.map +0 -1
  156. package/dist-types/control-label/ControlLabel.d.ts +0 -8
  157. package/dist-types/control-label/index.d.ts +0 -1
  158. package/dist-types/multiline-input/MultilineInput.d.ts +0 -40
  159. package/dist-types/multiline-input/index.d.ts +0 -1
  160. package/dist-types/stepped-tracker/TrackerStep/TrackerStepTooltipContext.d.ts +0 -7
  161. package/dist-types/stepped-tracker/useDetectTruncatedText.d.ts +0 -11
  162. package/dist-types/switch/assets/CheckedIcon.d.ts +0 -4
@@ -15,12 +15,9 @@ const withBaseName = core.makePrefixer("saltCircularProgress");
15
15
  const CircularProgress = React.forwardRef(function CircularProgress2({
16
16
  "aria-label": ariaLabel,
17
17
  className,
18
- disabled,
19
18
  max = 100,
20
19
  showInfo = true,
21
- renderInfo,
22
20
  value = 0,
23
- unit = "%",
24
21
  ...rest
25
22
  }, ref) {
26
23
  const targetWindow = window.useWindow();
@@ -29,71 +26,67 @@ const CircularProgress = React.forwardRef(function CircularProgress2({
29
26
  css: CircularProgress$1,
30
27
  window: targetWindow
31
28
  });
32
- const circleStyle = {};
33
- const railCircleStyle = {};
29
+ const subOverlayRightStyle = {};
30
+ const subOverlayLeftStyle = {};
31
+ const getRotationAngle = (progress2, shift = 0) => {
32
+ return -180 + (progress2 - shift) / 50 * 180;
33
+ };
34
34
  const progress = value / max * 100;
35
- const progressStrokeLength = `calc(${progress} * var(--circularProgress-progressCircle-circumference) / 100)`;
36
- const progressGapLength = `calc((100 - ${progress}) * var(--circularProgress-progressCircle-circumference) / 100)`;
37
- const railStrokeLength = `calc((100 - ${progress}) * var(--circularProgress-railCircle-circumference) / 100)`;
38
- const railGapLength = `calc((${progress}) * var(--circularProgress-railCircle-circumference) / 100)`;
39
- circleStyle.strokeDasharray = `${progressStrokeLength} ${progressGapLength}`;
40
- railCircleStyle.strokeDashoffset = `${railStrokeLength}`;
41
- railCircleStyle.strokeDasharray = `${railStrokeLength} ${railGapLength}`;
42
- React.useEffect(() => {
43
- if (process.env.NODE_ENV !== "production" && !ariaLabel) {
44
- console.error(
45
- "Salt: aria-label value not supplied to CircularProgress. This may affect the ADA compliance level of the component and owning application, and may generate errors in automated accessibility testing software"
46
- );
47
- }
48
- }, [ariaLabel]);
49
- const getValueProps = () => ({
50
- unit,
51
- value,
52
- getValueProps: (valueProps = {}) => ({
53
- className: withBaseName("progressValue"),
54
- ...valueProps
55
- })
56
- });
35
+ if (progress <= 50) {
36
+ const rotationAngle = getRotationAngle(progress);
37
+ subOverlayRightStyle.transform = `rotate(${rotationAngle}deg)`;
38
+ subOverlayLeftStyle.transform = "rotate(-180deg)";
39
+ } else {
40
+ const rotationAngle = getRotationAngle(progress, 50);
41
+ subOverlayRightStyle.transform = "rotate(0deg)";
42
+ subOverlayLeftStyle.transform = `rotate(${rotationAngle}deg)`;
43
+ }
57
44
  let progressInfo = null;
58
45
  if (showInfo) {
59
- progressInfo = renderInfo ? renderInfo(getValueProps()) : /* @__PURE__ */ jsxRuntime.jsx(Info.Info, {
46
+ progressInfo = /* @__PURE__ */ jsxRuntime.jsx(Info.Info, {
60
47
  className: withBaseName("progressValue"),
61
- unit,
62
- value: Math.round(progress),
63
- ...rest
48
+ unit: "%",
49
+ value: Math.round(progress)
64
50
  });
65
51
  }
66
52
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
67
- className: clsx.clsx(
68
- withBaseName(),
69
- { [withBaseName("disabled")]: disabled },
70
- className
71
- ),
53
+ className: clsx.clsx(withBaseName(), className),
72
54
  "data-testid": "circular-progress",
73
55
  ref,
74
56
  role: "progressbar",
75
57
  "aria-label": ariaLabel,
76
58
  "aria-valuemax": max,
77
59
  "aria-valuemin": 0,
78
- "aria-valuenow": value,
60
+ "aria-valuenow": Math.round(value),
79
61
  ...rest,
80
62
  children: [
81
- /* @__PURE__ */ jsxRuntime.jsxs("svg", {
82
- className: withBaseName("svg"),
63
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
64
+ className: withBaseName("track")
65
+ }),
66
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
67
+ className: withBaseName("bars"),
83
68
  children: [
84
- /* @__PURE__ */ jsxRuntime.jsx("circle", {
85
- cx: "50%",
86
- cy: "50%",
87
- fill: "none",
88
- style: railCircleStyle,
89
- className: withBaseName("railCircle")
69
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
70
+ className: withBaseName("barOverlayRight"),
71
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
72
+ className: withBaseName("barSubOverlayRight"),
73
+ "data-testid": "barSubOverlayRight",
74
+ style: subOverlayRightStyle,
75
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
76
+ className: withBaseName("bar")
77
+ })
78
+ })
90
79
  }),
91
- /* @__PURE__ */ jsxRuntime.jsx("circle", {
92
- cx: "50%",
93
- cy: "50%",
94
- fill: "none",
95
- style: circleStyle,
96
- className: withBaseName("circle")
80
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
81
+ className: withBaseName("barOverlayLeft"),
82
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
83
+ className: withBaseName("barSubOverlayLeft"),
84
+ "data-testid": "barSubOverlayLeft",
85
+ style: subOverlayLeftStyle,
86
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
87
+ className: withBaseName("bar")
88
+ })
89
+ })
97
90
  })
98
91
  ]
99
92
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"CircularProgress.js","sources":["../src/progress/CircularProgress/CircularProgress.tsx"],"sourcesContent":["import {\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useEffect,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { Info as DefaultInfo } from \"../Info\";\nimport { InfoRendererProps } from \"../LinearProgress/LinearProgress\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport circularProgressCSS from \"./CircularProgress.css\";\n\nconst withBaseName = makePrefixer(\"saltCircularProgress\");\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * A label for accessibility\n */\n \"aria-label\"?: string;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * Disabled flag, true when the component is disabled.\n */\n disabled?: boolean;\n /**\n * The value of the max progress indicator.\n * Default value is 100.\n */\n max?: number;\n /**\n * Render props callback to render info panel.\n * @param function({ value, unit, getValueProps })\n */\n renderInfo?: (\n props: Pick<InfoRendererProps<any, any>, \"value\" | \"unit\" | \"getValueProps\">\n ) => ReactElement<InfoRendererProps<any, any>>;\n /**\n * If `true`, the info panel will be displayed.\n */\n showInfo?: boolean;\n /**\n * Default unit is`%`\n */\n unit?: string;\n /**\n * The value of the progress indicator.\n * Value between 0 and max.\n */\n value?: number;\n}\n\n/**\n * Circular progress bar with an optional Info element, showing the current value\n * The default Info element can be rendered by setting `unit` and `value` props.\n * A custom Info element can be rendered using the `renderInfo` callback.\n * The render props callback is of the form\n * @param {string} unit the unit of the progress info\n * @param {number} value the value of the progress info\n * @param {function} getValueProps function callback that returns the value props\n */\nexport const CircularProgress = forwardRef<\n HTMLDivElement,\n CircularProgressProps\n>(function CircularProgress(\n {\n \"aria-label\": ariaLabel,\n className,\n disabled,\n max = 100,\n showInfo = true,\n renderInfo,\n value = 0,\n unit = \"%\",\n ...rest\n },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-circular-progress\",\n css: circularProgressCSS,\n window: targetWindow,\n });\n\n const circleStyle: CSSProperties = {};\n const railCircleStyle: CSSProperties = {};\n const rootStyle: CSSProperties = {};\n const rootProps: HTMLAttributes<any> = {};\n\n const progress = (value / max) * 100;\n\n rootProps[\"aria-valuenow\"] = Math.round(value);\n\n const progressStrokeLength = `calc(${progress} * var(--circularProgress-progressCircle-circumference) / 100)`;\n const progressGapLength = `calc((100 - ${progress}) * var(--circularProgress-progressCircle-circumference) / 100)`;\n const railStrokeLength = `calc((100 - ${progress}) * var(--circularProgress-railCircle-circumference) / 100)`;\n const railGapLength = `calc((${progress}) * var(--circularProgress-railCircle-circumference) / 100)`;\n\n circleStyle.strokeDasharray = `${progressStrokeLength} ${progressGapLength}`;\n railCircleStyle.strokeDashoffset = `${railStrokeLength}`;\n railCircleStyle.strokeDasharray = `${railStrokeLength} ${railGapLength}`;\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\" && !ariaLabel) {\n // eslint-disable-next-line no-console\n console.error(\n \"Salt: aria-label value not supplied to CircularProgress. This may affect the ADA compliance level of the component and owning application, and may generate errors in automated accessibility testing software\"\n );\n }\n }, [ariaLabel]);\n\n const getValueProps = () => ({\n unit,\n value,\n getValueProps: (valueProps = {}) => ({\n className: withBaseName(\"progressValue\"),\n ...valueProps,\n }),\n });\n\n let progressInfo: ReactNode = null;\n if (showInfo) {\n progressInfo = renderInfo ? (\n renderInfo(getValueProps())\n ) : (\n <DefaultInfo\n className={withBaseName(\"progressValue\")}\n unit={unit}\n value={Math.round(progress)}\n {...rest}\n />\n );\n }\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"disabled\")]: disabled },\n className\n )}\n data-testid=\"circular-progress\"\n ref={ref}\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={value}\n {...rest}\n >\n <svg className={withBaseName(\"svg\")}>\n <circle\n cx=\"50%\"\n cy=\"50%\"\n fill=\"none\"\n style={railCircleStyle}\n className={withBaseName(\"railCircle\")}\n />\n\n <circle\n cx=\"50%\"\n cy=\"50%\"\n fill=\"none\"\n style={circleStyle}\n className={withBaseName(\"circle\")}\n />\n </svg>\n {progressInfo}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","CircularProgress","useWindow","useComponentCssInjection","circularProgressCSS","useEffect","jsx","DefaultInfo","jsxs","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"CircularProgress.js","sources":["../src/progress/CircularProgress/CircularProgress.tsx"],"sourcesContent":["import {\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useEffect,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { Info } from \"../Info\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport circularProgressCSS from \"./CircularProgress.css\";\n\nconst withBaseName = makePrefixer(\"saltCircularProgress\");\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * A label for accessibility\n */\n \"aria-label\"?: string;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * The value of the max progress indicator.\n * Default value is 100.\n */\n max?: number;\n /**\n * If `true`, the info panel will be displayed.\n */\n showInfo?: boolean;\n /**\n * The value of the progress indicator.\n * Value between 0 and max.\n */\n value?: number;\n}\n\n/**\n * Circular progress bar with an optional Info element, showing the current value\n */\nexport const CircularProgress = forwardRef<\n HTMLDivElement,\n CircularProgressProps\n>(function CircularProgress(\n {\n \"aria-label\": ariaLabel,\n className,\n max = 100,\n showInfo = true,\n value = 0,\n ...rest\n },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-circular-progress\",\n css: circularProgressCSS,\n window: targetWindow,\n });\n\n const subOverlayRightStyle: CSSProperties = {};\n const subOverlayLeftStyle: CSSProperties = {};\n\n const getRotationAngle = (progress: number, shift = 0) => {\n return -180 + ((progress - shift) / 50) * 180;\n };\n\n const progress = (value / max) * 100;\n\n if (progress <= 50) {\n const rotationAngle = getRotationAngle(progress);\n subOverlayRightStyle.transform = `rotate(${rotationAngle}deg)`;\n subOverlayLeftStyle.transform = \"rotate(-180deg)\";\n } else {\n const rotationAngle = getRotationAngle(progress, 50);\n subOverlayRightStyle.transform = \"rotate(0deg)\";\n subOverlayLeftStyle.transform = `rotate(${rotationAngle}deg)`;\n }\n\n let progressInfo: ReactNode = null;\n if (showInfo) {\n progressInfo = (\n <Info\n className={withBaseName(\"progressValue\")}\n unit=\"%\"\n value={Math.round(progress)}\n />\n );\n }\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n data-testid=\"circular-progress\"\n ref={ref}\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={Math.round(value)}\n {...rest}\n >\n <div className={withBaseName(\"track\")} />\n <div className={withBaseName(\"bars\")}>\n <div className={withBaseName(\"barOverlayRight\")}>\n <div\n className={withBaseName(\"barSubOverlayRight\")}\n data-testid=\"barSubOverlayRight\"\n style={subOverlayRightStyle}\n >\n <div className={withBaseName(\"bar\")} />\n </div>\n </div>\n <div className={withBaseName(\"barOverlayLeft\")}>\n <div\n className={withBaseName(\"barSubOverlayLeft\")}\n data-testid=\"barSubOverlayLeft\"\n style={subOverlayLeftStyle}\n >\n <div className={withBaseName(\"bar\")} />\n </div>\n </div>\n </div>\n {progressInfo}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","CircularProgress","useWindow","useComponentCssInjection","circularProgressCSS","progress","jsx","Info","jsxs","clsx"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltLinearProgress {\n align-items: center;\n color: var(--salt-text-primary-foreground);\n display: flex;\n min-width: 200px;\n font-size: var(--linearProgress-fontSize);\n}\n\n.saltLinearProgress-disabled .saltLinearProgress-bar {\n background: var(--salt-accent-background-disabled);\n}\n\n.saltLinearProgress-disabled .saltLinearProgress-track {\n background: var(--salt-track-borderColor-disabled);\n}\n\n.saltLinearProgress-disabled .saltLinearProgress-progressValue {\n color: var(--salt-text-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n.saltLinearProgress-barContainer {\n background: none;\n position: relative;\n width: calc(100% - 10px);\n overflow: hidden;\n height: var(--salt-size-adornment);\n}\n\n.saltLinearProgress-bar {\n width: 100%;\n position: absolute;\n left: 0;\n bottom: 0;\n top: 0;\n transition: transform 0.2s linear;\n transform-origin: left;\n background: var(--salt-accent-background);\n z-index: 2;\n}\n\n.saltLinearProgress-track {\n background: var(--salt-track-borderColor);\n width: 100%;\n height: var(--salt-track-borderWidth);\n position: absolute;\n top: calc((var(--salt-size-adornment) - var(--salt-track-borderWidth)) / 2);\n transition: transform 0.2s linear;\n transform-origin: left;\n}\n\n.saltLinearProgress-progressValue {\n color: inherit;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n margin: 0;\n white-space: nowrap;\n padding-left: var(--salt-spacing-100);\n}\n";
3
+ var css_248z = ".saltLinearProgress {\n align-items: center;\n color: var(--salt-text-primary-foreground);\n display: flex;\n min-width: 200px;\n font-size: var(--linearProgress-fontSize);\n}\n\n.saltLinearProgress-barContainer {\n background: none;\n position: relative;\n width: 100%;\n overflow: hidden;\n height: var(--salt-size-adornment);\n}\n\n.saltLinearProgress-bar {\n width: 100%;\n position: absolute;\n left: 0;\n bottom: 0;\n top: 0;\n transition: transform 0.2s linear;\n transform-origin: left;\n background: var(--salt-accent-background);\n z-index: 2;\n}\n\n.saltLinearProgress-track {\n background: var(--salt-track-borderColor);\n width: 100%;\n height: var(--salt-track-borderWidth);\n position: absolute;\n top: calc((var(--salt-size-adornment) - var(--salt-track-borderWidth)) / 2);\n transition: transform 0.2s linear;\n transform-origin: left;\n}\n\n.saltLinearProgress-progressValue {\n color: inherit;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n margin: 0;\n white-space: nowrap;\n padding-left: var(--salt-spacing-100);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=LinearProgress.css.js.map
@@ -12,29 +12,8 @@ var styles = require('@salt-ds/styles');
12
12
  var LinearProgress$1 = require('./LinearProgress.css.js');
13
13
 
14
14
  const withBaseName = core.makePrefixer("saltLinearProgress");
15
- const getUnitAndValueProps = ({ unit, value }, { progressUnit, progressValue }) => ({
16
- unit,
17
- value,
18
- getUnitProps: (props = {}) => ({
19
- className: progressUnit,
20
- ...props
21
- }),
22
- getValueProps: (props = {}) => ({
23
- className: progressValue,
24
- ...props
25
- })
26
- });
27
15
  const LinearProgress = React.forwardRef(
28
- function LinearProgress2({
29
- className,
30
- disabled,
31
- max = 100,
32
- renderInfo,
33
- showInfo = true,
34
- unit = "%",
35
- value = 0,
36
- ...rest
37
- }, ref) {
16
+ function LinearProgress2({ className, max = 100, showInfo = true, value = 0, ...rest }, ref) {
38
17
  const targetWindow = window.useWindow();
39
18
  styles.useComponentCssInjection({
40
19
  testId: "salt-linear-progress",
@@ -42,51 +21,32 @@ const LinearProgress = React.forwardRef(
42
21
  window: targetWindow
43
22
  });
44
23
  let progressInfo = null;
45
- const progressUnit = withBaseName("progressUnit");
46
- const progressValue = withBaseName("progressValue");
47
24
  const progress = value / max * 100;
48
25
  if (showInfo) {
49
- progressInfo = renderInfo ? renderInfo(
50
- getUnitAndValueProps(
51
- {
52
- unit,
53
- value
54
- },
55
- {
56
- progressUnit,
57
- progressValue
58
- }
59
- )
60
- ) : /* @__PURE__ */ jsxRuntime.jsx(Info.Info, {
61
- unit,
26
+ progressInfo = /* @__PURE__ */ jsxRuntime.jsx(Info.Info, {
27
+ unit: "%",
62
28
  value: Math.round(progress),
63
- className: progressValue
29
+ className: withBaseName("progressValue")
64
30
  });
65
31
  }
66
- const rootProps = {};
67
32
  const barStyle = {};
68
33
  const trackStyle = {};
69
- rootProps["aria-valuenow"] = Math.round(value);
70
- rootProps["aria-valuemin"] = 0;
71
- rootProps["aria-valuemax"] = 100;
72
34
  barStyle.transform = `translateX(${progress - 100}%)`;
73
35
  trackStyle.transform = `translateX(${progress}%)`;
74
36
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
75
- className: clsx.clsx(
76
- withBaseName(),
77
- { [withBaseName("disabled")]: disabled },
78
- className
79
- ),
37
+ className: clsx.clsx(withBaseName(), className),
80
38
  ref,
81
39
  "data-testid": "linear-progress",
82
40
  role: "progressbar",
83
- ...rootProps,
41
+ "aria-valuemax": max,
42
+ "aria-valuemin": 0,
43
+ "aria-valuenow": Math.round(value),
84
44
  ...rest,
85
45
  children: [
86
46
  /* @__PURE__ */ jsxRuntime.jsxs("div", {
87
47
  className: withBaseName("barContainer"),
88
48
  children: [
89
- progress !== 0 && /* @__PURE__ */ jsxRuntime.jsx("div", {
49
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
90
50
  className: withBaseName("bar"),
91
51
  style: barStyle
92
52
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"LinearProgress.js","sources":["../src/progress/LinearProgress/LinearProgress.tsx"],"sourcesContent":["import {\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { Info as DefaultInfo } from \"../Info\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport linearProgressCss from \"./LinearProgress.css\";\n\nconst withBaseName = makePrefixer(\"saltLinearProgress\");\n\nexport interface InfoRendererProps<T, U> {\n unit: string;\n value: number;\n getUnitProps?: (props: T) => { className: string } & T;\n getValueProps: (props: U) => { className: string } & U;\n}\n\ntype UnitAndValuePropsGetter<T, U> = (\n a: {\n unit: string;\n value: number;\n },\n b: {\n progressUnit: string;\n progressValue: string;\n }\n) => InfoRendererProps<T, U>;\n\nconst getUnitAndValueProps: UnitAndValuePropsGetter<any, any> = (\n { unit, value },\n { progressUnit, progressValue }\n) => ({\n unit,\n value,\n getUnitProps: (props = {}) => ({\n className: progressUnit,\n ...props,\n }),\n getValueProps: (props = {}) => ({\n className: progressValue,\n ...props,\n }),\n});\n\nexport interface LinearProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The className(s) of the component.\n */\n className?: string;\n /**\n * Disabled flag, true when the component is disabled.\n */\n disabled?: boolean;\n /**\n * The value of the max progress indicator.\n * Default value is 100.\n */\n max?: number;\n /**\n * render props callback to render info panel.\n */\n renderInfo?: (\n props: Pick<\n InfoRendererProps<any, any>,\n \"value\" | \"unit\" | \"getValueProps\" | \"getUnitProps\"\n >\n ) => ReactElement<InfoRendererProps<any, any>>;\n /**\n * If `true`, the info panel will be displayed.\n */\n showInfo?: boolean;\n /**\n * Default unit is`%`.\n */\n unit?: string;\n /**\n * The value of the progress indicator.\n * Value between 0 and max.\n */\n value?: number;\n}\n\n/**\n * Linear progress bar with an optional Info element, showing the current value\n * The default Info element can be rendered by setting `unit` and `value` props.\n * A custom Info element can be rendered using the `renderInfo` callback.\n * The render props callback is of the form\n * @param {string} unit the unit of the progress info\n * @param {number} value the value of the progress info\n * @param {function} getUnitProps function callback that returns the unit props\n * @param {function} getValueProps function callback that returns the value props\n */\nexport const LinearProgress = forwardRef<HTMLDivElement, LinearProgressProps>(\n function LinearProgress(\n {\n className,\n disabled,\n max = 100,\n renderInfo,\n showInfo = true,\n unit = \"%\",\n value = 0,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-linear-progress\",\n css: linearProgressCss,\n window: targetWindow,\n });\n\n let progressInfo: ReactNode = null;\n\n const progressUnit = withBaseName(\"progressUnit\");\n const progressValue = withBaseName(\"progressValue\");\n\n const progress = (value / max) * 100;\n\n if (showInfo) {\n progressInfo = renderInfo ? (\n renderInfo(\n getUnitAndValueProps(\n {\n unit,\n value,\n },\n {\n progressUnit,\n progressValue,\n }\n )\n )\n ) : (\n <DefaultInfo\n unit={unit}\n value={Math.round(progress)}\n className={progressValue}\n />\n );\n }\n\n const rootProps: HTMLAttributes<HTMLDivElement> = {};\n const barStyle: CSSProperties = {};\n const trackStyle: CSSProperties = {};\n\n rootProps[\"aria-valuenow\"] = Math.round(value);\n rootProps[\"aria-valuemin\"] = 0;\n rootProps[\"aria-valuemax\"] = 100;\n barStyle.transform = `translateX(${progress - 100}%)`;\n trackStyle.transform = `translateX(${progress}%)`;\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"disabled\")]: disabled },\n className\n )}\n ref={ref}\n data-testid=\"linear-progress\"\n role=\"progressbar\"\n {...rootProps}\n {...rest}\n >\n <div className={withBaseName(\"barContainer\")}>\n {progress !== 0 && (\n <div className={withBaseName(\"bar\")} style={barStyle} />\n )}\n <div className={withBaseName(\"track\")} style={trackStyle} />\n </div>\n {progressInfo}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","LinearProgress","useWindow","useComponentCssInjection","linearProgressCss","jsx","DefaultInfo","jsxs","clsx"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAoBtD,MAAM,oBAAA,GAA0D,CAC9D,EAAE,IAAA,EAAM,OACR,EAAA,EAAE,YAAc,EAAA,aAAA,EACZ,MAAA;AAAA,EACJ,IAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAc,EAAA,CAAC,KAAQ,GAAA,EAAQ,MAAA;AAAA,IAC7B,SAAW,EAAA,YAAA;AAAA,IACX,GAAG,KAAA;AAAA,GACL,CAAA;AAAA,EACA,aAAe,EAAA,CAAC,KAAQ,GAAA,EAAQ,MAAA;AAAA,IAC9B,SAAW,EAAA,aAAA;AAAA,IACX,GAAG,KAAA;AAAA,GACL,CAAA;AACF,CAAA,CAAA,CAAA;AAkDO,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAM,GAAA,GAAA;AAAA,IACN,UAAA;AAAA,IACA,QAAW,GAAA,IAAA;AAAA,IACX,IAAO,GAAA,GAAA;AAAA,IACP,KAAQ,GAAA,CAAA;AAAA,IACL,GAAA,IAAA;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,IAAI,YAA0B,GAAA,IAAA,CAAA;AAE9B,IAAM,MAAA,YAAA,GAAe,aAAa,cAAc,CAAA,CAAA;AAChD,IAAM,MAAA,aAAA,GAAgB,aAAa,eAAe,CAAA,CAAA;AAElD,IAAM,MAAA,QAAA,GAAY,QAAQ,GAAO,GAAA,GAAA,CAAA;AAEjC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,YAAA,GAAe,UACb,GAAA,UAAA;AAAA,QACE,oBAAA;AAAA,UACE;AAAA,YACE,IAAA;AAAA,YACA,KAAA;AAAA,WACF;AAAA,UACA;AAAA,YACE,YAAA;AAAA,YACA,aAAA;AAAA,WACF;AAAA,SACF;AAAA,0BAGDC,cAAA,CAAAC,SAAA,EAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC1B,SAAW,EAAA,aAAA;AAAA,OACb,CAAA,CAAA;AAAA,KAEJ;AAEA,IAAA,MAAM,YAA4C,EAAC,CAAA;AACnD,IAAA,MAAM,WAA0B,EAAC,CAAA;AACjC,IAAA,MAAM,aAA4B,EAAC,CAAA;AAEnC,IAAU,SAAA,CAAA,eAAA,CAAA,GAAmB,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAC7C,IAAA,SAAA,CAAU,eAAmB,CAAA,GAAA,CAAA,CAAA;AAC7B,IAAA,SAAA,CAAU,eAAmB,CAAA,GAAA,GAAA,CAAA;AAC7B,IAAS,QAAA,CAAA,SAAA,GAAY,cAAc,QAAW,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA;AAC9C,IAAA,UAAA,CAAW,YAAY,CAAc,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA;AAErC,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb,EAAE,CAAC,YAAa,CAAA,UAAU,IAAI,QAAS,EAAA;AAAA,QACvC,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACA,aAAY,EAAA,iBAAA;AAAA,MACZ,IAAK,EAAA,aAAA;AAAA,MACJ,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAACD,eAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,UACxC,QAAA,EAAA;AAAA,YAAA,QAAA,KAAa,qBACXF,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,KAAK,CAAA;AAAA,cAAG,KAAO,EAAA,QAAA;AAAA,aAAU,CAAA;AAAA,4BAEvDA,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAAG,KAAO,EAAA,UAAA;AAAA,aAAY,CAAA;AAAA,WAAA;AAAA,SAC5D,CAAA;AAAA,QACC,YAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"LinearProgress.js","sources":["../src/progress/LinearProgress/LinearProgress.tsx"],"sourcesContent":["import { CSSProperties, forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { Info } from \"../Info\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport linearProgressCss from \"./LinearProgress.css\";\n\nconst withBaseName = makePrefixer(\"saltLinearProgress\");\n\nexport interface LinearProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The className(s) of the component.\n */\n className?: string;\n /**\n * The value of the max progress indicator.\n * Default value is 100.\n */\n max?: number;\n /**\n * If `true`, the info panel will be displayed.\n */\n showInfo?: boolean;\n /**\n * Default unit is`%`.\n */\n unit?: string;\n /**\n * The value of the progress indicator.\n * Value between 0 and max.\n */\n value?: number;\n}\n\n/**\n * Linear progress bar with an optional Info element, showing the current value\n */\nexport const LinearProgress = forwardRef<HTMLDivElement, LinearProgressProps>(\n function LinearProgress(\n { className, max = 100, showInfo = true, value = 0, ...rest },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-linear-progress\",\n css: linearProgressCss,\n window: targetWindow,\n });\n\n let progressInfo: ReactNode = null;\n\n const progress = (value / max) * 100;\n\n if (showInfo) {\n progressInfo = (\n <Info\n unit=\"%\"\n value={Math.round(progress)}\n className={withBaseName(\"progressValue\")}\n />\n );\n }\n\n const barStyle: CSSProperties = {};\n const trackStyle: CSSProperties = {};\n\n barStyle.transform = `translateX(${progress - 100}%)`;\n trackStyle.transform = `translateX(${progress}%)`;\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n ref={ref}\n data-testid=\"linear-progress\"\n role=\"progressbar\"\n aria-valuemax={max}\n aria-valuemin={0}\n aria-valuenow={Math.round(value)}\n {...rest}\n >\n <div className={withBaseName(\"barContainer\")}>\n <div className={withBaseName(\"bar\")} style={barStyle} />\n <div className={withBaseName(\"track\")} style={trackStyle} />\n </div>\n {progressInfo}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","LinearProgress","useWindow","useComponentCssInjection","linearProgressCss","jsx","Info","jsxs","clsx"],"mappings":";;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AA8B/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAAA,CACP,EAAE,SAAA,EAAW,GAAM,GAAA,GAAA,EAAK,QAAW,GAAA,IAAA,EAAM,KAAQ,GAAA,CAAA,EAAA,GAAM,IAAK,EAAA,EAC5D,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,IAAI,YAA0B,GAAA,IAAA,CAAA;AAE9B,IAAM,MAAA,QAAA,GAAY,QAAQ,GAAO,GAAA,GAAA,CAAA;AAEjC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,YAAA,mBACGC,cAAA,CAAAC,SAAA,EAAA;AAAA,QACC,IAAK,EAAA,GAAA;AAAA,QACL,KAAA,EAAO,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC1B,SAAA,EAAW,aAAa,eAAe,CAAA;AAAA,OACzC,CAAA,CAAA;AAAA,KAEJ;AAEA,IAAA,MAAM,WAA0B,EAAC,CAAA;AACjC,IAAA,MAAM,aAA4B,EAAC,CAAA;AAEnC,IAAS,QAAA,CAAA,SAAA,GAAY,cAAc,QAAW,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA;AAC9C,IAAA,UAAA,CAAW,YAAY,CAAc,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA;AAErC,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,MACA,aAAY,EAAA,iBAAA;AAAA,MACZ,IAAK,EAAA,aAAA;AAAA,MACL,eAAe,EAAA,GAAA;AAAA,MACf,eAAe,EAAA,CAAA;AAAA,MACf,eAAA,EAAe,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,MAC9B,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAACD,eAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,UACzC,QAAA,EAAA;AAAA,4BAACF,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,KAAK,CAAA;AAAA,cAAG,KAAO,EAAA,QAAA;AAAA,aAAU,CAAA;AAAA,4BACrDA,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAAG,KAAO,EAAA,UAAA;AAAA,aAAY,CAAA;AAAA,WAAA;AAAA,SAC5D,CAAA;AAAA,QACC,YAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltStepLabel {\n width: 100%;\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n";
3
+ var css_248z = ".saltStepLabel {\n width: 100%;\n text-align: center;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=StepLabel.css.js.map
@@ -9,31 +9,23 @@ var core = require('@salt-ds/core');
9
9
  var styles = require('@salt-ds/styles');
10
10
  var window = require('@salt-ds/window');
11
11
  var StepLabel$1 = require('./StepLabel.css.js');
12
- var SteppedTrackerContext = require('../SteppedTrackerContext.js');
13
- require('../TrackerStep/TrackerStep.js');
14
- var TrackerStepTooltipContext = require('../TrackerStep/TrackerStepTooltipContext.js');
15
12
 
16
13
  const withBaseName = core.makePrefixer("saltStepLabel");
17
14
  const StepLabel = React.forwardRef(
18
15
  function StepLabel2({ children, className, ...rest }, ref) {
19
- const id = core.useIdMemo();
20
16
  const targetWindow = window.useWindow();
21
17
  styles.useComponentCssInjection({
22
18
  testId: "salt-step-label",
23
19
  css: StepLabel$1,
24
20
  window: targetWindow
25
21
  });
26
- const { getOverflowRef } = SteppedTrackerContext.useSteppedTrackerContext();
27
- const overflowRef = React.useMemo(() => getOverflowRef(id), [id, getOverflowRef]);
28
- const isInTooltip = TrackerStepTooltipContext.useTrackerStepTooltipContext();
29
- const combinedRef = core.useForkRef(overflowRef, ref);
30
- return isInTooltip ? /* @__PURE__ */ jsxRuntime.jsx("span", {
31
- children
32
- }) : /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
33
23
  className: clsx.clsx(withBaseName(), className),
34
- ref: combinedRef,
24
+ ref,
35
25
  ...rest,
36
- children
26
+ children: /* @__PURE__ */ jsxRuntime.jsx("strong", {
27
+ children
28
+ })
37
29
  });
38
30
  }
39
31
  );
@@ -1 +1 @@
1
- {"version":3,"file":"StepLabel.js","sources":["../src/stepped-tracker/StepLabel/StepLabel.tsx"],"sourcesContent":["import {\n forwardRef,\n ReactNode,\n useMemo,\n ComponentPropsWithoutRef,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { useForkRef, makePrefixer, useIdMemo, Label } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport stepLabelCss from \"./StepLabel.css\";\n\nimport { useSteppedTrackerContext } from \"../SteppedTrackerContext\";\nimport { useTrackerStepTooltipContext } from \"../TrackerStep\";\n\nconst withBaseName = makePrefixer(\"saltStepLabel\");\n\nexport interface StepLabelProps extends ComponentPropsWithoutRef<\"label\"> {\n children: ReactNode;\n}\n\nexport const StepLabel = forwardRef<HTMLLabelElement, StepLabelProps>(\n function StepLabel({ children, className, ...rest }, ref?) {\n const id = useIdMemo();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-step-label\",\n css: stepLabelCss,\n window: targetWindow,\n });\n\n const { getOverflowRef } = useSteppedTrackerContext();\n const overflowRef = useMemo(() => getOverflowRef(id), [id, getOverflowRef]);\n\n const isInTooltip = useTrackerStepTooltipContext();\n\n const combinedRef = useForkRef<HTMLLabelElement>(overflowRef, ref);\n\n return isInTooltip ? (\n <span>{children}</span>\n ) : (\n <Label\n className={clsx(withBaseName(), className)}\n ref={combinedRef}\n {...rest}\n >\n {children}\n </Label>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","StepLabel","useIdMemo","useWindow","useComponentCssInjection","stepLabelCss","useSteppedTrackerContext","useMemo","useTrackerStepTooltipContext","useForkRef","jsx","Label","clsx"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAeA,kBAAa,eAAe,CAAA,CAAA;AAM1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,EAAE,UAAU,SAAc,EAAA,GAAA,IAAA,IAAQ,GAAM,EAAA;AACzD,IAAA,MAAM,KAAKC,cAAU,EAAA,CAAA;AAErB,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,iBAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,EAAE,cAAe,EAAA,GAAIC,8CAAyB,EAAA,CAAA;AACpD,IAAM,MAAA,WAAA,GAAcC,cAAQ,MAAM,cAAA,CAAe,EAAE,CAAG,EAAA,CAAC,EAAI,EAAA,cAAc,CAAC,CAAA,CAAA;AAE1E,IAAA,MAAM,cAAcC,sDAA6B,EAAA,CAAA;AAEjD,IAAM,MAAA,WAAA,GAAcC,eAA6B,CAAA,WAAA,EAAa,GAAG,CAAA,CAAA;AAEjE,IAAA,OAAO,8BACJC,cAAA,CAAA,MAAA,EAAA;AAAA,MAAM,QAAA;AAAA,KAAS,oBAEfA,cAAA,CAAAC,UAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAK,EAAA,WAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"StepLabel.js","sources":["../src/stepped-tracker/StepLabel/StepLabel.tsx"],"sourcesContent":["import { forwardRef, ComponentPropsWithoutRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer, Label } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport stepLabelCss from \"./StepLabel.css\";\n\nconst withBaseName = makePrefixer(\"saltStepLabel\");\n\nexport type StepLabelProps = ComponentPropsWithoutRef<\"label\">;\n\nexport const StepLabel = forwardRef<HTMLLabelElement, StepLabelProps>(\n function StepLabel({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-step-label\",\n css: stepLabelCss,\n window: targetWindow,\n });\n\n return (\n <Label className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n <strong>{children}</strong>\n </Label>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","StepLabel","useWindow","useComponentCssInjection","stepLabelCss","jsx","Label","clsx"],"mappings":";;;;;;;;;;;;AAQA,MAAM,YAAA,GAAeA,kBAAa,eAAe,CAAA,CAAA;AAI1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,EAAE,UAAU,SAAc,EAAA,GAAA,IAAA,IAAQ,GAAK,EAAA;AACxD,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,iBAAA;AAAA,MACR,GAAK,EAAAC,WAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBACGC,cAAA,CAAAC,UAAA,EAAA;AAAA,MAAM,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MAAG,GAAA;AAAA,MAAW,GAAG,IAAA;AAAA,MAC/D,QAAC,kBAAAF,cAAA,CAAA,QAAA,EAAA;AAAA,QAAQ,QAAA;AAAA,OAAS,CAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltSteppedTracker {\n margin: 0;\n padding: 0;\n text-indent: 0;\n list-style-type: none;\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-50);\n width: 100%;\n position: relative;\n}\n";
3
+ var css_248z = ".saltSteppedTracker {\n margin: 0;\n padding: 0;\n text-indent: 0;\n list-style-type: none;\n display: flex;\n flex-direction: row;\n width: 100%;\n position: relative;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=SteppedTracker.css.js.map
@@ -8,7 +8,6 @@ var clsx = require('clsx');
8
8
  var styles = require('@salt-ds/styles');
9
9
  var window = require('@salt-ds/window');
10
10
  var core = require('@salt-ds/core');
11
- var useDetectTruncatedText = require('./useDetectTruncatedText.js');
12
11
  var SteppedTrackerContext = require('./SteppedTrackerContext.js');
13
12
  var SteppedTracker$1 = require('./SteppedTracker.css.js');
14
13
 
@@ -39,12 +38,8 @@ const SteppedTracker = React.forwardRef(
39
38
  window: targetWindow
40
39
  });
41
40
  useCheckInvalidChildren(children);
42
- const [hasTooltips, setHasTooltips] = React.useState(false);
43
- const getOverflowRef = useDetectTruncatedText(setHasTooltips);
44
41
  const totalSteps = React.Children.count(children);
45
42
  return /* @__PURE__ */ jsxRuntime.jsx(SteppedTrackerContext.SteppedTrackerProvider, {
46
- hasTooltips,
47
- getOverflowRef,
48
43
  totalSteps,
49
44
  activeStep,
50
45
  children: /* @__PURE__ */ jsxRuntime.jsx("ul", {
@@ -1 +1 @@
1
- {"version":3,"file":"SteppedTracker.js","sources":["../src/stepped-tracker/SteppedTracker.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n ReactNode,\n Children,\n useState,\n isValidElement,\n useEffect,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport useDetectTruncatedText from \"./useDetectTruncatedText\";\nimport {\n SteppedTrackerProvider,\n TrackerStepProvider,\n} from \"./SteppedTrackerContext\";\n\nimport steppedTrackerCss from \"./SteppedTracker.css\";\n\nconst withBaseName = makePrefixer(\"saltSteppedTracker\");\n\nexport interface SteppedTrackerProps extends ComponentPropsWithoutRef<\"ul\"> {\n /**\n * The index of the current activeStep\n */\n activeStep: number;\n /**\n * Should be one or more TrackerStep components\n */\n children: ReactNode;\n}\n\nconst useCheckInvalidChildren = (children: ReactNode) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n let hasInvalidChild = false;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n hasInvalidChild = true;\n }\n });\n\n if (hasInvalidChild) {\n console.error(\n \"Invalid child: children of SteppedTracker must be a TrackerStep component\"\n );\n }\n }\n }, [children]);\n};\n\nexport const SteppedTracker = forwardRef<HTMLUListElement, SteppedTrackerProps>(\n function SteppedTracker(\n { children, className, activeStep, ...restProps },\n ref?\n ): ReactElement<SteppedTrackerProps> {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-stepped-tracker\",\n css: steppedTrackerCss,\n window: targetWindow,\n });\n\n useCheckInvalidChildren(children);\n const [hasTooltips, setHasTooltips] = useState(false);\n // A factory function used to get a callback ref for checking truncation.\n const getOverflowRef = useDetectTruncatedText(setHasTooltips);\n const totalSteps = Children.count(children);\n\n return (\n <SteppedTrackerProvider\n hasTooltips={hasTooltips}\n getOverflowRef={getOverflowRef}\n totalSteps={totalSteps}\n activeStep={activeStep}\n >\n <ul\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...restProps}\n >\n {Children.map(children, (child, i) => (\n <TrackerStepProvider stepNumber={i}>{child}</TrackerStepProvider>\n ))}\n </ul>\n </SteppedTrackerProvider>\n );\n }\n);\n"],"names":["makePrefixer","useEffect","Children","isValidElement","forwardRef","SteppedTracker","useWindow","useComponentCssInjection","steppedTrackerCss","useState","jsx","SteppedTrackerProvider","clsx","TrackerStepProvider"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAatD,MAAM,uBAAA,GAA0B,CAAC,QAAwB,KAAA;AACvD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAA,IAAI,eAAkB,GAAA,KAAA,CAAA;AACtB,MAASC,cAAA,CAAA,OAAA,CAAQ,QAAU,EAAA,CAAC,KAAU,KAAA;AACpC,QAAI,IAAA,CAACC,oBAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,UAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,SACpB;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAQ,OAAA,CAAA,KAAA;AAAA,UACN,2EAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACf,CAAA,CAAA;AAEO,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,gBACP,EAAE,QAAA,EAAU,WAAW,UAAe,EAAA,GAAA,SAAA,IACtC,GACmC,EAAA;AACnC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBAAA,CAAwB,QAAQ,CAAA,CAAA;AAChC,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAS,KAAK,CAAA,CAAA;AAEpD,IAAM,MAAA,cAAA,GAAiB,uBAAuB,cAAc,CAAA,CAAA;AAC5D,IAAM,MAAA,UAAA,GAAaP,cAAS,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAE1C,IAAA,uBACGQ,cAAA,CAAAC,4CAAA,EAAA;AAAA,MACC,WAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MAEA,QAAC,kBAAAD,cAAA,CAAA,IAAA,EAAA;AAAA,QACC,SAAW,EAAAE,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG,SAAA;AAAA,QAEH,yBAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAA,EAAO,sBAC7BF,cAAA,CAAAG,yCAAA,EAAA;AAAA,UAAoB,UAAY,EAAA,CAAA;AAAA,UAAI,QAAA,EAAA,KAAA;AAAA,SAAM,CAC5C,CAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"SteppedTracker.js","sources":["../src/stepped-tracker/SteppedTracker.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n ReactNode,\n Children,\n isValidElement,\n useEffect,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport {\n SteppedTrackerProvider,\n TrackerStepProvider,\n} from \"./SteppedTrackerContext\";\n\nimport steppedTrackerCss from \"./SteppedTracker.css\";\n\nconst withBaseName = makePrefixer(\"saltSteppedTracker\");\n\nexport interface SteppedTrackerProps extends ComponentPropsWithoutRef<\"ul\"> {\n /**\n * The index of the current activeStep\n */\n activeStep: number;\n /**\n * Should be one or more TrackerStep components\n */\n children: ReactNode;\n}\n\nconst useCheckInvalidChildren = (children: ReactNode) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n let hasInvalidChild = false;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n hasInvalidChild = true;\n }\n });\n\n if (hasInvalidChild) {\n console.error(\n \"Invalid child: children of SteppedTracker must be a TrackerStep component\"\n );\n }\n }\n }, [children]);\n};\n\nexport const SteppedTracker = forwardRef<HTMLUListElement, SteppedTrackerProps>(\n function SteppedTracker(\n { children, className, activeStep, ...restProps },\n ref\n ): ReactElement<SteppedTrackerProps> {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-stepped-tracker\",\n css: steppedTrackerCss,\n window: targetWindow,\n });\n useCheckInvalidChildren(children);\n\n const totalSteps = Children.count(children);\n\n return (\n <SteppedTrackerProvider totalSteps={totalSteps} activeStep={activeStep}>\n <ul\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...restProps}\n >\n {Children.map(children, (child, i) => (\n <TrackerStepProvider stepNumber={i}>{child}</TrackerStepProvider>\n ))}\n </ul>\n </SteppedTrackerProvider>\n );\n }\n);\n"],"names":["makePrefixer","useEffect","Children","isValidElement","forwardRef","SteppedTracker","useWindow","useComponentCssInjection","steppedTrackerCss","jsx","SteppedTrackerProvider","clsx","TrackerStepProvider"],"mappings":";;;;;;;;;;;;;AAqBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAatD,MAAM,uBAAA,GAA0B,CAAC,QAAwB,KAAA;AACvD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAA,IAAI,eAAkB,GAAA,KAAA,CAAA;AACtB,MAASC,cAAA,CAAA,OAAA,CAAQ,QAAU,EAAA,CAAC,KAAU,KAAA;AACpC,QAAI,IAAA,CAACC,oBAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,UAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,SACpB;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAQ,OAAA,CAAA,KAAA;AAAA,UACN,2EAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACf,CAAA,CAAA;AAEO,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,gBACP,EAAE,QAAA,EAAU,WAAW,UAAe,EAAA,GAAA,SAAA,IACtC,GACmC,EAAA;AACnC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AACD,IAAA,uBAAA,CAAwB,QAAQ,CAAA,CAAA;AAEhC,IAAM,MAAA,UAAA,GAAaN,cAAS,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAE1C,IAAA,uBACGO,cAAA,CAAAC,4CAAA,EAAA;AAAA,MAAuB,UAAA;AAAA,MAAwB,UAAA;AAAA,MAC9C,QAAC,kBAAAD,cAAA,CAAA,IAAA,EAAA;AAAA,QACC,SAAW,EAAAE,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG,SAAA;AAAA,QAEH,yBAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAA,EAAO,sBAC7BF,cAAA,CAAAG,yCAAA,EAAA;AAAA,UAAoB,UAAY,EAAA,CAAA;AAAA,UAAI,QAAA,EAAA,KAAA;AAAA,SAAM,CAC5C,CAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -7,9 +7,7 @@ var React = require('react');
7
7
 
8
8
  const defaultSteppedTrackerContext = {
9
9
  activeStep: 0,
10
- hasTooltips: false,
11
10
  totalSteps: 1,
12
- getOverflowRef: () => void 0,
13
11
  isWithinSteppedTracker: false
14
12
  };
15
13
  const SteppedTrackerContext = React.createContext(
@@ -17,20 +15,16 @@ const SteppedTrackerContext = React.createContext(
17
15
  );
18
16
  const SteppedTrackerProvider = ({
19
17
  activeStep,
20
- getOverflowRef,
21
- hasTooltips,
22
18
  totalSteps,
23
19
  children
24
20
  }) => {
25
21
  const steppedTrackerContextValue = React.useMemo(
26
22
  () => ({
27
23
  activeStep,
28
- getOverflowRef,
29
- hasTooltips,
30
24
  totalSteps,
31
25
  isWithinSteppedTracker: true
32
26
  }),
33
- [activeStep, getOverflowRef, hasTooltips, totalSteps]
27
+ [activeStep, totalSteps]
34
28
  );
35
29
  return /* @__PURE__ */ jsxRuntime.jsx(SteppedTrackerContext.Provider, {
36
30
  value: steppedTrackerContextValue,
@@ -1 +1 @@
1
- {"version":3,"file":"SteppedTrackerContext.js","sources":["../src/stepped-tracker/SteppedTrackerContext.tsx"],"sourcesContent":["import { createContext, useContext, ReactNode, useMemo } from \"react\";\n\nimport { GetOverflowRef } from \"./useDetectTruncatedText\";\n\nexport type SteppedTrackerContextType = {\n activeStep: number;\n getOverflowRef: GetOverflowRef;\n hasTooltips: boolean;\n totalSteps: number;\n isWithinSteppedTracker: boolean;\n};\n\nconst defaultSteppedTrackerContext = {\n activeStep: 0,\n hasTooltips: false,\n totalSteps: 1,\n getOverflowRef: () => undefined,\n isWithinSteppedTracker: false,\n};\n\nconst SteppedTrackerContext = createContext(\n defaultSteppedTrackerContext as unknown as SteppedTrackerContextType\n);\n\ntype SteppedTrackerProviderProps = Omit<\n SteppedTrackerContextType,\n \"isWithinSteppedTracker\"\n> & {\n children: ReactNode;\n};\n\nexport const SteppedTrackerProvider = ({\n activeStep,\n getOverflowRef,\n hasTooltips,\n totalSteps,\n children,\n}: SteppedTrackerProviderProps) => {\n const steppedTrackerContextValue: SteppedTrackerContextType = useMemo(\n () => ({\n activeStep,\n getOverflowRef,\n hasTooltips,\n totalSteps,\n isWithinSteppedTracker: true,\n }),\n [activeStep, getOverflowRef, hasTooltips, totalSteps]\n );\n\n return (\n <SteppedTrackerContext.Provider value={steppedTrackerContextValue}>\n {children}\n </SteppedTrackerContext.Provider>\n );\n};\n\nexport const useSteppedTrackerContext = () => useContext(SteppedTrackerContext);\n\ntype TrackerStepNumberContextType = number;\n\nconst TrackerStepContext = createContext<TrackerStepNumberContextType>(0);\n\nexport const useTrackerStepContext = () => useContext(TrackerStepContext);\n\ntype TrackerStepProivderProps = {\n stepNumber: number;\n children: ReactNode;\n};\n\nexport const TrackerStepProvider = ({\n children,\n stepNumber,\n}: TrackerStepProivderProps) => {\n return (\n <TrackerStepContext.Provider value={stepNumber}>\n {children}\n </TrackerStepContext.Provider>\n );\n};\n"],"names":["createContext","useMemo","jsx","useContext"],"mappings":";;;;;;;AAYA,MAAM,4BAA+B,GAAA;AAAA,EACnC,UAAY,EAAA,CAAA;AAAA,EACZ,WAAa,EAAA,KAAA;AAAA,EACb,UAAY,EAAA,CAAA;AAAA,EACZ,gBAAgB,MAAM,KAAA,CAAA;AAAA,EACtB,sBAAwB,EAAA,KAAA;AAC1B,CAAA,CAAA;AAEA,MAAM,qBAAwB,GAAAA,mBAAA;AAAA,EAC5B,4BAAA;AACF,CAAA,CAAA;AASO,MAAM,yBAAyB,CAAC;AAAA,EACrC,UAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAmC,KAAA;AACjC,EAAA,MAAM,0BAAwD,GAAAC,aAAA;AAAA,IAC5D,OAAO;AAAA,MACL,UAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,sBAAwB,EAAA,IAAA;AAAA,KAC1B,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,cAAgB,EAAA,WAAA,EAAa,UAAU,CAAA;AAAA,GACtD,CAAA;AAEA,EACE,uBAAAC,cAAA,CAAC,sBAAsB,QAAtB,EAAA;AAAA,IAA+B,KAAO,EAAA,0BAAA;AAAA,IACpC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEa,MAAA,wBAAA,GAA2B,MAAMC,gBAAA,CAAW,qBAAqB,EAAA;AAI9E,MAAM,kBAAA,GAAqBH,oBAA4C,CAAC,CAAA,CAAA;AAE3D,MAAA,qBAAA,GAAwB,MAAMG,gBAAA,CAAW,kBAAkB,EAAA;AAOjE,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACF,CAAgC,KAAA;AAC9B,EACE,uBAAAD,cAAA,CAAC,mBAAmB,QAAnB,EAAA;AAAA,IAA4B,KAAO,EAAA,UAAA;AAAA,IACjC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;;;;"}
1
+ {"version":3,"file":"SteppedTrackerContext.js","sources":["../src/stepped-tracker/SteppedTrackerContext.tsx"],"sourcesContent":["import { createContext, useContext, ReactNode, useMemo } from \"react\";\n\nexport type SteppedTrackerContextType = {\n activeStep: number;\n totalSteps: number;\n isWithinSteppedTracker: boolean;\n};\n\nconst defaultSteppedTrackerContext = {\n activeStep: 0,\n totalSteps: 1,\n isWithinSteppedTracker: false,\n};\n\nconst SteppedTrackerContext = createContext(\n defaultSteppedTrackerContext as unknown as SteppedTrackerContextType\n);\n\ntype SteppedTrackerProviderProps = Omit<\n SteppedTrackerContextType,\n \"isWithinSteppedTracker\"\n> & {\n children: ReactNode;\n};\n\nexport const SteppedTrackerProvider = ({\n activeStep,\n totalSteps,\n children,\n}: SteppedTrackerProviderProps) => {\n const steppedTrackerContextValue: SteppedTrackerContextType = useMemo(\n () => ({\n activeStep,\n totalSteps,\n isWithinSteppedTracker: true,\n }),\n [activeStep, totalSteps]\n );\n\n return (\n <SteppedTrackerContext.Provider value={steppedTrackerContextValue}>\n {children}\n </SteppedTrackerContext.Provider>\n );\n};\n\nexport const useSteppedTrackerContext = () => useContext(SteppedTrackerContext);\n\ntype TrackerStepNumberContextType = number;\n\nconst TrackerStepContext = createContext<TrackerStepNumberContextType>(0);\n\nexport const useTrackerStepContext = () => useContext(TrackerStepContext);\n\ntype TrackerStepProivderProps = {\n stepNumber: number;\n children: ReactNode;\n};\n\nexport const TrackerStepProvider = ({\n children,\n stepNumber,\n}: TrackerStepProivderProps) => {\n return (\n <TrackerStepContext.Provider value={stepNumber}>\n {children}\n </TrackerStepContext.Provider>\n );\n};\n"],"names":["createContext","useMemo","jsx","useContext"],"mappings":";;;;;;;AAQA,MAAM,4BAA+B,GAAA;AAAA,EACnC,UAAY,EAAA,CAAA;AAAA,EACZ,UAAY,EAAA,CAAA;AAAA,EACZ,sBAAwB,EAAA,KAAA;AAC1B,CAAA,CAAA;AAEA,MAAM,qBAAwB,GAAAA,mBAAA;AAAA,EAC5B,4BAAA;AACF,CAAA,CAAA;AASO,MAAM,yBAAyB,CAAC;AAAA,EACrC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAmC,KAAA;AACjC,EAAA,MAAM,0BAAwD,GAAAC,aAAA;AAAA,IAC5D,OAAO;AAAA,MACL,UAAA;AAAA,MACA,UAAA;AAAA,MACA,sBAAwB,EAAA,IAAA;AAAA,KAC1B,CAAA;AAAA,IACA,CAAC,YAAY,UAAU,CAAA;AAAA,GACzB,CAAA;AAEA,EACE,uBAAAC,cAAA,CAAC,sBAAsB,QAAtB,EAAA;AAAA,IAA+B,KAAO,EAAA,0BAAA;AAAA,IACpC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEa,MAAA,wBAAA,GAA2B,MAAMC,gBAAA,CAAW,qBAAqB,EAAA;AAI9E,MAAM,kBAAA,GAAqBH,oBAA4C,CAAC,CAAA,CAAA;AAE3D,MAAA,qBAAA,GAAwB,MAAMG,gBAAA,CAAW,kBAAkB,EAAA;AAOjE,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACF,CAAgC,KAAA;AAC9B,EACE,uBAAAD,cAAA,CAAC,mBAAmB,QAAnB,EAAA;AAAA,IAA4B,KAAO,EAAA,UAAA;AAAA,IACjC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltTrackerConnector {\n --trackerConnector-style-default: var(--saltTrackerConnector-style-default, var(--salt-track-borderStyle-incomplete));\n --trackerConnector-style-active: var(--saltTrackerConnector-style-active, var(--salt-track-borderStyle-active));\n --trackerConnector-color: var(--saltTrackerConnector-color, var(--salt-track-borderColor));\n --trackerConnector-thickness: var(--saltTrackerConnector-thickness, var(--salt-track-borderWidth));\n --trackerConnector-margin: var(--saltTrackerConnector-margin, var(--salt-spacing-100));\n}\n\n.saltTrackerConnector {\n height: 0;\n border-top-width: var(--trackerConnector-thickness);\n border-top-style: var(--trackerConnector-style-default);\n border-top-color: var(--trackerConnector-color);\n position: absolute;\n width: calc(100% - (var(--saltIcon-size)) - (var(--trackerConnector-margin) * 2));\n left: calc(50% + (var(--saltIcon-size) / 2) + var(--trackerConnector-margin));\n top: calc(var(--saltIcon-size) / 2);\n}\n\n.saltTrackerConnector.saltTrackerConnector-active {\n border-top-style: var(--trackerConnector-style-active);\n}\n";
3
+ var css_248z = ".saltTrackerConnector {\n --trackerConnector-style-default: var(--saltTrackerConnector-style-default, var(--salt-track-borderStyle-incomplete));\n --trackerConnector-style-active: var(--saltTrackerConnector-style-active, var(--salt-track-borderStyle-active));\n --trackerConnector-color: var(--saltTrackerConnector-color, var(--salt-track-borderColor));\n --trackerConnector-thickness: var(--saltTrackerConnector-thickness, var(--salt-track-borderWidth));\n --trackerConnector-margin: var(--saltTrackerConnector-margin, var(--salt-spacing-100));\n}\n\n.saltTrackerConnector {\n height: 0;\n border-top-width: var(--trackerConnector-thickness);\n border-top-style: var(--trackerConnector-style-default);\n border-top-color: var(--trackerConnector-color);\n position: absolute;\n width: calc(100% - (var(--saltIcon-size)) - (var(--trackerConnector-margin) * 2));\n left: calc(50% + (var(--saltIcon-size) / 2) + var(--trackerConnector-margin));\n top: calc(var(--saltIcon-size) / 2 - (var(--trackerConnector-thickness) / 2));\n}\n\n.saltTrackerConnector.saltTrackerConnector-active {\n border-top-style: var(--trackerConnector-style-active);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=TrackerConnector.css.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltTrackerStep {\n --trackerStep-icon-color-active: var(--saltTrackerStep-icon-color-active, var(--salt-status-info-foreground));\n --trackerStep-icon-color-completed: var(--saltTrackerStep-icon-color-completed, var(--salt-status-success-foreground));\n\n --trackerStep-icon-color: var(--saltTrackerStep-icon-color, var(--salt-status-static-foreground));\n\n --saltIcon-color: var(--trackerStep-icon-color);\n /* We redefine Icon Size so we can use it in calc functions in the trackerConnector */\n --saltIcon-size: var(--saltTrackerStep-icon-size, max(var(--salt-icon-size-base), 12px));\n}\n\n.saltTrackerStep {\n margin: 0;\n padding: 0;\n text-indent: 0;\n list-style-type: none;\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: column;\n width: var(--saltTrackerStep-width, 100%);\n gap: var(--salt-spacing-50);\n color: var(--salt-text-primary-foreground);\n font-size: var(--salt-text-label-fontSize);\n line-height: var(--salt-text-label-lineHeight);\n}\n\n/* Pseudo-class applied to the root element on focus */\n.saltTrackerStep:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n.saltTrackerStep .saltTrackerStep-body {\n width: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n\n.saltTrackerStep.saltTrackerStep-active {\n --trackerStep-icon-color: var(--trackerStep-icon-color-active);\n}\n\n.saltTrackerStep.saltTrackerStep-completed {\n --trackerStep-icon-color: var(--trackerStep-icon-color-completed);\n}\n";
3
+ var css_248z = ".saltTrackerStep {\n --trackerStep-icon-color-active: var(--saltTrackerStep-icon-color-active, var(--salt-status-info-foreground));\n --trackerStep-icon-color-completed: var(--saltTrackerStep-icon-color-completed, var(--salt-status-success-foreground));\n\n --trackerStep-icon-color: var(--saltTrackerStep-icon-color, var(--salt-status-static-foreground));\n\n --saltIcon-color: var(--trackerStep-icon-color);\n /* We redefine Icon Size so we can use it in calc functions in the trackerConnector */\n --saltIcon-size: var(--saltTrackerStep-icon-size, max(var(--salt-icon-size-base), 12px));\n}\n\n.saltTrackerStep {\n margin: 0;\n padding: 0;\n text-indent: 0;\n list-style-type: none;\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: column;\n width: var(--saltTrackerStep-width, 100%);\n gap: var(--salt-spacing-50);\n color: var(--salt-text-primary-foreground);\n font-size: var(--salt-text-label-fontSize);\n line-height: var(--salt-text-label-lineHeight);\n padding: 0 var(--salt-spacing-25);\n}\n\n/* Pseudo-class applied to the root element on focus */\n.saltTrackerStep:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n.saltTrackerStep .saltTrackerStep-body {\n width: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n}\n\n.saltTrackerStep.saltTrackerStep-active {\n --trackerStep-icon-color: var(--trackerStep-icon-color-active);\n}\n\n.saltTrackerStep.saltTrackerStep-completed {\n --trackerStep-icon-color: var(--trackerStep-icon-color-completed);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=TrackerStep.css.js.map
@@ -12,7 +12,6 @@ var icons = require('@salt-ds/icons');
12
12
  var TrackerConnector = require('../TrackerConnector/TrackerConnector.js');
13
13
  var SteppedTrackerContext = require('../SteppedTrackerContext.js');
14
14
  var TrackerStep$1 = require('./TrackerStep.css.js');
15
- var TrackerStepTooltipContext = require('./TrackerStepTooltipContext.js');
16
15
 
17
16
  const withBaseName = core.makePrefixer("saltTrackerStep");
18
17
  const iconMap = {
@@ -63,7 +62,7 @@ const TrackerStep = React.forwardRef(
63
62
  css: TrackerStep$1,
64
63
  window: targetWindow
65
64
  });
66
- const { activeStep, totalSteps, hasTooltips, isWithinSteppedTracker } = SteppedTrackerContext.useSteppedTrackerContext();
65
+ const { activeStep, totalSteps, isWithinSteppedTracker } = SteppedTrackerContext.useSteppedTrackerContext();
67
66
  const stepNumber = SteppedTrackerContext.useTrackerStepContext();
68
67
  useCheckWithinSteppedTracker(isWithinSteppedTracker);
69
68
  const isActive = activeStep === stepNumber;
@@ -75,10 +74,9 @@ const TrackerStep = React.forwardRef(
75
74
  ...style,
76
75
  "--saltTrackerStep-width": `${100 / totalSteps}%`
77
76
  };
78
- const Inner = /* @__PURE__ */ jsxRuntime.jsxs("li", {
77
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", {
79
78
  className: clsx.clsx(withBaseName(), withBaseName(resolvedState), className),
80
79
  style: innerStyle,
81
- tabIndex: hasTooltips ? 0 : void 0,
82
80
  "aria-current": isActive ? "step" : void 0,
83
81
  "data-state": state,
84
82
  ref,
@@ -94,16 +92,6 @@ const TrackerStep = React.forwardRef(
94
92
  })
95
93
  ]
96
94
  });
97
- if (!hasTooltips) {
98
- return Inner;
99
- }
100
- return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, {
101
- placement: "top",
102
- content: /* @__PURE__ */ jsxRuntime.jsx(TrackerStepTooltipContext.TrackStepTooltipProvider, {
103
- children
104
- }),
105
- children: Inner
106
- });
107
95
  }
108
96
  );
109
97
 
@@ -1 +1 @@
1
- {"version":3,"file":"TrackerStep.js","sources":["../src/stepped-tracker/TrackerStep/TrackerStep.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, useEffect } from \"react\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer, Tooltip } from \"@salt-ds/core\";\nimport {\n StepActiveIcon,\n StepDefaultIcon,\n StepSuccessIcon,\n} from \"@salt-ds/icons\";\nimport { TrackerConnector } from \"../TrackerConnector\";\n\nimport {\n useSteppedTrackerContext,\n useTrackerStepContext,\n} from \"../SteppedTrackerContext\";\n\nimport trackerStepCss from \"./TrackerStep.css\";\nimport { TrackStepTooltipProvider } from \"./TrackerStepTooltipContext\";\n\nconst withBaseName = makePrefixer(\"saltTrackerStep\");\n\ntype State = \"default\" | \"completed\";\n\ntype StateWithActive = State | \"active\";\n\nexport interface TrackerStepProps extends ComponentPropsWithoutRef<\"li\"> {\n /**\n * The state of the TrackerStep\n */\n state?: State;\n}\n\nconst iconMap = {\n default: StepDefaultIcon,\n completed: StepSuccessIcon,\n};\n\nconst getStateIcon = ({\n isActive,\n state,\n}: {\n isActive: boolean;\n state: State;\n}) => {\n if (state === \"default\" && isActive) {\n return StepActiveIcon;\n }\n return iconMap[state];\n};\n\nconst getState = ({\n isActive,\n state,\n}: {\n isActive: boolean;\n state: State;\n}): StateWithActive => {\n if (state === \"default\" && isActive) {\n return \"active\";\n }\n return state;\n};\n\nconst useCheckWithinSteppedTracker = (isWithinSteppedTracker: boolean) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isWithinSteppedTracker) {\n console.error(\n \"The TrackerStep component must be placed within a SteppedTracker component\"\n );\n }\n }\n }, [isWithinSteppedTracker]);\n};\n\nexport const TrackerStep = forwardRef<HTMLLIElement, TrackerStepProps>(\n function TrackerStep(props, ref?) {\n const {\n state = \"default\",\n style,\n className,\n children,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tracker-step\",\n css: trackerStepCss,\n window: targetWindow,\n });\n\n const { activeStep, totalSteps, hasTooltips, isWithinSteppedTracker } =\n useSteppedTrackerContext();\n const stepNumber = useTrackerStepContext();\n\n useCheckWithinSteppedTracker(isWithinSteppedTracker);\n\n const isActive = activeStep === stepNumber;\n const Icon = getStateIcon({ isActive, state });\n const resolvedState = getState({ isActive, state });\n const connectorState = activeStep > stepNumber ? \"active\" : \"default\";\n const hasConnector = stepNumber < totalSteps - 1;\n\n const innerStyle = {\n ...style,\n \"--saltTrackerStep-width\": `${100 / totalSteps}%`,\n };\n\n const Inner = (\n <li\n className={clsx(withBaseName(), withBaseName(resolvedState), className)}\n style={innerStyle}\n tabIndex={hasTooltips ? 0 : undefined}\n aria-current={isActive ? \"step\" : undefined}\n data-state={state}\n ref={ref}\n {...restProps}\n >\n <Icon />\n {hasConnector && <TrackerConnector state={connectorState} />}\n <div className={withBaseName(\"body\")}>{children}</div>\n </li>\n );\n\n if (!hasTooltips) {\n return Inner;\n }\n\n return (\n <Tooltip\n placement=\"top\"\n content={\n <TrackStepTooltipProvider>{children}</TrackStepTooltipProvider>\n }\n >\n {Inner}\n </Tooltip>\n );\n }\n);\n"],"names":["makePrefixer","StepDefaultIcon","StepSuccessIcon","StepActiveIcon","useEffect","forwardRef","TrackerStep","useWindow","useComponentCssInjection","trackerStepCss","useSteppedTrackerContext","useTrackerStepContext","jsxs","clsx","jsx","TrackerConnector","Tooltip","TrackStepTooltipProvider"],"mappings":"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"}
1
+ {"version":3,"file":"TrackerStep.js","sources":["../src/stepped-tracker/TrackerStep/TrackerStep.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, useEffect } from \"react\";\nimport { clsx } from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n StepActiveIcon,\n StepDefaultIcon,\n StepSuccessIcon,\n} from \"@salt-ds/icons\";\nimport { TrackerConnector } from \"../TrackerConnector\";\n\nimport {\n useSteppedTrackerContext,\n useTrackerStepContext,\n} from \"../SteppedTrackerContext\";\n\nimport trackerStepCss from \"./TrackerStep.css\";\n\nconst withBaseName = makePrefixer(\"saltTrackerStep\");\n\ntype State = \"default\" | \"completed\";\n\ntype StateWithActive = State | \"active\";\n\nexport interface TrackerStepProps extends ComponentPropsWithoutRef<\"li\"> {\n /**\n * The state of the TrackerStep\n */\n state?: State;\n}\n\nconst iconMap = {\n default: StepDefaultIcon,\n completed: StepSuccessIcon,\n};\n\nconst getStateIcon = ({\n isActive,\n state,\n}: {\n isActive: boolean;\n state: State;\n}) => {\n if (state === \"default\" && isActive) {\n return StepActiveIcon;\n }\n return iconMap[state];\n};\n\nconst getState = ({\n isActive,\n state,\n}: {\n isActive: boolean;\n state: State;\n}): StateWithActive => {\n if (state === \"default\" && isActive) {\n return \"active\";\n }\n return state;\n};\n\nconst useCheckWithinSteppedTracker = (isWithinSteppedTracker: boolean) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isWithinSteppedTracker) {\n console.error(\n \"The TrackerStep component must be placed within a SteppedTracker component\"\n );\n }\n }\n }, [isWithinSteppedTracker]);\n};\n\nexport const TrackerStep = forwardRef<HTMLLIElement, TrackerStepProps>(\n function TrackerStep(props, ref) {\n const {\n state = \"default\",\n style,\n className,\n children,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tracker-step\",\n css: trackerStepCss,\n window: targetWindow,\n });\n\n const { activeStep, totalSteps, isWithinSteppedTracker } =\n useSteppedTrackerContext();\n const stepNumber = useTrackerStepContext();\n\n useCheckWithinSteppedTracker(isWithinSteppedTracker);\n\n const isActive = activeStep === stepNumber;\n const Icon = getStateIcon({ isActive, state });\n const resolvedState = getState({ isActive, state });\n const connectorState = activeStep > stepNumber ? \"active\" : \"default\";\n const hasConnector = stepNumber < totalSteps - 1;\n\n const innerStyle = {\n ...style,\n \"--saltTrackerStep-width\": `${100 / totalSteps}%`,\n };\n\n return (\n <li\n className={clsx(withBaseName(), withBaseName(resolvedState), className)}\n style={innerStyle}\n aria-current={isActive ? \"step\" : undefined}\n data-state={state}\n ref={ref}\n {...restProps}\n >\n <Icon />\n {hasConnector && <TrackerConnector state={connectorState} />}\n <div className={withBaseName(\"body\")}>{children}</div>\n </li>\n );\n }\n);\n"],"names":["makePrefixer","StepDefaultIcon","StepSuccessIcon","StepActiveIcon","useEffect","forwardRef","TrackerStep","useWindow","useComponentCssInjection","trackerStepCss","useSteppedTrackerContext","useTrackerStepContext","jsxs","clsx","jsx","TrackerConnector"],"mappings":"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"}