vitepress 0.22.2 → 1.0.0-draft.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.
Files changed (134) hide show
  1. package/README.md +4 -4
  2. package/client.d.ts +2 -3
  3. package/dist/client/app/components/ClientOnly.js +1 -1
  4. package/dist/client/app/index.js +5 -7
  5. package/dist/client/app/router.js +11 -5
  6. package/dist/client/theme-default/Layout.vue +25 -183
  7. package/dist/client/theme-default/NotFound.vue +9 -8
  8. package/dist/client/theme-default/components/VPAlgoliaSearchBox.vue +127 -0
  9. package/dist/client/theme-default/components/VPBackdrop.vue +39 -0
  10. package/dist/client/theme-default/components/VPContent.vue +44 -0
  11. package/dist/client/theme-default/components/VPContentDoc.vue +173 -0
  12. package/dist/client/theme-default/components/VPContentDocFooter.vue +140 -0
  13. package/dist/client/theme-default/components/VPContentDocOutline.vue +108 -0
  14. package/dist/client/theme-default/components/VPFlyout.vue +149 -0
  15. package/dist/client/theme-default/components/VPLink.vue +37 -0
  16. package/dist/client/theme-default/components/VPLocalNav.vue +106 -0
  17. package/dist/client/theme-default/components/VPMenu.vue +79 -0
  18. package/dist/client/theme-default/components/VPMenuGroup.vue +35 -0
  19. package/dist/client/theme-default/components/VPMenuLink.vue +30 -0
  20. package/dist/client/theme-default/components/VPNav.vue +33 -0
  21. package/dist/client/theme-default/components/VPNavBar.vue +109 -0
  22. package/dist/client/theme-default/components/VPNavBarAppearance.vue +22 -0
  23. package/dist/client/theme-default/components/VPNavBarExtra.vue +107 -0
  24. package/dist/client/theme-default/components/VPNavBarHamburger.vue +79 -0
  25. package/dist/client/theme-default/components/VPNavBarMenu.vue +29 -0
  26. package/dist/client/theme-default/components/VPNavBarMenuGroup.vue +18 -0
  27. package/dist/client/theme-default/components/VPNavBarMenuLink.vue +56 -0
  28. package/dist/client/theme-default/components/VPNavBarSearch.vue +269 -0
  29. package/dist/client/theme-default/components/VPNavBarSocialLinks.vue +27 -0
  30. package/dist/client/theme-default/components/VPNavBarTitle.vue +44 -0
  31. package/dist/client/theme-default/components/VPNavBarTranslations.vue +74 -0
  32. package/dist/client/theme-default/components/VPNavScreen.vue +100 -0
  33. package/dist/client/theme-default/components/VPNavScreenAppearance.vue +30 -0
  34. package/dist/client/theme-default/components/VPNavScreenMenu.vue +24 -0
  35. package/dist/client/theme-default/components/VPNavScreenMenuGroup.vue +118 -0
  36. package/dist/client/theme-default/components/VPNavScreenMenuGroupLink.vue +33 -0
  37. package/dist/client/theme-default/components/VPNavScreenMenuGroupSection.vue +35 -0
  38. package/dist/client/theme-default/components/VPNavScreenMenuLink.vue +34 -0
  39. package/dist/client/theme-default/components/VPNavScreenSocialLinks.vue +14 -0
  40. package/dist/client/theme-default/components/VPNavScreenTranslations.vue +73 -0
  41. package/dist/client/theme-default/components/VPSidebar.vue +118 -0
  42. package/dist/client/theme-default/components/VPSidebarGroup.vue +44 -0
  43. package/dist/client/theme-default/components/VPSidebarLink.vue +57 -0
  44. package/dist/client/theme-default/components/VPSkipLink.vue +72 -0
  45. package/dist/client/theme-default/components/VPSocialLink.vue +63 -0
  46. package/dist/client/theme-default/components/VPSocialLinks.vue +27 -0
  47. package/dist/client/theme-default/components/VPSwitch.vue +66 -0
  48. package/dist/client/theme-default/components/VPSwitchAppearance.vue +74 -0
  49. package/dist/client/theme-default/components/icons/VPIconAlignJustify.vue +8 -0
  50. package/dist/client/theme-default/components/icons/VPIconAlignLeft.vue +8 -0
  51. package/dist/client/theme-default/components/icons/VPIconAlignRight.vue +8 -0
  52. package/dist/client/theme-default/components/icons/{ArrowLeft.vue → VPIconArrowLeft.vue} +0 -0
  53. package/dist/client/theme-default/components/icons/{ArrowRight.vue → VPIconArrowRight.vue} +0 -0
  54. package/dist/client/theme-default/components/icons/VPIconChevronDown.vue +5 -0
  55. package/dist/client/theme-default/components/icons/VPIconChevronLeft.vue +5 -0
  56. package/dist/client/theme-default/components/icons/VPIconChevronRight.vue +5 -0
  57. package/dist/client/theme-default/components/icons/VPIconChevronUp.vue +5 -0
  58. package/dist/client/theme-default/components/icons/VPIconDiscord.vue +5 -0
  59. package/dist/client/theme-default/components/icons/VPIconEdit.vue +6 -0
  60. package/dist/client/theme-default/components/icons/VPIconExternalLink.vue +13 -0
  61. package/dist/client/theme-default/components/icons/VPIconFacebook.vue +5 -0
  62. package/dist/client/theme-default/components/icons/VPIconGitHub.vue +5 -0
  63. package/dist/client/theme-default/components/icons/VPIconInstagram.vue +5 -0
  64. package/dist/client/theme-default/components/icons/VPIconLanguages.vue +9 -0
  65. package/dist/client/theme-default/components/icons/VPIconLinkedIn.vue +5 -0
  66. package/dist/client/theme-default/components/icons/VPIconMoon.vue +5 -0
  67. package/dist/client/theme-default/components/icons/VPIconMoreHorizontal.vue +7 -0
  68. package/dist/client/theme-default/components/icons/VPIconPlus.vue +5 -0
  69. package/dist/client/theme-default/components/icons/VPIconSlack.vue +5 -0
  70. package/dist/client/theme-default/components/icons/VPIconSun.vue +13 -0
  71. package/dist/client/theme-default/components/icons/VPIconTwitter.vue +5 -0
  72. package/dist/client/theme-default/components/icons/VPIconYouTube.vue +5 -0
  73. package/dist/client/theme-default/composables/edit-link.js +22 -0
  74. package/dist/client/theme-default/composables/flyout.js +40 -0
  75. package/dist/client/theme-default/composables/nav.js +27 -1
  76. package/dist/client/theme-default/composables/outline.js +130 -0
  77. package/dist/client/theme-default/composables/prev-next.js +18 -0
  78. package/dist/client/theme-default/composables/sidebar.js +57 -0
  79. package/dist/client/theme-default/fonts/inter-cyrillic-ext.woff2 +0 -0
  80. package/dist/client/theme-default/fonts/inter-cyrillic.woff2 +0 -0
  81. package/dist/client/theme-default/fonts/inter-greek-ext.woff2 +0 -0
  82. package/dist/client/theme-default/fonts/inter-greek.woff2 +0 -0
  83. package/dist/client/theme-default/fonts/inter-latin-ext.woff2 +0 -0
  84. package/dist/client/theme-default/fonts/inter-latin.woff2 +0 -0
  85. package/dist/client/theme-default/fonts/inter-vietnamese.woff2 +0 -0
  86. package/dist/client/theme-default/index.js +4 -4
  87. package/dist/client/theme-default/styles/base.css +200 -0
  88. package/dist/client/theme-default/styles/fonts.css +67 -0
  89. package/dist/client/theme-default/styles/utils.css +9 -0
  90. package/dist/client/theme-default/styles/vars.css +206 -66
  91. package/dist/client/theme-default/styles/vp-doc.css +419 -0
  92. package/dist/client/theme-default/support/sidebar.js +29 -0
  93. package/dist/client/theme-default/support/utils.js +43 -0
  94. package/dist/node/cli.js +1 -1
  95. package/dist/node/index.d.ts +106 -81
  96. package/dist/node/index.js +1 -1
  97. package/dist/node/{serve-cf4b2162.js → serve-428d4610.js} +27 -10
  98. package/package.json +31 -27
  99. package/types/default-theme.d.ts +105 -80
  100. package/dist/client/theme-default/components/AlgoliaSearchBox.vue +0 -195
  101. package/dist/client/theme-default/components/BuySellAds.vue +0 -152
  102. package/dist/client/theme-default/components/CarbonAds.vue +0 -99
  103. package/dist/client/theme-default/components/EditLink.vue +0 -38
  104. package/dist/client/theme-default/components/Home.vue +0 -31
  105. package/dist/client/theme-default/components/HomeFeatures.vue +0 -143
  106. package/dist/client/theme-default/components/HomeFooter.vue +0 -50
  107. package/dist/client/theme-default/components/HomeHero.vue +0 -161
  108. package/dist/client/theme-default/components/LastUpdated.vue +0 -60
  109. package/dist/client/theme-default/components/NavBar.vue +0 -60
  110. package/dist/client/theme-default/components/NavBarTitle.vue +0 -41
  111. package/dist/client/theme-default/components/NavDropdownLink.vue +0 -135
  112. package/dist/client/theme-default/components/NavDropdownLinkItem.vue +0 -76
  113. package/dist/client/theme-default/components/NavLink.vue +0 -61
  114. package/dist/client/theme-default/components/NavLinks.vue +0 -52
  115. package/dist/client/theme-default/components/NextAndPrevLinks.vue +0 -88
  116. package/dist/client/theme-default/components/Page.vue +0 -53
  117. package/dist/client/theme-default/components/PageFooter.vue +0 -44
  118. package/dist/client/theme-default/components/SideBar.vue +0 -60
  119. package/dist/client/theme-default/components/SideBarLink.js +0 -68
  120. package/dist/client/theme-default/components/SideBarLinks.vue +0 -12
  121. package/dist/client/theme-default/components/ToggleSideBarButton.vue +0 -46
  122. package/dist/client/theme-default/components/icons/OutboundLink.vue +0 -31
  123. package/dist/client/theme-default/composables/activeSidebarLink.js +0 -99
  124. package/dist/client/theme-default/composables/editLink.js +0 -49
  125. package/dist/client/theme-default/composables/navLink.js +0 -42
  126. package/dist/client/theme-default/composables/nextAndPrevLinks.js +0 -37
  127. package/dist/client/theme-default/composables/repo.js +0 -38
  128. package/dist/client/theme-default/composables/sideBar.js +0 -57
  129. package/dist/client/theme-default/styles/code.css +0 -299
  130. package/dist/client/theme-default/styles/custom-blocks.css +0 -76
  131. package/dist/client/theme-default/styles/layout.css +0 -236
  132. package/dist/client/theme-default/styles/sidebar-links.css +0 -107
  133. package/dist/client/theme-default/support/sideBar.js +0 -46
  134. package/dist/client/theme-default/utils.js +0 -63
