@baybreezy/docd 0.0.1
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.
- package/app/app.config.ts +239 -0
- package/app/app.vue +19 -0
- package/app/assets/css/tailwind.css +335 -0
- package/app/assets/css/theme.css +1171 -0
- package/app/components/OgImage/Docs.takumi.vue +69 -0
- package/app/components/OgImage/Landing.takumi.vue +64 -0
- package/app/components/OgImage/Site.takumi.vue +32 -0
- package/app/components/Ui/Avatar/Avatar.vue +75 -0
- package/app/components/Ui/Avatar/Badge.vue +34 -0
- package/app/components/Ui/Avatar/Fallback.vue +30 -0
- package/app/components/Ui/Avatar/Group.vue +29 -0
- package/app/components/Ui/Avatar/GroupCount.vue +29 -0
- package/app/components/Ui/Avatar/Image.vue +29 -0
- package/app/components/Ui/Badge.vue +86 -0
- package/app/components/Ui/BadgeGroup.vue +314 -0
- package/app/components/Ui/BgPattern/Grid.vue +137 -0
- package/app/components/Ui/BorderBeam.vue +97 -0
- package/app/components/Ui/Breadcrumbs.vue +103 -0
- package/app/components/Ui/Button.vue +169 -0
- package/app/components/Ui/ButtonGroup/ButtonGroup.vue +54 -0
- package/app/components/Ui/ButtonGroup/Separator.vue +38 -0
- package/app/components/Ui/ButtonGroup/Text.vue +33 -0
- package/app/components/Ui/Card/Action.vue +31 -0
- package/app/components/Ui/Card/Card.vue +58 -0
- package/app/components/Ui/Card/Content.vue +34 -0
- package/app/components/Ui/Card/Description.vue +36 -0
- package/app/components/Ui/Card/Footer.vue +31 -0
- package/app/components/Ui/Card/Header.vue +31 -0
- package/app/components/Ui/Card/Title.vue +37 -0
- package/app/components/Ui/Collapsible/Collapsible.vue +16 -0
- package/app/components/Ui/Collapsible/Content.vue +27 -0
- package/app/components/Ui/Collapsible/Trigger.vue +13 -0
- package/app/components/Ui/Command/Command.vue +115 -0
- package/app/components/Ui/Command/Dialog.vue +65 -0
- package/app/components/Ui/Command/Empty.vue +32 -0
- package/app/components/Ui/Command/Footer.vue +40 -0
- package/app/components/Ui/Command/Group.vue +58 -0
- package/app/components/Ui/Command/Input.vue +57 -0
- package/app/components/Ui/Command/Item.vue +102 -0
- package/app/components/Ui/Command/List.vue +33 -0
- package/app/components/Ui/Command/Separator.vue +30 -0
- package/app/components/Ui/Command/Shortcut.vue +28 -0
- package/app/components/Ui/Container.vue +46 -0
- package/app/components/Ui/ContextMenu/Arrow.vue +43 -0
- package/app/components/Ui/ContextMenu/CheckboxItem.vue +42 -0
- package/app/components/Ui/ContextMenu/Content.vue +53 -0
- package/app/components/Ui/ContextMenu/ContextMenu.vue +14 -0
- package/app/components/Ui/ContextMenu/Group.vue +12 -0
- package/app/components/Ui/ContextMenu/Item.vue +65 -0
- package/app/components/Ui/ContextMenu/ItemIndicator.vue +30 -0
- package/app/components/Ui/ContextMenu/Label.vue +35 -0
- package/app/components/Ui/ContextMenu/Portal.vue +12 -0
- package/app/components/Ui/ContextMenu/RadioGroup.vue +16 -0
- package/app/components/Ui/ContextMenu/RadioItem.vue +40 -0
- package/app/components/Ui/ContextMenu/Separator.vue +25 -0
- package/app/components/Ui/ContextMenu/Shortcut.vue +30 -0
- package/app/components/Ui/ContextMenu/Sub.vue +15 -0
- package/app/components/Ui/ContextMenu/SubContent.vue +55 -0
- package/app/components/Ui/ContextMenu/SubTrigger.vue +42 -0
- package/app/components/Ui/ContextMenu/Trigger.vue +12 -0
- package/app/components/Ui/Dialog/Close.vue +12 -0
- package/app/components/Ui/Dialog/Content.vue +79 -0
- package/app/components/Ui/Dialog/Description.vue +29 -0
- package/app/components/Ui/Dialog/Dialog.vue +14 -0
- package/app/components/Ui/Dialog/Footer.vue +32 -0
- package/app/components/Ui/Dialog/Header.vue +32 -0
- package/app/components/Ui/Dialog/Overlay.vue +25 -0
- package/app/components/Ui/Dialog/Portal.vue +12 -0
- package/app/components/Ui/Dialog/Title.vue +29 -0
- package/app/components/Ui/Dialog/Trigger.vue +12 -0
- package/app/components/Ui/Divider.vue +102 -0
- package/app/components/Ui/Drawer/Close.vue +12 -0
- package/app/components/Ui/Drawer/Content.vue +67 -0
- package/app/components/Ui/Drawer/Description.vue +33 -0
- package/app/components/Ui/Drawer/Drawer.vue +17 -0
- package/app/components/Ui/Drawer/Footer.vue +35 -0
- package/app/components/Ui/Drawer/Header.vue +34 -0
- package/app/components/Ui/Drawer/Overlay.vue +20 -0
- package/app/components/Ui/Drawer/Portal.vue +12 -0
- package/app/components/Ui/Drawer/Title.vue +35 -0
- package/app/components/Ui/Drawer/Trigger.vue +12 -0
- package/app/components/Ui/DropdownMenu/Arrow.vue +43 -0
- package/app/components/Ui/DropdownMenu/CheckboxItem.vue +41 -0
- package/app/components/Ui/DropdownMenu/Content.vue +56 -0
- package/app/components/Ui/DropdownMenu/DropdownMenu.vue +15 -0
- package/app/components/Ui/DropdownMenu/Group.vue +12 -0
- package/app/components/Ui/DropdownMenu/Item.vue +64 -0
- package/app/components/Ui/DropdownMenu/ItemIndicator.vue +32 -0
- package/app/components/Ui/DropdownMenu/Label.vue +34 -0
- package/app/components/Ui/DropdownMenu/Portal.vue +12 -0
- package/app/components/Ui/DropdownMenu/RadioGroup.vue +16 -0
- package/app/components/Ui/DropdownMenu/RadioItem.vue +40 -0
- package/app/components/Ui/DropdownMenu/Separator.vue +25 -0
- package/app/components/Ui/DropdownMenu/Shortcut.vue +44 -0
- package/app/components/Ui/DropdownMenu/Sub.vue +14 -0
- package/app/components/Ui/DropdownMenu/SubContent.vue +56 -0
- package/app/components/Ui/DropdownMenu/SubTrigger.vue +47 -0
- package/app/components/Ui/DropdownMenu/Trigger.vue +12 -0
- package/app/components/Ui/FancyIcon.vue +243 -0
- package/app/components/Ui/GradientDivider.vue +26 -0
- package/app/components/Ui/IframeLazy.vue +97 -0
- package/app/components/Ui/Input.vue +97 -0
- package/app/components/Ui/InputGroup/Addon.vue +66 -0
- package/app/components/Ui/InputGroup/Button.vue +50 -0
- package/app/components/Ui/InputGroup/Input.vue +25 -0
- package/app/components/Ui/InputGroup/InputGroup.vue +44 -0
- package/app/components/Ui/InputGroup/Text.vue +33 -0
- package/app/components/Ui/InputGroup/Textarea.vue +25 -0
- package/app/components/Ui/Kbd/Group.vue +32 -0
- package/app/components/Ui/Kbd/Kbd.vue +62 -0
- package/app/components/Ui/Label.vue +40 -0
- package/app/components/Ui/Popover/Anchor.vue +13 -0
- package/app/components/Ui/Popover/Arrow.vue +42 -0
- package/app/components/Ui/Popover/Close.vue +13 -0
- package/app/components/Ui/Popover/Content.vue +55 -0
- package/app/components/Ui/Popover/Popover.vue +15 -0
- package/app/components/Ui/Popover/Portal.vue +13 -0
- package/app/components/Ui/Popover/Trigger.vue +12 -0
- package/app/components/Ui/Popover/X.vue +38 -0
- package/app/components/Ui/ScrollArea/Corner.vue +12 -0
- package/app/components/Ui/ScrollArea/ScrollArea.vue +38 -0
- package/app/components/Ui/ScrollArea/Scrollbar.vue +39 -0
- package/app/components/Ui/ScrollArea/Thumb.vue +39 -0
- package/app/components/Ui/ScrollArea/Viewport.vue +27 -0
- package/app/components/Ui/Scrollspy.vue +61 -0
- package/app/components/Ui/Separator.vue +40 -0
- package/app/components/Ui/Skeleton.vue +39 -0
- package/app/components/Ui/Sonner.vue +25 -0
- package/app/components/Ui/Tabs/Content.vue +27 -0
- package/app/components/Ui/Tabs/Indicator.vue +37 -0
- package/app/components/Ui/Tabs/List.vue +37 -0
- package/app/components/Ui/Tabs/Tabs.vue +25 -0
- package/app/components/Ui/Tabs/Trigger.vue +41 -0
- package/app/components/Ui/Textarea.vue +81 -0
- package/app/components/Ui/Tooltip/Arrow.vue +30 -0
- package/app/components/Ui/Tooltip/Content.vue +50 -0
- package/app/components/Ui/Tooltip/Portal.vue +12 -0
- package/app/components/Ui/Tooltip/Provider.vue +14 -0
- package/app/components/Ui/Tooltip/Tooltip.vue +25 -0
- package/app/components/Ui/Tooltip/Trigger.vue +12 -0
- package/app/components/Ui/Tree/Item.vue +15 -0
- package/app/components/Ui/Tree/Tree.vue +15 -0
- package/app/components/Ui/Tree/Virtualizer.vue +13 -0
- package/app/components/component-api/ComponentApiSection.vue +135 -0
- package/app/components/content/docs/Callout/DocsCallout.vue +99 -0
- package/app/components/content/prose/ProseA.global.vue +31 -0
- package/app/components/content/prose/ProseBlockquote.global.vue +28 -0
- package/app/components/content/prose/ProseCallout.global.vue +306 -0
- package/app/components/content/prose/ProseCard.global.vue +100 -0
- package/app/components/content/prose/ProseCodeCollapse.global.vue +125 -0
- package/app/components/content/prose/ProseCodeCopy.global.vue +67 -0
- package/app/components/content/prose/ProseCodeGroup.global.vue +104 -0
- package/app/components/content/prose/ProseCodeTree.global.vue +277 -0
- package/app/components/content/prose/ProseCollapsible.global.vue +64 -0
- package/app/components/content/prose/ProseColorModeImage.global.vue +58 -0
- package/app/components/content/prose/ProseComponentApi.global.vue +104 -0
- package/app/components/content/prose/ProseComponentEvents.global.vue +27 -0
- package/app/components/content/prose/ProseComponentExposed.global.vue +27 -0
- package/app/components/content/prose/ProseComponentProps.global.vue +27 -0
- package/app/components/content/prose/ProseComponentSlots.global.vue +27 -0
- package/app/components/content/prose/ProseEm.global.vue +5 -0
- package/app/components/content/prose/ProseField.global.vue +118 -0
- package/app/components/content/prose/ProseFieldGroup.global.vue +62 -0
- package/app/components/content/prose/ProseH1.global.vue +58 -0
- package/app/components/content/prose/ProseH2.global.vue +58 -0
- package/app/components/content/prose/ProseH3.global.vue +58 -0
- package/app/components/content/prose/ProseH4.global.vue +58 -0
- package/app/components/content/prose/ProseH5.global.vue +47 -0
- package/app/components/content/prose/ProseH6.global.vue +47 -0
- package/app/components/content/prose/ProseHr.global.vue +33 -0
- package/app/components/content/prose/ProseIconList.global.vue +113 -0
- package/app/components/content/prose/ProseImg.global.vue +119 -0
- package/app/components/content/prose/ProseLead.global.vue +28 -0
- package/app/components/content/prose/ProseLi.global.vue +25 -0
- package/app/components/content/prose/ProseMermaid.global.vue +127 -0
- package/app/components/content/prose/ProseOl.global.vue +25 -0
- package/app/components/content/prose/ProseP.global.vue +25 -0
- package/app/components/content/prose/ProsePmInstall.global.vue +60 -0
- package/app/components/content/prose/ProsePmRun.global.vue +51 -0
- package/app/components/content/prose/ProsePmX.global.vue +56 -0
- package/app/components/content/prose/ProsePre.global.vue +181 -0
- package/app/components/content/prose/ProseShowCase.global.vue +56 -0
- package/app/components/content/prose/ProseSmartIcon.global.vue +54 -0
- package/app/components/content/prose/ProseStep.global.vue +22 -0
- package/app/components/content/prose/ProseSteps.global.vue +22 -0
- package/app/components/content/prose/ProseStrong.global.vue +34 -0
- package/app/components/content/prose/ProseTable.global.vue +34 -0
- package/app/components/content/prose/ProseTabs.global.vue +104 -0
- package/app/components/content/prose/ProseTabsInner.global.vue +274 -0
- package/app/components/content/prose/ProseTbody.global.vue +5 -0
- package/app/components/content/prose/ProseTd.global.vue +25 -0
- package/app/components/content/prose/ProseTh.global.vue +25 -0
- package/app/components/content/prose/ProseThead.global.vue +9 -0
- package/app/components/content/prose/ProseTr.global.vue +35 -0
- package/app/components/content/prose/ProseUl.global.vue +25 -0
- package/app/components/docs/DocsExtraStuff.vue +39 -0
- package/app/components/docs/DocsGithubLink.vue +11 -0
- package/app/components/docs/DocsHeader.vue +3 -0
- package/app/components/docs/DocsLogo.vue +74 -0
- package/app/components/docs/DocsMobileBar.vue +26 -0
- package/app/components/docs/DocsMobileNav.vue +49 -0
- package/app/components/docs/DocsNav.vue +161 -0
- package/app/components/docs/DocsPageTransition.vue +32 -0
- package/app/components/docs/DocsSearch.vue +220 -0
- package/app/components/docs/DocsSearchButton.vue +20 -0
- package/app/components/docs/DocsThemeCustomizer.vue +229 -0
- package/app/components/docs/DocsThemeToggler.vue +98 -0
- package/app/components/docs/DocsTocRail.vue +162 -0
- package/app/components/docs/DocsToclink.vue +52 -0
- package/app/components/docs/DocsZigZagRail.vue +70 -0
- package/app/components/landing/Hero.vue +222 -0
- package/app/components/page/PageFooter.vue +49 -0
- package/app/components/page/PageHeader.vue +68 -0
- package/app/components/page/PageHeaderLinks.vue +138 -0
- package/app/components/page/PageMobileToc.vue +162 -0
- package/app/components/page/PageToc.vue +33 -0
- package/app/composables/useDefaultSlotItems.ts +90 -0
- package/app/composables/useDocPage.ts +66 -0
- package/app/composables/useDocSearch.ts +23 -0
- package/app/composables/useDocd.ts +107 -0
- package/app/composables/useLogoAssets.ts +319 -0
- package/app/composables/usePm.ts +73 -0
- package/app/composables/useProseComponentMeta.ts +30 -0
- package/app/composables/useScrollspy.ts +327 -0
- package/app/composables/useSeo.ts +240 -0
- package/app/composables/useUIConfig.ts +36 -0
- package/app/layouts/default.vue +5 -0
- package/app/layouts/docs.vue +64 -0
- package/app/middleware/colorMode.global.ts +8 -0
- package/app/middleware/doc-page-layout.ts +11 -0
- package/app/middleware/landing-page-layout.ts +11 -0
- package/app/pages/[...slug].vue +63 -0
- package/app/plugins/mermaid.client.ts +35 -0
- package/app/plugins/navigation-direction.client.ts +15 -0
- package/app/plugins/theme-restore.client.ts +7 -0
- package/app/templates/landing.vue +40 -0
- package/app/transitions/presets.ts +71 -0
- package/app/types/prose-component-meta.d.ts +4 -0
- package/app/utils/og.ts +26 -0
- package/app/utils/prerender.ts +9 -0
- package/app/utils/translucent.ts +56 -0
- package/app/utils/tw-helper.ts +4 -0
- package/content.config.ts +81 -0
- package/index.d.ts +25 -0
- package/modules/config.ts +89 -0
- package/modules/custom-icons.ts +17 -0
- package/modules/markdown-rewrite.ts +96 -0
- package/modules/prose-component-meta.ts +150 -0
- package/modules/routing.ts +22 -0
- package/modules/skills/index.ts +167 -0
- package/modules/skills/runtime/server/routes/skills-files.ts +49 -0
- package/modules/skills/runtime/server/routes/skills-index.ts +8 -0
- package/nuxt.config.ts +96 -0
- package/nuxt.schema.ts +288 -0
- package/package.json +95 -0
- package/server/mcp/tools/get-page.ts +66 -0
- package/server/mcp/tools/list-pages.ts +61 -0
- package/server/routes/sitemap.xml.ts +73 -0
- package/server/utils/content.ts +3 -0
- package/tailwind.config.cjs +55 -0
- package/utils/component-api-content.ts +467 -0
- package/utils/component-api-discovery.ts +165 -0
- package/utils/component-api-schema.ts +28 -0
- package/utils/component-api.ts +243 -0
- package/utils/generate-prose-component-meta.ts +303 -0
- package/utils/git.ts +123 -0
- package/utils/meta.ts +40 -0
- package/utils/pages.ts +21 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import type { DocdTransitionName } from "./transitions/presets";
|
|
2
|
+
|
|
3
|
+
export type BorderType = "dashed" | "solid";
|
|
4
|
+
|
|
5
|
+
export type DocLogoWordmarkConfig = {
|
|
6
|
+
/**
|
|
7
|
+
* URL of the wordmark image to be used in light mode.
|
|
8
|
+
*/
|
|
9
|
+
light?: string;
|
|
10
|
+
/**
|
|
11
|
+
* URL of the wordmark image to be used in dark mode.
|
|
12
|
+
*/
|
|
13
|
+
dark?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type DocdGithubConfig = {
|
|
17
|
+
/** Full GitHub repo URL, e.g. "https://github.com/user/repo" */
|
|
18
|
+
repo: string;
|
|
19
|
+
/** Branch to link to for editing.
|
|
20
|
+
*
|
|
21
|
+
* @default "main"
|
|
22
|
+
*/
|
|
23
|
+
branch?: string;
|
|
24
|
+
/** Path inside the repo where content lives.
|
|
25
|
+
*
|
|
26
|
+
* @default "content"
|
|
27
|
+
*/
|
|
28
|
+
contentDir?: string;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export type DocdExtraLink = {
|
|
32
|
+
/**
|
|
33
|
+
* Icon to be displayed for this link. Should be a valid icon name from [Icônes](https://icones.js.org/)
|
|
34
|
+
*/
|
|
35
|
+
icon?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Text to be displayed for this link.
|
|
38
|
+
*/
|
|
39
|
+
label: string;
|
|
40
|
+
/**
|
|
41
|
+
* URL this link should point to.
|
|
42
|
+
*
|
|
43
|
+
* Can be internal or external. If external, the link will open in a new tab.
|
|
44
|
+
*/
|
|
45
|
+
href: string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether this is an external link.
|
|
48
|
+
*
|
|
49
|
+
* If `true`, the link will open in a new tab.
|
|
50
|
+
*
|
|
51
|
+
* If `false` or omitted, the link will be treated as internal and use NuxtLink for navigation.
|
|
52
|
+
*/
|
|
53
|
+
external?: boolean;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export type DocdTransitionConfig = {
|
|
57
|
+
/**
|
|
58
|
+
* Name of the transition preset to use. Set to `"none"` to disable transitions entirely.
|
|
59
|
+
*
|
|
60
|
+
* @default "fade"
|
|
61
|
+
*/
|
|
62
|
+
name?: DocdTransitionName;
|
|
63
|
+
/**
|
|
64
|
+
* Duration of the transition in seconds.
|
|
65
|
+
*
|
|
66
|
+
* @default 0.35
|
|
67
|
+
*/
|
|
68
|
+
duration?: number;
|
|
69
|
+
/**
|
|
70
|
+
* Easing function to use for the transition.
|
|
71
|
+
*
|
|
72
|
+
* @default "easeOut"
|
|
73
|
+
*/
|
|
74
|
+
easing?: string;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Configuration for the logo used in the header.
|
|
79
|
+
*/
|
|
80
|
+
export type DocLogoConfig = {
|
|
81
|
+
/**
|
|
82
|
+
* URL of the logo image to be used in light mode.
|
|
83
|
+
*/
|
|
84
|
+
light?: string;
|
|
85
|
+
/**
|
|
86
|
+
* URL of the logo image to be used in dark mode.
|
|
87
|
+
*/
|
|
88
|
+
dark?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Alt text for the logo image.
|
|
91
|
+
*/
|
|
92
|
+
alt?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Additional CSS classes to apply to the logo image.
|
|
95
|
+
*/
|
|
96
|
+
classes?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Which logo variant to render in the header.
|
|
99
|
+
*
|
|
100
|
+
* @default "logo"
|
|
101
|
+
*/
|
|
102
|
+
display?: "logo" | "wordmark";
|
|
103
|
+
/**
|
|
104
|
+
* Optional wordmark assets for text-style branding.
|
|
105
|
+
*/
|
|
106
|
+
wordmark?: DocLogoWordmarkConfig;
|
|
107
|
+
/**
|
|
108
|
+
* Favicon path for brand asset references.
|
|
109
|
+
*
|
|
110
|
+
* @default "/favicon.ico"
|
|
111
|
+
*/
|
|
112
|
+
favicon?: string;
|
|
113
|
+
/**
|
|
114
|
+
* URL to a page or folder containing brand assets.
|
|
115
|
+
*/
|
|
116
|
+
brandAssetsUrl?: string;
|
|
117
|
+
/**
|
|
118
|
+
* URL to navigate to when the logo is clicked. If not provided, clicking the logo will navigate to the homepage ("/").
|
|
119
|
+
*
|
|
120
|
+
* @default "/"
|
|
121
|
+
*/
|
|
122
|
+
url?: string;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Configuration for Docd, the documentation layer built with [UI Thing](https://uithing.com).
|
|
127
|
+
*/
|
|
128
|
+
export type DocdConfig = {
|
|
129
|
+
/** GitHub repository info used to generate the "`Edit this page`" link.
|
|
130
|
+
*
|
|
131
|
+
* Inferred from environment variables or local .git config if not provided, but can be set here explicitly if needed.
|
|
132
|
+
*/
|
|
133
|
+
github?: DocdGithubConfig;
|
|
134
|
+
/**
|
|
135
|
+
* UI-related configuration options for Docd.
|
|
136
|
+
*/
|
|
137
|
+
ui?: {
|
|
138
|
+
/**
|
|
139
|
+
* Header-related UI configuration options.
|
|
140
|
+
*/
|
|
141
|
+
header?: {
|
|
142
|
+
/** Title to be displayed in the header.
|
|
143
|
+
*
|
|
144
|
+
* Default: site name (inferred from package.json or Git info)
|
|
145
|
+
*/
|
|
146
|
+
title?: string;
|
|
147
|
+
/**
|
|
148
|
+
* Whether to hide the search button in the sidebar's header.
|
|
149
|
+
*
|
|
150
|
+
* @default false
|
|
151
|
+
*/
|
|
152
|
+
hideSearch?: boolean;
|
|
153
|
+
/** Logo configuration for the header. */
|
|
154
|
+
logo?: DocLogoConfig;
|
|
155
|
+
};
|
|
156
|
+
footer?: {
|
|
157
|
+
/**
|
|
158
|
+
* Whether to hide the theme customizer in the sidebar
|
|
159
|
+
*
|
|
160
|
+
* @default false
|
|
161
|
+
*/
|
|
162
|
+
hideThemeCustomizer?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Whether to hide the light/dark mode toggle in the sidebar.
|
|
165
|
+
*
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
168
|
+
hideLightDarkToggle?: boolean;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Configuration for the table of contents (ToC) sidebar. If not provided, the ToC will still render but with default settings.
|
|
172
|
+
*/
|
|
173
|
+
toc?: {
|
|
174
|
+
/**
|
|
175
|
+
* Title to be displayed at the top of the ToC sidebar.
|
|
176
|
+
*
|
|
177
|
+
* @default "On this page"
|
|
178
|
+
*/
|
|
179
|
+
title?: string;
|
|
180
|
+
/**
|
|
181
|
+
* Icon to be displayed next to the ToC title. Should be a valid icon name from [Icônes](https://icones.js.org/).
|
|
182
|
+
*
|
|
183
|
+
* @default "lucide:list"
|
|
184
|
+
*/
|
|
185
|
+
icon?: string;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Controls whether borders and decorative rails render as dashed or solid.
|
|
189
|
+
*
|
|
190
|
+
* @default "dashed"
|
|
191
|
+
*/
|
|
192
|
+
borderType?: BorderType;
|
|
193
|
+
/**
|
|
194
|
+
* Links rendered in the sidebar's "extra stuff" section.
|
|
195
|
+
*
|
|
196
|
+
* The edit this page link is rendered here automatically if the `github` config is provided.
|
|
197
|
+
*
|
|
198
|
+
* You can add any additional links you want here as well.
|
|
199
|
+
*/
|
|
200
|
+
extraLinks?: DocdExtraLink[];
|
|
201
|
+
/**
|
|
202
|
+
* The color mode to use for the site by default.
|
|
203
|
+
*/
|
|
204
|
+
colorMode?: "light" | "dark";
|
|
205
|
+
/**
|
|
206
|
+
* Page transition configuration. Set `name` to `"none"` to disable transitions entirely.
|
|
207
|
+
*
|
|
208
|
+
* @default {
|
|
209
|
+
* name: "fade",
|
|
210
|
+
* duration: 0.35,
|
|
211
|
+
* easing: "easeOut",
|
|
212
|
+
* }
|
|
213
|
+
*/
|
|
214
|
+
transition?: DocdTransitionConfig;
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export default defineAppConfig({
|
|
219
|
+
docd: {
|
|
220
|
+
ui: {
|
|
221
|
+
toc: { title: "On this page", icon: "lucide:list" },
|
|
222
|
+
borderType: "dashed",
|
|
223
|
+
transition: {
|
|
224
|
+
name: "fade",
|
|
225
|
+
duration: 0.35,
|
|
226
|
+
easing: "easeOut",
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
declare module "@nuxt/schema" {
|
|
233
|
+
interface AppConfigInput {
|
|
234
|
+
/**
|
|
235
|
+
* Configuration for Docd, the documentation layer built with [UI Thing](https://uithing.com).
|
|
236
|
+
*/
|
|
237
|
+
docd?: DocdConfig;
|
|
238
|
+
}
|
|
239
|
+
}
|
package/app/app.vue
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ConfigProvider :use-id="useId">
|
|
3
|
+
<NuxtRouteAnnouncer />
|
|
4
|
+
<NuxtLoadingIndicator color="var(--primary)" />
|
|
5
|
+
<NuxtLayout>
|
|
6
|
+
<DocsPageTransition>
|
|
7
|
+
<NuxtPage :transition="false" />
|
|
8
|
+
</DocsPageTransition>
|
|
9
|
+
</NuxtLayout>
|
|
10
|
+
<UiSonner />
|
|
11
|
+
<DocsSearch v-model="searchModal" />
|
|
12
|
+
</ConfigProvider>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script lang="ts" setup>
|
|
16
|
+
import { ConfigProvider } from "reka-ui";
|
|
17
|
+
import { useId } from "vue";
|
|
18
|
+
const searchModal = useSearchModal();
|
|
19
|
+
</script>
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
@import "tailwindcss" source("../../../../../");
|
|
2
|
+
@import "tw-animate-css";
|
|
3
|
+
|
|
4
|
+
@config "../../../tailwind.config.cjs";
|
|
5
|
+
|
|
6
|
+
@plugin "@tailwindcss/typography";
|
|
7
|
+
|
|
8
|
+
@plugin "@tailwindcss/forms" {
|
|
9
|
+
strategy: "class";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@custom-variant dark (&:is(.dark *));
|
|
13
|
+
@custom-variant light (&:is(.light *));
|
|
14
|
+
@custom-variant hover (&:hover);
|
|
15
|
+
|
|
16
|
+
@utility container {
|
|
17
|
+
margin-inline: auto;
|
|
18
|
+
padding-inline: 2rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@utility no-scrollbar {
|
|
22
|
+
-ms-overflow-style: none;
|
|
23
|
+
scrollbar-width: none;
|
|
24
|
+
&::-webkit-scrollbar {
|
|
25
|
+
display: none;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@theme {
|
|
30
|
+
--breakpoint-tablet: 850px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@theme inline {
|
|
34
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
35
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
36
|
+
--radius-lg: var(--radius);
|
|
37
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
38
|
+
|
|
39
|
+
--color-background: var(--background);
|
|
40
|
+
--color-foreground: var(--foreground);
|
|
41
|
+
--color-card: var(--card);
|
|
42
|
+
--color-card-foreground: var(--card-foreground);
|
|
43
|
+
--color-popover: var(--popover);
|
|
44
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
45
|
+
--color-primary: var(--primary);
|
|
46
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
47
|
+
--color-secondary: var(--secondary);
|
|
48
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
49
|
+
--color-muted: var(--muted);
|
|
50
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
51
|
+
--color-accent: var(--accent);
|
|
52
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
53
|
+
--color-destructive: var(--destructive);
|
|
54
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
55
|
+
--color-border: var(--border);
|
|
56
|
+
--color-input: var(--input);
|
|
57
|
+
--color-ring: var(--ring);
|
|
58
|
+
|
|
59
|
+
--color-sidebar-background: var(--sidebar-background);
|
|
60
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
61
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
62
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
63
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
64
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
65
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
66
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
67
|
+
--color-sidebar-input: var(--sidebar-input);
|
|
68
|
+
|
|
69
|
+
--color-gradient-lime: var(--gradient-lime);
|
|
70
|
+
--color-gradient-ocean: var(--gradient-ocean);
|
|
71
|
+
--color-gradient-wine: var(--gradient-wine);
|
|
72
|
+
--color-gradient-rust: var(--gradient-rust);
|
|
73
|
+
|
|
74
|
+
--color-surface: var(--surface);
|
|
75
|
+
--color-surface-foreground: var(--surface-foreground);
|
|
76
|
+
--color-code: var(--code);
|
|
77
|
+
--color-code-foreground: var(--code-foreground);
|
|
78
|
+
--color-code-highlight: var(--code-highlight);
|
|
79
|
+
--color-code-number: var(--code-number);
|
|
80
|
+
--color-selection: var(--selection);
|
|
81
|
+
--color-selection-foreground: var(--selection-foreground);
|
|
82
|
+
|
|
83
|
+
--font-sans:
|
|
84
|
+
"Geist", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
|
85
|
+
"Segoe UI Symbol", "Noto Color Emoji";
|
|
86
|
+
--font-mono:
|
|
87
|
+
"Geist Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
88
|
+
"Liberation Mono", "Courier New", monospace;
|
|
89
|
+
--font-display--font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
|
90
|
+
|
|
91
|
+
--animate-shine: shine 3s ease-out infinite;
|
|
92
|
+
--animate-gradient-flow: gradientFlow 10s ease 0s infinite normal none running;
|
|
93
|
+
--animate-meteor: meteor 5s linear infinite;
|
|
94
|
+
--animate-background-position-spin: background-position-spin 3000ms infinite alternate;
|
|
95
|
+
--animate-grid: grid 15s linear infinite;
|
|
96
|
+
|
|
97
|
+
@keyframes grid {
|
|
98
|
+
0% {
|
|
99
|
+
transform: translateY(-50%);
|
|
100
|
+
}
|
|
101
|
+
100% {
|
|
102
|
+
transform: translateY(0);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@keyframes shine {
|
|
107
|
+
0% {
|
|
108
|
+
background-position: 200% 0;
|
|
109
|
+
}
|
|
110
|
+
25%,
|
|
111
|
+
100% {
|
|
112
|
+
background-position: -200% 0;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes gradientFlow {
|
|
117
|
+
50% {
|
|
118
|
+
background-position: 100% 50%;
|
|
119
|
+
}
|
|
120
|
+
0%,
|
|
121
|
+
100% {
|
|
122
|
+
background-position: 0% 50%;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@keyframes meteor {
|
|
127
|
+
0% {
|
|
128
|
+
transform: rotate(var(--angle)) translateX(0);
|
|
129
|
+
opacity: 1;
|
|
130
|
+
}
|
|
131
|
+
70% {
|
|
132
|
+
opacity: 1;
|
|
133
|
+
}
|
|
134
|
+
100% {
|
|
135
|
+
transform: rotate(var(--angle)) translateX(-500px);
|
|
136
|
+
opacity: 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@keyframes background-position-spin {
|
|
141
|
+
0% {
|
|
142
|
+
background-position: top center;
|
|
143
|
+
}
|
|
144
|
+
100% {
|
|
145
|
+
background-position: bottom center;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@layer base {
|
|
151
|
+
:root {
|
|
152
|
+
--radius: 0.625rem;
|
|
153
|
+
--background: oklch(1 0 0);
|
|
154
|
+
--foreground: oklch(0.141 0.005 285.823);
|
|
155
|
+
--card: oklch(1 0 0);
|
|
156
|
+
--card-foreground: oklch(0.141 0.005 285.823);
|
|
157
|
+
--popover: oklch(1 0 0);
|
|
158
|
+
--popover-foreground: oklch(0.141 0.005 285.823);
|
|
159
|
+
--primary: oklch(0.21 0.006 285.885);
|
|
160
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
161
|
+
--secondary: oklch(0.967 0.001 286.375);
|
|
162
|
+
--secondary-foreground: oklch(0.21 0.006 285.885);
|
|
163
|
+
--muted: oklch(0.967 0.001 286.375);
|
|
164
|
+
--muted-foreground: oklch(0.552 0.016 285.938);
|
|
165
|
+
--accent: oklch(0.967 0.001 286.375);
|
|
166
|
+
--accent-foreground: oklch(0.21 0.006 285.885);
|
|
167
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
168
|
+
--border: oklch(0.92 0.004 286.32);
|
|
169
|
+
--input: oklch(0.92 0.004 286.32);
|
|
170
|
+
--ring: oklch(0.705 0.015 286.067);
|
|
171
|
+
--chart-1: oklch(0.646 0.222 41.116);
|
|
172
|
+
--chart-2: oklch(0.6 0.118 184.704);
|
|
173
|
+
--chart-3: oklch(0.398 0.07 227.392);
|
|
174
|
+
--chart-4: oklch(0.828 0.189 84.429);
|
|
175
|
+
--chart-5: oklch(0.769 0.188 70.08);
|
|
176
|
+
--sidebar: oklch(0.985 0 0);
|
|
177
|
+
--sidebar-foreground: oklch(0.141 0.005 285.823);
|
|
178
|
+
--sidebar-primary: oklch(0.21 0.006 285.885);
|
|
179
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
180
|
+
--sidebar-accent: oklch(0.967 0.001 286.375);
|
|
181
|
+
--sidebar-accent-foreground: oklch(0.21 0.006 285.885);
|
|
182
|
+
--sidebar-border: oklch(0.92 0.004 286.32);
|
|
183
|
+
--sidebar-ring: oklch(0.705 0.015 286.067);
|
|
184
|
+
|
|
185
|
+
/* Gradient slide show Colors */
|
|
186
|
+
--gradient-lime: oklch(67.287% 0.1546 116.644);
|
|
187
|
+
--gradient-ocean: oklch(44.56% 0.10114 242.813);
|
|
188
|
+
--gradient-wine: oklch(32.332% 0.12034 5.266);
|
|
189
|
+
--gradient-rust: oklch(55.695% 0.19944 34.155);
|
|
190
|
+
|
|
191
|
+
--nav-width: 280px;
|
|
192
|
+
--header-height: 60px;
|
|
193
|
+
--selection: var(--primary);
|
|
194
|
+
--selection-foreground: var(--primary-foreground);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.dark {
|
|
198
|
+
--background: oklch(0.141 0.005 285.823);
|
|
199
|
+
--foreground: oklch(0.985 0 0);
|
|
200
|
+
--card: oklch(0.21 0.006 285.885);
|
|
201
|
+
--card-foreground: oklch(0.985 0 0);
|
|
202
|
+
--popover: oklch(0.21 0.006 285.885);
|
|
203
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
204
|
+
--primary: oklch(0.92 0.004 286.32);
|
|
205
|
+
--primary-foreground: oklch(0.21 0.006 285.885);
|
|
206
|
+
--secondary: oklch(0.274 0.006 286.033);
|
|
207
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
208
|
+
--muted: oklch(0.274 0.006 286.033);
|
|
209
|
+
--muted-foreground: oklch(0.705 0.015 286.067);
|
|
210
|
+
--accent: oklch(0.274 0.006 286.033);
|
|
211
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
212
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
213
|
+
--border: oklch(1 0 0 / 10%);
|
|
214
|
+
--input: oklch(1 0 0 / 15%);
|
|
215
|
+
--ring: oklch(0.552 0.016 285.938);
|
|
216
|
+
--chart-1: oklch(0.488 0.243 264.376);
|
|
217
|
+
--chart-2: oklch(0.696 0.17 162.48);
|
|
218
|
+
--chart-3: oklch(0.769 0.188 70.08);
|
|
219
|
+
--chart-4: oklch(0.627 0.265 303.9);
|
|
220
|
+
--chart-5: oklch(0.645 0.246 16.439);
|
|
221
|
+
--sidebar: oklch(0.21 0.006 285.885);
|
|
222
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
223
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
224
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
225
|
+
--sidebar-accent: oklch(0.274 0.006 286.033);
|
|
226
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
227
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
228
|
+
--sidebar-ring: oklch(0.552 0.016 285.938);
|
|
229
|
+
|
|
230
|
+
--surface: oklch(0.2 0 0);
|
|
231
|
+
--surface-foreground: oklch(0.708 0 0);
|
|
232
|
+
--code: var(--surface);
|
|
233
|
+
--code-foreground: var(--surface-foreground);
|
|
234
|
+
--code-highlight: oklch(0.27 0 0);
|
|
235
|
+
--code-number: oklch(0.72 0 0);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@layer base {
|
|
240
|
+
*,
|
|
241
|
+
::after,
|
|
242
|
+
::before,
|
|
243
|
+
::backdrop,
|
|
244
|
+
::file-selector-button {
|
|
245
|
+
border-color: var(--color-border, currentColor);
|
|
246
|
+
}
|
|
247
|
+
button:not(:disabled),
|
|
248
|
+
[role="button"]:not(:disabled) {
|
|
249
|
+
cursor: pointer;
|
|
250
|
+
}
|
|
251
|
+
* {
|
|
252
|
+
@apply border-border outline-ring/50 selection:bg-selection selection:text-selection-foreground;
|
|
253
|
+
}
|
|
254
|
+
html {
|
|
255
|
+
@apply antialiased;
|
|
256
|
+
}
|
|
257
|
+
body {
|
|
258
|
+
@apply bg-background text-foreground;
|
|
259
|
+
}
|
|
260
|
+
::-webkit-scrollbar {
|
|
261
|
+
width: 6px;
|
|
262
|
+
height: 8px;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
::-webkit-scrollbar-track {
|
|
266
|
+
background: transparent;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
::-webkit-scrollbar-thumb {
|
|
270
|
+
background: var(--border);
|
|
271
|
+
border-radius: 4px;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
html {
|
|
276
|
+
color-scheme: light dark;
|
|
277
|
+
}
|
|
278
|
+
html.dark {
|
|
279
|
+
color-scheme: dark;
|
|
280
|
+
}
|
|
281
|
+
html.light {
|
|
282
|
+
color-scheme: light;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
h1 > a,
|
|
286
|
+
h2 > a,
|
|
287
|
+
h3 > a,
|
|
288
|
+
h4 > a,
|
|
289
|
+
h5 > a,
|
|
290
|
+
h6 > a {
|
|
291
|
+
@apply font-bold! text-foreground no-underline hover:text-foreground!;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
code {
|
|
295
|
+
@apply block rounded py-px font-mono;
|
|
296
|
+
> span {
|
|
297
|
+
@apply px-3;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
code:not(pre code):not(a > code) {
|
|
302
|
+
@apply inline-block rounded-sm border bg-muted px-1 py-1 leading-none;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
a > code {
|
|
306
|
+
@apply inline-block border border-dashed border-primary/40 bg-primary/5 px-1 transition hover:border-primary;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
pre::-webkit-scrollbar {
|
|
310
|
+
@apply h-2.5 w-2.5;
|
|
311
|
+
}
|
|
312
|
+
pre::-webkit-scrollbar-track {
|
|
313
|
+
@apply bg-transparent;
|
|
314
|
+
}
|
|
315
|
+
pre::-webkit-scrollbar-corner {
|
|
316
|
+
@apply bg-transparent;
|
|
317
|
+
}
|
|
318
|
+
pre::-webkit-scrollbar-thumb {
|
|
319
|
+
@apply rounded-full bg-muted-foreground/60;
|
|
320
|
+
}
|
|
321
|
+
pre {
|
|
322
|
+
max-height: 400px;
|
|
323
|
+
scrollbar-width: thin;
|
|
324
|
+
scrollbar-color: --alpha(var(--muted) / 40%) transparent;
|
|
325
|
+
@variant dark {
|
|
326
|
+
scrollbar-color: var(--muted) transparent;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.shiki .line {
|
|
331
|
+
display: block;
|
|
332
|
+
&.highlight {
|
|
333
|
+
background-color: var(--muted);
|
|
334
|
+
}
|
|
335
|
+
}
|