@wordup-md/nuxt-layer-shadcn-unocss 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/.cursor/rules/active-context-rule.mdc +8 -0
  2. package/.cursor/rules/memory-bank-overview.mdc +17 -0
  3. package/.cursor/rules/product-context-rule.mdc +8 -0
  4. package/.cursor/rules/progress-rule.mdc +8 -0
  5. package/.cursor/rules/projectbrief-rule.mdc +8 -0
  6. package/.cursor/rules/system-patterns-rule.mdc +8 -0
  7. package/.cursor/rules/tech-context-rule.mdc +8 -0
  8. package/.cursorrules +52 -0
  9. package/.editorconfig +12 -0
  10. package/.nuxtrc +1 -0
  11. package/.playground/app.config.ts +189 -0
  12. package/.playground/assets/style.css +15 -0
  13. package/.playground/components/content/MdcExample.vue +81 -0
  14. package/.playground/components/content/MdcReplay.vue +319 -0
  15. package/.playground/content/1.getting-started/1.introduction.md +8 -0
  16. package/.playground/content/1.getting-started/2.writing/1.markdown.md +56 -0
  17. package/.playground/content/1.getting-started/2.writing/2.pages.md +177 -0
  18. package/.playground/content/1.getting-started/2.writing/3.folders.md +56 -0
  19. package/.playground/content/1.getting-started/2.writing/_dir.yml +3 -0
  20. package/.playground/content/1.getting-started/_dir.yml +3 -0
  21. package/.playground/content/2.content-elements/1.text-formatting.md +60 -0
  22. package/.playground/content/2.content-elements/10.horizontal-rule.md +25 -0
  23. package/.playground/content/2.content-elements/11.tables.md +25 -0
  24. package/.playground/content/2.content-elements/12.overview.md +93 -0
  25. package/.playground/content/2.content-elements/13.text-components.md +36 -0
  26. package/.playground/content/2.content-elements/2.headings.md +32 -0
  27. package/.playground/content/2.content-elements/3.paragraphs.md +39 -0
  28. package/.playground/content/2.content-elements/4.lists.md +37 -0
  29. package/.playground/content/2.content-elements/5.links.md +17 -0
  30. package/.playground/content/2.content-elements/6.images.md +17 -0
  31. package/.playground/content/2.content-elements/7.blockquotes.md +17 -0
  32. package/.playground/content/2.content-elements/8.code-blocks.md +141 -0
  33. package/.playground/content/2.content-elements/9.inline-code.md +21 -0
  34. package/.playground/content/2.content-elements/_dir.yml +3 -0
  35. package/.playground/content/2.content-elements/index.md +8 -0
  36. package/.playground/content/3.components/1.index.md +187 -0
  37. package/.playground/content/3.components/2.docs/_dir.yml +3 -0
  38. package/.playground/content/3.components/2.docs/alert.md +152 -0
  39. package/.playground/content/3.components/2.docs/badge.md +131 -0
  40. package/.playground/content/3.components/2.docs/button-link.md +53 -0
  41. package/.playground/content/3.components/2.docs/callout.md +16 -0
  42. package/.playground/content/3.components/2.docs/code-group.md +77 -0
  43. package/.playground/content/3.components/2.docs/code-snippet.md +129 -0
  44. package/.playground/content/3.components/2.docs/field-group.md +62 -0
  45. package/.playground/content/3.components/2.docs/field.md +39 -0
  46. package/.playground/content/3.components/2.docs/file-tree.md +144 -0
  47. package/.playground/content/3.components/2.docs/icon.md +94 -0
  48. package/.playground/content/3.components/2.docs/pm.md +67 -0
  49. package/.playground/content/3.components/2.docs/read-more.md +44 -0
  50. package/.playground/content/3.components/2.docs/shortcut.md +36 -0
  51. package/.playground/content/3.components/2.docs/stack.md +81 -0
  52. package/.playground/content/3.components/2.docs/steps.md +148 -0
  53. package/.playground/content/3.components/2.docs/tabs.md +375 -0
  54. package/.playground/content/3.components/3.page/_dir.yml +2 -0
  55. package/.playground/content/3.components/3.page/accordion.md +74 -0
  56. package/.playground/content/3.components/3.page/card-group.md +115 -0
  57. package/.playground/content/3.components/3.page/card.md +142 -0
  58. package/.playground/content/3.components/3.page/collapsible.md +61 -0
  59. package/.playground/content/3.components/3.page/hero-alt.md +118 -0
  60. package/.playground/content/3.components/3.page/hero.md +60 -0
  61. package/.playground/content/3.components/3.page/team-card.md +82 -0
  62. package/.playground/content/3.components/_dir.yml +2 -0
  63. package/.playground/content/4.development/1.configuration/1.overview.md +297 -0
  64. package/.playground/content/4.development/1.configuration/2.nuxt-content.md +105 -0
  65. package/.playground/content/4.development/1.configuration/3.og-image.md +86 -0
  66. package/.playground/content/4.development/1.configuration/4.edit-link.md +63 -0
  67. package/.playground/content/4.development/1.configuration/5.banner.md +52 -0
  68. package/.playground/content/4.development/1.configuration/6.carbon-ads.md +65 -0
  69. package/.playground/content/4.development/1.configuration/7.umami.md +41 -0
  70. package/.playground/content/4.development/1.configuration/_dir.yml +3 -0
  71. package/.playground/content/4.development/2.advanced/1.override.md +49 -0
  72. package/.playground/content/4.development/2.advanced/2.math.md +89 -0
  73. package/.playground/content/4.development/2.advanced/_dir.yml +3 -0
  74. package/.playground/content/4.development/3.themes.md +9 -0
  75. package/.playground/content/4.development/4.composables.md +38 -0
  76. package/.playground/content/4.development/5.installation.md +36 -0
  77. package/.playground/content/4.development/_dir.yml +3 -0
  78. package/.playground/content/_menu-footer.md +5 -0
  79. package/.playground/content/index.md +67 -0
  80. package/.playground/content/test-card.md +187 -0
  81. package/.playground/content/test.md +88 -0
  82. package/.playground/content/test2.md +12 -0
  83. package/.playground/content/test3.md +187 -0
  84. package/.playground/nuxt.config.ts +52 -0
  85. package/.playground/public/banner-preview.png +0 -0
  86. package/.playground/public/favicon.ico +0 -0
  87. package/.playground/public/front-matter-showcase/authors.png +0 -0
  88. package/.playground/public/front-matter-showcase/badges.png +0 -0
  89. package/.playground/public/front-matter-showcase/nav-badges.png +0 -0
  90. package/.playground/public/hero.png +0 -0
  91. package/.playground/public/logo-dark.svg +12 -0
  92. package/.playground/public/logo.svg +12 -0
  93. package/.playground/public/og-nuxt-seo.png +0 -0
  94. package/.playground/public/og-nuxt.png +0 -0
  95. package/.playground/public/og-shadcn-docs-dark.png +0 -0
  96. package/.playground/public/og-shadcn-docs.png +0 -0
  97. package/.playground/public/sidebar-default.png +0 -0
  98. package/.playground/public/sidebar-group.png +0 -0
  99. package/.playground/public/sidebar-tree.png +0 -0
  100. package/.playground/uno.config.ts +16 -0
  101. package/README.md +93 -0
  102. package/app.vue +59 -0
  103. package/assets/css/a11y.css +48 -0
  104. package/assets/css/mdc-editor.css +91 -0
  105. package/components/A11yModeToggle.vue +23 -0
  106. package/components/DarkModeToggle.vue +26 -0
  107. package/components/LinkIcon.vue +32 -0
  108. package/components/OgImage/ShadcnDocs.vue +55 -0
  109. package/components/ThemeCustomizer.vue +156 -0
  110. package/components/ThemePopover.vue +27 -0
  111. package/components/content/Accordion.vue +18 -0
  112. package/components/content/AccordionItem.vue +32 -0
  113. package/components/content/Alert.vue +100 -0
  114. package/components/content/Badge.vue +52 -0
  115. package/components/content/ButtonLink.vue +38 -0
  116. package/components/content/Callout.vue +17 -0
  117. package/components/content/Card.vue +173 -0
  118. package/components/content/CardGroup.vue +38 -0
  119. package/components/content/CodeCopy.vue +52 -0
  120. package/components/content/CodeGroup._vue +27 -0
  121. package/components/content/CodeSnippet._vue +78 -0
  122. package/components/content/Collapsible.vue +80 -0
  123. package/components/content/Field.vue +53 -0
  124. package/components/content/FieldGroup.vue +5 -0
  125. package/components/content/FileTree.vue +110 -0
  126. package/components/content/FileTreeItem.vue +64 -0
  127. package/components/content/FileTreeRoot.vue +27 -0
  128. package/components/content/Hero.vue +154 -0
  129. package/components/content/HeroAlt.vue +116 -0
  130. package/components/content/Icon.vue +69 -0
  131. package/components/content/Kbd.vue +20 -0
  132. package/components/content/PmInstall.vue +35 -0
  133. package/components/content/PmRun.vue +31 -0
  134. package/components/content/PmX.vue +31 -0
  135. package/components/content/ProseA.vue +21 -0
  136. package/components/content/ProseBlockquote.vue +5 -0
  137. package/components/content/ProseCode.vue +121 -0
  138. package/components/content/ProseCodeInline.vue +24 -0
  139. package/components/content/ProseEm.vue +5 -0
  140. package/components/content/ProseH1.vue +27 -0
  141. package/components/content/ProseH2.vue +22 -0
  142. package/components/content/ProseH3.vue +21 -0
  143. package/components/content/ProseH4.vue +21 -0
  144. package/components/content/ProseH5.vue +21 -0
  145. package/components/content/ProseH6.vue +21 -0
  146. package/components/content/ProseHr.vue +3 -0
  147. package/components/content/ProseImg.vue +42 -0
  148. package/components/content/ProseLi.vue +5 -0
  149. package/components/content/ProseOl.vue +5 -0
  150. package/components/content/ProseP.vue +5 -0
  151. package/components/content/ProsePre.vue +56 -0
  152. package/components/content/ProseSection.vue +27 -0
  153. package/components/content/ProseStrong.vue +5 -0
  154. package/components/content/ProseTable.vue +7 -0
  155. package/components/content/ProseTbody.vue +5 -0
  156. package/components/content/ProseTd.vue +5 -0
  157. package/components/content/ProseTh.vue +5 -0
  158. package/components/content/ProseThead.vue +5 -0
  159. package/components/content/ProseTr.vue +5 -0
  160. package/components/content/ProseUl.vue +5 -0
  161. package/components/content/ReadMore.vue +41 -0
  162. package/components/content/Shortcut.vue +20 -0
  163. package/components/content/Stack.vue +17 -0
  164. package/components/content/Steps.vue +23 -0
  165. package/components/content/Tabs.vue +52 -0
  166. package/components/content/TabsInner.vue +263 -0
  167. package/components/content/TeamCard.vue +52 -0
  168. package/components/content/TeamCardGroup.vue +5 -0
  169. package/components/content/global/AlertEditor.vue +58 -0
  170. package/components/content/global/BadgeEditor.vue +56 -0
  171. package/components/content/global/BrEditor.vue +3 -0
  172. package/components/content/global/CardEditor.vue +142 -0
  173. package/components/content/global/CardGroupEditor.vue +50 -0
  174. package/components/content/global/CodeGroup.vue +13 -0
  175. package/components/content/global/CodeGroupEditor.vue +50 -0
  176. package/components/content/global/DivEditor.vue +22 -0
  177. package/components/content/global/FieldEditor.vue +38 -0
  178. package/components/content/global/FieldGroupEditor.vue +24 -0
  179. package/components/content/global/HeroEditor.vue +67 -0
  180. package/components/content/global/ProseSectionEditor.vue +180 -0
  181. package/components/content/global/ReadMoreEditor.vue +70 -0
  182. package/components/content/global/SectionEditor.vue +22 -0
  183. package/components/content/global/StackEditor.vue +35 -0
  184. package/components/content/global/StepsEditor.vue +55 -0
  185. package/components/content/global/Tabs._vue +97 -0
  186. package/components/content/global/TabsEditor.vue +38 -0
  187. package/components/layout/Aside.vue +83 -0
  188. package/components/layout/AsideTree.vue +25 -0
  189. package/components/layout/AsideTreeItem.vue +86 -0
  190. package/components/layout/AsideTreeItemButton.vue +32 -0
  191. package/components/layout/Banner.vue +77 -0
  192. package/components/layout/Breadcrumb.vue +34 -0
  193. package/components/layout/DocsFooter.vue +6 -0
  194. package/components/layout/EditLink.vue +23 -0
  195. package/components/layout/Footer.vue +80 -0
  196. package/components/layout/FooterItem.vue +50 -0
  197. package/components/layout/FooterSubmenuItem.vue +39 -0
  198. package/components/layout/Header/Logo.vue +30 -0
  199. package/components/layout/Header/MenuItem.vue +83 -0
  200. package/components/layout/Header/Nav.vue +112 -0
  201. package/components/layout/Header/NavMobile.vue +14 -0
  202. package/components/layout/Header/NavMobileItem.vue +79 -0
  203. package/components/layout/Header/SubmenuItem.vue +39 -0
  204. package/components/layout/Header.vue +160 -0
  205. package/components/layout/LangSwitcher.vue +90 -0
  206. package/components/layout/MobileNav.vue +44 -0
  207. package/components/layout/PrevNext.vue +24 -0
  208. package/components/layout/PrevNextButton.vue +50 -0
  209. package/components/layout/SearchButton.vue +46 -0
  210. package/components/layout/SearchDialog.vue +217 -0
  211. package/components/layout/Title.vue +98 -0
  212. package/components/layout/Toc.vue +99 -0
  213. package/components/layout/TocTree.vue +42 -0
  214. package/components/ui/accordion/Accordion.vue +19 -0
  215. package/components/ui/accordion/AccordionContent.vue +24 -0
  216. package/components/ui/accordion/AccordionItem.vue +24 -0
  217. package/components/ui/accordion/AccordionTrigger.vue +39 -0
  218. package/components/ui/accordion/index.ts +4 -0
  219. package/components/ui/alert/Alert.vue +19 -0
  220. package/components/ui/alert/AlertDescription.vue +14 -0
  221. package/components/ui/alert/AlertTitle.vue +14 -0
  222. package/components/ui/alert/index.ts +23 -0
  223. package/components/ui/avatar/Avatar.vue +25 -0
  224. package/components/ui/avatar/AvatarFallback.vue +11 -0
  225. package/components/ui/avatar/AvatarImage.vue +12 -0
  226. package/components/ui/avatar/index.ts +24 -0
  227. package/components/ui/badge/Badge.vue +17 -0
  228. package/components/ui/badge/index.ts +71 -0
  229. package/components/ui/breadcrumb/Breadcrumb.vue +16 -0
  230. package/components/ui/breadcrumb/BreadcrumbItem.vue +16 -0
  231. package/components/ui/breadcrumb/BreadcrumbLink.vue +23 -0
  232. package/components/ui/breadcrumb/BreadcrumbList.vue +16 -0
  233. package/components/ui/breadcrumb/BreadcrumbPage.vue +19 -0
  234. package/components/ui/breadcrumb/BreadcrumbSeparator.vue +23 -0
  235. package/components/ui/breadcrumb/index.ts +6 -0
  236. package/components/ui/button/Button.vue +29 -0
  237. package/components/ui/button/index.ts +35 -0
  238. package/components/ui/card/Card.vue +21 -0
  239. package/components/ui/card/CardContent.vue +14 -0
  240. package/components/ui/card/CardDescription.vue +14 -0
  241. package/components/ui/card/CardFooter.vue +14 -0
  242. package/components/ui/card/CardHeader.vue +14 -0
  243. package/components/ui/card/CardTitle.vue +18 -0
  244. package/components/ui/card/index.ts +6 -0
  245. package/components/ui/collapsible/Collapsible.vue +18 -0
  246. package/components/ui/collapsible/CollapsibleContent.vue +14 -0
  247. package/components/ui/collapsible/CollapsibleTrigger.vue +11 -0
  248. package/components/ui/collapsible/index.ts +3 -0
  249. package/components/ui/command/Command.vue +89 -0
  250. package/components/ui/command/CommandEmpty.vue +30 -0
  251. package/components/ui/command/CommandGroup.vue +50 -0
  252. package/components/ui/command/CommandInput.vue +44 -0
  253. package/components/ui/command/CommandInputOnly.vue +50 -0
  254. package/components/ui/command/CommandItem.vue +79 -0
  255. package/components/ui/command/CommandList.vue +28 -0
  256. package/components/ui/command/CommandSeparator.vue +24 -0
  257. package/components/ui/command/index.ts +24 -0
  258. package/components/ui/dialog/Dialog.vue +14 -0
  259. package/components/ui/dialog/DialogClose.vue +11 -0
  260. package/components/ui/dialog/DialogContent.vue +52 -0
  261. package/components/ui/dialog/DialogDescription.vue +24 -0
  262. package/components/ui/dialog/DialogFooter.vue +19 -0
  263. package/components/ui/dialog/DialogHeader.vue +16 -0
  264. package/components/ui/dialog/DialogScrollContent.vue +61 -0
  265. package/components/ui/dialog/DialogTitle.vue +29 -0
  266. package/components/ui/dialog/DialogTrigger.vue +11 -0
  267. package/components/ui/dialog/index.ts +9 -0
  268. package/components/ui/input/Input.vue +27 -0
  269. package/components/ui/input/index.ts +1 -0
  270. package/components/ui/label/Label.vue +27 -0
  271. package/components/ui/label/index.ts +1 -0
  272. package/components/ui/navigation-menu/NavigationMenu.vue +33 -0
  273. package/components/ui/navigation-menu/NavigationMenuContent.vue +34 -0
  274. package/components/ui/navigation-menu/NavigationMenuIndicator.vue +24 -0
  275. package/components/ui/navigation-menu/NavigationMenuItem.vue +11 -0
  276. package/components/ui/navigation-menu/NavigationMenuLink.vue +19 -0
  277. package/components/ui/navigation-menu/NavigationMenuList.vue +33 -0
  278. package/components/ui/navigation-menu/NavigationMenuTrigger.vue +34 -0
  279. package/components/ui/navigation-menu/NavigationMenuViewport.vue +33 -0
  280. package/components/ui/navigation-menu/index.ts +14 -0
  281. package/components/ui/popover/Popover.vue +15 -0
  282. package/components/ui/popover/PopoverContent.vue +49 -0
  283. package/components/ui/popover/PopoverTrigger.vue +11 -0
  284. package/components/ui/popover/index.ts +4 -0
  285. package/components/ui/scroll-area/ScrollArea.vue +32 -0
  286. package/components/ui/scroll-area/ScrollBar.vue +41 -0
  287. package/components/ui/scroll-area/index.ts +2 -0
  288. package/components/ui/separator/Separator.vue +20 -0
  289. package/components/ui/separator/index.ts +1 -0
  290. package/components/ui/sheet/Sheet.vue +14 -0
  291. package/components/ui/sheet/SheetClose.vue +11 -0
  292. package/components/ui/sheet/SheetContent.vue +58 -0
  293. package/components/ui/sheet/SheetDescription.vue +22 -0
  294. package/components/ui/sheet/SheetFooter.vue +19 -0
  295. package/components/ui/sheet/SheetHeader.vue +16 -0
  296. package/components/ui/sheet/SheetTitle.vue +22 -0
  297. package/components/ui/sheet/SheetTrigger.vue +11 -0
  298. package/components/ui/sheet/index.ts +31 -0
  299. package/components/ui/slider/Slider.vue +36 -0
  300. package/components/ui/slider/index.ts +1 -0
  301. package/components/ui/tabs/Tabs.vue +15 -0
  302. package/components/ui/tabs/TabsContent.vue +22 -0
  303. package/components/ui/tabs/TabsList.vue +25 -0
  304. package/components/ui/tabs/TabsTrigger.vue +27 -0
  305. package/components/ui/tabs/index.ts +4 -0
  306. package/components/ui/textarea/Textarea.vue +27 -0
  307. package/components/ui/textarea/index.ts +1 -0
  308. package/components/ui/toast/Toast.vue +28 -0
  309. package/components/ui/toast/ToastAction.vue +22 -0
  310. package/components/ui/toast/ToastClose.vue +27 -0
  311. package/components/ui/toast/ToastDescription.vue +22 -0
  312. package/components/ui/toast/ToastProvider.vue +11 -0
  313. package/components/ui/toast/ToastTitle.vue +22 -0
  314. package/components/ui/toast/ToastViewport.vue +20 -0
  315. package/components/ui/toast/Toaster.vue +34 -0
  316. package/components/ui/toast/index.ts +38 -0
  317. package/components/ui/toast/use-toast.ts +165 -0
  318. package/components.json +18 -0
  319. package/composables/useBreadcrumb.ts +47 -0
  320. package/composables/useCollapsedMap.ts +3 -0
  321. package/composables/useConfig.ts +227 -0
  322. package/composables/useEditLink.ts +27 -0
  323. package/composables/useI18nDocs.ts +114 -0
  324. package/composables/useMdcMenu.ts +204 -0
  325. package/composables/usePm.ts +58 -0
  326. package/composables/useScrollspy.ts +51 -0
  327. package/composables/useThemes.ts +46 -0
  328. package/composables/useToast.ts +1 -0
  329. package/content/index.md +45 -0
  330. package/eslint.config.js +3 -0
  331. package/i18n/i18n.config.ts +414 -0
  332. package/index.d.ts +610 -0
  333. package/layouts/blank.vue +5 -0
  334. package/layouts/default.vue +9 -0
  335. package/layouts/editorial.vue +83 -0
  336. package/lib/registry/themes.ts +636 -0
  337. package/lib/uno-preset.ts +143 -0
  338. package/memory-bank/activeContext.md +17 -0
  339. package/memory-bank/productContext.md +21 -0
  340. package/memory-bank/progress.md +16 -0
  341. package/memory-bank/projectbrief.md +20 -0
  342. package/memory-bank/systemPatterns.md +25 -0
  343. package/memory-bank/techContext.md +29 -0
  344. package/modules/inject-css.ts +40 -0
  345. package/nuxt.config.ts +124 -0
  346. package/package.json +71 -0
  347. package/pages/[...slug].vue +109 -0
  348. package/pages/admin/[...slug].vue +145 -0
  349. package/pages/index.vue +24 -0
  350. package/plugins/injectCssHmr.ts +26 -0
  351. package/plugins/wordup.ts +130 -0
  352. package/public/content-doc.json +792 -0
  353. package/public/iconesjs.svg +4 -0
  354. package/scripts/buildContentDoc-cli.ts +8 -0
  355. package/scripts/buildContentDoc.ts +165 -0
  356. package/tailwind.config.js +1 -0
  357. package/tsconfig.json +3 -0
  358. package/uno.config.mjs +58 -0
  359. package/utils/index.ts +12 -0
