jjj 0.2.1

A modal interface for Jujutsu.
---
import { processSteps } from './rehype-steps';

const content = await Astro.slots.render('default');
const { html } = processSteps(content);
---

<Fragment set:html={html} />

<style is:global>
	.sl-steps {
		--bullet-size: calc(var(--sl-line-height) * 1rem);
		--bullet-margin: 0.375rem;

		list-style: none;
		counter-reset: steps-counter var(--sl-steps-start, 0);
		padding-inline-start: 0;
	}

	.sl-steps > li {
		counter-increment: steps-counter;
		position: relative;
		padding-inline-start: calc(var(--bullet-size) + 1rem);
		/* HACK: Keeps any `margin-bottom` inside the `<li>`’s padding box to avoid gaps in the hairline border. */
		padding-bottom: 1px;
		/* Prevent bullets from touching in short list items. */
		min-height: calc(var(--bullet-size) + var(--bullet-margin));
	}
	.sl-steps > li + li {
		/* Remove margin between steps. */
		margin-top: 0;
	}

	/* Custom list marker element. */
	.sl-steps > li::before {
		content: counter(steps-counter);
		position: absolute;
		top: 0;
		inset-inline-start: 0;
		width: var(--bullet-size);
		height: var(--bullet-size);
		line-height: var(--bullet-size);

		font-size: var(--sl-text-xs);
		font-weight: 600;
		text-align: center;
		color: var(--sl-color-white);
		background-color: var(--sl-color-gray-6);
		border-radius: 99rem;
		box-shadow: inset 0 0 0 1px var(--sl-color-gray-5);
	}

	/* Vertical guideline linking list numbers. */
	.sl-steps > li::after {
		--guide-width: 1px;
		content: '';
		position: absolute;
		top: calc(var(--bullet-size) + var(--bullet-margin));
		bottom: var(--bullet-margin);
		inset-inline-start: calc((var(--bullet-size) - var(--guide-width)) / 2);
		width: var(--guide-width);
		background-color: var(--sl-color-hairline-light);
	}

	/* Adjust first item inside a step so that it aligns vertically with the number
			even if using a larger font size (e.g. a heading) */
	.sl-steps > li > :first-child {
		/*
		The `lh` unit is not yet supported by all browsers in our support matrix
		— see https://caniuse.com/mdn-css_types_length_lh
		In unsupported browsers we approximate this using our known line-heights.
		*/
		--lh: calc(1em * var(--sl-line-height));
		--shift-y: calc(0.5 * (var(--bullet-size) - var(--lh)));
		transform: translateY(var(--shift-y));
		margin-bottom: var(--shift-y);
	}
	.sl-steps > li > :first-child:where(h1, h2, h3, h4, h5, h6) {
		--lh: calc(1em * var(--sl-line-height-headings));
	}
	@supports (--prop: 1lh) {
		.sl-steps > li > :first-child {
			--lh: 1lh;
		}
	}
</style>