+
-
+ {guide.introBullets.map((tip) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.diagramTitle ?? 'How it fits together'} +
+
+
-
+ {guide.diagramContext.bullets.map((b) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.whySection.title ?? 'Why use this'} +
+ {guide.whySection.problemProse && ( ++ {guide.whySection.problemProse} +
+ )} + {guide.whySection.problemBullets && + guide.whySection.problemBullets.length > 0 && ( +-
+ {guide.whySection.problemBullets.map((b) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.whySection.solutionProse} +
+ )} + {guide.whySection.solutionBullets && + guide.whySection.solutionBullets.length > 0 && ( +-
+ {guide.whySection.solutionBullets.map((b) => (
+
-
+
+
+
+ +
+ ))}
+
+
+ When to use this +
+-
+ {guide.whenToUse.map((tip) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.approaches.title ?? 'Choosing an approach'} +
+ {guide.approaches.description && ( ++ {guide.approaches.description} +
+ )} + {guide.approaches.bullets && ( +-
+ {guide.approaches.bullets.map((b) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.approaches.closing} +
+ )} ++ {section.title} +
+ + {section.description && ( +
+
+ Install with the shadcn CLI — the code is copied + into your project and you own it from day one. +
+-
+ {section.afterBullets.map((b) => (
+
-
+
+
+
+ +
+ ))}
+
+ {section.afterProse} +
+ )} + + {section.callout && ( ++ Installation +
++ The shadcn CLI copies every file in this recipe into + your project — you own the code after install and can + customize it freely. +
++ Concept +
++ A simplified walkthrough of the pattern — good for + understanding the shape before looking at the full + install. +
++ Source +
++ {guide?.sourceDescription ?? + 'A preview of the code that gets copied into your app.'} +
++ Overview +
+ + {guide.overview && ( ++ {guide.overview} +
+ )} + + {guide.whenToUse && ( ++ When to use this +
+-
+ {guide.whenToUse.map((tip) => (
+
-
+
+
+
+ +
+ ))}
+
+ {guide.approaches.title ?? 'Choosing an approach'} +
++ Installation +
++ The shadcn CLI copies every file in this recipe into your + project — you own the code after install and can customize + it freely. +
++ Concept +
++ A simplified walkthrough of the pattern — good for + understanding the shape before looking at the full + install. +
++ Source +
++ {guide?.sourceDescription ?? + 'A preview of the code that gets copied into your app.'} +
++ How it works +
+-
+ {guide.howItWorks.map((step, i) => (
+
-
+
+ {i + 1}
+
+
+
+ +
+ ))}
+
+
+ {guide.adaptingTitle ?? 'Adapting this'} +
+ {guide.adaptingIntro && ( ++ {guide.adaptingIntro} +
+ )} +-
+ {guide.adapting.map((tip) => (
+
-
+
+
+
+ +
+ ))}
+
+ Key APIs +
+-
+ {guide.keyApis.map((api) => (
+
-
+
+ {api.label}
+
+ +
+ ))}
+