Skip to content

Commit 1d71e1c

Browse files
authored
feat: implement step component (#13)
1 parent 03a4167 commit 1d71e1c

File tree

5 files changed

+113
-0
lines changed

5 files changed

+113
-0
lines changed

content/docs/documentation/foundamentals/components/_default.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ collection:
1111
- text
1212
- card
1313
- callout
14+
- step
1415
---
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: Step
3+
description: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4+
permalink: step
5+
icon: lucide:grid-2x2
6+
---
7+
8+
# Steps
9+
10+
This section details various processes or features, broken down into a series of manageable steps.
11+
12+
Each `step-group` provides a structured guide, with individual steps offering explanations, instructions, and often code examples to help you achieve a specific goal or understand a particular concept.
13+
14+
Follow the sequence of steps to successfully complete the task.
15+
16+
## Usage
17+
18+
::::step-group
19+
:::step{title="Lorem ipsum dolor sit amet"}
20+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
21+
22+
```rs [main.rs]
23+
fn main() {
24+
println!("Hello, world!");
25+
}
26+
```
27+
28+
:::
29+
:::step{title="Lorem ipsum dolor sit amet"}
30+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
31+
:::
32+
::::
33+
34+
````plain [Simple steps]
35+
::::step-group
36+
:::step{title="Lorem ipsum dolor sit amet"}
37+
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
38+
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
39+
40+
```rs [main.rs]
41+
fn main() {
42+
println!("Hello, world!");
43+
}
44+
```
45+
:::
46+
47+
:::step{title="Lorem ipsum dolor sit amet"}
48+
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
49+
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
50+
:::
51+
::::
52+
````

explainer.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import CardGroup from "@/components/content/card-group/card-group.astro";
33
import Card from "@/components/content/card-group/card.astro";
44
import CodeGroup from "@/components/content/code-group/code-group.astro";
55
import CodeBlock from "@/components/content/codeblock.astro";
6+
import StepGroup from "@/components/content/step-group/step-group.astro";
7+
import Step from "@/components/content/step-group/step.astro";
68
import { defineExplainerConfig } from "@/utils";
79

810
export default defineExplainerConfig({
@@ -51,6 +53,8 @@ export default defineExplainerConfig({
5153
"code-group": CodeGroup,
5254
pre: CodeBlock,
5355
callout: Callout,
56+
"step-group": StepGroup,
57+
step: Step,
5458
},
5559
icons: {
5660
markdown: "devicon:markdown",
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
3+
---
4+
5+
<div class="step-group relative my-8 py-5">
6+
<slot />
7+
</div>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
import { cn } from "@/utils";
3+
4+
type Props = {
5+
title?: string;
6+
class?: string;
7+
};
8+
const { title, class: className } = Astro.props;
9+
---
10+
11+
<div class={cn("step relative flex gap-6 pb-8 last:pb-0", className)}>
12+
<div
13+
class="step-line absolute left-4 top-0 h-full w-px bg-border -translate-x-1/2"
14+
aria-hidden="true"
15+
>
16+
</div>
17+
<div
18+
class="step-number relative z-10 flex items-center justify-center size-8 bg-secondary rounded-full border border-border text-sm font-semibold text-foreground shrink-0"
19+
>
20+
</div>
21+
<div class="flex-1 min-w-0">
22+
{
23+
title && (
24+
<h3 class="text-lg font-semibold !mt-0 pt-0 mb-3 leading-none text-foreground">
25+
{title}
26+
</h3>
27+
)
28+
}
29+
<div class="step-content text-muted-foreground [&>p:first-child]:!pt-0">
30+
<slot />
31+
</div>
32+
</div>
33+
</div>
34+
35+
<style is:global>
36+
.step-group {
37+
counter-reset: step;
38+
}
39+
</style>
40+
41+
<style>
42+
.step {
43+
counter-increment: step;
44+
}
45+
46+
.step-number::after {
47+
content: counter(step);
48+
}
49+
</style>

0 commit comments

Comments
 (0)