@@ -0,0 +1,792 @@
1
+ [
2
+ {
3
+ "title": "Getting started",
4
+ "children": [
5
+ {
6
+ "title": "Introduction",
7
+ "_id": "content:1.getting-started:1.introduction.md",
8
+ "_path": "getting-started/introduction",
9
+ "content": "\n\n:card-group{data=\"/getting-started/writing\"}\n",
10
+ "description": "Documentation about how to write and configure the website.",
11
+ "icon": "lucide:info",
12
+ "toc": false
13
+ },
14
+ {
15
+ "title": "Writing",
16
+ "children": [
17
+ {
18
+ "title": "Markdown",
19
+ "_id": "content:1.getting-started:2.writing:1.markdown.md",
20
+ "_path": "getting-started/writing/markdown",
21
+ "content": "\n\nMarkdown is a lightweight markup language designed to provide a simple and readable syntax with minimal markup.\n\nIts goal is to allow users to write using an easy-to-read and easy-to-write plain text that can be easily converted to structurally valid HTML or other rich text formats, focusing on content over formatting.\n\nThis minimalism makes Markdown ideal for documentation, web writing, collaborative editing, bots and LLMs processing, AI content generation...\n\n::div{.w-full.flex.items-center.gap-2.mt-5}\n:div[:robot:]{.text-3xl.mt--2}\n\n:div[:heart:]{.text-xl}\n\n:icon{name=\"vscode-icons:file-type-markdown\" .text-4xl}\n::\n\n::alert\n---\nto: /content-elements\nicon: lucide:box\n---\nLearn more about **markdown syntax**, and how to use it.\n::\n\n::alert\n---\nto: https://daringfireball.net/projects/markdown/\nicon: i-pajamas:markdown-mark-solid\n---\nOpen the original **Markdown specification**.\n::\n\n## MarkDown Components (MDC)\n\nMarkDown Components (MDC) supercharges regular Markdown to allow writing interactive components.\n\n::alert\n---\nto: /components\nicon: lucide:box\n---\nLearn more about **MDC components**, and how to use them.\n::\n\n::alert\n---\nto: https://content.nuxt.com/usage/markdown\ntarget: _blank\nicon: lucide:arrow-big-down\n---\nRead the detailed MDC usage guide in the **Nuxt Content** Docs.\n::\n",
22
+ "description": "How to write content with Markdown syntax",
23
+ "icon": "i-pajamas:markdown-mark-solid"
24
+ },
25
+ {
26
+ "title": "Pages",
27
+ "_id": "content:1.getting-started:2.writing:2.pages.md",
28
+ "_path": "getting-started/writing/pages",
29
+ "content": "\n\n## `^-` Frontmatter\n\nFront-matter is a convention of Markdown-based CMS to provide metadata to documents, like description or title. Remark MDC uses the YAML syntax with `key: value` pairs.\n\nTo define frontmatter, start your document with `---\\n---` section and put your desired data in YAML format within this section.\n\n```md\n---\ntitle: Title of the page\ndescription: meta description of the page\n---\n\n<!-- Content of the page -->\n```\n\nYou can reuse the same frontmatter attributes in the content or in the components props.\\\nAdd `:` before the key to bind the frontmatter value to the component.\\\nOr use the `{{ $doc.key }}` syntax to bind the value of the frontmatter.\n\n::stack\n ::div{class=\"p-4\"}\n This is the title from the frontmatter: **Title of the page**.\n\n ::alert\n ---\n :type: key\n ---\n With the property `:type: key`, it displays a **{{ $doc.key }} alert**.\n ::\n\n Or inline:\n\n :alert[Title of the page]{:type=\"key\" :icon=\"icon\"}\n ::\n\n ```mdc\n ---\n title: Title of the page\n icon: lucide:file\n key: example\n ---\n\n This is the title from the frontmatter: **{{ $doc.title }}**.\n\n ::alert\n ---\n :type: key\n ---\n With the property `:type: key`, it displays a **{{ $doc.key }} alert**.\n ::\n\n Or inline:\n\n :alert[{{ $doc.title }}]{:type=\"key\" :icon=\"icon\"}\n ```\n::\n\n## Available Frontmatter Attributes\n\n```md\n---\ntitle: Front Matter\ndescription: Front matter attributes used in shadcn-docs-nuxt.\nicon: lucide:book-type\n\nnavTruncate: false\nnavBadges:\n - value: New\n type: lime\n\nbadges:\n - value: Docus\n to: https://docus.dev/api/components#alert\n target: _blank\n - value: Source\n icon: lucide:code\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Alert.vue\n target: _blank\n\nauthors:\n - name: Tony Zhang\n username: ZTL-UwU\n avatar: https://www.github.com/ZTL-UwU.png\n to: https://github.com/ZTL-UwU\n target: _blank\n---\n\n<!-- Content of the page -->\n```\n\n## Showcases\n\n::tabs{variant=\"line\"}\n::stack{label=\"badges\"}\n![badges-showcase](/front-matter-showcase/badges.png){class=\"w-full\"}\n```yml\nbadges:\n - value: 0.8.10\n - value: Source\n icon: lucide:code\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/FileTree.vue\n target: _blank\n```\n::\n\n::stack{label=\"authors\"}\n![authors-showcase](/front-matter-showcase/authors.png){class=\"w-full\"}\n```yml\nauthors:\n - name: Tony Zhang\n username: ZTL-UwU\n avatar: https://www.github.com/ZTL-UwU.png\n to: https://github.com/ZTL-UwU\n target: _blank\n```\n::\n\n::stack{label=\"navBadges\"}\n![nav-badges-showcase](/front-matter-showcase/nav-badges.png){class=\"w-full\"}\n```yml\nnavBadges:\n - value: New\n type: lime\n```\n::\n::\n\n## Parameters\n\n::field-group\n ::field{name=\"title\" type=\"string\"}\n Title of the page. Defaults to the filename.\n ::\n ::field{name=\"description\" type=\"string\"}\n Description of the page. Defaults to the first `<p>`{lang=\"html\"} of the page.\n ::\n ::field{name=\"navigation\" type=\"boolean\" default-value=\"true\"}\n Define if the page is included in the sidebar. Set it to `false` in `index.md`.\n ::\n ::field{name=\"icon\" type=\"string\"}\n The icon shown in the sidebar for the page.\n ::\n ::field{name=\"navBadges\" type=\"[]\"}\n A list of badges appended to the end of the sidebar link.\n ::\n ::field{name=\"navTruncate\" type=\"boolean\" default-value=\"true\"}\n Whether to truncate the sidebar title.\n ::\n ::field{name=\"badges\" type=\"[]\"}\n A list of badges shown at the bottom of page title.\n ::\n ::field{name=\"authors\" type=\"[]\"}\n A list of authors shown at the bottom of page title.\n ::\n ::field{name=\"toc\" type=\"boolean\" default-value=\"true\"}\n Whether to show the toc section for this page.\n ::\n ::field{name=\"aside\" type=\"boolean\" default-value=\"true\"}\n Whether to show the aside section for this page.\n ::\n ::field{name=\"editLink\" type=\"boolean\" default-value=\"true\"}\n Whether to show the edit link for this page.\n ::\n ::field{name=\"prevNext\" type=\"boolean\" default-value=\"true\"}\n Whether to show the previous & next page buttons.\n ::\n ::field{name=\"breadcrumb\" type=\"boolean\" default-value=\"true\"}\n Whether to show the breadcrumb.\n ::\n::\n",
30
+ "description": "Front matter attributes.",
31
+ "icon": "lucide:file",
32
+ "key": "example"
33
+ },
34
+ {
35
+ "title": "Folders",
36
+ "_id": "content:1.getting-started:2.writing:3.folders.md",
37
+ "_path": "getting-started/writing/folders",
38
+ "content": "\n\nYou can customize folders by creating a `_dir.yml` file in the folder.\n\n::code-group\n```yml [_dir.yml]\ntitle: Folder\nicon: lucide:folder\nnavigation.redirect: /frameworks/vue\nnavBadges:\n - value: New\n type: lime\nsidebar:\n style: group\ncollapse: false\n```\n```[Directory structure]\ncontent/\n 1.frameworks/\n _dir.yml\n 1.vue.md\n 2.nuxt.md\n```\n::\n\n## Parameters\n\n::field-group\n ::field{name=\"title\" type=\"string\"}\n Title of the page. Defaults to the filename.\n ::\n ::field{name=\"icon\" type=\"string\"}\n The icon shown in the sidebar for the page.\n ::\n ::field{name=\"navBadges\" type=\"[]\"}\n A list of badges appended to the end of the sidebar link.\n ::\n ::field{name=\"collapse\" type=\"boolean\"}\n Whether the folder should be collapsed by default.\n ::\n ::field{name=\"sidebar\" type=\"object\"}\n ::collapsible{title=\"Details\" default-open}\n ::field{name=\"style\" type=\"'default' | 'tree' | 'group'\" default-value=\"default\"}\n The style used for the folder. The default value can be configured in the [appConfig](/development/configuration/overview#aside).\n\n | `default` | `tree` | `group` |\n | :-------------------------------------------------: | :-------------------------------------------: | :---------------------------------------------: |\n | ![sidebar-default](/sidebar-default.png){width=400} | ![sidebar-tree](/sidebar-tree.png){width=400} | ![sidebar-group](/sidebar-group.png){width=400} |\n ::\n ::\n ::\n::\n",
39
+ "icon": "lucide:folder",
40
+ "description": "Configure directory nodes via _dir.yml files."
41
+ }
42
+ ],
43
+ "icon": "lucide:edit",
44
+ "navigation.redirect": "/getting-started/writing/markdown",
45
+ "_path": "getting-started/writing"
46
+ }
47
+ ],
48
+ "icon": "lucide:rocket",
49
+ "navigation.redirect": "/getting-started/introduction",
50
+ "_path": "getting-started"
51
+ },
52
+ {
53
+ "title": "Basic Content Elements",
54
+ "children": [
55
+ {
56
+ "title": "Text Formatting",
57
+ "_id": "content:2.content-elements:1.text-formatting.md",
58
+ "_path": "content-elements/text-formatting",
59
+ "content": "\n\n## Usage\n\n### Strong\n\nWrap the text with double asterisks <kbd>\\*</kbd><kbd>\\*</kbd> to make text bold.\\\nOr (less used) use double underscores <kbd>\\_</kbd><kbd>\\_</kbd>.\n\n::stack\n :::div{.p-4}\n A strong **word**.\n\n Another __strong__ word (less used).\n :::\n\n```md\nA strong **word**.\n\nAnother __strong__ word (less used).\n```\n::\n\n### Italic\n\nWrap the text with single underscores <kbd>_</kbd> to make text italic.\\\nOr (less used) use single asterisks <kbd>*</kbd>.\n\n::stack\n :::div{.p-4}\n An italic _word_.\n \n Another *italic* word (less used).\n :::\n\n```md\nAn italic _word_.\n \nAnother *italic* word (less used).\n```\n:: \n\n\n## Tips\n\nYou can also use this syntax while writing content in `edition mode`.\n\n::mdc-replay\n---\ncontent: |\n A <Xmark>**</Xmark>strong<Xmark>**</Xmark> word.\n\n An <Xmark>_</Xmark>italic<Xmark>_</Xmark> word.\ndefault-position: 4\n---\n::\n",
60
+ "description": "Text styling with bold and italic formatting.",
61
+ "icon": "lucide:bold"
62
+ },
63
+ {
64
+ "title": "Horizontal Rule",
65
+ "_id": "content:2.content-elements:10.horizontal-rule.md",
66
+ "_path": "content-elements/horizontal-rule",
67
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n Before\n \n ---\n \n After\n :::\n\n```md\nBefore\n\n---\n\nAfter\n```\n:: \n",
68
+ "description": "Horizontal line separator element.",
69
+ "icon": "lucide:minus"
70
+ },
71
+ {
72
+ "title": "Tables",
73
+ "_id": "content:2.content-elements:11.tables.md",
74
+ "_path": "content-elements/tables",
75
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n | Key | Type | Description |\n | --- | --------- | ------------------------------------------- |\n | 1 | Wonderful | Table with `some long code snippet example` |\n | 2 | Wonderful | Data |\n | 3 | Wonderful | Website |\n :::\n\n```md\n| Key | Type | Description |\n| --- | --------- | ------------------------------------------- |\n| 1 | Wonderful | Table with `some long code snippet example` |\n| 2 | Wonderful | Data |\n| 3 | Wonderful | Website |\n```\n:: \n",
76
+ "description": "HTML table elements with headers and data cells.",
77
+ "icon": "lucide:table"
78
+ },
79
+ {
80
+ "title": "Overview",
81
+ "_id": "content:2.content-elements:12.overview.md",
82
+ "_path": "content-elements/overview",
83
+ "content": "\n\n## Example\n\n::stack\n :::div{.p-8}\n # The Joke Tax Chronicles\n \n Once upon a time, in a far-off land, there was a very lazy king who spent all day lounging on his throne. One day, his advisors came to him with a problem: the kingdom was running out of money.\n \n ## The King's Plan\n \n The king thought long and hard, and finally came up with [a brilliant plan](#): he would tax the jokes in the kingdom.\n \n > \"After all,\" he said, \"everyone enjoys a good joke, so it's only fair that they should pay for the privilege.\"\n \n ### The Joke Tax\n \n The king's subjects were not amused. They grumbled and complained, but the king was firm:\n \n - 1st level of puns: 5 gold coins\n - 2nd level of jokes: 10 gold coins\n - 3rd level of one-liners : 20 gold coins\n \n As a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester.\n \n ### Jokester's Revolt\n \n Jokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.\n \n And then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop.\n \n ### The People's Rebellion\n \n The people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.\n \n | King's Treasury | People's happiness |\n | :-------------- | :----------------- |\n | Empty | Overflowing |\n | Modest | Satisfied |\n | Full | Ecstatic |\n \n The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.\n \n The moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.\n :::\n\n```md height=400\n# The Joke Tax Chronicles\n\nOnce upon a time, in a far-off land, there was a very lazy king who spent all day lounging on his throne. One day, his advisors came to him with a problem: the kingdom was running out of money.\n\n## The King's Plan\n\nThe king thought long and hard, and finally came up with [a brilliant plan](#): he would tax the jokes in the kingdom.\n\n> \"After all,\" he said, \"everyone enjoys a good joke, so it's only fair that they should pay for the privilege.\"\n\n### The Joke Tax\n\nThe king's subjects were not amused. They grumbled and complained, but the king was firm:\n\n- 1st level of puns: 5 gold coins\n- 2nd level of jokes: 10 gold coins\n- 3rd level of one-liners : 20 gold coins\n\nAs a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester.\n\n### Jokester's Revolt\n\nJokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.\n\nAnd then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop.\n\n### The People's Rebellion\n\nThe people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.\n\n| King's Treasury | People's happiness |\n| :-------------- | :----------------- |\n| Empty | Overflowing |\n| Modest | Satisfied |\n| Full | Ecstatic |\n\nThe king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.\n\nThe moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.\n```\n:: \n",
84
+ "description": "A comprehensive example showing multiple prose elements together.",
85
+ "icon": "lucide:layout"
86
+ },
87
+ {
88
+ "title": "Text Components",
89
+ "_id": "content:2.content-elements:13.text-components.md",
90
+ "_path": "content-elements/text-components",
91
+ "content": "\n\nAll this content components can be written in text component format.\\\nIt's provide possibility to pass custom properties or customize the content with Tailwind CSS classes.\n\n::alert{type=\"warning\" icon=\"i-lucide:triangle-alert\" title=\"Don't overuse it\"}\nUse it when necessary, it's not ideal to add style markup in markdown. Adding a lot of styles in your markdown will be hard to maintain the content.\n\n**Repeating the same style or adding a lot of styles is a sign that you should use a markdown component instead.**\n::\n\n\n## Usage\n\n::stack\n :::div{.p-4}\n :h3[Heading 3]\n :p[Paragraph]{.text-center.text-primary}\n :br\n A colored :a[Link]{.bg-yellow-200.text-primary}\n :hr\n ![](https://picsum.photos/id/152/200/133){width=100}\n :::\n\n```md\n:h3[Heading 3]\n:p[Paragraph]{.text-center.text-primary}\n:br\nA colored :a[Link]{.bg-yellow-200.text-primary}\n:hr\n![](https://picsum.photos/id/152/200/133){width=100}\n```\n::\n",
92
+ "description": "Text components are used to display text in a variety of ways.",
93
+ "icon": "i-lucide:brackets"
94
+ },
95
+ {
96
+ "title": "Headings",
97
+ "_id": "content:2.content-elements:2.headings.md",
98
+ "_path": "content-elements/headings",
99
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4.md:p-8}\n # Heading 1\n \n ## Heading 2\n \n ### Heading 3\n \n #### Heading 4\n \n ##### Heading 5\n \n ###### Heading 6\n :::\n\n```md\n# Heading 1\n## Heading 2\n### Heading 3\n#### Heading 4\n##### Heading 5\n###### Heading 6\n```\n:: \n",
100
+ "description": "HTML heading elements from h1 to h6.",
101
+ "icon": "lucide:heading"
102
+ },
103
+ {
104
+ "title": "Paragraphs",
105
+ "_id": "content:2.content-elements:3.paragraphs.md",
106
+ "_path": "content-elements/paragraphs",
107
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n :::\n\n```md\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n```\n::\n\n## Line breaks\n\nIn Markdown, line breaks aren't automatically handled. To insert a line break within a paragraph, add a backslash :shortcut{value=\"\\\"} at the end of the line. This inserts a `<br />` tag.\n\n::stack\n :::div{.p-4}\n A first line with a line break.\\\n A second line in the same paragraph.\n\n Another paragraph.\n :::\n\n```md\nA first line with a line break.\\\nA second line in the same paragraph.\n\nAnother paragraph.\n```\n::\n\nYou can use :shortcut{value=\"Shift + Enter\"} to achieve the same result more conveniently.\n",
108
+ "description": "Basic text content blocks.",
109
+ "icon": "lucide:text"
110
+ },
111
+ {
112
+ "title": "Lists",
113
+ "_id": "content:2.content-elements:4.lists.md",
114
+ "_path": "content-elements/lists",
115
+ "content": "\n\n## Unordered List\n\n::stack\n :::div{.p-4}\n - Foo\n - Bar\n - Baz\n :::\n\n```md\n- Foo\n- Bar\n- Baz\n```\n::\n\n## Ordered List\n\n::stack\n :::div{.p-4}\n 1. Foo\n 2. Bar\n 3. Baz\n :::\n\n```md\n1. Foo\n2. Bar\n3. Baz\n```\n:: \n",
116
+ "description": "Ordered and unordered list elements.",
117
+ "icon": "lucide:list"
118
+ },
119
+ {
120
+ "title": "Links",
121
+ "_id": "content:2.content-elements:5.links.md",
122
+ "_path": "content-elements/links",
123
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n [Link](/getting-started/introduction)\n :::\n\n```md\n[Link](/getting-started/introduction)\n```\n:: \n",
124
+ "description": "HTML anchor elements for navigation.",
125
+ "icon": "lucide:link"
126
+ },
127
+ {
128
+ "title": "Images",
129
+ "_id": "content:2.content-elements:6.images.md",
130
+ "_path": "content-elements/images",
131
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n ![Photo by Drew Beamer](https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80)\n :::\n\n```md\n![Photo by Drew Beamer](https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80)\n```\n:: \n",
132
+ "description": "HTML image elements with alt text and source URL.",
133
+ "icon": "lucide:image"
134
+ },
135
+ {
136
+ "title": "Blockquotes",
137
+ "_id": "content:2.content-elements:7.blockquotes.md",
138
+ "_path": "content-elements/blockquotes",
139
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n :::\n\n```md\n> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n```\n:: \n",
140
+ "description": "HTML blockquote elements for quotations.",
141
+ "icon": "lucide:quote"
142
+ },
143
+ {
144
+ "title": "Code Blocks",
145
+ "_id": "content:2.content-elements:8.code-blocks.md",
146
+ "_path": "content-elements/code-blocks",
147
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n ```ts\n export default () => {\n console.log('Code block');\n };\n ```\n :::\n\n````md\n```ts\nexport default () => {\n console.log('Code block');\n};\n```\n````\n::\n\n### With Title\n\n::stack\n :::div{.p-4}\n ```ts [nuxt.config.ts]\n export default defineNuxtConfig({\n // My Nuxt config\n });\n ```\n :::\n\n````md\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n // My Nuxt config\n});\n```\n````\n::\n\n### Highlight Lines\n\n::stack\n :::div{.p-4}\n ```ts{2}\n export default () => {\n console.log('Code block');\n };\n ```\n :::\n\n````md\n```ts{2}\nexport default () => {\n console.log('Code block');\n};\n```\n````\n::\n\n### Line Numbers\n\n::stack\n :::div{.p-4}\n ```ts{1} line-numbers\n // line-numbers is enabled\n const line2 = 'This is line 2';\n const line3 = 'This is line 3';\n ```\n :::\n\n````md\n```ts{1} line-numbers\n// line-numbers is enabled\nconst line2 = 'This is line 2';\nconst line3 = 'This is line 3';\n```\n````\n::\n\n### Fixed Height\n\n::stack\n :::div{.p-4}\n ```ts height=150\n const parsedMeta = computed(() => {\n const split = meta?.split(' ') ?? [];\n const params = new Map<string, string | undefined>();\n \n for (const param of split) {\n const [key, val] = param.split('=');\n params.set(key, val);\n }\n \n return params;\n });\n ```\n :::\n\n````md\n```ts height=150\nconst parsedMeta = computed(() => {\n const split = meta?.split(' ') ?? [];\n const params = new Map<string, string | undefined>();\n\n for (const param of split) {\n const [key, val] = param.split('=');\n params.set(key, val);\n }\n\n return params;\n});\n```\n````\n::\n\n### Custom Icon\n\n::stack\n :::div{.p-4}\n ```ts [Custom Icon] icon=lucide:code-xml line-numbers\n // line-numbers is enabled\n const line2 = 'This is line 2';\n const line3 = 'This is line 3';\n ```\n :::\n\n````md\n```ts [Custom Icon] icon=lucide:code-xml line-numbers\n// line-numbers is enabled\nconst line2 = 'This is line 2';\nconst line3 = 'This is line 3';\n```\n````\n:: \n",
148
+ "description": "Fenced code blocks with syntax highlighting and additional features.",
149
+ "icon": "lucide:code-2"
150
+ },
151
+ {
152
+ "title": "Inline Code",
153
+ "_id": "content:2.content-elements:9.inline-code.md",
154
+ "_path": "content-elements/inline-code",
155
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-4}\n `code inline`\n \n `const codeInline: string = 'highlighted code inline'`{lang=\"ts\"}\n :::\n\n```md\n`code inline`\n\n`const codeInline: string = 'highlighted code inline'`{lang=\"ts\"}\n```\n:: \n",
156
+ "description": "Inline code snippets with optional syntax highlighting.",
157
+ "icon": "lucide:code"
158
+ },
159
+ {
160
+ "title": "Content Elements",
161
+ "_id": "content:2.content-elements:index.md",
162
+ "_path": "content-elements/index",
163
+ "content": "\n\n:card-group{data=\"/content-elements/\"}\n",
164
+ "description": "The basic markdown elements for writing content.",
165
+ "icon": "lucide:letter-text",
166
+ "navigation": false
167
+ }
168
+ ],
169
+ "description": "A set of basic markdown elements for writing content.",
170
+ "icon": "lucide:letter-text",
171
+ "_path": "content-elements"
172
+ },
173
+ {
174
+ "title": "MDC Components",
175
+ "children": [
176
+ {
177
+ "title": "MDC Syntax",
178
+ "_id": "content:3.components:1.index.md",
179
+ "_path": "components/index",
180
+ "content": "\n\n## `:` Inline Components\n\nInline components are entries that will stick inside the parent paragraph. Like spans, emojis, icons, etc. Inline components can be defined by a single `:` followed by the component name.\n\n```md\nA simple :inline-component\n```\n\nYou may want to pass some text into an inline component; you can do it using the `[TEXT]` syntax.\n\n```md\nA simple :inline-component[John Doe]\n```\n\nIf you want to use an inline component followed by specific characters like `-`, `_`, or `:`, you can use a dummy props specifier after it.\n\n```md\nHow to say :hello{}-world in Markdown\n```\n\nIn this example, `:hello{}` will search for the `<Hello />` component, and `-world` will be plain text.\n\n::alert\nNote: If you put an inline component alone in a single line, it will be transformed into a block component. This is sugar syntax for block components.\n\n```md\nParagraph a\n\n:block-component\n\nParagraph b\n```\n::\n\n## `::` Block Components\n\nBlock components are components that accept Markdown content or another component as a slot.\n\nBlock components are defined by the `::` identifier.\n\n```md\n::card\nThe content of the card\n::\n```\n\nBlock components can be used without any content.\n\n```md\n::card\n::\n```\n\nOr with sugar syntax. Note that in sugar syntax, it is important to put the component alone on a separate line.\n\n```md\nA paragraph\n\n:card\n```\n\n## `#` Slots\n\nBlock components can accept slots (like Vue slots) with different names. The content of these slots can be anything from a normal markdown paragraph to a nested block component.\n\n- The `default` slot renders the top-level content inside the block component.\n- Named slots use the `#` identifier to render the corresponding content.\n\n```md\n::hero\nDefault slot text\n\n#description\nThis will be rendered inside the `description` slot.\n::\n```\n\n## `:::` Nesting\n\nMDC supports nested components inside slots by indenting them. To make nested components visually distinguishable, you can indent nested components and add more `:` when you define them.\n\n```md\n::hero\n :::card\n A nested card\n\n ::::card\n A super nested card\n ::::\n :::\n::\n```\n\n## `[]` Span\n\nTo create inline spans in your text, you can use the `[]` identifier.\n\n```md\nHello [World]\n```\n\nThis syntax is useful in combination with inline props to make text visually different from the rest of the paragraph. Check out the inline props section to read more about props.\n\n```md\nHello [World]{.bg-blue-500}!\n```\n\n## `{}` Inline Props\n\nUsing the inline props syntax, you can pass props and attributes to your components. MDC goes a step further and allows you to pass attributes to markdown native elements like images, links, bold texts, and more.\n\nTo define properties for a component or a markdown element, you need to create a props scope `{}` exactly after the component/element definition. Then you can define the properties inline within this scope using a `key=value` syntax.\n\n```md\nInline :component{key=\"value\" key2=value2}\n\n::block-component{no-border title=\"My Component\"}\n::\n\n[Link](https://nuxt.com){class=\"nuxt\"}\n\n![Nuxt Logo](https://nuxt.com/assets/design-kit/logo/icon-green.svg){class=\".nuxt-logo\"}\n\n`code`{style=\"color: red\"}\n\n_italic_{style=\"color: blue\"}\n\n**bold**{style=\"color: blue\"}\n```\n\nThere are also a couple of sugar syntaxes for common use-cases:\n\n- `id` attribute: `_italic_{#the_italic_text}`\n- `class` attribute: `**bold**{.bold .text.with_attribute}`\n- No value (boolean props): `:component{no-border}`\n- Single string without any space: `**bold**{class=red}`\n\nIf you want to pass arrays or objects as props to components, you can pass them as a JSON string and prefix the prop key with a colon to automatically decode the JSON string. Note that in this case, you should use single quotes for the value string so you can use double quotes to pass a valid JSON string:\n\n```md\n::dropdown{:items='[\"Nuxt\", \"Vue\", \"React\"]'}\nString Array\n::\n\n::dropdown{:items='[1,2,3.5]'}\nNumber Array\n::\n\n::chart{:options='{\"responsive\": true, \"scales\": {\"y\": {\"beginAtZero\": true}}}'}\nObject\n::\n```\n\n## `---` Yaml Props\n\nThe YAML method uses the `---` identifier to declare one prop per line, which can be useful for readability.\n\n```md\n::icon-card\n---\nicon: IconNuxt\ndescription: Harness the full power of Nuxt and the Nuxt ecosystem.\ntitle: Nuxt Architecture.\n---\n::\n```\n\n## `{{}}` Binding Variables\n\nThe `{{ $doc.variable || 'defaultValue' }}` syntax allows you to bind variables in your Markdown content. This is especially useful when you want to dynamically insert values into your document.\n\nTo use this syntax, simply enclose the variable name within double curly braces, like so:\n\n```md\n---\ncolor: blue\n---\n\n# The color is {{ $doc.color || 'red' }}.\n```\n",
181
+ "icon": "i-zondicons:dots-horizontal-double",
182
+ "description": "MarkDown Components (MDC) supercharges regular Markdown to write interactive components."
183
+ },
184
+ {
185
+ "title": "Docs Components",
186
+ "children": [
187
+ {
188
+ "title": "Alert",
189
+ "_id": "content:3.components:2.docs:alert.md",
190
+ "_path": "components/docs/alert",
191
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::alert{icon=\"lucide:info\"}\n A **default** alert with `code` and a [link](/).\n ::\n\n ::alert{type=\"success\" icon=\"lucide:info\"}\n A **success** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{icon=\"lucide:info\"}\n A **default** alert with `code` and a [link](/).\n ::\n\n ::alert{type=\"success\" icon=\"lucide:info\"}\n A **success** alert with `code` and a [link](/).\n ::\n ```\n::\n\n### Link\n\n::stack\n ::div{class=\"p-4\"}\n ::alert{to=\"/getting-started/introduction\" icon=\"lucide:rocket\"}\n An **internal link** alert.\n ::\n ::alert{to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\" icon=\"lucide:link\"}\n An **external link** alert.\n ::\n ::\n ```mdc\n ::alert{to=\"/getting-started/introduction\" icon=\"lucide:rocket\"}\n An **internal link** alert.\n ::\n ::alert{to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\" icon=\"lucide:link\"}\n An **external link** alert.\n ::\n ```\n::\n\n### Variants\n\n::tabs{variant=\"line\"}\n ::stack{label=\"info\" icon=\"lucide:info\"}\n ::div{class=\"p-3\"}\n ::alert{type=\"info\" icon=\"lucide:info\"}\n An **info** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{type=\"info\" icon=\"lucide:info\"}\n An **info** alert with `code` and a [link](/).\n ::\n ```\n ::\n\n ::stack{label=\"success\" icon=\"lucide:lightbulb\"}\n ::div{class=\"p-3\"}\n ::alert{type=\"success\" icon=\"lucide:lightbulb\"}\n A **success** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{type=\"success\" icon=\"lucide:lightbulb\"}\n A **success** alert with `code` and a [link](/).\n ::\n ```\n ::\n\n ::stack{label=\"warning\" icon=\"lucide:triangle-alert\"}\n ::div{class=\"p-3\"}\n ::alert{type=\"warning\" icon=\"lucide:triangle-alert\"}\n A **warning** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{type=\"warning\" icon=\"lucide:triangle-alert\"}\n A **warning** alert with `code` and a [link](/).\n ::\n ```\n ::\n\n ::stack{label=\"danger\" icon=\"lucide:circle-x\"}\n ::div{class=\"p-3\"}\n ::alert{type=\"danger\" icon=\"lucide:circle-x\"}\n A **danger** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{type=\"danger\" icon=\"lucide:circle-x\"}\n A **danger** alert with `code` and a [link](/).\n ::\n ```\n ::\n\n ::stack{label=\"example\" icon=\"lucide:test-tube\"}\n ::div{class=\"p-3\"}\n ::alert{type=\"example\" icon=\"lucide:test-tube\"}\n An **example** alert with `code` and a [link](/).\n ::\n ::\n ```mdc\n ::alert{type=\"example\" icon=\"lucide:test-tube\"}\n An **example** alert with `code` and a [link](/).\n ::\n ```\n ::\n::\n\n### Title\n\n::stack\n ::div{class=\"p-4\"}\n ::alert{title=\"Title\" icon=\"lucide:layout-list\" type=\"info\"}\n An alert with a title.\n ::\n ::\n ```mdc\n ::alert{title=\"Title\" icon=\"lucide:layout-list\" type=\"info\"}\n An alert with a title.\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"title\" type=\"string\"}[Alert title]\n :field{name=\"icon\" type=\"string\"}[Alert icon]\n :field{name=\"type\" type=\"'default' | 'info' | 'warning' | 'success' | 'danger' | 'secondary'\" default-value=\"'default'\"}\n :field{name=\"to\" type=\"string\"}[Link URL]\n :field{name=\"target\" type=\"Target\"}[A `target` attribute value to apply on the link]\n :field{name=\"external\" type=\"boolean\"}[Alias to `target='_blank'`]\n :field{name=\"showLinkIcon\" type=\"boolean\" default-value=\"true\"}[Whether to show the link indicator :icon{name=\"lucide:arrow-up-right\"}]\n::\n",
192
+ "icon": "lucide:triangle-alert",
193
+ "badges": [
194
+ {
195
+ "value": "Docus",
196
+ "to": "https://docus.dev/api/components#alert",
197
+ "target": "_blank"
198
+ },
199
+ {
200
+ "value": "Source",
201
+ "icon": "lucide:code",
202
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Alert.vue",
203
+ "target": "_blank"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "title": "Badge",
209
+ "_id": "content:3.components:2.docs:badge.md",
210
+ "_path": "components/docs/badge",
211
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-3\"}\n ::badge\n Default\n ::\n ::badge{size=\"sm\"}\n Small\n ::\n ::badge{size=\"lg\"}\n Large\n ::\n ::\n ```mdc\n ::badge\n Default\n ::\n ::badge{size=\"sm\"}\n Small\n ::\n ::badge{size=\"lg\"}\n Large\n ::\n ```\n::\n\n### Types\n\n::stack{label=\"default\"}\n ::div{class=\"p-3\"}\n :badge[Default]\n :badge[Primary]{type=\"primary\"}\n :badge[Secondary]{type=\"secondary\"}\n :badge[Info]{type=\"info\"}\n :badge[Warning]{type=\"warning\"}\n :badge[Success]{type=\"success\"}\n :badge[Danger]{type=\"danger\"}\n :badge[New]{type=\"new\"}\n ::\n\n ```mdc\n :badge[Default]\n :badge[Info]{type=\"info\"}\n :badge[Warning]{type=\"warning\"}\n :badge[Success]{type=\"success\"}\n :badge[Danger]{type=\"danger\"}\n :badge[New]{type=\"new\"}\n ```\n::\n\n### Variants\n\n::stack{label=\"default\"}\n ::div{class=\"p-3\"}\n :badge[Default]{variant=\"fill\"}\n :badge[Primary]{type=\"primary\" variant=\"fill\"}\n :badge[Secondary]{type=\"secondary\" variant=\"fill\"}\n :badge[Info]{type=\"info\" variant=\"fill\"}\n :badge[Warning]{type=\"warning\" variant=\"fill\"}\n :badge[Success]{type=\"success\" variant=\"fill\"}\n :badge[Danger]{type=\"danger\" variant=\"fill\"}\n :badge[New]{type=\"new\" variant=\"fill\"}\n ::\n\n ::div{class=\"p-3\"}\n :badge[Default]{variant=\"outline\"}\n :badge[Primary]{type=\"primary\" variant=\"outline\"}\n :badge[Secondary]{type=\"secondary\" variant=\"outline\"}\n :badge[Info]{type=\"info\" variant=\"outline\"}\n :badge[Warning]{type=\"warning\" variant=\"outline\"}\n :badge[Success]{type=\"success\" variant=\"outline\"}\n :badge[Danger]{type=\"danger\" variant=\"outline\"}\n :badge[New]{type=\"new\" variant=\"outline\"}\n ::\n\n ::div{class=\"p-3\"}\n :badge[Default]{variant=\"text\"}\n :badge[Primary]{type=\"primary\" variant=\"text\"}\n :badge[Secondary]{type=\"secondary\" variant=\"text\"}\n :badge[Info]{type=\"info\" variant=\"text\"}\n :badge[Warning]{type=\"warning\" variant=\"text\"}\n :badge[Success]{type=\"success\" variant=\"text\"}\n :badge[Danger]{type=\"danger\" variant=\"text\"}\n :badge[New]{type=\"new\" variant=\"text\"}\n ::\n\n ```mdc\n :badge[...]{type=\"...\" variant=\"fill\"}\n :badge[...]{type=\"...\" variant=\"outline\"}\n :badge[...]{type=\"...\" variant=\"text\"}\n ```\n::\n\n### Link\n\n::stack\n ::div{class=\"p-3\"}\n ::badge{variant=\"outline\" type=\"info\" to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\"}\n Link\n ::\n ::\n ```mdc\n ::badge{variant=\"outline\" type=\"info\" to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\"}\n Link\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"type\" type=\"'default' | 'info' | 'warning' | 'success' | 'danger' | 'lime'\" default-value=\"'default'\"}\n :field{name=\"variant\" type=\"'default' | 'secondary' | 'destructive' | 'outline'\" default-value=\"'default'\"}\n :field{name=\"size\" type=\"'md' | 'sm'\" default-value=\"'md'\"}\n :field{name=\"to\" type=\"string\"}[Link URL]\n :field{name=\"target\" type=\"Target\"}[A `target` attribute value to apply on the link]\n::\n",
212
+ "icon": "lucide:badge",
213
+ "badges": [
214
+ {
215
+ "value": "Docus",
216
+ "to": "https://docus.dev/api/components#badge",
217
+ "target": "_blank"
218
+ },
219
+ {
220
+ "value": "Source",
221
+ "icon": "lucide:code",
222
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Badge.vue",
223
+ "target": "_blank"
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "title": "Button Link",
229
+ "_id": "content:3.components:2.docs:button-link.md",
230
+ "_path": "components/docs/button-link",
231
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-3 flex gap-4\"}\n ::button-link{right-icon=\"lucide:arrow-up-right\" to=\"/getting-started\" target=\"_blank\"}\n Get Started\n ::\n ::button-link{left-icon=\"lucide:github\" variant=\"outline\" to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\"}\n GitHub\n ::\n ::button-link{left-icon=\"lucide:ghost\" variant=\"ghost\" href=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" blank}\n Ghost\n ::\n ::\n ```mdc\n ::button-link{right-icon=\"lucide:arrow-up-right\" to=\"/getting-started\" target=\"_blank\"}\n Get Started\n ::\n ::button-link{left-icon=\"lucide:github\" variant=\"outline\" to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" target=\"_blank\"}\n GitHub\n ::\n ::button-link{left-icon=\"lucide:ghost\" variant=\"ghost\" href=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt\" blank}\n Ghost\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"variant\" type=\"'default' | 'secondary' | 'link' | 'destructive' | 'outline' | 'ghost'\" default-value=\"'default'\"}\n :field{name=\"size\" type=\"'default' | 'icon' | 'sm' | 'xs' | 'lg'\" default-value=\"'default'\"}\n :field{name=\"leftIcon\" type=\"string\"}[Icon on the left]\n :field{name=\"rightIcon\" type=\"string\"}[Icon on the right]\n :field{name=\"to\" type=\"string\"}[Link URL]\n :field{name=\"href\" type=\"string\"}[Alias to `to`]\n :field{name=\"target\" type=\"Target\"}[A `target` attribute value to apply on the link]\n :field{name=\"blank\" type=\"boolean\"}[Alias to `target='_blank'`]\n::\n",
232
+ "icon": "lucide:external-link",
233
+ "badges": [
234
+ {
235
+ "value": "Docus",
236
+ "to": "https://docus.dev/api/components#buttonlink",
237
+ "target": "_blank"
238
+ },
239
+ {
240
+ "value": "Source",
241
+ "icon": "lucide:code",
242
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/ButtonLink.vue",
243
+ "target": "_blank"
244
+ },
245
+ {
246
+ "value": "0.6.5"
247
+ }
248
+ ]
249
+ },
250
+ {
251
+ "title": "Callout",
252
+ "_id": "content:3.components:2.docs:callout.md",
253
+ "_path": "components/docs/callout",
254
+ "content": "\n\n::alert{to=\"/components/docs/alert\"}\n`::callout`{lang=\"mdc\"} is an alias to `::alert`{lang=\"mdc\"}.\n::\n",
255
+ "icon": "lucide:megaphone",
256
+ "badges": [
257
+ {
258
+ "value": "Nuxt UI Pro",
259
+ "to": "https://ui.nuxt.com/pro/prose/callout",
260
+ "target": "_blank"
261
+ },
262
+ {
263
+ "value": "Source",
264
+ "icon": "lucide:code",
265
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Callout.vue",
266
+ "target": "_blank"
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "title": "Code Group",
272
+ "_id": "content:3.components:2.docs:code-group.md",
273
+ "_path": "components/docs/code-group",
274
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::code-group\n ```vue [app.vue]\n <template>\n <div>\n <NuxtLayout>\n <NuxtPage />\n </NuxtLayout>\n </div>\n </template>\n ```\n\n ```vue [pages/index.vue]\n <template>\n <div>\n <h1>Welcome to the homepage</h1>\n <AppAlert>\n This is an auto-imported component\n </AppAlert>\n </div>\n </template>\n ```\n ::\n ::\n\n ```mdc\n ::code-group\n ```vue [app.vue]\n <template>\n <div>\n <NuxtLayout>\n <NuxtPage />\n </NuxtLayout>\n </div>\n </template>\n ```\n\n ```vue [pages/index.vue]\n <template>\n <div>\n <h1>Welcome to the homepage</h1>\n <AppAlert>\n This is an auto-imported component\n </AppAlert>\n </div>\n </template>\n ```\n ::\n ```\n::\n\n::alert{to=\"/components/docs/tabs\"}\n`::code-group`{lang=\"mdc\"} is a wrapper around `::tabs{variant=\"card\"}`{lang=\"mdc\"}.\n::\n\n## Props\n\n:field{name=\"sync\" type=\"string\"}[Sync scope for `::tabs`]\n",
275
+ "icon": "lucide:code-xml",
276
+ "badges": [
277
+ {
278
+ "value": "Nuxt UI Pro",
279
+ "to": "https://ui.nuxt.com/pro/prose/code-group",
280
+ "target": "_blank"
281
+ },
282
+ {
283
+ "value": "Docus",
284
+ "to": "https://docus.dev/api/components#codegroup",
285
+ "target": "_blank"
286
+ },
287
+ {
288
+ "value": "Source",
289
+ "icon": "lucide:code",
290
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/CodeGroup.vue",
291
+ "target": "_blank"
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "title": "Code Snippet",
297
+ "_id": "content:3.components:2.docs:code-snippet.md",
298
+ "_path": "components/docs/code-snippet",
299
+ "content": "\n\n## Usage\n\n::stack\n::div{class=\"p-4\"}\n ::code-snippet\n ---\n file: /components/DarkModeToggle.vue\n language: vue\n ---\n ::\n::\n```mdc\n::code-snippet\n---\nfile: /components/DarkModeToggle.vue\nlanguage: vue\n---\n::\n```\n::\n\n### Highlighting Lines\n\n::stack\n::div{class=\"p-4\"}\n ::code-snippet\n ---\n file: /composables/useBreadcrumb.ts\n language: ts\n title: useBreadcrumb\n highlights: 9-11\n meta: line-numbers height=300\n ---\n ::\n::\n```mdc\n::code-snippet\n---\nfile: /composables/useBreadcrumb.ts\nlanguage: ts\ntitle: useBreadcrumb\nhighlights: 9-11\nmeta: line-numbers height=300\n---\n::\n```\n::\n\nTranslates to:\n\n`````md\n````ts [useBreadcrumb] {9-11} line-numbers height=300\n// code imported from /composables/useBreadcrumb.ts\n````\n`````\n\n### Using Offset Props\n\n::stack\n::div{class=\"p-4\"}\n ::code-snippet\n ---\n file: /composables/useBreadcrumb.ts\n language: ts\n start: 6\n offset: 4\n ---\n ::\n::\n```mdc\n::code-snippet\n---\nfile: /composables/useBreadcrumb.ts\nlanguage: ts\nstart: 6\noffset: 4\n---\n::\n```\n::\n\n### Fetching From a Remote URL\n\n::stack\n::div{class=\"p-4\"}\n ::code-snippet\n ---\n url: https://raw.githubusercontent.com/ZTL-UwU/shadcn-docs-nuxt/refs/heads/main/pages/index.vue\n language: vue\n ---\n ::\n::\n```mdc\n::code-snippet\n---\nurl: https://raw.githubusercontent.com/ZTL-UwU/shadcn-docs-nuxt/refs/heads/main/pages/index.vue\nlanguage: vue\n---\n::\n```\n::\n\n## Props\n\n::alert{icon=\"lucide:info\"}\nThe `/nuxt.config.ts` file can not be imported due to framework constraints\n::\n\n::field-group\n :field{name=\"file\" type=\"string\"}[The path to the imported file]\n :field{name=\"url\" type=\"string\"}[A remote URL to fetch the code from]\n :field{name=\"title\" type=\"string\"}[Code block title]\n :field{name=\"language\" type=\"string\"}[Code block highlight language]\n :field{name=\"highlights\" type=\"string\"}[Code block highlights lines]\n :field{name=\"meta\" type=\"string\"}[Code block meta]\n :field{name=\"start\" type=\"number\"}[Starting line index]\n :field{name=\"offset\" type=\"number\"}[Number of lines to display from start]\n::\n",
300
+ "icon": "lucide:clipboard",
301
+ "badges": [
302
+ {
303
+ "value": "0.8.11"
304
+ },
305
+ {
306
+ "value": "Source",
307
+ "icon": "lucide:code",
308
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/CodeSnippet.vue",
309
+ "target": "_blank"
310
+ }
311
+ ]
312
+ },
313
+ {
314
+ "title": "Field Group",
315
+ "_id": "content:3.components:2.docs:field-group.md",
316
+ "_path": "components/docs/field-group",
317
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::field-group\n ::field{name=\"withDefault\" type=\"boolean\" defaultValue=\"true\"}\n A field with a default value.\n ::\n ::field{name=\"requiredField\" type=\"boolean\" required}\n A required field.\n ::\n ::field{name=\"clear (path?: string)\" type=\"void\"}\n Clears form errors associated with a specific path. If no path is provided, clears all form errors.\n ::\n ::field{name=\"getErrors (path?: string)\" type=\"FormError[]\"}\n Retrieves form errors associated with a specific path. If no path is provided, returns all form errors.\n ::\n ::field{name=\"setErrors (errors: FormError[], path?: string)\" type=\"void\"}\n Sets form errors for a given path. If no path is provided, overrides all errors.\n ::\n ::field{name=\"errors\" type=\"Ref<FormError[]>\"}\n A reference to the array containing validation errors. Use this to access or manipulate the error information.\n ::\n ::\n ::\n\n ```mdc\n ::field-group\n ::field{name=\"withDefault\" type=\"boolean\" defaultValue=\"true\"}\n A field with a default value.\n ::\n ::field{name=\"requiredField\" type=\"boolean\" required}\n A required field.\n ::\n ::field{name=\"clear (path?: string)\" type=\"void\"}\n Clears form errors associated with a specific path. If no path is provided, clears all form errors.\n ::\n ::field{name=\"getErrors (path?: string)\" type=\"FormError[]\"}\n Retrieves form errors associated with a specific path. If no path is provided, returns all form errors.\n ::\n ::field{name=\"setErrors (errors: FormError[], path?: string)\" type=\"void\"}\n Sets form errors for a given path. If no path is provided, overrides all errors.\n ::\n ::field{name=\"errors\" type=\"Ref<FormError[]>\"}\n A reference to the array containing validation errors. Use this to access or manipulate the error information.\n ::\n ::\n ```\n::\n",
318
+ "icon": "lucide:settings-2",
319
+ "badges": [
320
+ {
321
+ "value": "Nuxt UI Pro",
322
+ "to": "https://ui.nuxt.com/pro/prose/field-group",
323
+ "target": "_blank"
324
+ },
325
+ {
326
+ "value": "Source",
327
+ "icon": "lucide:code",
328
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/FieldGroup.vue",
329
+ "target": "_blank"
330
+ }
331
+ ]
332
+ },
333
+ {
334
+ "title": "Field",
335
+ "_id": "content:3.components:2.docs:field.md",
336
+ "_path": "components/docs/field",
337
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::field{name=\"Field\" type=\"string\" defaultValue=\"'default'\" required}\n The _description_ can be set as prop or in the default slot with full **markdown** support.\n ::\n ::\n ```mdc\n ::field{name=\"Field\" type=\"string\" defaultValue=\"'default'\" required}\n The _description_ can be set as prop or in the default slot with full **markdown** support.\n ::\n ```\n::\n\nThe text `required` is configurable in [`main.fieldRequiredText`](/development/configuration/shadcn-docs#main).\n\n## Props\n\n::field-group\n :field{name=\"name\" type=\"string\"}[Field name]\n :field{name=\"type\" type=\"string\"}[Field type]\n :field{name=\"description\" type=\"string\"}[Field description]\n :field{name=\"defaultValue\" type=\"string\"}[Field default value]\n :field{name=\"required\" type=\"boolean\"}[Whether the field is required]\n::\n",
338
+ "icon": "lucide:settings-2",
339
+ "badges": [
340
+ {
341
+ "value": "Nuxt UI Pro",
342
+ "to": "https://ui.nuxt.com/pro/prose/field",
343
+ "target": "_blank"
344
+ },
345
+ {
346
+ "value": "Source",
347
+ "icon": "lucide:code",
348
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Field.vue",
349
+ "target": "_blank"
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ "title": "File Tree",
355
+ "_id": "content:3.components:2.docs:file-tree.md",
356
+ "_path": "components/docs/file-tree",
357
+ "content": "\n\n## Usage\n\n::stack\n::div{class=\"p-4\"}\n ::file-tree\n ---\n tree:\n - app:\n - components:\n - Header.vue\n - Footer.vue\n - composables:\n - useErrorHandler.ts\n - ^app.vue^\n - docs:\n - index.md\n ---\n ::\n::\n```mdc\n::file-tree\n---\ntree:\n - app:\n - components:\n - Header.vue\n - Footer.vue\n - composables:\n - useErrorHandler.ts\n - ^app.vue^ # This is highlighted\n - docs:\n - index.md\n---\n::\n```\n::\n\n### Customizations\n\n::stack\n::div{class=\"p-4\"}\n ::file-tree\n ---\n title: File Tree Title\n icon: lucide:folder-tree\n autoSlash: false # Whether to add a slash after every folder automatically\n showArrow: true # Whether to show the guide arrow\n tree:\n - components:\n - layout:\n - Header.vue\n - Footer.vue\n - ...\n - content:\n - Accordion.vue\n - Alert.vue\n - ProseCode.vue\n - ...\n ---\n ::\n::\n```mdc\n::file-tree\n---\ntitle: File Tree Title\nicon: lucide:folder-tree\nautoSlash: false # Whether to add a slash after every folder automatically\nshowArrow: true # Whether to show the collapse arrow\ntree:\n - components:\n - layout:\n - Header.vue\n - Footer.vue\n - ...\n - content:\n - Accordion.vue\n - Alert.vue\n - ProseCode.vue\n - ...\n---\n::\n```\n::\n\n### Disable Icons\n\n::stack\n::div{class=\"p-4\"}\n ::file-tree\n ---\n showIcon: false\n tree:\n - app:\n - components:\n - Header.vue\n - Footer.vue\n - composables:\n - useErrorHandler.ts\n - ^app.vue^\n - docs:\n - index.md\n ---\n ::\n::\n```mdc\n::file-tree\n---\nshowIcon: false\ntree:\n - app:\n - components:\n - Header.vue\n - Footer.vue\n - composables:\n - useErrorHandler.ts\n - ^app.vue^\n - docs:\n - index.md\n---\n::\n```\n::\n\n## Props\n\n::field-group\n :field{name=\"tree\"}[The file tree]\n :field{name=\"title\" type=\"string\"}[File tree title]\n :field{name=\"icon\" type=\"string\"}[File tree title icon]\n :field{name=\"autoSlash\" type=\"boolean\" default-value=\"true\"}[Whether to add a slash after every folder automatically]\n :field{name=\"showArrow\" type=\"boolean\" default-value=\"false\"}[Whether to show the collapse arrow]\n :field{name=\"showIcon\" type=\"boolean\" default-value=\"true\"}[Whether to show file & folder icons]\n::\n",
358
+ "icon": "lucide:folder-tree",
359
+ "badges": [
360
+ {
361
+ "value": "0.8.10"
362
+ },
363
+ {
364
+ "value": "Source",
365
+ "icon": "lucide:code",
366
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/FileTree.vue",
367
+ "target": "_blank"
368
+ }
369
+ ]
370
+ },
371
+ {
372
+ "title": "Icon",
373
+ "_id": "content:3.components:2.docs:icon.md",
374
+ "_path": "components/docs/icon",
375
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4 space-x-2\"}\n :icon{name=\"lucide:box\"}\n :icon{name=\"vscode-icons:file-type-js-official\"}\n :icon{name=\"vscode-icons:file-type-vue\"}\n :icon{name=\"vscode-icons:file-type-nuxt\" size=\"30\"}\n ::\n\n ```mdc\n :icon{name=\"lucide:box\"}\n :icon{name=\"vscode-icons:file-type-js-official\"}\n :icon{name=\"vscode-icons:file-type-vue\"}\n :icon{name=\"vscode-icons:file-type-nuxt\" size=\"30\"}\n ```\n::\n\nIf you want to use other icons, it is highly recommended to install them locally, which is faster and more reliable on both SSR and client-side.\n\n```bash [Terminal]\nnpm i -D @iconify-json/collection-name\n```\n\n`@iconify-json/lucide` and `@iconify-json/vscode-icons` are installed by default.\n\n### Smart Icon\n\n:badge[0.5.3]{variant=\"outline\"}\n\nYou can put iconify icons, emojis and urls in `icon`. Smart icon will render them automatically.\n\n::stack\n ::div{class=\"p-4\"}\n **Iconify**\n <div class=\"space-x-2\">\n\n :icon{name=\"lucide:box\"}\n :icon{name=\"vscode-icons:file-type-js-official\"}\n :icon{name=\"vscode-icons:file-type-vue\" size=30}\n\n </div>\n\n **Emojis**\n <div class=\"space-x-2\">\n\n :icon{name=\"😍\"}\n :icon{name=\"🚀\"}\n :icon{name=\"🎉\" size=30}\n\n </div>\n\n **URL**\n <div class=\"space-x-2\">\n\n :icon{name=\"/logo.svg\"}\n :icon{name=\"https://vueuse.org/favicon.svg\" size=40}\n\n </div>\n ::\n\n ```mdc\n **Iconify**\n :icon{name=\"lucide:box\"}\n :icon{name=\"vscode-icons:file-type-js-official\"}\n :icon{name=\"vscode-icons:file-type-vue\"}\n\n **Emojis**\n :icon{name=\"😍\"}\n :icon{name=\"🚀\"}\n :icon{name=\"🎉\" size=30}\n\n **URL**\n :icon{name=\"/logo.svg\"}\n :icon{name=\"https://vueuse.org/favicon.svg\" size=40}\n ```\n::\n\n::alert{to=\"https://github.com/nuxt-modules/icon\" target=\"_blank\"}\nThe icon component uses **Nuxt Icon** under the hood. Check out the usage guide from Nuxt Icon.\n::",
376
+ "icon": "/iconesjs.svg",
377
+ "badges": [
378
+ {
379
+ "value": "Docus",
380
+ "to": "https://docus.dev/api/components#icon",
381
+ "target": "_blank"
382
+ },
383
+ {
384
+ "value": "Source",
385
+ "icon": "lucide:code",
386
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Icon.vue",
387
+ "target": "_blank"
388
+ }
389
+ ]
390
+ },
391
+ {
392
+ "title": "Package Manager",
393
+ "_id": "content:3.components:2.docs:pm.md",
394
+ "_path": "components/docs/pm",
395
+ "content": "\n\n## Usage\n\nThe package managers shown can be configured in [`main.pm`](/development/configuration/shadcn-docs#main).\n\n### Install\n\n::stack\n ::div{class=\"p-4\"}\n :pm-install{name=\"shadcn-docs-nuxt\"}\n :pm-install{name=\"shadcn-docs-nuxt\" save-dev}\n :pm-install\n :pm-install{name=\"-g nuxi@latest\"}\n ::\n ```mdc\n :pm-install{name=\"shadcn-docs-nuxt\"}\n :pm-install{name=\"shadcn-docs-nuxt\" save-dev}\n :pm-install\n :pm-install{name=\"-g nuxi@latest\"}\n ```\n::\n\n### Run\n\n::stack\n ::div{class=\"p-4\"}\n :pm-run{script=\"dev\"}\n :pm-run{script=\"build --watch -o\"}\n ::\n ```mdc\n :pm-run{script=\"dev\"}\n :pm-run{script=\"build --watch -o\"}\n ```\n::\n\n### X\n\n::stack\n ::div{class=\"p-4\"}\n :pm-x{command=\"nuxi@latest init <project-name>\"}\n ::\n ```mdc\n :pm-x{command=\"nuxi@latest init <project-name>\"}\n ```\n::\n\n### No Sync\n\n::stack\n ::div{class=\"p-4\"}\n :pm-x{command=\"nuxi@latest init <project-name>\" no-sync}\n ::\n ```mdc\n :pm-x{command=\"nuxi@latest init <project-name>\" no-sync}\n ```\n::\n",
396
+ "icon": "lucide:package",
397
+ "description": "",
398
+ "badges": [
399
+ {
400
+ "value": "Source",
401
+ "icon": "lucide:code",
402
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/PmInstall.vue",
403
+ "target": "_blank"
404
+ },
405
+ {
406
+ "value": "0.8.0"
407
+ }
408
+ ]
409
+ },
410
+ {
411
+ "title": "Read More",
412
+ "_id": "content:3.components:2.docs:read-more.md",
413
+ "_path": "components/docs/read-more",
414
+ "content": "\n\n## Usage\n\n::stack\n :::div{.p-5}\n :read-more{to=\"/getting-started/writing/markdown\"}\n \n :read-more{title=\"Nuxt website\" to=\"https://nuxt.com/\"}\n \n :read-more{icon=\"lucide:link\" prefix=\"More information on\" to=\"https://nuxt.com/\"}\n :::\n\n```mdc\n:read-more{to=\"/getting-started/writing/markdown\"}\n:read-more{title=\"Nuxt website\" to=\"https://nuxt.com/\"}\n:read-more{icon=\"lucide:link\" prefix=\"More information on\" to=\"https://nuxt.com/\"}\n```\n::\n\n## Props\n\n::field-group\n:field[Read More icon]{name=\"icon\" type=\"string\"}\n\n:field[Prefix text]{default-value=\"Read more at\" name=\"prefix\" type=\"string\"}\n\n:field[Link URL]{name=\"to\" type=\"string\"}\n\n:field[Read More title]{name=\"title\" type=\"string\"}\n\n:field[A `target` attribute value to apply on the link]{name=\"target\" type=\"Target\"}\n::\n",
415
+ "icon": "lucide:bookmark",
416
+ "badges": [
417
+ {
418
+ "value": "undocs",
419
+ "to": "https://undocs.pages.dev/guide/components#read-more",
420
+ "target": "_blank"
421
+ },
422
+ {
423
+ "value": "Source",
424
+ "icon": "lucide:code",
425
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/ReadMore.vue",
426
+ "target": "_blank"
427
+ }
428
+ ]
429
+ },
430
+ {
431
+ "title": "Shortcut",
432
+ "_id": "content:3.components:2.docs:shortcut.md",
433
+ "_path": "components/docs/shortcut",
434
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n :shortcut{value=\"meta\"} :shortcut{value=\"K\"} :br\n :shortcut{value=\"xs\" size=\"xs\"} :shortcut{value=\"sm\"} :shortcut{value=\"md\" size=\"md\"}\n ::\n ```mdc\n :shortcut{value=\"meta\"} :shortcut{value=\"K\"}\n\n :shortcut{value=\"xs\" size=\"xs\"} :shortcut{value=\"sm\"} :shortcut{value=\"md\" size=\"md\"}\n ```\n::\n\nYou can put `meta` in the `value` field to automatically display either :shortcut{value=\"⌘\"} or :shortcut{value=\"Ctrl\"} based on the platform.\n\n## Props\n\n::field-group\n :field{name=\"value\" type=\"string\"}[Text in the shortcut]\n :field{name=\"size\" type=\"'xs' | 'sm' | 'md'\" default-value=\"'sm'\"}\n::\n",
435
+ "icon": "lucide:keyboard",
436
+ "badges": [
437
+ {
438
+ "value": "Nuxt UI Pro",
439
+ "to": "https://ui.nuxt.com/pro/prose/shortcut",
440
+ "target": "_blank"
441
+ },
442
+ {
443
+ "value": "Source",
444
+ "icon": "lucide:code",
445
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Shortcut.vue",
446
+ "target": "_blank"
447
+ },
448
+ {
449
+ "value": "0.6.3"
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "title": "Stack",
455
+ "_id": "content:3.components:2.docs:stack.md",
456
+ "_path": "components/docs/stack",
457
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4 md:p-8\"}\n ::stack\n ::div{class=\"p-6 text-3xl font-bold\"}\n ✨ Introducing Inspira UI\n ::\n ```vue\n <template>\n <RadiantText\n class=\"inline-flex items-center justify-center px-4 py-1 transition ease-out hover:text-neutral-600 hover:duration-300 hover:dark:text-neutral-400\"\n :duration=\"5\"\n >\n <span class=\"text-3xl font-bold\">✨ Introducing Inspira UI</span>\n </RadiantText>\n </template>\n ```\n :pm-install{name=\"@inspira-ui/plugins\" save-dev}\n :read-more{title=\"Inspira UI Docs\" to=\"https://inspira-ui.com/components/radiant-text\"}\n ::card\n ---\n title: Commands\n icon: lucide:square-terminal\n ---\n List of Nuxt CLI commands to init, analyze, build, and preview your application.\n ::\n ::\n ::\n ```mdc\n ::stack\n ::div{class=\"p-6 text-3xl font-bold\"}\n ✨ Introducing Inspira UI\n ::\n ```vue\n <template>\n <RadiantText\n class=\"inline-flex items-center justify-center px-4 py-1 transition ease-out hover:text-neutral-600 hover:duration-300 hover:dark:text-neutral-400\"\n :duration=\"5\"\n >\n <span class=\"text-3xl font-bold\">✨ Introducing Inspira UI</span>\n </RadiantText>\n </template>\n ```\n :pm-install{name=\"@inspira-ui/plugins\" save-dev}\n :read-more{title=\"Inspira UI Docs\" to=\"https://inspira-ui.com/components/radiant-text\"}\n ::card\n ---\n title: Commands\n icon: lucide:square-terminal\n ---\n List of Nuxt CLI commands to init, analyze, build, and preview your application.\n ::\n ::\n ```\n::\n\nStackable components:\n\n- `div`\n- Code Blocks\n- `alert`\n- `callout`\n- `read-more`\n- `code-group`\n- `card`\n- `tabs`\n- `pm-install`\n- `pm-run`\n- `pm-x`\n",
458
+ "icon": "lucide:rows-3",
459
+ "badges": [
460
+ {
461
+ "value": "Source",
462
+ "icon": "lucide:code",
463
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Stack.vue",
464
+ "target": "_blank"
465
+ },
466
+ {
467
+ "value": "0.6.2"
468
+ }
469
+ ]
470
+ },
471
+ {
472
+ "title": "Steps",
473
+ "_id": "content:3.components:2.docs:steps.md",
474
+ "_path": "components/docs/steps",
475
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4 md:p-6\"}\n ::steps\n ### Get Starter Template\n\n ::code-group\n ```bash [npm]\n npx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ```bash [pnpm]\n pnpm dlx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ```bash [bun]\n bunx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ::\n\n ::alert\n Alternatively, you can clone or download the template from the [GitHub repo](https://github.com/ZTL-UwU/shadcn-docs-nuxt-starter).\n ::\n\n ### Install Dependencies\n\n ::code-group\n ```bash [npm]\n npm install\n ```\n ```bash [pnpm]\n pnpm install\n ```\n ```bash [bun]\n bun install\n ```\n ::\n\n ### Development Server\n\n ::code-group\n ```bash [npm]\n npm run dev -- -o\n ```\n ```bash [pnpm]\n pnpm dev -o\n ```\n ```bash [bun]\n bun run dev -o\n ```\n ::\n ::\n ::\n ```mdc height=400\n ::steps\n ### Get Starter Template\n\n ::code-group\n ```bash [npm]\n npx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ```bash [pnpm]\n pnpm dlx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ```bash [bun]\n bunx nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\n ```\n ::\n\n ::alert\n Alternatively, you can clone or download the template from the [GitHub repo](https://github.com/ZTL-UwU/shadcn-docs-nuxt-starter).\n ::\n\n ### Install Dependencies\n\n ::code-group\n ```bash [npm]\n npm install\n ```\n ```bash [pnpm]\n pnpm install\n ```\n ```bash [bun]\n bun install\n ```\n ::\n\n ### Development Server\n\n ::code-group\n ```bash [npm]\n npm run dev -- -o\n ```\n ```bash [pnpm]\n pnpm dev -o\n ```\n ```bash [bun]\n bun run dev -o\n ```\n ::\n ::\n ```\n::\n\n### Multi-level headings\n:badge[0.4.6]{variant=\"outline\"}\n\n::stack\n ::div{class=\"p-4 md:p-6\"}\n ::steps{level=5}\n ##### Specify the level of headings to use\n\n ```mdc\n ::steps{level=5}\n ```\n\n ##### Available Headings\n\n `h1` through `h6`. Defaults to `h3`.\n ::\n ::\n ```mdc\n ::steps{level=5}\n ##### Multi-level headings\n\n ```mdc\n ::steps{level=5}\n ```\n\n ##### Available Headings\n\n `h1` through `h6`. Defaults to `h3`.\n ::\n ```\n::\n\n## Props\n\n:field{name=\"level\" type=\"number\"}[Specify the level of headings to use]\n",
476
+ "icon": "lucide:arrow-down-0-1",
477
+ "badges": [
478
+ {
479
+ "value": "Source",
480
+ "icon": "lucide:code",
481
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Steps.vue",
482
+ "target": "_blank"
483
+ }
484
+ ]
485
+ },
486
+ {
487
+ "title": "Tabs",
488
+ "_id": "content:3.components:2.docs:tabs.md",
489
+ "_path": "components/docs/tabs",
490
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::tabs\n ::div{label=\"PostgreSQL\" icon=\"lucide:database\"}\n ### PostgreSQL column types\n\n ```ts\n import { integer, pgTable } from 'drizzle-orm/pg-core';\n\n export const table = pgTable('table', {\n int: integer('int')\n });\n ```\n ::\n ::div{label=\"MySQL\"}\n ### MySQL column types\n\n ```ts\n import { int, mysqlTable } from 'drizzle-orm/mysql-core';\n\n const table = mysqlTable('table', {\n int: int('int')\n });\n ```\n ::\n ::div{label=\"SQLite\"}\n ### SQLite column types\n\n ```ts\n import { integer, sqliteTable } from 'drizzle-orm/sqlite-core';\n\n const table = sqliteTable('table', {\n id: integer('id')\n });\n\n // you can customize integer mode to be number, boolean, timestamp, timestamp_ms\n integer('id', { mode: 'number' });\n integer('id', { mode: 'boolean' });\n integer('id', { mode: 'timestamp_ms' });\n integer('id', { mode: 'timestamp' }); // Date\n ```\n ::\n ::\n ::\n ```mdc height=300\n ::tabs\n ::div{label=\"PostgreSQL\" icon=\"lucide:database\"}\n ### PostgreSQL column types\n\n ```ts\n import { integer, pgTable } from 'drizzle-orm/pg-core';\n\n export const table = pgTable('table', {\n int: integer('int')\n });\n ```\n ::\n ::div{label=\"MySQL\"}\n ### MySQL column types\n\n ```ts\n import { int, mysqlTable } from 'drizzle-orm/mysql-core';\n\n const table = mysqlTable('table', {\n int: int('int')\n });\n ```\n ::\n ::div{label=\"SQLite\"}\n ### SQLite column types\n\n ```ts\n import { integer, sqliteTable } from 'drizzle-orm/sqlite-core';\n\n const table = sqliteTable('table', {\n id: integer('id')\n });\n\n // you can customize integer mode to be number, boolean, timestamp, timestamp_ms\n integer('id', { mode: 'number' });\n integer('id', { mode: 'boolean' });\n integer('id', { mode: 'timestamp_ms' });\n integer('id', { mode: 'timestamp' }); // Date\n ```\n ::\n ::\n ```\n::\n\n### Card Style\n\n::stack\n ::div{class=\"p-4\"}\n ::tabs{variant=\"card\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::\n ```mdc\n ::tabs{variant=\"card\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ```\n::\n\n### Line Style\n:badge[0.6.4]{variant=\"outline\"}\n\n::stack\n ::div{class=\"p-4\"}\n ::tabs{variant=\"line\"}\n ::div{label=\"Preview\" class=\"border flex min-h-[200px] w-full justify-center p-10 items-center rounded-lg shadow-sm\"}\n :badge[Badge]\n ::\n ::div{label=\"Code\"}\n ```tsx\n import { Badge } from \"@/components/ui/badge\"\n\n export function BadgeDemo() {\n return <Badge>Badge</Badge>\n }\n ```\n ::\n ::\n ::\n ```mdc\n ::tabs{variant=\"line\"}\n ::div{label=\"Preview\" class=\"border flex min-h-[200px] w-full justify-center p-10 items-center rounded-lg shadow-sm\"}\n :badge[Badge]\n ::\n ::div{label=\"Code\"}\n ```tsx\n import { Badge } from \"@/components/ui/badge\"\n\n export function BadgeDemo() {\n return <Badge>Badge</Badge>\n }\n ```\n ::\n ::\n ```\n::\n\n### Combobox Style\n:badge[0.7.5]{variant=\"outline\"}\n\n::stack\n ::div{class=\"p-4\"}\n ::tabs{variant=\"combobox\" search-placeholder=\"Search database...\" search-empty=\"No database found.\"}\n ::div{label=\"PostgreSQL\"}\n ### PostgreSQL column types\n\n ```ts\n import { integer, pgTable } from 'drizzle-orm/pg-core';\n\n export const table = pgTable('table', {\n int: integer('int')\n });\n ```\n ::\n ::div{label=\"MySQL\"}\n ### MySQL column types\n\n ```ts\n import { int, mysqlTable } from 'drizzle-orm/mysql-core';\n\n const table = mysqlTable('table', {\n int: int('int')\n });\n ```\n ::\n ::div{label=\"SQLite\"}\n ### SQLite column types\n\n ```ts\n import { integer, sqliteTable } from 'drizzle-orm/sqlite-core';\n\n const table = sqliteTable('table', {\n id: integer('id')\n });\n\n // you can customize integer mode to be number, boolean, timestamp, timestamp_ms\n integer('id', { mode: 'number' });\n integer('id', { mode: 'boolean' });\n integer('id', { mode: 'timestamp_ms' });\n integer('id', { mode: 'timestamp' }); // Date\n ```\n ::\n ::\n ::\n ```mdc height=300\n ::tabs{variant=\"combobox\" search-placeholder=\"Search database...\" search-empty=\"No database found.\"}\n ::div{label=\"PostgreSQL\"}\n ### PostgreSQL column types\n\n ```ts\n import { integer, pgTable } from 'drizzle-orm/pg-core';\n\n export const table = pgTable('table', {\n int: integer('int')\n });\n ```\n ::\n ::div{label=\"MySQL\"}\n ### MySQL column types\n\n ```ts\n import { int, mysqlTable } from 'drizzle-orm/mysql-core';\n\n const table = mysqlTable('table', {\n int: int('int')\n });\n ```\n ::\n ::div{label=\"SQLite\"}\n ### SQLite column types\n\n ```ts\n import { integer, sqliteTable } from 'drizzle-orm/sqlite-core';\n\n const table = sqliteTable('table', {\n id: integer('id')\n });\n\n // you can customize integer mode to be number, boolean, timestamp, timestamp_ms\n integer('id', { mode: 'number' });\n integer('id', { mode: 'boolean' });\n integer('id', { mode: 'timestamp_ms' });\n integer('id', { mode: 'timestamp' }); // Date\n ```\n ::\n ::\n ```\n::\n\n### Synced Tabs\n:badge[0.8.0]{variant=\"outline\"}\n\n:read-more{to=\"/components/docs/pm\"}\n\n::stack\n ::div{class=\"p-4 md:p-8\"}\n #### Scope 1\n ::tabs{variant=\"card\" sync=\"your-scope-name\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::tabs{variant=\"card\" sync=\"your-scope-name\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n\n #### Scope 2\n ::tabs{variant=\"line\" sync=\"scope2\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::tabs{variant=\"separate\" sync=\"scope2\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::\n ```mdc height=400\n #### Scope 1\n ::tabs{variant=\"card\" sync=\"your-scope-name\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::tabs{variant=\"card\" sync=\"your-scope-name\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n\n #### Scope 2\n ::tabs{variant=\"line\" sync=\"scope2\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ::tabs{variant=\"separate\" sync=\"scope2\"}\n ::div{label=\"Card Tab\"}\n ### This is a card-style tab\n ::\n ::div{label=\"Tab 2\" icon=\"lucide:atom\"}\n This is Tab #2\n ::\n ```ts [Code Tab]\n console.log('Hello World!');\n ```\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"variant\" type=\"'separate' | 'card' | 'line' | 'combobox'\" default-value=\"'separate'\"}\n :field{name=\"padded\" type=\"boolean\" default-value=\"true\"}\n :field{name=\"disableSearch\" type=\"boolean\" default-value=\"false\"}[For combobox variant]\n :field{name=\"searchPlaceholder\" type=\"string\" default-value=\"'Search Tab...'\"}[For combobox variant]\n :field{name=\"searchEmpty\" type=\"string\" default-value=\"'No tab found.'\"}[For combobox variant]\n :field{name=\"sync\" type=\"string\"}[Sync scope]\n::\n",
491
+ "icon": "lucide:table-2",
492
+ "badges": [
493
+ {
494
+ "value": "Nuxt UI Pro",
495
+ "to": "https://ui.nuxt.com/pro/prose/tabs",
496
+ "target": "_blank"
497
+ },
498
+ {
499
+ "value": "Source",
500
+ "icon": "lucide:code",
501
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Tabs.vue",
502
+ "target": "_blank"
503
+ }
504
+ ]
505
+ }
506
+ ],
507
+ "icon": "lucide:book",
508
+ "navigation.redirect": "/components/docs/alert",
509
+ "_path": "components/docs"
510
+ },
511
+ {
512
+ "title": "Page Components",
513
+ "children": [
514
+ {
515
+ "title": "Accordion",
516
+ "_id": "content:3.components:3.page:accordion.md",
517
+ "_path": "components/page/accordion",
518
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::accordion{default-value=\"first-item\" collapsible}\n ::accordion-item{value=\"first-item\"}\n #title\n Is it accessible?\n\n #content\n Yes. It adheres to the WAI-ARIA design pattern.\n ::\n ::accordion-item\n #title\n Is it unstyled?\n\n #content\n Yes. It's unstyled by default, giving you freedom over the look and feel.\n ::\n :accordion-item{title=\"Can it be animated?\" content=\"Yes! You can use the transition prop to configure the animation.\"}\n ::\n ::\n ```mdc\n ::accordion{default-value=\"first-item\" collapsible}\n ::accordion-item{value=\"first-item\"}\n #title\n Is it accessible?\n\n #content\n Yes. It adheres to the WAI-ARIA design pattern.\n ::\n\n ::accordion-item\n #title\n Is it unstyled?\n\n #content\n Yes. It's unstyled by default, giving you freedom over the look and feel.\n ::\n :accordion-item{title=\"Can it be animated?\" content=\"Yes! You can use the transition prop to configure the animation.\"}\n ::\n ```\n::\n\nThe `value` prop in `::accordion-item`{lang=\"mdc\"} is auto-generated by default. You can set them to other _unique_ values and put them in the `default-value` prop of `::accordion`{lang=\"mdc\"}.\n\n## Props\n\n#### `::accordion-item`{lang=\"mdc\"}\n\n::field-group\n :field{name=\"type\" type=\"'single' | 'multiple'\" default-value=\"'single'\"}\n :field{name=\"collapsible\" type=\"boolean\" default-value=\"undefined\"}[Whether the items can be collapsed]\n :field{name=\"defaultValue\" type=\"string | string[]\"}[Default open item]\n::\n\n#### `::accordion`{lang=\"mdc\"}\n\n::field-group\n :field{name=\"value\" type=\"string\"}[Item value]\n :field{name=\"title\" type=\"string\"}[Item title]\n :field{name=\"content\" type=\"string\"}[Item content]\n::\n",
519
+ "icon": "lucide:layout-list",
520
+ "badges": [
521
+ {
522
+ "value": "Source",
523
+ "icon": "lucide:code",
524
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Accordion.vue",
525
+ "target": "_blank"
526
+ },
527
+ {
528
+ "value": "0.5.0"
529
+ }
530
+ ]
531
+ },
532
+ {
533
+ "title": "Card Group",
534
+ "_id": "content:3.components:3.page:card-group.md",
535
+ "_path": "components/page/card-group",
536
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::card-group\n ::card\n ---\n title: Components\n icon: lucide:box\n to: https://nuxt.com/docs/api/components/client-only\n target: _blank\n ---\n Explore Nuxt built-in components for pages, layouts, head, and more.\n ::\n ::card\n ---\n title: Composables\n icon: lucide:arrow-right-left\n to: https://nuxt.com/docs/api/composables/use-app-config\n target: _blank\n ---\n Discover Nuxt composable functions for data-fetching, head management and more.\n ::\n ::card\n ---\n title: Utils\n icon: lucide:scissors\n to: https://nuxt.com/docs/api/utils/dollarfetch\n target: _blank\n ---\n Learn about Nuxt utility functions for navigation, error handling and more.\n ::\n ::card\n ---\n title: Commands\n icon: lucide:square-terminal\n to: https://nuxt.com/docs/api/commands/add\n target: _blank\n ---\n List of Nuxt CLI commands to init, analyze, build, and preview your application.\n ::\n ::\n ::\n ```mdc\n ::card-group\n ::card\n ---\n title: Components\n icon: lucide:box\n to: https://nuxt.com/docs/api/components/client-only\n target: _blank\n ---\n Explore Nuxt built-in components for pages, layouts, head, and more.\n ::\n\n ::card\n ---\n title: Composables\n icon: lucide:arrow-right-left\n to: https://nuxt.com/docs/api/composables/use-app-config\n target: _blank\n ---\n Discover Nuxt composable functions for data-fetching, head management and more.\n ::\n\n ::card\n ---\n title: Utils\n icon: lucide:scissors\n to: https://nuxt.com/docs/api/utils/dollarfetch\n target: _blank\n ---\n Learn about Nuxt utility functions for navigation, error handling and more.\n ::\n\n ::card\n ---\n title: Commands\n icon: lucide:square-terminal\n to: https://nuxt.com/docs/api/commands/add\n target: _blank\n ---\n List of Nuxt CLI commands to init, analyze, build, and preview your application.\n ::\n ::\n ```\n::\n\n## Automatically bind data from route\n\nYou can automatically bind data from route by using the `data` prop.\n\n::stack\n ::div{class=\"p-4\"}\n ::card-group{data=\"/components/page/\"}\n ::\n ::\n ```mdc\n ::card-group{data=\"/components/page/\"}\n ::\n ```\n::\n",
537
+ "icon": "lucide:layout-grid",
538
+ "badges": [
539
+ {
540
+ "value": "Nuxt UI Pro",
541
+ "to": "https://ui.nuxt.com/pro/prose/card-group",
542
+ "target": "_blank"
543
+ },
544
+ {
545
+ "value": "Source",
546
+ "icon": "lucide:code",
547
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/CardGroup.vue",
548
+ "target": "_blank"
549
+ }
550
+ ]
551
+ },
552
+ {
553
+ "title": "Card",
554
+ "_id": "content:3.components:3.page:card.md",
555
+ "_path": "components/page/card",
556
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::card\n ---\n icon: lucide:box\n ---\n\n #title\n Card Title\n\n #description\n Description\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n\n #footer\n Footer\n ::\n ::\n ```mdc\n ::card\n ---\n icon: lucide:box\n ---\n\n #title\n Card Title\n\n #description\n Description\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n\n #footer\n Footer\n ::\n ```\n::\n\n### Link\n\n::stack\n ::div{class=\"p-4\"}\n ::card\n ---\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n target: _blank\n # showLinkIcon: false\n ---\n\n #title\n Link Card\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n ::\n ::\n ```mdc\n ::card\n ---\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n target: _blank\n # showLinkIcon: false\n ---\n\n #title\n Link Card\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n ::\n ```\n::\n\n### Media\n\n::stack\n ::div{class=\"p-4\"}\n ::card\n ---\n media: /og-nuxt.png\n media-position: left\n ---\n #title\n Image Card\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n ::\n ::\n ```mdc\n ::card\n ---\n media: /og-nuxt.png\n media-position: left\n ---\n #title\n Media Card\n\n #content\n Beautifully designed **Nuxt Content** template with **shadcn-vue**. _Customizable. Compatible. Open Source._\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"title\" type=\"string\"}[Card title]\n :field{name=\"description\" type=\"string\"}[Card description]\n :field{name=\"content\" type=\"string\"}[Card content]\n :field{name=\"footer\" type=\"string\"}[Card footer]\n :field{name=\"to\" type=\"string\"}[Link URL]\n :field{name=\"target\" type=\"Target\"}[A `target` attribute value to apply on the link]\n :field{name=\"external\" type=\"boolean\"}[Alias to `target='_blank'`]\n :field{name=\"showLinkIcon\" type=\"boolean\" default-value=\"true\"}[Whether to show the link indicator :icon{name=\"lucide:arrow-up-right\"}]\n :field{name=\"icon\" type=\"string\"}[Card icon]\n :field{name=\"iconSize\" type=\"number\" default-value=\"24\"}\n :field{name=\"iconPosition\" type=\"'top' | 'left'\" default-value=\"'top'\"}[Icon position]\n :field{name=\"media\" type=\"string\"}[Media URL]\n :field{name=\"media-position\" type=\"'top' | 'left' | 'right' | 'bottom' | 'cover' | 'center'\" default-value=\"'top'\"}[Media position]\n::\n",
557
+ "icon": "lucide:square",
558
+ "badges": [
559
+ {
560
+ "value": "Nuxt UI Pro",
561
+ "to": "https://ui.nuxt.com/pro/prose/card",
562
+ "target": "_blank"
563
+ },
564
+ {
565
+ "value": "Docus",
566
+ "to": "https://docus.dev/api/components#card",
567
+ "target": "_blank"
568
+ },
569
+ {
570
+ "value": "Source",
571
+ "icon": "lucide:code",
572
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Card.vue",
573
+ "target": "_blank"
574
+ }
575
+ ]
576
+ },
577
+ {
578
+ "title": "Collapsible",
579
+ "_id": "content:3.components:3.page:collapsible.md",
580
+ "_path": "components/page/collapsible",
581
+ "content": "\n\n## Usage\n\n### Simple\n\n::stack\n ::div{class=\"p-4 md:p-6\"}\n ::collapsible\n #title\n Show properties\n\n #content\n This is a **Simple** style collapsible.\n ::\n ::\n ```mdc\n ::collapsible\n #title\n Show properties\n\n #content\n This is a **Simple** style collapsible.\n ::\n ```\n::\n\n### Card\n\n::stack\n ::div{class=\"p-4 md:p-6\"}\n ::collapsible{variant=\"card\" title=\"@peduarte starred 3 repositories\"}\n @radix-ui/primitives\n ::\n ::\n ```mdc\n ::collapsible{variant=\"card\" title=\"@peduarte starred 3 repositories\"}\n @radix-ui/primitives\n ::\n ```\n::\n\n## Props\n\n::field-group\n :field{name=\"variant\" type=\"'simple' | 'card'\" default-value=\"'simple'\"}\n :field{name=\"title\" type=\"string\"}[Collapsible title]\n :field{name=\"defaultOpen\" type=\"boolean\" default-value=\"false\"}\n::\n",
582
+ "icon": "lucide:list-collapse",
583
+ "badges": [
584
+ {
585
+ "value": "Nuxt UI Pro",
586
+ "to": "https://ui.nuxt.com/pro/prose/collapsible",
587
+ "target": "_blank"
588
+ },
589
+ {
590
+ "value": "Source",
591
+ "icon": "lucide:code",
592
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Collapsible.vue",
593
+ "target": "_blank"
594
+ },
595
+ {
596
+ "value": "0.5.8"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "title": "HeroAlt",
602
+ "_id": "content:3.components:3.page:hero-alt.md",
603
+ "_path": "components/page/hero-alt",
604
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::hero-alt\n ---\n announcement:\n title: 'Introducing Charts'\n icon: 'lucide:pie-chart'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: ghost\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n ---\n\n #title\n Build your component library\n\n #description\n Beautifully designed components that you can copy and paste into your apps.\n ::\n ::\n ```mdc\n ::hero-alt\n ---\n announcement:\n title: 'Introducing Charts'\n icon: 'lucide:pie-chart'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: outline\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n leftIcon: 'lucide:github'\n ---\n\n #title\n Build your component library\n\n #description\n Beautifully designed components that you can copy and paste into your apps.\n ::\n ```\n::\n\n### Right\n\n::stack\n ::div{class=\"p-4\"}\n ::hero-alt\n ---\n announcement:\n title: 'Introducing Charts'\n icon: 'lucide:pie-chart'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: ghost\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n mobileRight: 'top' # 'top' | 'bottom'\n ---\n\n #title\n Build your component library\n\n #description\n Beautifully designed components that you can copy and paste into your apps.\n\n #right\n ![logo](/logo.svg)\n ::\n ::\n ```mdc\n ::hero-alt\n ---\n announcement:\n title: 'Introducing Charts'\n icon: 'lucide:pie-chart'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: ghost\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n mobileRight: 'top' # 'top' | 'bottom'\n ---\n\n #title\n Build your component library\n\n #description\n Beautifully designed components that you can copy and paste into your apps.\n\n #right\n ![logo](/logo.svg)\n ::\n ```\n::\n",
605
+ "icon": "lucide:align-left",
606
+ "badges": [
607
+ {
608
+ "value": "Source",
609
+ "icon": "lucide:code",
610
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/HeroAlt.vue",
611
+ "target": "_blank"
612
+ },
613
+ {
614
+ "value": "0.4.0"
615
+ }
616
+ ],
617
+ "toc": false
618
+ },
619
+ {
620
+ "title": "Hero",
621
+ "_id": "content:3.components:3.page:hero.md",
622
+ "_path": "components/page/hero",
623
+ "content": "\n\n## Usage\n\n::stack\n ::div{class=\"p-4\"}\n ::hero\n ---\n announcement:\n title: 'Release v1.0.0'\n icon: 'lucide:party-popper'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: outline\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n leftIcon: 'lucide:github'\n ---\n\n #title\n Effortless and Beautiful :br Docs Template.\n\n #description\n Beautifully designed Nuxt Content template with shadcn-vue. :br Customizable. Compatible. Open Source.\n ::\n ::\n ```mdc\n ::hero\n ---\n announcement:\n title: 'Release v1.0.0'\n icon: 'lucide:party-popper'\n to: /getting-started\n actions:\n - name: Get Started\n to: /getting-started\n - name: GitHub\n variant: outline\n to: https://github.com/ZTL-UwU/shadcn-docs-nuxt\n leftIcon: 'lucide:github'\n ---\n\n #title\n Effortless and Beautiful :br Docs Template.\n\n #description\n Beautifully designed Nuxt Content template with shadcn-vue. :br Customizable. Compatible. Open Source.\n ::\n ```\n::\n",
624
+ "icon": "lucide:align-center",
625
+ "badges": [
626
+ {
627
+ "value": "Source",
628
+ "icon": "lucide:code",
629
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/Hero.vue",
630
+ "target": "_blank"
631
+ }
632
+ ]
633
+ },
634
+ {
635
+ "title": "Team Card",
636
+ "_id": "content:3.components:3.page:team-card.md",
637
+ "_path": "components/page/team-card",
638
+ "content": "\n\n::stack\n ::div{class=\"p-4\"}\n ::team-card-group\n ::team-card\n ---\n avatar: https://www.github.com/ZTL-UwU.png\n name: Tony Zhang\n title: Author of shadcn-docs-nuxt\n links:\n - icon: lucide:github\n to: https://github.com/ZTL-UwU\n - icon: lucide:twitter\n to: https://x.com/ZTL_UwU\n - icon: lucide:coffee\n to: https://ko-fi.com/ztl_uwu\n ---\n ::\n\n ::team-card\n ---\n center: false\n avatar: https://www.github.com/ZTL-UwU.png\n name: Tony Zhang\n title: Author of shadcn-docs-nuxt\n links:\n - icon: lucide:github\n to: https://github.com/ZTL-UwU\n - icon: lucide:twitter\n to: https://x.com/ZTL_UwU\n - icon: lucide:coffee\n to: https://ko-fi.com/ztl_uwu\n ---\n ::\n ::\n ::\n ```mdc\n ::team-card-group\n ::team-card\n ---\n avatar: https://www.github.com/ZTL-UwU.png\n name: Tony Zhang\n title: Author of shadcn-docs-nuxt\n links:\n - icon: lucide:github\n to: https://github.com/ZTL-UwU\n - icon: lucide:twitter\n to: https://x.com/ZTL_UwU\n - icon: lucide:coffee\n to: https://ko-fi.com/ztl_uwu\n ---\n ::\n\n ::team-card\n ---\n center: false\n avatar: https://www.github.com/ZTL-UwU.png\n name: Tony Zhang\n title: Author of shadcn-docs-nuxt\n links:\n - icon: lucide:github\n to: https://github.com/ZTL-UwU\n - icon: lucide:twitter\n to: https://x.com/ZTL_UwU\n - icon: lucide:coffee\n to: https://ko-fi.com/ztl_uwu\n ---\n ::\n ::\n ```\n::\n",
639
+ "icon": "lucide:users",
640
+ "description": "",
641
+ "badges": [
642
+ {
643
+ "value": "Source",
644
+ "icon": "lucide:code",
645
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/content/TeamCard.vue",
646
+ "target": "_blank"
647
+ },
648
+ {
649
+ "value": "0.7.7"
650
+ }
651
+ ]
652
+ }
653
+ ],
654
+ "icon": "lucide:laptop-minimal",
655
+ "_path": "components/page"
656
+ }
657
+ ],
658
+ "icon": "lucide:box",
659
+ "_path": "components"
660
+ },
661
+ {
662
+ "title": "Development",
663
+ "children": [
664
+ {
665
+ "title": "Configuration",
666
+ "children": [
667
+ {
668
+ "title": "Overview",
669
+ "_id": "content:4.development:1.configuration:1.overview.md",
670
+ "_path": "development/configuration/overview",
671
+ "content": "\n\nshadcn-docs-nuxt is configured through `app.config.ts`.\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n header: {\n // ...\n },\n aside: {\n // ...\n },\n main: {\n // ...\n },\n // ...\n },\n});\n```\n\n## Fields Reference\n\nIllustrative type declarations:\n\n```ts\ntype Target = '_blank' | '_parent' | '_self' | '_top' | (string & object) | null | undefined;\n\ninterface ILink {\n title?: string;\n icon?: string;\n to: string;\n target?: Target;\n showLinkIcon?: boolean; // For nav and toc link section\n}\n\ninterface INav {\n title: string;\n links?: (ILink & { description: string; icon: string })[];\n to?: string;\n target?: Target;\n}\n```\n\n### Icons\n\nAll configurable icons can be set to iconify icons, emojis and urls, using the [icon component](/components/docs/icon) under the hood.\n\n## `site`\n\n::field-group\n ::field{name=\"name\" type=\"string\"}\n The site name shown on the tap title: `<page> - <site_name>`.\n ::\n ::field{name=\"description\" type=\"string\"}\n The site description for SEO.\n ::\n ::field{name=\"ogImage\" type=\"string\"}\n The path to the Open Graph image.\n ::\n ::field{name=\"ogImageComponent\" type=\"string\" default-value=\"ShadcnDocs\"}\n The component to use for the dynamic ogImage. Possible values: `ShadcnDocs`, `Nuxt`, `NuxtSeo` or your custom component name.\n ::\n ::field{name=\"ogImageColor\" type=\"'light' | 'dark'\" default-value=\"light\"}\n Color mode to use for the dynamic ogImage.\n ::\n ::field{name=\"umami\" type=\"object\"}\n ::collapsible{title=\"Details\"}\n ::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on the umami integration.\n ::\n ::field{name=\"src\" type=\"string\" default-value=\"https://cloud.umami.is/script.js\"}\n The link src in the tracking code.\n ::\n ::field{name=\"dataWebsiteId\" type=\"string\"}\n The _Website ID_ from umami dashboard.\n ::\n ::\n ::\n ::\n::\n\n## `theme`\n\n::field-group\n ::field{name=\"customizable\" type=\"boolean\" defaultValue=\"true\"}\n Whether the theme can be customized by the user (show the customize button in the header).\n ::\n ::field{name=\"color\" type=\"Color\" defaultValue=\"zinc\"}\n The default color theme. https://www.shadcn-vue.com/themes.html\n ::\n ::field{name=\"radius\" type=\"string\" defaultValue=\"0.5\"}\n The default radius.\n ::\n::\n\n## `banner`\n\n:read-more{to=\"/development/configuration/banner\"}\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to enable the banner.\n ::\n ::field{name=\"showClose\" type=\"boolean\" default-value=\"true\"}\n Whether to show to close button.\n ::\n ::field{name=\"to\" type=\"string\"}\n Link to navigate to. Don't set any value if you don't want to navigate.\n ::\n ::field{name=\"content\" type=\"string\"}\n The content to show (parsed by the MDC parser).\n ::\n ::field{name=\"target\" type=\"Target\" default-value=\"_blank\"}\n Navigation target.\n ::\n ::field{name=\"border\" type=\"boolean\" default-value=\"true\"}\n Whether to show the border at the bottom of the banner.\n ::\n::\n\n## `header`\n\n::field-group\n ::field{name=\"showLoadingIndicator\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show the nuxt loading indicator.\n ::\n ::field{name=\"title\" type=\"string\"}\n The title shown on the header next to the icon.\n ::\n ::field{name=\"showTitle\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show the title text on the header.\n ::\n ::field{name=\"border\" type=\"boolean\" defaultValue=\"false\"}\n Whether to show the bottom border of the header.\n ::\n ::field{name=\"darkModeToggle\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show the dark mode toggle.\n ::\n ::field{name=\"logo\" type=\"{ light: string; dark: string; }\" defaultValue=\"{ light: '/logo.svg', dark: '/logo-dark.svg' }\"}\n The path to the logo image files in `/public`. `light` is for the icon shown in light mode, `dark` is for the icon shown in dark mode.\n ::\n ::field{name=\"showTitleInMobile\" type=\"boolean\" defaultValue=\"false\"}\n Whether to show the logo and title in mobile. (Recommended to use with [button styled search bar](/development/configuration#search))\n ::\n ::field{name=\"nav\" type=\"INav[]\" defaultValue=\"[]\"}\n The content of the navbar in the header.\n ::\n ::field{name=\"links\" type=\"ILink[]\" defaultValue=\"[]\"}\n The links on the right of the header.\n ::\n::\n\n## `aside`\n\n::field-group\n ::field{name=\"useLevel\" type=\"boolean\" defaultValue=\"true\"}\n Whether to use level-styled sidebar.\n ::\n ::field{name=\"collapse\" type=\"boolean\" defaultValue=\"false\"}\n Whether to collapse all collapsible by default.\n ::\n ::field{name=\"collapseLevel\" type=\"number\" defaultValue=\"1\"}\n Collapse folders that are deeper than the defined level. (Set it to `Infinity` if you want to expand all)\n ::\n ::field{name=\"folderStyle\" type=\"'default' | 'tree' | 'group'\" defaultValue=\"default\"}\n The default style used for [folders](/getting-started/writing/folders#parameters).\n ::\n::\n\n## `main`\n\n::field-group\n ::field{name=\"padded\" type=\"boolean\" defaultValue=\"true\"}\n Whether the page is padded.\n ::\n ::field{name=\"breadCrumb\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show the bread crumb.\n ::\n ::field{name=\"showTitle\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show the title section.\n ::\n ::field{name=\"codeCopyToast\" type=\"boolean\" defaultValue=\"true\"}\n Whether to show a toast on code copy.\n ::\n ::field{name=\"codeCopyToastText\" type=\"string\" defaultValue=\"'Copied to clipboard!'\"}\n The text shown in the toaster.\n ::\n ::field{name=\"fieldRequiredText\" type=\"string\" defaultValue=\"'required'\"}\n The text shown in the [field](/components/docs/field) component when a field is required.\n ::\n ::field{name=\"pm\" type=\"('npm' | 'pnpm' | 'bun' | 'yarn')[]\" default-value=\"['npm', 'pnpm', 'bun', 'yarn']\"}\n Package managers shown in the [pm components](/components/docs/pm).\n ::\n ::field{name=\"codeIcon\" type=\"Record<string, string>\"}\n The icon mapping for language / filename in the [code group](/components/docs/code-group) header.\n ::\n ::field{name=\"editLink\" type=\"object\"}\n ::collapsible{title=\"Details\"}\n ::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on the edit link.\n ::\n ::field{name=\"pattern\" type=\"string\"}\n The link pattern.\n ::\n ::field{name=\"text\" type=\"string\" default-value=\"Edit this page\"}\n Text displayed on the link.\n ::\n ::field{name=\"icon\" type=\"string\" default-value=\"lucide:square-pen\"}\n The icon preceding the link.\n ::\n ::field{name=\"placement\" type=\"('docsFooter' | 'toc')[]\" default-value=\"['docsFooter']\"}\n Where to place the edit link.\n ::\n ::\n ::\n ::\n::\n\n## `footer`\n\n::field-group\n ::field{name=\"credits\" type=\"string\" defaultValue=\"''\"}\n The credit text on the left side of the footer (parsed by the MDC parser).\n ::\n ::field{name=\"links\" type=\"ILink[]\" defaultValue=\"[]\"}\n The links on the right side of the footer.\n ::\n::\n\n## `toc`\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" defaultValue=\"true\"}\n Whether to turn on the toc section.\n ::\n ::field{name=\"enableInMobile\" type=\"boolean\" defaultValue=\"false\"}\n Whether to turn on the toc section in mobile.\n ::\n ::field{name=\"title\" type=\"string\" defaultValue=\"'On This Page'\"}\n The title for the toc section.\n ::\n ::field{name=\"links\" type=\"ILink[]\" defaultValue=\"[]\"}\n The links under the toc section.\n ::\n ::field{name=\"carbonAds\" type=\"object\"}\n ::collapsible{title=\"Details\"}\n ::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on Carbon Ads.\n ::\n ::field{name=\"disableInDev\" type=\"boolean\" default-value=\"false\"}\n Whether to disable Carbon Ads in dev environment.\n ::\n ::field{name=\"code\" type=\"string\"}\n Carbon Ads code.\n ::\n ::field{name=\"placement\" type=\"string\"}\n Carbon Ads placement.\n ::\n ::field{name=\"format\" type=\"'cover' | 'responsive'\" default-value=\"cover\"}\n Carbon Ads format.\n ::\n ::\n ::\n ::\n::\n\n## `search`\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" defaultValue=\"true\"}\n Whether to turn on the search feature.\n ::\n ::field{name=\"inAside\" type=\"boolean\" defaultValue=\"false\"}\n Whether to show the search bar in the sidebar.\n ::\n ::field{name=\"style\" type=\"'input' | 'button'\" defaultValue=\"input\"}\n Whether the search bar is displayed as a input or a button.\n ::\n ::field{name=\"placeholder\" type=\"string\" defaultValue=\"'Search...'\"}\n The placeholder text shown in the search bar.\n ::\n ::field{name=\"placeholderDetailed\" type=\"string\" defaultValue=\"'Search documentation...'\"}\n The placeholder text shown in the search dialog input.\n ::\n::\n\n## Default Config\n\n:read-more{to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/composables/useConfig.ts\" title=\"source file\" icon=\"lucide:code\"}\n",
672
+ "description": "Customizing shadcn-docs-nuxt.",
673
+ "icon": "lucide:settings-2"
674
+ },
675
+ {
676
+ "title": "Nuxt Content",
677
+ "_id": "content:4.development:1.configuration:2.nuxt-content.md",
678
+ "_path": "development/configuration/nuxt-content",
679
+ "content": "\n\n::Alert\n---\nto: https://content.nuxt.com/get-started/configuration\ntarget: _blank\n---\nRead the detailed configuration guide in **Nuxt Content** Docs.\n::\n\nThe default nuxt content config can be overridden in `nuxt.config.ts`.\n\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n devtools: { enabled: true },\n extends: ['shadcn-docs-nuxt'],\n\n // Here\n content: {\n // ...\n },\n\n compatibilityDate: '2024-07-06',\n});\n```\n\n## Syntax Highlighting\n\n### Theme\n\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n content: {\n highlight: {\n theme: {\n // Default theme\n default: 'github-light',\n // Theme used in dark-mode\n dark: 'github-dark',\n }\n }\n }\n});\n```\n\n:read-more{to=\"https://shiki.style/themes\"}\n\n### Languages\n\nThe default highlighted languages are: `['json', 'js', 'ts', 'html', 'css', 'vue', 'diff', 'shell', 'markdown', 'yaml', 'bash', 'ini']`{lang=\"js\"}.\n\nIf you need to highlight other languages, add them in your `nuxt.config.ts`.\n\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n content: {\n highlight: {\n langs: ['c', 'cpp'],\n },\n },\n});\n```\n\n:read-more{to=\"https://shiki.style/languages\"}\n\n## Default Config\n\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n content: {\n documentDriven: true,\n highlight: {\n theme: {\n default: 'github-light',\n dark: 'github-dark',\n },\n preload: ['json', 'js', 'ts', 'html', 'css', 'vue', 'diff', 'shell', 'markdown', 'yaml', 'bash', 'ini'],\n },\n navigation: {\n fields: [\n 'description',\n 'icon',\n 'navBadges',\n 'navTruncate',\n 'badges',\n 'toc',\n 'sidebar',\n 'collapse',\n 'editLink',\n 'prevNext',\n 'breadcrumb',\n ],\n },\n experimental: {\n search: {\n indexed: true,\n },\n },\n },\n});\n```\n",
680
+ "description": "Configuring the Nuxt Content module.",
681
+ "icon": "lucide:book"
682
+ },
683
+ {
684
+ "title": "OG Image",
685
+ "_id": "content:4.development:1.configuration:3.og-image.md",
686
+ "_path": "development/configuration/og-image",
687
+ "content": "\n\n**shadcn-docs-nuxt** utilizes the [nuxt-og-image](https://nuxtseo.com/og-image/getting-started/installation) module to generate dynamic OG Images.\n\nThe dynamic OG Image is used in all pages **except** the index page. The index page uses a static OG Image defined in the [`ogImage`](/development/configuration/shadcn-docs#site) field instead.\n\n## Using Built-in Templates\n\nTo use a template, set the name of the OG Image component in the [`ogImageComponent`](/development/configuration/shadcn-docs#site).\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n site: {\n ogImageComponent: 'ShadcnDocs',\n ogImageColor: 'light', // or 'dark'\n },\n },\n});\n```\n\nOut of the box, a shadcn-docs-nuxt template and multiple community templates are available.\n\n::tabs{variant=\"card\"}\n ::div{label=\"ShadcnDocs\"}\n ![Shadcn Docs OG Image Preview](/og-shadcn-docs.png){width=\"1000\"}\n ::\n ::div{label=\"ShadcnDocs (Dark)\"}\n ![Shadcn Docs OG Image Preview](/og-shadcn-docs-dark.png){width=\"1000\"}\n ::\n ::div{label=\"Nuxt\"}\n ![Nuxt OG Image Preview](/og-nuxt.png){width=\"1000\"}\n ::\n ::div{label=\"Nuxt SEO\"}\n ![NuxtSEO OG Image Preview](/og-nuxt-seo.png){width=\"1000\"}\n ::\n::\n\n::alert{to=\"https://github.com/nuxt-modules/og-image/tree/main/src/runtime/nuxt/components/Templates/Community\" icon=\"lucide:list\"}\nSee the full list of community templates.\n::\n\n## Using Custom Templates\n\nTo use a custom template, create a template by following the guide in the [Nuxt SEO Docs](https://nuxtseo.com/og-image/getting-started/getting-familar-with-nuxt-og-image#_1-create-your-template-component). Then set the component name of your template in `ogImageComponent`.\n\n::code-group\n```vue [components/OgImage/BlogPost.vue]\n<template>\n <div class=\"flex size-full items-start justify-start border-[12px] border-solid border-blue-500 bg-gray-50\">\n <div class=\"flex h-full items-start justify-start\">\n <div class=\"flex size-full flex-col justify-between\">\n <h1 class=\"p-20 text-left text-[80px] font-black\">\n {{ title }}\n </h1>\n <p class=\"mb-0 px-20 pb-10 text-2xl font-bold\">\n mycoolsite.com\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nwithDefaults(defineProps<{\n title?: string;\n}>(), {\n title: 'title',\n});\n</script>\n```\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n site: {\n ogImageComponent: 'BlogPost',\n },\n },\n});\n```\n::\n",
688
+ "description": "Customizing the dynamic OG Image.",
689
+ "icon": "lucide:image"
690
+ },
691
+ {
692
+ "title": "Edit Link",
693
+ "_id": "content:4.development:1.configuration:4.edit-link.md",
694
+ "_path": "development/configuration/edit-link",
695
+ "content": "\n\nAn edit link allows you to display a link at the end of each page to edit the page on GitHub / GitLab.\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n main: {\n editLink: {\n enable: true,\n pattern: 'https://github.com/ZTL-UwU/shadcn-docs-nuxt/edit/main/content/:path',\n text: 'Edit this page on GitHub',\n icon: 'lucide:square-pen',\n placement: ['docsFooter', 'toc'],\n },\n }\n },\n});\n```\n\n- The `pattern` option defines the URL structure for the link, and `:path` is going to be replaced with the page path.\n\n- The `text` option allows you to customize the link text (default is `Edit this page`)\n\n- The `icon` option allows you to customize the icon (default is `lucide:square-pen`)\n\n- The `placement` option controls the places to put the edit link.\n - `docsFooter`: at the end of the page.\n - `toc`: in the TOC links section.\n\n### Front Matter\n\nThe edit link can be disabled per-page using the `editLink` option in front matter.\n\n```yaml\n---\neditLink: false\n---\n```\n\n## Parameters\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on the edit link.\n ::\n ::field{name=\"pattern\" type=\"string\"}\n The link pattern.\n ::\n ::field{name=\"text\" type=\"string\" default-value=\"Edit this page\"}\n Text displayed on the link.\n ::\n ::field{name=\"icon\" type=\"string\" default-value=\"lucide:square-pen\"}\n The icon preceding the link.\n ::\n ::field{name=\"placement\" type=\"('docsFooter' | 'toc')[]\" default-value=\"['docsFooter']\"}\n Where to place the edit link.\n ::\n::\n",
696
+ "icon": "lucide:square-pen",
697
+ "description": "A link to the source file."
698
+ },
699
+ {
700
+ "title": "Banner",
701
+ "_id": "content:4.development:1.configuration:5.banner.md",
702
+ "_path": "development/configuration/banner",
703
+ "content": "\n\n::stack\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n banner: {\n enable: true,\n showClose: true,\n content: 'Welcome to **shadcn-docs-nuxt**',\n to: 'https://github.com/ZTL-UwU/shadcn-docs-nuxt',\n target: '_blank',\n border: true,\n },\n },\n});\n```\n![Preview](/banner-preview.png){width=\"1000\"}\n::\n\n## Parameters\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to enable the banner.\n ::\n ::field{name=\"showClose\" type=\"boolean\" default-value=\"true\"}\n Whether to show to close button.\n ::\n ::field{name=\"to\" type=\"string\"}\n Link to navigate to. Don't set any value if you don't want to navigate.\n ::\n ::field{name=\"content\" type=\"string\"}\n The content to show (parsed by the MDC parser).\n ::\n ::field{name=\"target\" type=\"Target\" default-value=\"_blank\"}\n Navigation target.\n ::\n ::field{name=\"border\" type=\"boolean\" default-value=\"true\"}\n Whether to show the border at the bottom of the banner.\n ::\n::\n",
704
+ "icon": "lucide:panel-top",
705
+ "description": "Show a banner on the top of the page.",
706
+ "badges": [
707
+ {
708
+ "value": "Source",
709
+ "icon": "lucide:code",
710
+ "to": "https://github.com/ZTL-UwU/shadcn-docs-nuxt/blob/main/components/layout/Banner.vue",
711
+ "target": "_blank"
712
+ },
713
+ {
714
+ "value": "0.8.3"
715
+ }
716
+ ]
717
+ },
718
+ {
719
+ "title": "Carbon Ads",
720
+ "_id": "content:4.development:1.configuration:6.carbon-ads.md",
721
+ "_path": "development/configuration/carbon-ads",
722
+ "content": "\n\n**shadcn-docs-nuxt** has built-in support for [Carbon Ads](https://www.carbonads.net/). Add your Carbon Ads credentials to `app.config.ts` and ads will be displayed at the bottom of the toc section.\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n toc: {\n enable: true,\n carbonAds: {\n enable: true,\n disableInDev: false,\n code: 'your-carbon-code',\n placement: 'your-carbon-placement',\n format: 'your-carbon-format', // defaults to 'cover'\n },\n }\n },\n});\n```\n\nThese values are used to call carbon CDN script as shown below.\n\n```ts\n`//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}&format=${format}`;\n```\n\n:read-more{title=\"Carbon Ads website\" to=\"https://www.carbonads.net/\"}\n\n### Disabling on certain pages\n\n```md\n---\ntitle: Page Title\ntoc:\n carbonAds:\n enable: false\n---\n\n<!-- Page Content -->\n```\n\n## Parameters\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on Carbon Ads.\n ::\n ::field{name=\"disableInDev\" type=\"boolean\" default-value=\"false\"}\n Whether to disable Carbon Ads in dev environment.\n ::\n ::field{name=\"code\" type=\"string\"}\n Carbon Ads code.\n ::\n ::field{name=\"placement\" type=\"string\"}\n Carbon Ads placement.\n ::\n ::field{name=\"format\" type=\"'cover' | 'responsive'\" default-value=\"cover\"}\n Carbon Ads format.\n ::\n::\n",
723
+ "icon": "lucide:chart-line",
724
+ "description": "Run ads at the bottom of the TOC section."
725
+ },
726
+ {
727
+ "title": "Umami",
728
+ "_id": "content:4.development:1.configuration:7.umami.md",
729
+ "_path": "development/configuration/umami",
730
+ "content": "\n\n**shadcn-docs-nuxt** has built-in support for [Umami Analytics](https://umami.is/). Add your Umami `data-website-id` to `app.config.ts`.\n\n```ts [app.config.ts]\nexport default defineAppConfig({\n shadcnDocs: {\n site: {\n umami: {\n enable: true,\n src: 'https://cloud.umami.is/script.js',\n dataWebsiteId: 'your-data-website-id',\n },\n },\n },\n});\n```\n\nThese values are used to add the Umami script to `<head>`{lang=\"html\"} as shown below.\n\n```html\n<script defer src=\"https://cloud.umami.is/script.js\" data-website-id=\"your-data-website-id\"></script>\n```\n\n## Parameters\n\n::field-group\n ::field{name=\"enable\" type=\"boolean\" default-value=\"false\"}\n Whether to turn on the umami integration.\n ::\n ::field{name=\"src\" type=\"string\" default-value=\"https://cloud.umami.is/script.js\"}\n The link src in the tracking code.\n ::\n ::field{name=\"dataWebsiteId\" type=\"string\"}\n The _Website ID_ from umami dashboard.\n ::\n::\n",
731
+ "icon": "lucide:cloud",
732
+ "description": "Integration for Umami analytics."
733
+ }
734
+ ],
735
+ "icon": "lucide:settings",
736
+ "navigation.redirect": "/development/configuration/overview",
737
+ "_path": "development/configuration"
738
+ },
739
+ {
740
+ "title": "Advanced",
741
+ "children": [
742
+ {
743
+ "title": "Overriding",
744
+ "_id": "content:4.development:2.advanced:1.override.md",
745
+ "_path": "development/advanced/override",
746
+ "content": "\n\n_shadcn-docs-nuxt_ is a [Nuxt Layer](https://nuxt.com/docs/getting-started/layers). You can override any component in _shadcn-docs-nuxt_ by creating a custom vue component in your project with the same path as the original component. **Make sure that your component contains the same props as the original component.**\n\nHere is a brief showcase of the `components/` folder in _shadcn-docs-nuxt_.\n\n::file-tree\n---\ntree:\n - components:\n - layout:\n - Header.vue\n - Footer.vue\n - ...\n - content:\n - Accordion.vue\n - Alert.vue\n - ProseCode.vue\n - ...\n - ui:\n - button/\n - card/\n - ...\n---\n::\n\n:alert[Check out the complete file structure on **GitHub**]{to=\"https://github.com/ZTL-UwU/shadcn-docs-nuxt/tree/main/components\" target=\"_blank\"}\n\nFor example, if you want to override the `Footer` component, create `/components/layout/Footer.vue` in your project root.\n\n```vue [/components/layout/Footer.vue]\n<template>\n <footer class=\"py-6 text-muted-foreground md:px-8 md:py-0\">\n <div class=\"container flex flex-col items-center justify-between gap-2 md:h-24 md:flex-row\">\n My footer\n <span class=\"flex-1\" />\n {{ footer.credits }}\n </div>\n </footer>\n</template>\n\n<script setup lang=\"ts\">\nconst { footer } = useConfig().value;\n</script>\n```\n",
747
+ "icon": "lucide:blocks",
748
+ "description": "Replacing shadcn-docs-nuxt components with custom vue components."
749
+ },
750
+ {
751
+ "title": "Math Equations",
752
+ "_id": "content:4.development:2.advanced:2.math.md",
753
+ "_path": "development/advanced/math",
754
+ "content": "\n\n::tabs{variant=\"line\"}\n ::div{label=\"KaTeX\"}\n ::steps\n ### Install Plugins\n :pm-install{name=\"remark-math rehype-katex\" save-dev}\n\n ### Add Plugins to Nuxt Config\n ```ts [nuxt.config.ts]\n export default defineNuxtConfig({\n devtools: { enabled: true },\n extends: ['shadcn-docs-nuxt'],\n css: [\n 'katex/dist/katex.min.css',\n ],\n content: {\n markdown: {\n remarkPlugins: [\n 'remark-math',\n ],\n rehypePlugins: {\n 'rehype-katex': {\n output: 'html',\n },\n },\n },\n },\n });\n ```\n\n ### Write LaTeX\n ````mdc\n #### Inline\n $E = mc^2$\n\n #### Centered\n When $a \\ne 0$, there are two solutions to $(ax^2 + bx + c = 0)$ and they are\n $$ x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a} $$\n\n #### Math Block\n ```math\n L = \\frac{1}{2} \\rho v^2 S C_L\n ```\n ````\n ::\n ::\n ::div{label=\"MathJax\"}\n ::steps\n ### Install Plugins\n :pm-install{name=\"remark-math rehype-mathjax\" save-dev}\n\n ### Add Plugins to Nuxt Config\n ```ts [nuxt.config.ts]\n export default defineNuxtConfig({\n devtools: { enabled: true },\n extends: ['shadcn-docs-nuxt'],\n content: {\n markdown: {\n remarkPlugins: [\n 'remark-math',\n ],\n rehypePlugins: [\n 'rehype-mathjax',\n ],\n },\n },\n });\n ```\n\n ### Write LaTeX\n ````mdc\n $E = mc^2$\n\n $$\n E = mc^2\n $$\n\n ```math\n E = mc^2\n ```\n ````\n ::\n ::\n::\n",
755
+ "icon": "lucide:sigma",
756
+ "description": "Write LaTeX in shadcn-docs-nuxt."
757
+ }
758
+ ],
759
+ "icon": "lucide:pyramid",
760
+ "navigation.redirect": "/development/configuration",
761
+ "_path": "development/advanced"
762
+ },
763
+ {
764
+ "title": "Themes",
765
+ "_id": "content:4.development:3.themes.md",
766
+ "_path": "development/themes",
767
+ "content": "\n\n::Alert{to=\"/development/configuration#theme\"}\nSee how to customize the theme in **Configuration**.\n::\n",
768
+ "icon": "lucide:palette",
769
+ "description": "Add colors. Make it yours."
770
+ },
771
+ {
772
+ "title": "Composables",
773
+ "_id": "content:4.development:4.composables.md",
774
+ "_path": "development/composables",
775
+ "content": "\n\n### `useConfig()`\n\nGet the config from `app.config.ts`.\n\n- `main`, `header`, `aside`, `footer` and `toc` can be set from `_dir.yml` and any `page.md` file.\n\n```ts\nconst {\n site,\n search,\n header,\n main,\n aside,\n footer,\n toc,\n} = useConfig();\n```\n\n### `useScrollspy()`\n\nModified from [docus](https://github.com/nuxt-themes/docus/blob/main/composables/useScrollspy.ts). `useScrollspy()` is used in docs layout to make the ToC display the currently visible headings.\n\n```ts\nconst {\n // Headings on the page\n visibleHeadings,\n // Active headings (for the current page)\n activeHeadings,\n // Update headings (an array of DOM nodes)\n updateHeadings\n} = useScrollspy();\n```\n",
776
+ "description": "Composable functions exported by shadcn-docs-nuxt.",
777
+ "icon": "lucide:square-function"
778
+ },
779
+ {
780
+ "title": "Installation",
781
+ "_id": "content:4.development:5.installation.md",
782
+ "_path": "development/installation",
783
+ "content": "\n\n## Using the starter template\n\n::steps\n### Get Starter Template\n\n:pm-x{command=\"nuxi@latest init <project-name> -t github:ZTL-UwU/shadcn-docs-nuxt-starter\"}\n\n::alert\nAlternatively, you can clone or download the template from the [GitHub repo](https://github.com/ZTL-UwU/shadcn-docs-nuxt-starter).\n::\n\n### Install Dependencies\n\n:pm-install\n\n### Development Server\n\n:pm-run{script=\"dev\"}\n\n::alert{type=\"success\" icon=\"lucide:circle-check\"}\nWell done! A browser window should automatically open for http://localhost:3000.\n::\n\n### Configure shadcn-docs\n\nPick the theme or adjust other settings to your liking.\n\n:read-more{to=\"/development/configuration/shadcn-docs\"}\n\n::\n",
784
+ "description": "How to install shadcn-docs-nuxt in your app.",
785
+ "icon": "lucide:play"
786
+ }
787
+ ],
788
+ "icon": "lucide:code-xml",
789
+ "navigation.redirect": "/development/configuration",
790
+ "_path": "development"
791
+ }
792
+ ]