` with the same data attributes and CSS custom properties. Add a `className` and use it as the selector:
+React renders a `
` element. Add a `className` to style it:
```css
.volume-slider::before {
diff --git a/site/src/docs.config.ts b/site/src/docs.config.ts
index f8406774..3a07244b 100644
--- a/site/src/docs.config.ts
+++ b/site/src/docs.config.ts
@@ -55,9 +55,11 @@ export const sidebar: Sidebar = [
{ slug: 'reference/popover' },
{ slug: 'reference/poster' },
{ slug: 'reference/seek-button' },
+ { slug: 'reference/slider' },
{ slug: 'reference/thumbnail' },
{ slug: 'reference/time' },
{ slug: 'reference/time-slider' },
+ { slug: 'reference/tooltip' },
{ slug: 'reference/volume-slider' },
],
},
diff --git a/site/src/utils/componentReferenceModel.js b/site/src/utils/componentReferenceModel.js
index 761d1907..c5dfe63d 100644
--- a/site/src/utils/componentReferenceModel.js
+++ b/site/src/utils/componentReferenceModel.js
@@ -82,7 +82,7 @@ function createSections(source, options) {
* The shared model is what prevents anchor drift: ids are computed once and
* reused verbatim by the renderer and the remark plugin.
*/
-export function createComponentReferenceModel(componentName, apiReference) {
+export function createComponentReferenceModel(componentName, apiReference, partOrder) {
if (!apiReference) {
return null;
}
@@ -90,7 +90,18 @@ export function createComponentReferenceModel(componentName, apiReference) {
const hasParts = Boolean(apiReference.parts && Object.keys(apiReference.parts).length > 0);
if (hasParts) {
- const parts = Object.entries(apiReference.parts).map(([partId, part]) => ({
+ let partEntries = Object.entries(apiReference.parts);
+
+ if (partOrder) {
+ const orderMap = new Map(partOrder.map((id, i) => [id, i]));
+ partEntries = partEntries.slice().sort((a, b) => {
+ const ai = orderMap.has(a[0]) ? orderMap.get(a[0]) : Number.MAX_SAFE_INTEGER;
+ const bi = orderMap.has(b[0]) ? orderMap.get(b[0]) : Number.MAX_SAFE_INTEGER;
+ return ai - bi;
+ });
+ }
+
+ const parts = partEntries.map(([partId, part]) => ({
id: partId,
name: part.name,
description: part.description,
diff --git a/site/src/utils/remarkConditionalHeadings.js b/site/src/utils/remarkConditionalHeadings.js
index 5d2a7e81..3f32f487 100644
--- a/site/src/utils/remarkConditionalHeadings.js
+++ b/site/src/utils/remarkConditionalHeadings.js
@@ -136,7 +136,10 @@ function injectComponentReferenceHeadings(node, headingsWithMetadata, reservedSl
const json = readComponentRefJson(componentName);
if (!json) return;
- const componentModel = createComponentReferenceModel(componentName, json);
+ const partOrderAttr = node.attributes?.find((a) => a.name === 'partOrder');
+ const partOrder = extractArrayValue(partOrderAttr);
+
+ const componentModel = createComponentReferenceModel(componentName, json, partOrder);
const componentHeadings = buildComponentReferenceTocHeadings(componentModel);
headingsWithMetadata.push(...componentHeadings);