themekit-js 1.1.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 (171) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/bin/themekit.js +2 -0
  4. package/client.d.ts +5 -0
  5. package/dist/client/app/components/ClientOnly.js +10 -0
  6. package/dist/client/app/components/Content.js +23 -0
  7. package/dist/client/app/composables/codeGroups.js +40 -0
  8. package/dist/client/app/composables/copyCode.js +73 -0
  9. package/dist/client/app/composables/head.js +81 -0
  10. package/dist/client/app/composables/preFetch.js +99 -0
  11. package/dist/client/app/data.js +59 -0
  12. package/dist/client/app/devtools.js +29 -0
  13. package/dist/client/app/index.js +140 -0
  14. package/dist/client/app/router.js +233 -0
  15. package/dist/client/app/ssr.js +10 -0
  16. package/dist/client/app/theme.js +1 -0
  17. package/dist/client/app/utils.js +119 -0
  18. package/dist/client/index.d.ts +1446 -0
  19. package/dist/client/index.js +9 -0
  20. package/dist/client/shared.js +139 -0
  21. package/dist/client/theme-default/Layout.vue +94 -0
  22. package/dist/client/theme-default/NotFound.vue +109 -0
  23. package/dist/client/theme-default/components/VPAlgoliaSearchBox.vue +99 -0
  24. package/dist/client/theme-default/components/VPBackdrop.vue +41 -0
  25. package/dist/client/theme-default/components/VPBadge.vue +86 -0
  26. package/dist/client/theme-default/components/VPButton.vue +123 -0
  27. package/dist/client/theme-default/components/VPCarbonAds.vue +109 -0
  28. package/dist/client/theme-default/components/VPContent.vue +98 -0
  29. package/dist/client/theme-default/components/VPDoc.vue +193 -0
  30. package/dist/client/theme-default/components/VPDocAside.vue +46 -0
  31. package/dist/client/theme-default/components/VPDocAsideCarbonAds.vue +18 -0
  32. package/dist/client/theme-default/components/VPDocAsideOutline.vue +87 -0
  33. package/dist/client/theme-default/components/VPDocAsideSponsors.vue +17 -0
  34. package/dist/client/theme-default/components/VPDocFooter.vue +145 -0
  35. package/dist/client/theme-default/components/VPDocFooterLastUpdated.vue +50 -0
  36. package/dist/client/theme-default/components/VPDocOutlineItem.vue +59 -0
  37. package/dist/client/theme-default/components/VPFeature.vue +123 -0
  38. package/dist/client/theme-default/components/VPFeatures.vue +121 -0
  39. package/dist/client/theme-default/components/VPFlyout.vue +136 -0
  40. package/dist/client/theme-default/components/VPFooter.vue +60 -0
  41. package/dist/client/theme-default/components/VPHero.vue +336 -0
  42. package/dist/client/theme-default/components/VPHome.vue +43 -0
  43. package/dist/client/theme-default/components/VPHomeContent.vue +52 -0
  44. package/dist/client/theme-default/components/VPHomeFeatures.vue +14 -0
  45. package/dist/client/theme-default/components/VPHomeHero.vue +24 -0
  46. package/dist/client/theme-default/components/VPHomeSponsors.vue +116 -0
  47. package/dist/client/theme-default/components/VPImage.vue +46 -0
  48. package/dist/client/theme-default/components/VPLink.vue +33 -0
  49. package/dist/client/theme-default/components/VPLocalNav.vue +171 -0
  50. package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.vue +190 -0
  51. package/dist/client/theme-default/components/VPLocalSearchBox.vue +856 -0
  52. package/dist/client/theme-default/components/VPMenu.vue +72 -0
  53. package/dist/client/theme-default/components/VPMenuGroup.vue +47 -0
  54. package/dist/client/theme-default/components/VPMenuLink.vue +54 -0
  55. package/dist/client/theme-default/components/VPNav.vue +57 -0
  56. package/dist/client/theme-default/components/VPNavBar.vue +267 -0
  57. package/dist/client/theme-default/components/VPNavBarAppearance.vue +25 -0
  58. package/dist/client/theme-default/components/VPNavBarExtra.vue +94 -0
  59. package/dist/client/theme-default/components/VPNavBarHamburger.vue +79 -0
  60. package/dist/client/theme-default/components/VPNavBarMenu.vue +29 -0
  61. package/dist/client/theme-default/components/VPNavBarMenuGroup.vue +42 -0
  62. package/dist/client/theme-default/components/VPNavBarMenuLink.vue +53 -0
  63. package/dist/client/theme-default/components/VPNavBarSearch.vue +194 -0
  64. package/dist/client/theme-default/components/VPNavBarSearchButton.vue +208 -0
  65. package/dist/client/theme-default/components/VPNavBarSocialLinks.vue +27 -0
  66. package/dist/client/theme-default/components/VPNavBarTitle.vue +76 -0
  67. package/dist/client/theme-default/components/VPNavBarTranslations.vue +47 -0
  68. package/dist/client/theme-default/components/VPNavScreen.vue +99 -0
  69. package/dist/client/theme-default/components/VPNavScreenAppearance.vue +33 -0
  70. package/dist/client/theme-default/components/VPNavScreenMenu.vue +23 -0
  71. package/dist/client/theme-default/components/VPNavScreenMenuGroup.vue +111 -0
  72. package/dist/client/theme-default/components/VPNavScreenMenuGroupLink.vue +39 -0
  73. package/dist/client/theme-default/components/VPNavScreenMenuGroupSection.vue +34 -0
  74. package/dist/client/theme-default/components/VPNavScreenMenuLink.vue +39 -0
  75. package/dist/client/theme-default/components/VPNavScreenSocialLinks.vue +14 -0
  76. package/dist/client/theme-default/components/VPNavScreenTranslations.vue +73 -0
  77. package/dist/client/theme-default/components/VPPage.vue +7 -0
  78. package/dist/client/theme-default/components/VPSidebar.vue +137 -0
  79. package/dist/client/theme-default/components/VPSidebarItem.vue +250 -0
  80. package/dist/client/theme-default/components/VPSkipLink.vue +68 -0
  81. package/dist/client/theme-default/components/VPSocialLink.vue +50 -0
  82. package/dist/client/theme-default/components/VPSocialLinks.vue +27 -0
  83. package/dist/client/theme-default/components/VPSponsors.vue +48 -0
  84. package/dist/client/theme-default/components/VPSponsorsGrid.vue +48 -0
  85. package/dist/client/theme-default/components/VPSwitch.vue +63 -0
  86. package/dist/client/theme-default/components/VPSwitchAppearance.vue +52 -0
  87. package/dist/client/theme-default/components/VPTeamMembers.vue +66 -0
  88. package/dist/client/theme-default/components/VPTeamMembersItem.vue +225 -0
  89. package/dist/client/theme-default/components/VPTeamPage.vue +58 -0
  90. package/dist/client/theme-default/components/VPTeamPageSection.vue +77 -0
  91. package/dist/client/theme-default/components/VPTeamPageTitle.vue +63 -0
  92. package/dist/client/theme-default/components/icons/VPIconAlignJustify.vue +8 -0
  93. package/dist/client/theme-default/components/icons/VPIconAlignLeft.vue +8 -0
  94. package/dist/client/theme-default/components/icons/VPIconAlignRight.vue +8 -0
  95. package/dist/client/theme-default/components/icons/VPIconArrowLeft.vue +7 -0
  96. package/dist/client/theme-default/components/icons/VPIconArrowRight.vue +7 -0
  97. package/dist/client/theme-default/components/icons/VPIconChevronDown.vue +5 -0
  98. package/dist/client/theme-default/components/icons/VPIconChevronLeft.vue +5 -0
  99. package/dist/client/theme-default/components/icons/VPIconChevronRight.vue +5 -0
  100. package/dist/client/theme-default/components/icons/VPIconChevronUp.vue +5 -0
  101. package/dist/client/theme-default/components/icons/VPIconEdit.vue +6 -0
  102. package/dist/client/theme-default/components/icons/VPIconHeart.vue +5 -0
  103. package/dist/client/theme-default/components/icons/VPIconLanguages.vue +9 -0
  104. package/dist/client/theme-default/components/icons/VPIconMinus.vue +5 -0
  105. package/dist/client/theme-default/components/icons/VPIconMinusSquare.vue +6 -0
  106. package/dist/client/theme-default/components/icons/VPIconMoon.vue +5 -0
  107. package/dist/client/theme-default/components/icons/VPIconMoreHorizontal.vue +7 -0
  108. package/dist/client/theme-default/components/icons/VPIconPlus.vue +5 -0
  109. package/dist/client/theme-default/components/icons/VPIconPlusSquare.vue +6 -0
  110. package/dist/client/theme-default/components/icons/VPIconSun.vue +13 -0
  111. package/dist/client/theme-default/composables/aside.js +17 -0
  112. package/dist/client/theme-default/composables/data.js +2 -0
  113. package/dist/client/theme-default/composables/edit-link.js +16 -0
  114. package/dist/client/theme-default/composables/flyout.js +41 -0
  115. package/dist/client/theme-default/composables/langs.js +26 -0
  116. package/dist/client/theme-default/composables/local-nav.js +18 -0
  117. package/dist/client/theme-default/composables/nav.js +30 -0
  118. package/dist/client/theme-default/composables/outline.js +178 -0
  119. package/dist/client/theme-default/composables/prev-next.js +57 -0
  120. package/dist/client/theme-default/composables/sidebar.js +136 -0
  121. package/dist/client/theme-default/composables/sponsor-grid.js +94 -0
  122. package/dist/client/theme-default/fonts/inter-italic-cyrillic-ext.woff2 +0 -0
  123. package/dist/client/theme-default/fonts/inter-italic-cyrillic.woff2 +0 -0
  124. package/dist/client/theme-default/fonts/inter-italic-greek-ext.woff2 +0 -0
  125. package/dist/client/theme-default/fonts/inter-italic-greek.woff2 +0 -0
  126. package/dist/client/theme-default/fonts/inter-italic-latin-ext.woff2 +0 -0
  127. package/dist/client/theme-default/fonts/inter-italic-latin.woff2 +0 -0
  128. package/dist/client/theme-default/fonts/inter-italic-vietnamese.woff2 +0 -0
  129. package/dist/client/theme-default/fonts/inter-roman-cyrillic-ext.woff2 +0 -0
  130. package/dist/client/theme-default/fonts/inter-roman-cyrillic.woff2 +0 -0
  131. package/dist/client/theme-default/fonts/inter-roman-greek-ext.woff2 +0 -0
  132. package/dist/client/theme-default/fonts/inter-roman-greek.woff2 +0 -0
  133. package/dist/client/theme-default/fonts/inter-roman-latin-ext.woff2 +0 -0
  134. package/dist/client/theme-default/fonts/inter-roman-latin.woff2 +0 -0
  135. package/dist/client/theme-default/fonts/inter-roman-vietnamese.woff2 +0 -0
  136. package/dist/client/theme-default/index.js +3 -0
  137. package/dist/client/theme-default/styles/base.css +252 -0
  138. package/dist/client/theme-default/styles/components/custom-block.css +208 -0
  139. package/dist/client/theme-default/styles/components/vp-code-group.css +85 -0
  140. package/dist/client/theme-default/styles/components/vp-code.css +7 -0
  141. package/dist/client/theme-default/styles/components/vp-doc.css +570 -0
  142. package/dist/client/theme-default/styles/components/vp-sponsor.css +155 -0
  143. package/dist/client/theme-default/styles/fonts.css +157 -0
  144. package/dist/client/theme-default/styles/icons.css +123 -0
  145. package/dist/client/theme-default/styles/utils.css +9 -0
  146. package/dist/client/theme-default/styles/vars.css +563 -0
  147. package/dist/client/theme-default/support/lru.js +33 -0
  148. package/dist/client/theme-default/support/sidebar.js +89 -0
  149. package/dist/client/theme-default/support/translation.js +49 -0
  150. package/dist/client/theme-default/support/utils.js +33 -0
  151. package/dist/client/theme-default/without-fonts.js +32 -0
  152. package/dist/node/cli.js +444 -0
  153. package/dist/node/index.d.ts +4588 -0
  154. package/dist/node/index.js +198 -0
  155. package/dist/node/serve-BjvG349_.js +50301 -0
  156. package/lib/vue-demi.mjs +34 -0
  157. package/package.json +223 -0
  158. package/template/.vitepress/config.js +28 -0
  159. package/template/.vitepress/theme/Layout.vue +21 -0
  160. package/template/.vitepress/theme/index.js +29 -0
  161. package/template/.vitepress/theme/style.css +143 -0
  162. package/template/api-examples.md +49 -0
  163. package/template/index.md +28 -0
  164. package/template/markdown-examples.md +85 -0
  165. package/theme-without-fonts.d.ts +2 -0
  166. package/theme.d.ts +30 -0
  167. package/types/default-theme.d.ts +533 -0
  168. package/types/docsearch.d.ts +144 -0
  169. package/types/index.d.ts +3 -0
  170. package/types/local-search.d.ts +33 -0
  171. package/types/shared.d.ts +199 -0