@@ -1,38 +0,0 @@
1
- <script setup lang="ts">
2
- import { useEditLink } from '../composables/editLink'
3
- import OutboundLink from './icons/OutboundLink.vue'
4
-
5
- const { url, text } = useEditLink()
6
- </script>
7
-
8
- <template>
9
- <div class="edit-link">
10
- <a
11
- v-if="url"
12
- class="link"
13
- :href="url"
14
- target="_blank"
15
- rel="noopener noreferrer"
16
- >
17
- {{ text }} <OutboundLink class="icon" />
18
- </a>
19
- </div>
20
- </template>
21
-
22
- <style scoped>
23
- .link {
24
- display: inline-block;
25
- font-size: 1rem;
26
- font-weight: 500;
27
- color: var(--c-text-light);
28
- }
29
-
30
- .link:hover {
31
- text-decoration: none;
32
- color: var(--c-brand);
33
- }
34
-
35
- .icon {
36
- margin-left: 4px;
37
- }
38
- </style>
@@ -1,31 +0,0 @@
1
- <script setup lang="ts">
2
- import HomeHero from './HomeHero.vue'
3
- import HomeFeatures from './HomeFeatures.vue'
4
- import HomeFooter from './HomeFooter.vue'
5
- </script>
6
-
7
- <template>
8
- <main class="home" aria-labelledby="main-title">
9
- <HomeHero />
10
- <slot name="hero" />
11
- <HomeFeatures />
12
- <div class="home-content">
13
- <Content />
14
- </div>
15
- <slot name="features" />
16
- <HomeFooter />
17
- <slot name="footer" />
18
- </main>
19
- </template>
20
-
21
- <style scoped>
22
- .home {
23
- padding-top: var(--header-height);
24
- }
25
-
26
- .home-content {
27
- max-width: 960px;
28
- margin: 0px auto;
29
- padding: 0 1.5rem;
30
- }
31
- </style>
@@ -1,143 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
- import { useData } from 'vitepress'
4
-
5
- const { frontmatter } = useData()
6
-
7
- const hasFeatures = computed(() => {
8
- return frontmatter.value.features && frontmatter.value.features.length > 0
9
- })
10
-
11
- interface Feature {
12
- title?: string
13
- details?: string
14
- }
15
-
16
- const features = computed<Feature[]>(() => {
17
- return frontmatter.value.features ? frontmatter.value.features : []
18
- })
19
- </script>
20
-
21
- <template>
22
- <div v-if="hasFeatures" class="home-features">
23
- <div class="wrapper">
24
- <div class="container">
25
- <div class="features">
26
- <section
27
- v-for="(feature, index) in features"
28
- :key="index"
29
- class="feature"
30
- >
31
- <h2 class="title" v-if="feature.title">{{ feature.title }}</h2>
32
- <p class="details" v-if="feature.details">{{ feature.details }}</p>
33
- </section>
34
- </div>
35
- </div>
36
- </div>
37
- </div>
38
- </template>
39
-
40
- <style scoped>
41
- .home-features {
42
- margin: 0 auto;
43
- padding: 2.5rem 0 2.75rem;
44
- max-width: 960px;
45
- }
46
-
47
- .home-hero + .home-features {
48
- padding-top: 0;
49
- }
50
-
51
- @media (min-width: 420px) {
52
- .home-features {
53
- padding: 3.25rem 0 3.5rem;
54
- }
55
-
56
- .home-hero + .home-features {
57
- padding-top: 0;
58
- }
59
- }
60
-
61
- @media (min-width: 720px) {
62
- .home-features {
63
- padding-right: 1.5rem;
64
- padding-left: 1.5rem;
65
- }
66
- }
67
-
68
- .wrapper {
69
- padding: 0 1.5rem;
70
- }
71
-
72
- .home-hero + .home-features .wrapper {
73
- border-top: 1px solid var(--c-divider);
74
- padding-top: 2.5rem;
75
- }
76
-
77
- @media (min-width: 420px) {
78
- .home-hero + .home-features .wrapper {
79
- padding-top: 3.25rem;
80
- }
81
- }
82
-
83
- @media (min-width: 720px) {
84
- .wrapper {
85
- padding-right: 0;
86
- padding-left: 0;
87
- }
88
- }
89
-
90
- .container {
91
- margin: 0 auto;
92
- max-width: 392px;
93
- }
94
-
95
- @media (min-width: 720px) {
96
- .container {
97
- max-width: 960px;
98
- }
99
- }
100
-
101
- .features {
102
- display: flex;
103
- flex-wrap: wrap;
104
- margin: -20px -24px;
105
- }
106
-
107
- .feature {
108
- flex-shrink: 0;
109
- padding: 20px 24px;
110
- width: 100%;
111
- }
112
-
113
- @media (min-width: 720px) {
114
- .feature {
115
- width: calc(100% / 3);
116
- }
117
- }
118
-
119
- .title {
120
- margin: 0;
121
- border-bottom: 0;
122
- line-height: 1.4;
123
- font-size: 1.25rem;
124
- font-weight: 500;
125
- }
126
-
127
- @media (min-width: 420px) {
128
- .title {
129
- font-size: 1.4rem;
130
- }
131
- }
132
-
133
- .details {
134
- margin: 0;
135
- line-height: 1.6;
136
- font-size: 1rem;
137
- color: var(--c-text-light);
138
- }
139
-
140
- .title + .details {
141
- padding-top: 0.25rem;
142
- }
143
- </style>
@@ -1,50 +0,0 @@
1
- <script setup lang="ts">
2
- import { useData } from 'vitepress'
3
-
4
- const { frontmatter } = useData()
5
- </script>
6
-
7
- <template>
8
- <footer v-if="frontmatter.footer" class="footer">
9
- <div class="container">
10
- <p class="text">{{ frontmatter.footer }}</p>
11
- </div>
12
- </footer>
13
- </template>
14
-
15
- <style scoped>
16
- .footer {
17
- margin: 0 auto;
18
- max-width: 960px;
19
- }
20
-
21
- @media (min-width: 720px) {
22
- .footer {
23
- padding: 0 1.5rem;
24
- }
25
- }
26
-
27
- .container {
28
- padding: 2rem 1.5rem 2.25rem;
29
- }
30
-
31
- .home-hero + .footer .container,
32
- .home-features + .footer .container,
33
- .home-content + .footer .container {
34
- border-top: 1px solid var(--c-divider);
35
- }
36
-
37
- @media (min-width: 420px) {
38
- .container {
39
- padding: 3rem 1.5rem 3.25rem;
40
- }
41
- }
42
-
43
- .text {
44
- margin: 0;
45
- text-align: center;
46
- line-height: 1.4;
47
- font-size: 0.9rem;
48
- color: var(--c-text-light);
49
- }
50
- </style>
@@ -1,161 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
- import { useData, withBase } from 'vitepress'
4
- import NavLink from './NavLink.vue'
5
-
6
- const { site, frontmatter } = useData()
7
-
8
- const showHero = computed(() => {
9
- const { heroImage, heroText, tagline, actionLink, actionText } =
10
- frontmatter.value
11
- return heroImage || heroText || tagline || (actionLink && actionText)
12
- })
13
-
14
- const heroText = computed(() => frontmatter.value.heroText || site.value.title)
15
- const tagline = computed(
16
- () => frontmatter.value.tagline || site.value.description
17
- )
18
- </script>
19
-
20
- <template>
21
- <header v-if="showHero" class="home-hero">
22
- <figure v-if="frontmatter.heroImage" class="figure">
23
- <img
24
- class="image"
25
- :src="withBase(frontmatter.heroImage)"
26
- :alt="frontmatter.heroAlt"
27
- />
28
- </figure>
29
-
30
- <h1 v-if="heroText" id="main-title" class="title">{{ heroText }}</h1>
31
- <p v-if="tagline" class="tagline">{{ tagline }}</p>
32
-
33
- <NavLink
34
- v-if="frontmatter.actionLink && frontmatter.actionText"
35
- :item="{ link: frontmatter.actionLink, text: frontmatter.actionText }"
36
- class="action"
37
- />
38
-
39
- <NavLink
40
- v-if="frontmatter.altActionLink && frontmatter.altActionText"
41
- :item="{
42
- link: frontmatter.altActionLink,
43
- text: frontmatter.altActionText
44
- }"
45
- class="action alt"
46
- />
47
- </header>
48
- </template>
49
-
50
- <style scoped>
51
- .home-hero {
52
- margin: 2.5rem 0 2.75rem;
53
- padding: 0 1.5rem;
54
- text-align: center;
55
- }
56
-
57
- @media (min-width: 420px) {
58
- .home-hero {
59
- margin: 3.5rem 0;
60
- }
61
- }
62
-
63
- @media (min-width: 720px) {
64
- .home-hero {
65
- margin: 4rem 0 4.25rem;
66
- }
67
- }
68
-
69
- .figure {
70
- padding: 0 1.5rem;
71
- }
72
-
73
- .image {
74
- display: block;
75
- margin: 0 auto;
76
- width: auto;
77
- max-width: 100%;
78
- max-height: 280px;
79
- }
80
-
81
- .title {
82
- margin-top: 1.5rem;
83
- font-size: 2rem;
84
- }
85
-
86
- @media (min-width: 420px) {
87
- .title {
88
- font-size: 3rem;
89
- }
90
- }
91
-
92
- @media (min-width: 720px) {
93
- .title {
94
- margin-top: 2rem;
95
- }
96
- }
97
-
98
- .tagline {
99
- margin: 0;
100
- margin-top: 0.25rem;
101
- line-height: 1.3;
102
- font-size: 1.2rem;
103
- color: var(--c-text-light);
104
- }
105
-
106
- @media (min-width: 420px) {
107
- .tagline {
108
- line-height: 1.2;
109
- font-size: 1.6rem;
110
- }
111
- }
112
-
113
- .action {
114
- margin-top: 1.5rem;
115
- display: inline-block;
116
- }
117
-
118
- .action.alt {
119
- margin-left: 1.5rem;
120
- }
121
-
122
- @media (min-width: 420px) {
123
- .action {
124
- margin-top: 2rem;
125
- display: inline-block;
126
- }
127
- }
128
-
129
- .action :deep(.item) {
130
- display: inline-block;
131
- border-radius: 6px;
132
- padding: 0 20px;
133
- line-height: 44px;
134
- font-size: 1rem;
135
- font-weight: 500;
136
- color: var(--c-bg);
137
- background-color: var(--c-brand);
138
- border: 2px solid var(--c-brand);
139
- transition: background-color 0.1s ease;
140
- }
141
-
142
- .action.alt :deep(.item) {
143
- background-color: var(--c-bg);
144
- color: var(--c-brand);
145
- }
146
-
147
- .action :deep(.item:hover) {
148
- text-decoration: none;
149
- color: var(--c-bg);
150
- background-color: var(--c-brand-light);
151
- }
152
-
153
- @media (min-width: 420px) {
154
- .action :deep(.item) {
155
- padding: 0 24px;
156
- line-height: 52px;
157
- font-size: 1.2rem;
158
- font-weight: 500;
159
- }
160
- }
161
- </style>
@@ -1,60 +0,0 @@
1
- <script setup lang="ts">
2
- import { ref, computed, onMounted, watchEffect } from 'vue'
3
- import { useData } from 'vitepress'
4
-
5
- const { theme, page } = useData()
6
-
7
- const hasLastUpdated = computed(() => {
8
- const lu = theme.value.lastUpdated
9
-
10
- return lu !== undefined && lu !== false
11
- })
12
-
13
- const prefix = computed(() => {
14
- const p = theme.value.lastUpdated
15
- return p === true ? 'Last Updated' : p
16
- })
17
-
18
- const datetime = ref('')
19
- onMounted(() => {
20
- watchEffect(() => {
21
- // locale string might be different based on end user
22
- // and will lead to potential hydration mismatch if calculated at build time
23
- datetime.value = new Date(page.value.lastUpdated!).toLocaleString('en-US')
24
- })
25
- })
26
- </script>
27
-
28
- <template>
29
- <p v-if="hasLastUpdated" class="last-updated">
30
- <span class="prefix">{{ prefix }}:</span>
31
- <span class="datetime">{{ datetime }}</span>
32
- </p>
33
- </template>
34
-
35
- <style scoped>
36
- .last-updated {
37
- display: inline-block;
38
- margin: 0;
39
- line-height: 1.4;
40
- font-size: 0.9rem;
41
- color: var(--c-text-light);
42
- }
43
-
44
- @media (min-width: 960px) {
45
- .last-updated {
46
- font-size: 1rem;
47
- }
48
- }
49
-
50
- .prefix {
51
- display: inline-block;
52
- font-weight: 500;
53
- }
54
-
55
- .datetime {
56
- display: inline-block;
57
- margin-left: 6px;
58
- font-weight: 400;
59
- }
60
- </style>
@@ -1,60 +0,0 @@
1
- <script setup lang="ts">
2
- import NavBarTitle from './NavBarTitle.vue'
3
- import NavLinks from './NavLinks.vue'
4
- import ToggleSideBarButton from './ToggleSideBarButton.vue'
5
-
6
- defineEmits(['toggle'])
7
- </script>
8
-
9
- <template>
10
- <header class="nav-bar">
11
- <ToggleSideBarButton @toggle="$emit('toggle')" />
12
-
13
- <NavBarTitle />
14
-
15
- <div class="flex-grow" />
16
-
17
- <div class="nav">
18
- <NavLinks />
19
- </div>
20
-
21
- <slot name="search" />
22
- </header>
23
- </template>
24
-
25
- <style scoped>
26
- .nav-bar {
27
- position: fixed;
28
- top: 0;
29
- right: 0;
30
- left: 0;
31
- z-index: var(--z-index-navbar);
32
- display: flex;
33
- justify-content: space-between;
34
- align-items: center;
35
- border-bottom: 1px solid var(--c-divider);
36
- padding: 0.7rem 1.5rem 0.7rem 4rem;
37
- height: var(--header-height);
38
- background-color: var(--c-bg);
39
- }
40
-
41
- @media (min-width: 720px) {
42
- .nav-bar {
43
- padding: 0.7rem 1.5rem;
44
- }
45
- }
46
-
47
- .flex-grow {
48
- flex-grow: 1;
49
- }
50
-
51
- .nav {
52
- display: none;
53
- }
54
-
55
- @media (min-width: 720px) {
56
- .nav {
57
- display: block;
58
- }
59
- }
60
- </style>
@@ -1,41 +0,0 @@
1
- <script setup lang="ts">
2
- import { withBase, useData } from 'vitepress'
3
- const { site, theme, localePath } = useData()
4
- </script>
5
-
6
- <template>
7
- <a
8
- class="nav-bar-title"
9
- :href="localePath"
10
- :aria-label="`${site.title}, back to home`"
11
- >
12
- <img
13
- v-if="theme.logo"
14
- class="logo"
15
- :src="withBase(theme.logo)"
16
- alt="Logo"
17
- />
18
- {{ site.title }}
19
- </a>
20
- </template>
21
-
22
- <style scoped>
23
- .nav-bar-title {
24
- font-size: 1.3rem;
25
- font-weight: 600;
26
- color: var(--c-text);
27
- display: flex;
28
- justify-content: center;
29
- align-items: center;
30
- }
31
-
32
- .nav-bar-title:hover {
33
- text-decoration: none;
34
- }
35
-
36
- .logo {
37
- margin-right: 0.75rem;
38
- height: 1.3rem;
39
- vertical-align: bottom;
40
- }
41
- </style>
@@ -1,135 +0,0 @@
1
- <script setup lang="ts">
2
- import { ref, watch } from 'vue'
3
- import { useRoute } from 'vitepress'
4
- import type { DefaultTheme } from '../config'
5
- import NavDropdownLinkItem from './NavDropdownLinkItem.vue'
6
-
7
- defineProps<{
8
- item: DefaultTheme.NavItemWithChildren
9
- }>()
10
-
11
- const route = useRoute()
12
-
13
- const open = ref(false)
14
-
15
- watch(
16
- () => route.path,
17
- () => {
18
- open.value = false
19
- }
20
- )
21
-
22
- function toggle() {
23
- open.value = !open.value
24
- }
25
- </script>
26
-
27
- <template>
28
- <div class="nav-dropdown-link" :class="{ open }">
29
- <button class="button" :aria-label="item.ariaLabel" @click="toggle">
30
- <span class="button-text">{{ item.text }}</span>
31
- <span class="button-arrow" :class="open ? 'down' : 'right'" />
32
- </button>
33
-
34
- <ul class="dialog">
35
- <li v-for="item in item.items" :key="item.text" class="dialog-item">
36
- <NavDropdownLinkItem :item="item" />
37
- </li>
38
- </ul>
39
- </div>
40
- </template>
41
-
42
- <style scoped>
43
- .nav-dropdown-link {
44
- position: relative;
45
- height: 36px;
46
- overflow: hidden;
47
- cursor: pointer;
48
- }
49
-
50
- @media (min-width: 720px) {
51
- .nav-dropdown-link {
52
- height: auto;
53
- overflow: visible;
54
- }
55
-
56
- .nav-dropdown-link:hover .dialog {
57
- display: block;
58
- }
59
- }
60
-
61
- .nav-dropdown-link.open {
62
- height: auto;
63
- }
64
-
65
- .button {
66
- display: block;
67
- border: 0;
68
- padding: 0 1.5rem;
69
- width: 100%;
70
- text-align: left;
71
- line-height: 36px;
72
- font-family: var(--font-family-base);
73
- font-size: 1rem;
74
- font-weight: 600;
75
- color: var(--c-text);
76
- white-space: nowrap;
77
- background-color: transparent;
78
- cursor: pointer;
79
- }
80
-
81
- .button:focus {
82
- outline: 0;
83
- }
84
-
85
- @media (min-width: 720px) {
86
- .button {
87
- border-bottom: 2px solid transparent;
88
- padding: 0;
89
- line-height: 24px;
90
- font-size: 0.9rem;
91
- font-weight: 500;
92
- }
93
- }
94
-
95
- .button-arrow {
96
- display: inline-block;
97
- margin-top: -1px;
98
- margin-left: 8px;
99
- border-top: 6px solid #ccc;
100
- border-right: 4px solid transparent;
101
- border-bottom: 0;
102
- border-left: 4px solid transparent;
103
- vertical-align: middle;
104
- }
105
-
106
- .button-arrow.right {
107
- transform: rotate(-90deg);
108
- }
109
-
110
- @media (min-width: 720px) {
111
- .button-arrow.right {
112
- transform: rotate(0);
113
- }
114
- }
115
-
116
- .dialog {
117
- margin: 0;
118
- padding: 0;
119
- list-style: none;
120
- }
121
-
122
- @media (min-width: 720px) {
123
- .dialog {
124
- display: none;
125
- position: absolute;
126
- top: 26px;
127
- right: -8px;
128
- border-radius: 6px;
129
- padding: 12px 0;
130
- min-width: 128px;
131
- background-color: var(--c-bg);
132
- box-shadow: var(--shadow-3);
133
- }
134
- }
135
- </style>