Skip to content
Open
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
d488feb
Initial commit
FlyersPh9 Jun 30, 2026
ba6771c
Attempt to fix visual artifacting
FlyersPh9 Jul 6, 2026
d8bc772
Use neutral color instead of mono
FlyersPh9 Jul 6, 2026
e811588
Border color for track, icon color for fill
FlyersPh9 Jul 7, 2026
b86eac4
Revert ba6771c
FlyersPh9 Jul 7, 2026
51815e4
Determinate LinearProgress has end indicator
FlyersPh9 Jul 7, 2026
ad07d5a
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 7, 2026
21d8031
Mention end marker in docs
FlyersPh9 Jul 7, 2026
cbaf3f2
Split Progress.md into 2 files
FlyersPh9 Jul 7, 2026
8609725
Add color documentation and simplify demo.
FlyersPh9 Jul 7, 2026
2d26aec
Add determinate documentation and demo.
FlyersPh9 Jul 7, 2026
1f03f4d
Update anchors to new progress docs.
FlyersPh9 Jul 8, 2026
f8a5294
Simplify determinate demos
FlyersPh9 Jul 8, 2026
a004452
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 8, 2026
96d9c61
Add support for buffer variant
FlyersPh9 Jul 8, 2026
671fd08
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 10, 2026
ea1fe63
Reduce size of track
FlyersPh9 Jul 13, 2026
450c3bf
Reduce size of track on CircularProgress
FlyersPh9 Jul 14, 2026
2369d77
Change thickness of both Circular & Linear track.
FlyersPh9 Jul 14, 2026
7c94fa9
Determinate demos display percentage completed.
FlyersPh9 Jul 14, 2026
7381b04
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 20, 2026
e3ebe16
Singular color for progress indicators
FlyersPh9 Jul 21, 2026
096ffbd
Increase size of fill from 4 to 5
FlyersPh9 Jul 21, 2026
ef3e5bd
Remove end dot from determinate linear
FlyersPh9 Jul 21, 2026
4a15d98
Use CSS module for CircularProgress determinate demo
FlyersPh9 Jul 21, 2026
60dc625
Revert ef3e5bd.
FlyersPh9 Jul 22, 2026
ce00408
Updated docs
FlyersPh9 Jul 22, 2026
4ef2862
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 24, 2026
9cc0a75
Add error, warning, info, success colors in CSS.
FlyersPh9 Jul 24, 2026
61ab7ef
Change thickness to 5
FlyersPh9 Jul 24, 2026
4401d88
Use accent base color
FlyersPh9 Jul 24, 2026
aceb5c7
Oops, that wasn't supposed to be there
FlyersPh9 Jul 27, 2026
14e0a87
Use inset-block-start, translate, and block-size instead of inset-blo…
FlyersPh9 Jul 27, 2026
77644b2
Use strong color only for primary
FlyersPh9 Jul 27, 2026
9dc22d3
Use strong color only for primary (circular)
FlyersPh9 Jul 27, 2026
2691f5f
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 27, 2026
55621f6
Clean up buffer dashed line
FlyersPh9 Jul 27, 2026
0af89fe
Use inset-block-start and block-size instead of inset-block for progr…
FlyersPh9 Jul 27, 2026
a976f2e
Update packages/mui/src/~components/MuiLinearProgress.css
FlyersPh9 Jul 27, 2026
d8dfa20
min-width on linear progress docs demos
FlyersPh9 Jul 27, 2026
ebacbe1
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 28, 2026
e9a6901
Merge branch 'main' into jon/progress-colors
FlyersPh9 Jul 28, 2026
4262a77
Update jsdocs for CircularProgress
FlyersPh9 Jul 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/sweet-months-cross.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stratakit/mui": patch
---

Styled `LinearProgress` to match the Strata visual design language.
5 changes: 5 additions & 0 deletions .changeset/thirty-trains-cross.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stratakit/mui": patch
---