@@ -0,0 +1,171 @@
1
+ <script lang="ts" setup>
2
+ import { useWindowScroll } from '@vueuse/core'
3
+ import { onContentUpdated } from 'vitepress'
4
+ import { computed, onMounted, ref } from 'vue'
5
+ import { useData } from '../composables/data'
6
+ import { useLocalNav } from '../composables/local-nav'
7
+ import { getHeaders } from '../composables/outline'
8
+ import { useSidebar } from '../composables/sidebar'
9
+ import VPLocalNavOutlineDropdown from './VPLocalNavOutlineDropdown.vue'
10
+
11
+ defineProps<{
12
+ open: boolean
13
+ }>()
14
+
15
+ defineEmits<{
16
+ (e: 'open-menu'): void
17
+ }>()
18
+
19
+ const { theme, frontmatter } = useData()
20
+ const { hasSidebar } = useSidebar()
21
+ const { headers } = useLocalNav()
22
+ const { y } = useWindowScroll()
23
+
24
+ const navHeight = ref(0)
25
+
26
+ onMounted(() => {
27
+ navHeight.value = parseInt(
28
+ getComputedStyle(document.documentElement).getPropertyValue(
29
+ '--vp-nav-height'
30
+ )
31
+ )
32
+ })
33
+
34
+ onContentUpdated(() => {
35
+ headers.value = getHeaders(frontmatter.value.outline ?? theme.value.outline)
36
+ })
37
+
38
+ const empty = computed(() => {
39
+ return headers.value.length === 0
40
+ })
41
+
42
+ const emptyAndNoSidebar = computed(() => {
43
+ return empty.value && !hasSidebar.value
44
+ })
45
+
46
+ const classes = computed(() => {
47
+ return {
48
+ VPLocalNav: true,
49
+ 'has-sidebar': hasSidebar.value,
50
+ empty: empty.value,
51
+ fixed: emptyAndNoSidebar.value
52
+ }
53
+ })
54
+ </script>
55
+
56
+ <template>
57
+ <div
58
+ v-if="frontmatter.layout !== 'home' && (!emptyAndNoSidebar || y >= navHeight)"
59
+ :class="classes"
60
+ >
61
+ <div class="container">
62
+ <button
63
+ v-if="hasSidebar"
64
+ class="menu"
65
+ :aria-expanded="open"
66
+ aria-controls="VPSidebarNav"
67
+ @click="$emit('open-menu')"
68
+ >
69
+ <span class="vpi-align-left menu-icon"></span>
70
+ <span class="menu-text">
71
+ {{ theme.sidebarMenuLabel || 'Menu' }}
72
+ </span>
73
+ </button>
74
+
75
+ <VPLocalNavOutlineDropdown :headers="headers" :navHeight="navHeight" />
76
+ </div>
77
+ </div>
78
+ </template>
79
+
80
+ <style scoped>
81
+ .VPLocalNav {
82
+ position: sticky;
83
+ top: 0;
84
+ /*rtl:ignore*/
85
+ left: 0;
86
+ z-index: var(--vp-z-index-local-nav);
87
+ border-bottom: 1px solid var(--vp-c-gutter);
88
+ padding-top: var(--vp-layout-top-height, 0px);
89
+ width: 100%;
90
+ background-color: var(--vp-local-nav-bg-color);
91
+ }
92
+
93
+ .VPLocalNav.fixed {
94
+ position: fixed;
95
+ }
96
+
97
+ @media (min-width: 960px) {
98
+ .VPLocalNav {
99
+ top: var(--vp-nav-height);
100
+ }
101
+
102
+ .VPLocalNav.has-sidebar {
103
+ padding-left: var(--vp-sidebar-width);
104
+ }
105
+
106
+ .VPLocalNav.empty {
107
+ display: none;
108
+ }
109
+ }
110
+
111
+ @media (min-width: 1280px) {
112
+ .VPLocalNav {
113
+ display: none;
114
+ }
115
+ }
116
+
117
+ @media (min-width: 1440px) {
118
+ .VPLocalNav.has-sidebar {
119
+ padding-left: calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width));
120
+ }
121
+ }
122
+
123
+ .container {
124
+ display: flex;
125
+ justify-content: space-between;
126
+ align-items: center;
127
+ }
128
+
129
+ .menu {
130
+ display: flex;
131
+ align-items: center;
132
+ padding: 12px 24px 11px;
133
+ line-height: 24px;
134
+ font-size: 12px;
135
+ font-weight: 500;
136
+ color: var(--vp-c-text-2);
137
+ transition: color 0.5s;
138
+ }
139
+
140
+ .menu:hover {
141
+ color: var(--vp-c-text-1);
142
+ transition: color 0.25s;
143
+ }
144
+
145
+ @media (min-width: 768px) {
146
+ .menu {
147
+ padding: 0 32px;
148
+ }
149
+ }
150
+
151
+ @media (min-width: 960px) {
152
+ .menu {
153
+ display: none;
154
+ }
155
+ }
156
+
157
+ .menu-icon {
158
+ margin-right: 8px;
159
+ font-size: 14px;
160
+ }
161
+
162
+ .VPOutlineDropdown {
163
+ padding: 12px 24px 11px;
164
+ }
165
+
166
+ @media (min-width: 768px) {
167
+ .VPOutlineDropdown {
168
+ padding: 12px 32px 11px;
169
+ }
170
+ }
171
+ </style>
@@ -0,0 +1,190 @@
1
+ <script setup lang="ts">
2
+ import { onClickOutside, onKeyStroke } from '@vueuse/core'
3
+ import { onContentUpdated } from 'vitepress'
4
+ import { nextTick, ref } from 'vue'
5
+ import { useData } from '../composables/data'
6
+ import { resolveTitle, type MenuItem } from '../composables/outline'
7
+ import VPDocOutlineItem from './VPDocOutlineItem.vue'
8
+
9
+ const props = defineProps<{
10
+ headers: MenuItem[]
11
+ navHeight: number
12
+ }>()
13
+
14
+ const { theme } = useData()
15
+ const open = ref(false)
16
+ const vh = ref(0)
17
+ const main = ref<HTMLDivElement>()
18
+ const items = ref<HTMLDivElement>()
19
+
20
+ onClickOutside(main, () => {
21
+ open.value = false
22
+ })
23
+
24
+ onKeyStroke('Escape', () => {
25
+ open.value = false
26
+ })
27
+
28
+ onContentUpdated(() => {
29
+ open.value = false
30
+ })
31
+
32
+ function toggle() {
33
+ open.value = !open.value
34
+ vh.value = window.innerHeight + Math.min(window.scrollY - props.navHeight, 0)
35
+ }
36
+
37
+ function onItemClick(e: Event) {
38
+ if ((e.target as HTMLElement).classList.contains('outline-link')) {
39
+ // disable animation on hash navigation when page jumps
40
+ if (items.value) {
41
+ items.value.style.transition = 'none'
42
+ }
43
+ nextTick(() => {
44
+ open.value = false
45
+ })
46
+ }
47
+ }
48
+
49
+ function scrollToTop() {
50
+ open.value = false
51
+ window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })
52
+ }
53
+ </script>
54
+
55
+ <template>
56
+ <div
57
+ class="VPLocalNavOutlineDropdown"
58
+ :style="{ '--vp-vh': vh + 'px' }"
59
+ ref="main"
60
+ >
61
+ <button @click="toggle" :class="{ open }" v-if="headers.length > 0">
62
+ <span class="menu-text">{{ resolveTitle(theme) }}</span>
63
+ <span class="vpi-chevron-right icon" />
64
+ </button>
65
+ <button @click="scrollToTop" v-else>
66
+ {{ theme.returnToTopLabel || 'Return to top' }}
67
+ </button>
68
+ <Transition name="flyout">
69
+ <div v-if="open" ref="items" class="items" @click="onItemClick">
70
+ <div class="header">
71
+ <a class="top-link" href="#" @click="scrollToTop">
72
+ {{ theme.returnToTopLabel || 'Return to top' }}
73
+ </a>
74
+ </div>
75
+ <div class="outline">
76
+ <VPDocOutlineItem :headers="headers" />
77
+ </div>
78
+ </div>
79
+ </Transition>
80
+ </div>
81
+ </template>
82
+
83
+ <style scoped>
84
+ .VPLocalNavOutlineDropdown {
85
+ padding: 12px 20px 11px;
86
+ }
87
+
88
+ @media (min-width: 960px) {
89
+ .VPLocalNavOutlineDropdown {
90
+ padding: 12px 36px 11px;
91
+ }
92
+ }
93
+
94
+ .VPLocalNavOutlineDropdown button {
95
+ display: block;
96
+ font-size: 12px;
97
+ font-weight: 500;
98
+ line-height: 24px;
99
+ color: var(--vp-c-text-2);
100
+ transition: color 0.5s;
101
+ position: relative;
102
+ }
103
+
104
+ .VPLocalNavOutlineDropdown button:hover {
105
+ color: var(--vp-c-text-1);
106
+ transition: color 0.25s;
107
+ }
108
+
109
+ .VPLocalNavOutlineDropdown button.open {
110
+ color: var(--vp-c-text-1);
111
+ }
112
+
113
+ .icon {
114
+ display: inline-block;
115
+ vertical-align: middle;
116
+ margin-left: 2px;
117
+ font-size: 14px;
118
+ transform: rotate(0deg);
119
+ transition: transform 0.25s;
120
+ }
121
+
122
+ @media (min-width: 960px) {
123
+ .VPLocalNavOutlineDropdown button {
124
+ font-size: 14px;
125
+ }
126
+
127
+ .icon {
128
+ font-size: 16px;
129
+ }
130
+ }
131
+
132
+ .open > .icon {
133
+ transform: rotate(90deg);
134
+ }
135
+
136
+ .items {
137
+ position: absolute;
138
+ top: 40px;
139
+ right: 16px;
140
+ left: 16px;
141
+ display: grid;
142
+ gap: 1px;
143
+ border: 1px solid var(--vp-c-border);
144
+ border-radius: 8px;
145
+ background-color: var(--vp-c-gutter);
146
+ max-height: calc(var(--vp-vh, 100vh) - 86px);
147
+ overflow: hidden auto;
148
+ box-shadow: var(--vp-shadow-3);
149
+ }
150
+
151
+ @media (min-width: 960px) {
152
+ .items {
153
+ right: auto;
154
+ left: calc(var(--vp-sidebar-width) + 32px);
155
+ width: 320px;
156
+ }
157
+ }
158
+
159
+ .header {
160
+ background-color: var(--vp-c-bg-soft);
161
+ }
162
+
163
+ .top-link {
164
+ display: block;
165
+ padding: 0 16px;
166
+ line-height: 48px;
167
+ font-size: 14px;
168
+ font-weight: 500;
169
+ color: var(--vp-c-brand-1);
170
+ }
171
+
172
+ .outline {
173
+ padding: 8px 0;
174
+ background-color: var(--vp-c-bg-soft);
175
+ }
176
+
177
+ .flyout-enter-active {
178
+ transition: all 0.2s ease-out;
179
+ }
180
+
181
+ .flyout-leave-active {
182
+ transition: all 0.15s ease-in;
183
+ }
184
+
185
+ .flyout-enter-from,
186
+ .flyout-leave-to {
187
+ opacity: 0;
188
+ transform: translateY(-16px);
189
+ }
190
+ </style>