Styled `CircularProgress` to match the Strata visual design language.
12 changes: 4 additions & 8 deletions apps/test-app/app/mui/CircularProgress.showcase.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,16 @@
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import Stack from "@mui/material/Stack";
import CircularProgressColors_ from "examples/mui/CircularProgress._colors.tsx";
import CircularProgressColors from "examples/mui/CircularProgress.colors.tsx";
import CircularProgressDefault from "examples/mui/CircularProgress.default.tsx";
import { isProduction } from "~/~utils.tsx";
import CircularProgressDeterminate from "examples/mui/CircularProgress.determinate.tsx";

export default function CircularProgressExamples() {
return (
<>
<CircularProgressDefault />
{!isProduction && (
<Stack spacing={1} direction="row" useFlexGap sx={{ flexWrap: "wrap" }}>
<CircularProgressColors_ />
</Stack>
)}
<CircularProgressColors />
<CircularProgressDeterminate />
</>
);
}
9 changes: 6 additions & 3 deletions apps/test-app/app/mui/LinearProgress.showcase.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import Stack from "@mui/material/Stack";
import LinearProgressColors_ from "examples/mui/LinearProgress._colors.tsx";
import LinearProgressBuffer from "examples/mui/LinearProgress.buffer.tsx";
import LinearProgressColors from "examples/mui/LinearProgress.colors.tsx";
import LinearProgressDefault from "examples/mui/LinearProgress.default.tsx";
import { isProduction } from "~/~utils.tsx";
import LinearProgressDeterminate from "examples/mui/LinearProgress.determinate.tsx";

export default function LinearProgressExamples() {
return (
<Stack spacing={1} sx={{ alignSelf: "stretch" }}>
<LinearProgressDefault />
{!isProduction && <LinearProgressColors_ />}
<LinearProgressColors />
<LinearProgressDeterminate />
<LinearProgressBuffer />
</Stack>
);
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd prefer separate documentation pages per component.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, we can split

@FlyersPh9 FlyersPh9 Jul 7, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we'll need to take a closer look at the determinate demos.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check for broken links now that /components/progress no longer exists.

And yeah, I don't feel confident in those determinate demos.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check for broken links now that /components/progress no longer exists.

Fixed anchors pointing to old progress docs URL in 1f03f4d.

And yeah, I don't feel confident in those determinate demos.

The things I am uncertain about:

  1. The extra code to get the progress bar to increase from 0-100% bloats the file while the focus should be on just the component and it's props.
  2. aria-labelledby is tied only to "Uploading…", does not include the %.
  3. The CircularProgress requires an absolute positioned box to get the percentage centered.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today we agreed to simplify the determinate examples to show the most basic usage.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplified determinate examples in f8a5294.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the determinate examples in 7c94fa9 to show the percentage but left out the animation.

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: CircularProgress
description: Progress indicators are used to display a loading state or visualize the progress of an operation.
links:
muiDocs: https://mui.com/material-ui/react-progress/
apiReference: https://mui.com/material-ui/api/circular-progress/
---

::example{src="mui/CircularProgress.default"}

## StrataKit MUI modifications

- The `enableTrackSlot` prop defaults to true.
Comment thread
mayank99 marked this conversation as resolved.
- Restyled using StrataKit's visual language.
- Includes full `forced-colors` support.

## Examples

### Colors

- **Primary:** The default. Use when indicating the primary loading state on a page.
- **Secondary:** Use when indicating a secondary loading state or when multiple loading states are shown at once.

::example{src="mui/CircularProgress.colors"}

### Determinate

Set the `variant` prop to `"determinate"` when the completion percentage is known.

::example{src="mui/CircularProgress.determinate"}
36 changes: 36 additions & 0 deletions apps/website/src/content/docs/components/mui/LinearProgress.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: LinearProgress
description: Progress indicators are used to display a loading state or visualize the progress of an operation.
links:
muiDocs: https://mui.com/material-ui/react-progress/
apiReference: https://mui.com/material-ui/api/linear-progress/
---

::example{src="mui/LinearProgress.default"}
Comment thread
FlyersPh9 marked this conversation as resolved.
Outdated

## StrataKit MUI modifications

- Added an end marker when the `variant` prop is set to `"determinate"` or `"buffer"`.
- Restyled using StrataKit's visual language.
- Includes full `forced-colors` support.

## Examples

### Colors

- **Primary:** The default. Use when indicating the primary loading state on a page.
- **Secondary:** Use when indicating a secondary loading state or when multiple loading states are shown at once.

::example{src="mui/LinearProgress.colors"}
Comment thread
FlyersPh9 marked this conversation as resolved.
Outdated

### Determinate

Set the `variant` prop to `"determinate"` when the completion percentage is known.

::example{src="mui/LinearProgress.determinate"}
Comment thread
FlyersPh9 marked this conversation as resolved.
Outdated

### Buffer

Set the `variant` prop to `"buffer"` when progress and buffered work are tracked separately.

::example{src="mui/LinearProgress.buffer"}
Comment thread
FlyersPh9 marked this conversation as resolved.
Outdated
15 changes: 0 additions & 15 deletions apps/website/src/content/docs/components/mui/Progress.md

This file was deleted.

12 changes: 6 additions & 6 deletions apps/website/src/content/docs/components/mui/Skeleton.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ links:

Make sure the **Skeleton** is suitable for your use case. There may be other, more appropriate components available.

| Use case | [Progress](/components/progress) | [Skeleton](/components/skeleton) |
| ----------------------------------------------------------------------- | -------------------------------- | -------------------------------- |
| Showing a loading (or other) process where the progress is determinable | ✅ | ❌ |
| Showing an indeterminable loading progress | ✅ | ✅ |
| Showing a process other than loading, such as a calculation | ✅ | ❌ |
| Use case | [CircularProgress](/components/circularprogress) & [LinearProgress](/components/linearprogress) | [Skeleton](/components/skeleton) |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------- |
| Showing a loading (or other) process where the progress is determinable | ✅ | ❌ |
| Showing an indeterminable loading progress | ✅ | ✅ |
| Showing a process other than loading, such as a calculation | ✅ | ❌ |

### Variants

Expand All @@ -42,4 +42,4 @@ Accurately representing the shape and structure of a loading interface is a case
## 🚫 Don't

- Don't use **Skeleton** where the size and shape of the content and functionality being loaded is not known.
- Don't use **Skeleton** to indicate the progress of any process except loading. For indicating the progress of calculations and other processes within a loaded interface, use [**Progress**](/components/progress).
- Don't use **Skeleton** to indicate the progress of any process except loading. For indicating the progress of calculations and other processes within a loaded interface, use [**CircularProgress**](/components/circularprogress) or [**LinearProgress**](/components/linearprogress).
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ Read additional [StrataKit MUI component documentation](/components/overview/) f

### ProgressBar

- Replace the `ProgressBar` component from `@stratakit/bricks` with the `LinearProgress` component from `@mui/material`. See [Progress examples](/components/progress/) for reference.
- Replace the `ProgressBar` component from `@stratakit/bricks` with the `LinearProgress` component from `@mui/material`. See [LinearProgress examples](/components/linearprogress) for reference.
- Remove unsupported [`size`](/reference/bricks/Progress#Progress.ProgressBar.size) prop.
- Change [`tone`](/reference/bricks/Progress#Progress.ProgressBar.tone) prop to [`color`](https://mui.com/material-ui/api/linear-progress/#linear-progress-prop-color) prop.

Expand Down Expand Up @@ -290,7 +290,7 @@ Read additional [StrataKit MUI component documentation](/components/overview/) f

### Spinner

- Replace the `Spinner` component from `@stratakit/bricks` with the `CircularProgress` component from `@mui/material`. See [Progress examples](/components/progress/) for reference.
- Replace the `Spinner` component from `@stratakit/bricks` with the `CircularProgress` component from `@mui/material`. See [CircularProgress examples](/components/circularprogress) for reference.
- Change the value of [`size`](/reference/bricks/Spinner#Spinner.size) prop. MUI [`size`](https://mui.com/material-ui/api/circular-progress/#circular-progress-prop-size) prop uses pixel values or custom units when a string is provided.
- Change [`tone`](/reference/bricks/Spinner#Spinner.tone) prop to [`color`](https://mui.com/material-ui/api/circular-progress/#circular-progress-prop-color) prop.

Expand Down
19 changes: 19 additions & 0 deletions examples/mui/CircularProgress.colors.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/

import * as React from "react";
import CircularProgress from "@mui/material/CircularProgress";
import Typography from "@mui/material/Typography";

export default () => {
const labelId = React.useId();

return (
<>
<CircularProgress color="secondary" aria-labelledby={labelId} />
<Typography id={labelId}>Analyzing results…</Typography>
</>
);
};
17 changes: 17 additions & 0 deletions examples/mui/CircularProgress.determinate.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/

.container {
display: inline-flex;
position: relative;
}

.percentage {
align-items: center;
display: flex;
inset: 0;
justify-content: center;
position: absolute;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,29 @@
*--------------------------------------------------------------------------------------------*/

import * as React from "react";
import Box from "@mui/material/Box";
import CircularProgress from "@mui/material/CircularProgress";
import Typography from "@mui/material/Typography";

type CircularProgressProps = React.ComponentProps<typeof CircularProgress>;
const colors = [
"secondary",
"primary",
] as const satisfies CircularProgressProps["color"][];
import styles from "./CircularProgress.determinate.module.css";

export default () => {
const exampleId = React.useId();
const labelId = React.useId();
const progress = 50;

return colors.map((color) => {
const labelId = `${exampleId}-${color}`;
return (
<div key={color}>
<CircularProgress aria-labelledby={labelId} color={color} />
<Typography id={labelId}>
{color.charAt(0).toUpperCase()}
{color.slice(1)}…
return (
<>
<Box className={styles.container}>
<CircularProgress
variant="determinate"
value={progress}
aria-labelledby={labelId}
/>
<Typography variant="caption" className={styles.percentage}>
{progress}%
</Typography>
</div>
);
});
</Box>
<Typography id={labelId}>Uploading…</Typography>
</>
);
};
31 changes: 0 additions & 31 deletions examples/mui/LinearProgress._colors.tsx

This file was deleted.

24 changes: 24 additions & 0 deletions examples/mui/LinearProgress.buffer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/

import * as React from "react";
import LinearProgress from "@mui/material/LinearProgress";
import Typography from "@mui/material/Typography";

export default () => {
const labelId = React.useId();

return (
<>
<LinearProgress
variant="buffer"
value={33}
valueBuffer={66}
aria-labelledby={labelId}
/>
<Typography id={labelId}>Buffering results…</Typography>
</>
);
};
19 changes: 19 additions & 0 deletions examples/mui/LinearProgress.colors.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/

import * as React from "react";
import LinearProgress from "@mui/material/LinearProgress";
import Typography from "@mui/material/Typography";

export default () => {
const labelId = React.useId();

return (
<>
<LinearProgress color="secondary" aria-labelledby={labelId} />
<Typography id={labelId}>Analyzing results…</Typography>
</>
);
};
28 changes: 28 additions & 0 deletions examples/mui/LinearProgress.determinate.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/

import * as React from "react";
import LinearProgress from "@mui/material/LinearProgress";
import Stack from "@mui/material/Stack";
import Typography from "@mui/material/Typography";

export default () => {
const labelId = React.useId();
const progress = 50;

return (
<>
<LinearProgress
variant="determinate"
value={progress}
aria-labelledby={labelId}
/>
<Stack direction="row" sx={{ justifyContent: "space-between" }}>
<Typography id={labelId}>Uploading…</Typography>
<Typography>{progress}%</Typography>
</Stack>
</>
);
};
2 changes: 2 additions & 0 deletions packages/mui/src/~components.css
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
@import "./~components/MuiCard.css";
@import "./~components/MuiCheckbox.css";
@import "./~components/MuiChip.css";
@import "./~components/MuiCircularProgress.css";
@import "./~components/MuiDialog.css";
@import "./~components/MuiDivider.css";
@import "./~components/MuiForm.css";
@import "./~components/MuiIconButton.css";
@import "./~components/MuiInput.css";
@import "./~components/MuiLinearProgress.css";
@import "./~components/MuiLink.css";
@import "./~components/MuiList.css";
@import "./~components/MuiMenu.css";
Expand Down
Loading
Loading