@md-plugins/quasar-app-extension-q-press 0.1.0-alpha.10

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 (200) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +230 -0
  3. package/old/prompts.js +44 -0
  4. package/old/uninstall.js +9 -0
  5. package/package.json +60 -0
  6. package/scripts/build.js +33 -0
  7. package/src/index.js +63 -0
  8. package/src/install.js +49 -0
  9. package/src/templates/.gitkeep +0 -0
  10. package/src/templates/init/src/_q-press/.gitkeep +0 -0
  11. package/src/templates/init/src/_q-press/api/components/DarkModeToggle.json +37 -0
  12. package/src/templates/init/src/_q-press/api/components/MarkdownApi.json +67 -0
  13. package/src/templates/init/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  14. package/src/templates/init/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  15. package/src/templates/init/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  16. package/src/templates/init/src/_q-press/api/components/MarkdownCode.json +37 -0
  17. package/src/templates/init/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  18. package/src/templates/init/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  19. package/src/templates/init/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  20. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  21. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  22. package/src/templates/init/src/_q-press/api/components/MarkdownExample.json +22 -0
  23. package/src/templates/init/src/_q-press/api/components/MarkdownHeader.json +28 -0
  24. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  25. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  26. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  27. package/src/templates/init/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  28. package/src/templates/init/src/_q-press/api/components/MarkdownLayout.json +52 -0
  29. package/src/templates/init/src/_q-press/api/components/MarkdownLink.json +23 -0
  30. package/src/templates/init/src/_q-press/api/components/MarkdownPage.json +71 -0
  31. package/src/templates/init/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  32. package/src/templates/init/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  33. package/src/templates/init/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  34. package/src/templates/init/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  35. package/src/templates/init/src/_q-press/api/components/MarkdownTree.json +27 -0
  36. package/src/templates/init/src/_q-press/api/composables/dark.json +29 -0
  37. package/src/templates/init/src/_q-press/api/composables/scroll.json +34 -0
  38. package/src/templates/init/src/_q-press/assets/get-meta.ts +29 -0
  39. package/src/templates/init/src/_q-press/components/DarkModeToggle.vue +105 -0
  40. package/src/templates/init/src/_q-press/components/MarkdownApi.vue +588 -0
  41. package/src/templates/init/src/_q-press/components/MarkdownApiEntry.ts +594 -0
  42. package/src/templates/init/src/_q-press/components/MarkdownCardLink.vue +25 -0
  43. package/src/templates/init/src/_q-press/components/MarkdownCardTitle.vue +21 -0
  44. package/src/templates/init/src/_q-press/components/MarkdownCode.vue +25 -0
  45. package/src/templates/init/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  46. package/src/templates/init/src/_q-press/components/MarkdownCodepen.vue +183 -0
  47. package/src/templates/init/src/_q-press/components/MarkdownCopyButton.vue +104 -0
  48. package/src/templates/init/src/_q-press/components/MarkdownExample.vue +221 -0
  49. package/src/templates/init/src/_q-press/components/MarkdownInstallation.vue +166 -0
  50. package/src/templates/init/src/_q-press/components/MarkdownLink.vue +38 -0
  51. package/src/templates/init/src/_q-press/components/MarkdownPrerender.ts +82 -0
  52. package/src/templates/init/src/_q-press/components/MarkdownTree.vue +105 -0
  53. package/src/templates/init/src/_q-press/components/markdown-utils.ts +105 -0
  54. package/src/templates/init/src/_q-press/composables/dark.ts +39 -0
  55. package/src/templates/init/src/_q-press/composables/scroll.ts +115 -0
  56. package/src/templates/init/src/_q-press/css/app.scss +662 -0
  57. package/src/templates/init/src/_q-press/css/fonts.scss +100 -0
  58. package/src/templates/init/src/_q-press/css/prism-theme.scss +298 -0
  59. package/src/templates/init/src/_q-press/css/themes/default.scss +68 -0
  60. package/src/templates/init/src/_q-press/css/themes/newspaper.scss +69 -0
  61. package/src/templates/init/src/_q-press/css/themes/sunrise.scss +67 -0
  62. package/src/templates/init/src/_q-press/css/themes/tawny.scss +69 -0
  63. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  64. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  65. package/src/templates/init/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  66. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +31 -0
  67. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderMenu.ts +93 -0
  68. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +37 -0
  69. package/src/templates/init/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  70. package/src/templates/init/src/_q-press/layouts/MarkdownPage.vue +307 -0
  71. package/src/templates/init/src/_q-press/layouts/MarkdownPageFooter.vue +187 -0
  72. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  73. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  74. package/src/templates/init/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  75. package/src/templates/init/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  76. package/src/templates/init/src/_q-press/stores/markdown.ts +101 -0
  77. package/src/templates/init/src/components/LandingPage/LandingPage.vue +341 -0
  78. package/src/templates/init/src/components/Releases/PackageReleases.vue +164 -0
  79. package/src/templates/init/src/components/Releases/PublicReleases.vue +149 -0
  80. package/src/templates/init/src/components/Releases/ReleasesAvailable.vue +74 -0
  81. package/src/templates/init/src/examples/QAvatar/BasicExample.vue +11 -0
  82. package/src/templates/init/src/markdown/__elements.md +548 -0
  83. package/src/templates/init/src/markdown/__elements2.md +347 -0
  84. package/src/templates/init/src/markdown/faq/best-practices.md +0 -0
  85. package/src/templates/init/src/markdown/faq/general.md +0 -0
  86. package/src/templates/init/src/markdown/faq/troubleshooting.md +0 -0
  87. package/src/templates/init/src/markdown/getting-started/introduction.md +67 -0
  88. package/src/templates/init/src/markdown/guides/contributing.md +101 -0
  89. package/src/templates/init/src/markdown/guides/faq.md +115 -0
  90. package/src/templates/init/src/markdown/guides/release-notes.md +0 -0
  91. package/src/templates/init/src/markdown/guides/style-guide.md +0 -0
  92. package/src/templates/init/src/markdown/landing-page.md +11 -0
  93. package/src/templates/init/src/markdown/listing.ts +3 -0
  94. package/src/templates/init/src/markdown/md-plugins/blockquote/advanced.md +83 -0
  95. package/src/templates/init/src/markdown/md-plugins/blockquote/overview.md +183 -0
  96. package/src/templates/init/src/markdown/md-plugins/codeblocks/advanced.md +210 -0
  97. package/src/templates/init/src/markdown/md-plugins/codeblocks/overview.md +616 -0
  98. package/src/templates/init/src/markdown/md-plugins/containers/advanced.md +301 -0
  99. package/src/templates/init/src/markdown/md-plugins/containers/overview.md +206 -0
  100. package/src/templates/init/src/markdown/md-plugins/frontmatter/advanced.md +164 -0
  101. package/src/templates/init/src/markdown/md-plugins/frontmatter/overview.md +131 -0
  102. package/src/templates/init/src/markdown/md-plugins/headers/advanced.md +236 -0
  103. package/src/templates/init/src/markdown/md-plugins/headers/overview.md +134 -0
  104. package/src/templates/init/src/markdown/md-plugins/image/advanced.md +114 -0
  105. package/src/templates/init/src/markdown/md-plugins/image/overview.md +124 -0
  106. package/src/templates/init/src/markdown/md-plugins/imports/advanced.md +105 -0
  107. package/src/templates/init/src/markdown/md-plugins/imports/overview.md +80 -0
  108. package/src/templates/init/src/markdown/md-plugins/inline-code/advanced.md +133 -0
  109. package/src/templates/init/src/markdown/md-plugins/inline-code/overview.md +101 -0
  110. package/src/templates/init/src/markdown/md-plugins/link/advanced.md +157 -0
  111. package/src/templates/init/src/markdown/md-plugins/link/overview.md +126 -0
  112. package/src/templates/init/src/markdown/md-plugins/shared/overview.md +175 -0
  113. package/src/templates/init/src/markdown/md-plugins/table/advanced.md +190 -0
  114. package/src/templates/init/src/markdown/md-plugins/table/overview.md +186 -0
  115. package/src/templates/init/src/markdown/md-plugins/title/advanced.md +88 -0
  116. package/src/templates/init/src/markdown/md-plugins/title/overview.md +99 -0
  117. package/src/templates/init/src/markdown/other/release-notes.md +12 -0
  118. package/src/templates/init/src/markdown/privacy-policy.md +12 -0
  119. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/advanced.md +101 -0
  120. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/components.md +69 -0
  121. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/overview.md +254 -0
  122. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/themes.md +4 -0
  123. package/src/templates/init/src/markdown/quasar-app-extensions/vitemdpluginappext/advanced.md +4 -0
  124. package/src/templates/init/src/markdown/quasar-app-extensions/vitemdpluginappext/overview.md +103 -0
  125. package/src/templates/init/src/markdown/vite-plugins/index.md +6 -0
  126. package/src/templates/init/src/markdown/vite-plugins/viteexamplesplugin/advanced.md +138 -0
  127. package/src/templates/init/src/markdown/vite-plugins/viteexamplesplugin/overview.md +88 -0
  128. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/advanced.md +226 -0
  129. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/index.md +6 -0
  130. package/src/templates/init/src/markdown/vite-plugins/vitemdplugin/overview.md +166 -0
  131. package/src/templates/init/src/q-press.globals.d.ts +36 -0
  132. package/src/templates/init/src/siteConfig/index.ts +440 -0
  133. package/src/templates/update/src/_q-press/.gitkeep +0 -0
  134. package/src/templates/update/src/_q-press/api/components/DarkModeToggle.json +37 -0
  135. package/src/templates/update/src/_q-press/api/components/MarkdownApi.json +67 -0
  136. package/src/templates/update/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  137. package/src/templates/update/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  138. package/src/templates/update/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  139. package/src/templates/update/src/_q-press/api/components/MarkdownCode.json +37 -0
  140. package/src/templates/update/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  141. package/src/templates/update/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  142. package/src/templates/update/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  143. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  144. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  145. package/src/templates/update/src/_q-press/api/components/MarkdownExample.json +22 -0
  146. package/src/templates/update/src/_q-press/api/components/MarkdownHeader.json +28 -0
  147. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  148. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  149. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  150. package/src/templates/update/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  151. package/src/templates/update/src/_q-press/api/components/MarkdownLayout.json +52 -0
  152. package/src/templates/update/src/_q-press/api/components/MarkdownLink.json +23 -0
  153. package/src/templates/update/src/_q-press/api/components/MarkdownPage.json +71 -0
  154. package/src/templates/update/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  155. package/src/templates/update/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  156. package/src/templates/update/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  157. package/src/templates/update/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  158. package/src/templates/update/src/_q-press/api/components/MarkdownTree.json +27 -0
  159. package/src/templates/update/src/_q-press/api/composables/dark.json +29 -0
  160. package/src/templates/update/src/_q-press/api/composables/scroll.json +34 -0
  161. package/src/templates/update/src/_q-press/assets/get-meta.ts +29 -0
  162. package/src/templates/update/src/_q-press/components/DarkModeToggle.vue +105 -0
  163. package/src/templates/update/src/_q-press/components/MarkdownApi.vue +588 -0
  164. package/src/templates/update/src/_q-press/components/MarkdownApiEntry.ts +594 -0
  165. package/src/templates/update/src/_q-press/components/MarkdownCardLink.vue +25 -0
  166. package/src/templates/update/src/_q-press/components/MarkdownCardTitle.vue +21 -0
  167. package/src/templates/update/src/_q-press/components/MarkdownCode.vue +25 -0
  168. package/src/templates/update/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  169. package/src/templates/update/src/_q-press/components/MarkdownCodepen.vue +183 -0
  170. package/src/templates/update/src/_q-press/components/MarkdownCopyButton.vue +104 -0
  171. package/src/templates/update/src/_q-press/components/MarkdownExample.vue +221 -0
  172. package/src/templates/update/src/_q-press/components/MarkdownInstallation.vue +166 -0
  173. package/src/templates/update/src/_q-press/components/MarkdownLink.vue +38 -0
  174. package/src/templates/update/src/_q-press/components/MarkdownPrerender.ts +82 -0
  175. package/src/templates/update/src/_q-press/components/MarkdownTree.vue +105 -0
  176. package/src/templates/update/src/_q-press/components/markdown-utils.ts +105 -0
  177. package/src/templates/update/src/_q-press/composables/dark.ts +39 -0
  178. package/src/templates/update/src/_q-press/composables/scroll.ts +115 -0
  179. package/src/templates/update/src/_q-press/css/app.scss +662 -0
  180. package/src/templates/update/src/_q-press/css/fonts.scss +100 -0
  181. package/src/templates/update/src/_q-press/css/prism-theme.scss +298 -0
  182. package/src/templates/update/src/_q-press/css/themes/default.scss +68 -0
  183. package/src/templates/update/src/_q-press/css/themes/newspaper.scss +69 -0
  184. package/src/templates/update/src/_q-press/css/themes/sunrise.scss +67 -0
  185. package/src/templates/update/src/_q-press/css/themes/tawny.scss +69 -0
  186. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  187. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  188. package/src/templates/update/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  189. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +31 -0
  190. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderMenu.ts +93 -0
  191. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +37 -0
  192. package/src/templates/update/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  193. package/src/templates/update/src/_q-press/layouts/MarkdownPage.vue +307 -0
  194. package/src/templates/update/src/_q-press/layouts/MarkdownPageFooter.vue +187 -0
  195. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  196. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  197. package/src/templates/update/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  198. package/src/templates/update/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  199. package/src/templates/update/src/_q-press/stores/markdown.ts +101 -0
  200. package/src/templates/update/src/q-press.globals.d.ts +36 -0
@@ -0,0 +1,341 @@
1
+ <template>
2
+ <div class="landing-page markdown-brand">
3
+ <header class="hero">
4
+ <img
5
+ src="https://raw.githubusercontent.com/md-plugins/md-plugins/refs/heads/main/media/markdown-1024x1024.png"
6
+ alt="Markdown Plugins Logo"
7
+ class="hero-logo"
8
+ />
9
+ <h1 class="hero-title">Markdown Plugins</h1>
10
+ <h2 class="hero-subtitle">(@md-plugins)</h2>
11
+ <div class="row justify-center">
12
+ <p class="hero-subtitle2" style="max-width: 660px">
13
+ {{ siteConfig.description }}
14
+ </p>
15
+ </div>
16
+
17
+ <div class="hero-buttons">
18
+ <router-link
19
+ to="/getting-started/introduction"
20
+ class="hero-button q-btn q-btn-item non-selectable no-outline q-btn--standard q-btn--rectangle q-btn--actionable q-focusable q-hoverable q-btn--no-uppercase q-btn--rounded q-btn--dense"
21
+ >
22
+ <span
23
+ class="q-btn__content text-center col items-center q-anchor--skip justify-center row"
24
+ >
25
+ Get Started
26
+ </span>
27
+ </router-link>
28
+ <a
29
+ href="https://github.com/md-plugins/md-plugins"
30
+ target="_blank"
31
+ class="hero-button q-btn q-btn-item non-selectable no-outline q-btn--standard q-btn--rectangle q-btn--actionable q-focusable q-hoverable q-btn--no-uppercase q-btn--rounded q-btn--dense"
32
+ >
33
+ <span
34
+ class="q-btn__content text-center col items-center q-anchor--skip justify-center row"
35
+ >
36
+ <q-icon :name="fabGithub" class="q-mr-sm" />
37
+ GitHub Repo
38
+ </span>
39
+ </a>
40
+ </div>
41
+ </header>
42
+ <div class="byline">
43
+ <p>Discover the power of Markdown Plugins and enhance your documentation experience!</p>
44
+ <p>
45
+ <strong>NOTE:</strong> MD-Plugins are currently in development and not suitable for
46
+ production.
47
+ </p>
48
+ </div>
49
+ <div class="row justify-center hero">
50
+ <div class="hero-title">Markdown-It! Plugins</div>
51
+ </div>
52
+ <main class="content">
53
+ <div
54
+ v-for="plugin in mdPlugins"
55
+ :key="plugin.name"
56
+ class="section"
57
+ @click="navigate(plugin.path)"
58
+ >
59
+ <q-card flat style="background: transparent">
60
+ <h2>{{ plugin.name }}</h2>
61
+ <p>{{ plugin.desc }}</p>
62
+ </q-card>
63
+ </div>
64
+ </main>
65
+ <div class="row justify-center hero">
66
+ <div class="hero-title">Vite Plugins</div>
67
+ </div>
68
+ <main class="content">
69
+ <div
70
+ v-for="plugin in vitePlugins"
71
+ :key="plugin.name"
72
+ class="section"
73
+ @click="navigate(plugin.path)"
74
+ >
75
+ <h2>{{ plugin.name }}</h2>
76
+ <p>{{ plugin.desc }}</p>
77
+ </div>
78
+ </main>
79
+ <div class="row justify-center hero">
80
+ <div class="hero-title">Quasar App Extensions</div>
81
+ </div>
82
+ <main class="content">
83
+ <div v-for="ext in appExtensions" :key="ext.name" class="section" @click="navigate(ext.path)">
84
+ <h2>{{ ext.name }}</h2>
85
+ <p>{{ ext.desc }}</p>
86
+ </div>
87
+ </main>
88
+ <q-separator />
89
+ <div class="byline">
90
+ <p>
91
+ Don't forget to check out the Q-Press app extension for Quasar to create beautiful
92
+ documentation sites.
93
+ </p>
94
+ <p>
95
+ This site is built with Q-Press! Install it, set it up, choose a theme and start your own
96
+ site!
97
+ </p>
98
+ </div>
99
+ <q-separator />
100
+ <div class="byline">
101
+ <p>
102
+ We hope you find this documentation helpful. If you have any questions or need further
103
+ assistance, please don't hesitate to reach out to our support team.
104
+ </p>
105
+ <p>Happy coding!</p>
106
+ </div>
107
+ </div>
108
+ </template>
109
+
110
+ <script setup lang="ts">
111
+ import { QIcon } from 'quasar'
112
+ import { fabGithub } from '@quasar/extras/fontawesome-v6'
113
+ import { useRouter } from 'vue-router'
114
+ import siteConfig from '../../siteConfig'
115
+
116
+ const router = useRouter()
117
+
118
+ const mdPlugins = [
119
+ {
120
+ name: 'Blockquote Plugin',
121
+ desc: 'Adds support for creating Markdown blockquotes.',
122
+ path: '/md-plugins/blockquote/overview',
123
+ },
124
+ {
125
+ name: 'Codeblocks Plugin',
126
+ desc: 'Adds support for creating Markdown code blocks.',
127
+ path: '/md-plugins/codeblocks/overview',
128
+ },
129
+ {
130
+ name: 'Container Plugin',
131
+ desc: 'Adds support for creating Markdown containers.',
132
+ path: '/md-plugins/containers/overview',
133
+ },
134
+ {
135
+ name: 'Frontmatter Plugin',
136
+ desc: 'Adds support for getting frontmatter data into your Markdown.',
137
+ path: '/md-plugins/frontmatter/overview',
138
+ },
139
+ {
140
+ name: 'Headers Plugin',
141
+ desc: "Adds support for creating ToC's inMarkdown.",
142
+ path: '/md-plugins/headers/overview',
143
+ },
144
+ {
145
+ name: 'Image Plugin',
146
+ desc: 'Adds support for creating Markdown images.',
147
+ path: '/md-plugins/image/overview',
148
+ },
149
+ {
150
+ name: 'Imports Plugin',
151
+ desc: 'Adds support for creating custom imports for your Markdown.',
152
+ path: '/md-plugins/imports/overview',
153
+ },
154
+ {
155
+ name: 'Inlinecode Plugin',
156
+ desc: 'Adds support for creating Markdown inline code.',
157
+ path: '/md-plugins/inline-code/overview',
158
+ },
159
+ {
160
+ name: 'Link Plugin',
161
+ desc: 'Adds support for creating Markdown links.',
162
+ path: '/md-plugins/link/overview',
163
+ },
164
+ {
165
+ name: 'Table Plugin',
166
+ desc: 'Adds support for creating Markdown tables.',
167
+ path: '/md-plugins/table/overview',
168
+ },
169
+ {
170
+ name: 'Title Plugin',
171
+ desc: 'Adds support for creating Markdown titles.',
172
+ path: '/md-plugins/title/overview',
173
+ },
174
+ ]
175
+
176
+ const vitePlugins = [
177
+ {
178
+ name: 'Vite MD Plugin',
179
+ desc: 'Adds support for creating Vue SFCs from Markdown files.',
180
+ path: '/vite-plugins/vitemdplugin/overview',
181
+ },
182
+ {
183
+ name: 'Vite Examples Plugin',
184
+ desc: 'Adds support for importing Vue files as raw source.',
185
+ path: '/vite-plugins/viteexamplesplugin/overview',
186
+ },
187
+ ]
188
+
189
+ const appExtensions = [
190
+ {
191
+ name: 'viteMdPluginAppExt',
192
+ desc: 'Adds support for creating Vue SFCs from Markdown files.',
193
+ path: '/quasar-app-extensions/vitemdpluginappext/overview',
194
+ },
195
+ {
196
+ name: 'Q-Press (app-ext)',
197
+ desc: 'Create beautiful documentation sites with Q-Press.',
198
+ path: '/quasar-app-extensions/qpress/overview',
199
+ },
200
+ ]
201
+
202
+ function navigate(path: string) {
203
+ router.push(path)
204
+ }
205
+ </script>
206
+
207
+ <style lang="scss" scoped>
208
+ .landing-page {
209
+ font-family: 'Arial', sans-serif;
210
+ color: #333;
211
+ }
212
+
213
+ .hero {
214
+ background: linear-gradient(135deg, $brand-primary, $brand-secondary);
215
+ color: white;
216
+ text-align: center;
217
+ padding: 50px 20px;
218
+ }
219
+
220
+ .hero-logo {
221
+ max-width: 200px;
222
+ margin-bottom: 20px;
223
+ border-radius: 50%;
224
+ }
225
+
226
+ .hero-title {
227
+ font-size: 3.5em;
228
+ line-height: 1.2em;
229
+ font-weight: 700;
230
+ margin: 0;
231
+ padding: 0.2em 0;
232
+ text-shadow: 4px 4px 8px rgba(0, 0, 0, 0.8);
233
+ }
234
+
235
+ .hero-subtitle {
236
+ font-size: 1.8em;
237
+ line-height: 1.8em;
238
+ margin: 0;
239
+ }
240
+
241
+ .hero-subtitle2 {
242
+ font-size: 1.2em;
243
+ line-height: 1.2em;
244
+ }
245
+
246
+ .hero-buttons {
247
+ display: flex;
248
+ justify-content: center;
249
+ gap: 10px;
250
+ }
251
+
252
+ .hero-button {
253
+ background: white;
254
+ color: $brand-primary;
255
+ padding: 10px 20px;
256
+ border-radius: 5px;
257
+ text-decoration: none;
258
+ font-weight: bold;
259
+ transition: background 0.3s;
260
+ }
261
+
262
+ .hero-button:hover {
263
+ background: #f0f0f0;
264
+ }
265
+
266
+ .byline {
267
+ text-align: center;
268
+ font-size: 1.2em;
269
+ margin: 20px 0;
270
+ color: #35495e;
271
+ }
272
+
273
+ body.body--dark .byline {
274
+ color: #f0f0f0;
275
+ }
276
+
277
+ .content {
278
+ display: flex;
279
+ flex-wrap: wrap;
280
+ justify-content: center;
281
+ padding: 20px;
282
+ }
283
+
284
+ .section {
285
+ flex: 1 1 300px;
286
+ margin: 20px;
287
+ padding: 20px;
288
+ color: white;
289
+ text-decoration: none;
290
+ background: linear-gradient(135deg, $brand-primary, $brand-secondary);
291
+ border-radius: 10px;
292
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
293
+ transition:
294
+ transform 0.3s,
295
+ box-shadow 0.3s;
296
+ }
297
+
298
+ .section:hover {
299
+ transform: translateY(-5px);
300
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
301
+ // change mouseover effects
302
+ cursor: pointer;
303
+ }
304
+
305
+ .section h2 {
306
+ margin-top: 0;
307
+ color: white;
308
+ font-size: 2.125rem;
309
+ font-weight: 400;
310
+ line-height: 2.5rem;
311
+ letter-spacing: 0.00735em;
312
+ font-weight: 700;
313
+ text-shadow: 4px 4px 8px rgba(0, 0, 0, 0.8);
314
+ }
315
+
316
+ .section ul {
317
+ list-style: none;
318
+ padding: 0;
319
+ }
320
+
321
+ .section ul li {
322
+ margin: 10px 0;
323
+ }
324
+
325
+ .section ul li a {
326
+ color: #35495e;
327
+ text-decoration: none;
328
+ transition: color 0.3s;
329
+ }
330
+
331
+ .section ul li a:hover {
332
+ color: $brand-primary;
333
+ }
334
+
335
+ .footer {
336
+ text-align: center;
337
+ padding: 20px;
338
+ background: #35495e;
339
+ color: white;
340
+ }
341
+ </style>
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <div>
3
+ <q-input class="header-toolbar q-px-md" v-model="search" dense square borderless color="white" placeholder="Search..." clearable>
4
+ <template #prepend>
5
+ <q-icon :name="mdiMagnify" />
6
+ </template>
7
+ </q-input>
8
+
9
+ <q-separator />
10
+
11
+ <q-splitter class="release__splitter" :model-value="20" :limits="[14, 90]">
12
+ <template #before>
13
+ <q-scroll-area>
14
+ <q-tabs class="header-tabs" vertical v-model="selectedVersion" active-color="brand-primary" indicator-color="brand-primary">
15
+ <q-tab v-for="releaseInfo in filteredReleases" class="header-btn" :key="releaseInfo.version" :name="releaseInfo.version" no-caps>
16
+ <div class="release__tab-label q-pt-xs">{{ releaseInfo.version }}</div>
17
+ <div class="release__tab-date q-pb-xs">{{ releaseInfo.date }}</div>
18
+ </q-tab>
19
+ </q-tabs>
20
+ </q-scroll-area>
21
+ </template>
22
+
23
+ <template #after>
24
+ <q-tab-panels class="releases-container" v-model="selectedVersion" animated transition-prev="slide-down" transition-next="slide-up">
25
+ <q-tab-panel class="q-pa-none" v-for="releaseInfo in filteredReleases" :key="releaseInfo.version" :name="releaseInfo.version">
26
+ <q-scroll-area>
27
+ <div class="release__body q-pa-md" v-html="currentReleaseBody" />
28
+ </q-scroll-area>
29
+ </q-tab-panel>
30
+ </q-tab-panels>
31
+ </template>
32
+ </q-splitter>
33
+ </div>
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import { ref, computed, watch } from 'vue'
38
+ import { mdiMagnify } from '@quasar/extras/mdi-v6'
39
+
40
+ interface Release {
41
+ version: string
42
+ body: string
43
+ date: string
44
+ label: string
45
+ }
46
+
47
+ const props = defineProps<{ releases: Release[] }>()
48
+
49
+ const search = ref('')
50
+ const selectedVersion = ref(getLatestVersion())
51
+
52
+ watch(
53
+ () => props.releases,
54
+ () => { selectedVersion.value = getLatestVersion() }
55
+ )
56
+
57
+ function getLatestVersion (): string {
58
+ return props.releases && props.releases.length > 0 ? props.releases[0]!.version : 'unknown'
59
+ }
60
+
61
+ const filteredReleases = computed(() => {
62
+ if (search.value) {
63
+ const val = search.value.toLowerCase()
64
+ return props.releases.filter(release => (
65
+ release.version.indexOf(val) !== -1 ||
66
+ release.body.toLowerCase().indexOf(val) !== -1
67
+ ))
68
+ }
69
+
70
+ return props.releases
71
+ })
72
+
73
+ const currentReleaseBody = computed(() => {
74
+ const release = props.releases.find(r => r.version === selectedVersion.value)
75
+ return release ? release.body : ''
76
+ })
77
+ </script>
78
+
79
+ <style lang="scss">
80
+ .release__splitter .q-scrollarea {
81
+ height: 600px;
82
+ }
83
+
84
+ .release__tab-label {
85
+ font-size: $font-size;
86
+ font-weight: 700;
87
+ line-height: ($font-size + 3px);
88
+ }
89
+
90
+ .release__tab-date {
91
+ font-size: ($font-size - 3px);
92
+ line-height: ($font-size + 3px);
93
+ }
94
+
95
+ .release__body {
96
+ h1, h2, h3, h4, h5, h6 {
97
+ padding: 0;
98
+ margin: .7em 0 .5em;
99
+ line-height: 1.1em;
100
+ color: $brand-primary;
101
+
102
+ &:first-child {
103
+ margin-top: 0;
104
+ }
105
+ }
106
+
107
+ h1 {
108
+ font-size: ($font-size + 18px);
109
+ }
110
+
111
+ h2 {
112
+ font-size: ($font-size + 14px);
113
+ }
114
+
115
+ h3 {
116
+ font-size: ($font-size + 10px);
117
+ }
118
+
119
+ h4 {
120
+ font-size: ($font-size + 6px);
121
+ }
122
+
123
+ h5 {
124
+ font-size: ($font-size + 4px);
125
+ }
126
+
127
+ h6 {
128
+ font-size: ($font-size + 2px);
129
+ }
130
+
131
+ table {
132
+ white-space: normal;
133
+ border: 1px solid $separator-color;
134
+ border-radius: $generic-border-radius;
135
+ width: 100%;
136
+ max-width: 100%;
137
+ border-collapse: separate;
138
+ border-spacing: 0;
139
+
140
+ th, td {
141
+ text-align: left;
142
+ padding: 8px 16px;
143
+ }
144
+
145
+ th {
146
+ font-weight: 700;
147
+ letter-spacing: $letter-spacing-brand;
148
+ border-bottom: 1px solid $separator-color;
149
+ }
150
+
151
+ tr:not(:first-child) td {
152
+ border-top: 1px solid $separator-color;
153
+ }
154
+ }
155
+ }
156
+
157
+ body.body--dark .release__body {
158
+ table {
159
+ &, th, tr:not(:first-child) td {
160
+ border-color: $separator-dark-color;
161
+ }
162
+ }
163
+ }
164
+ </style>
@@ -0,0 +1,149 @@
1
+ <template>
2
+ <q-card flat bordered>
3
+ <q-card-section v-if="error" class="row no-wrap items-center">
4
+ <q-icon name="warning" size="24px" color="negative" class="q-mr-sm" />
5
+ <div>Cannot connect to GitHub. Try again later.</div>
6
+ </q-card-section>
7
+
8
+ <q-card-section v-else-if="loading" class="row no-wrap items-center">
9
+ <q-spinner size="24px" color="primary" class="q-mr-sm" />
10
+ <div>Loading release notes from GitHub</div>
11
+ </q-card-section>
12
+
13
+ <template v-else>
14
+ <q-separator />
15
+ <q-tab-panels v-model="currentPackage" animated class="packages-container">
16
+ <q-tab-panel
17
+ v-for="(packageReleases, packageName) in packages"
18
+ :key="packageName"
19
+ :name="packageName"
20
+ class="q-pa-none"
21
+ >
22
+ <PackageReleases
23
+ v-if="String(latestVersions[packageName]) && packageReleases.length > 0"
24
+ :latest-version="String(latestVersions[packageName])"
25
+ :releases="packageReleases"
26
+ />
27
+ </q-tab-panel>
28
+ </q-tab-panels>
29
+ </template>
30
+ </q-card>
31
+ </template>
32
+
33
+ <script setup lang="ts">
34
+ import { ref, onMounted } from 'vue'
35
+ import { date } from 'quasar'
36
+
37
+ import PackageReleases from './PackageReleases.vue'
38
+
39
+ const { extractDate, formatDate } = date
40
+
41
+ // Types
42
+ interface ReleaseInfo {
43
+ version: string
44
+ date: string
45
+ body: string
46
+ label: string
47
+ }
48
+
49
+ interface PackageReleasesMap {
50
+ [key: string]: ReleaseInfo[]
51
+ }
52
+
53
+ // Reactive state
54
+ const packages = ref<PackageReleasesMap>({
55
+ 'MD-Plugins': [],
56
+ })
57
+ const loading = ref<boolean>(false)
58
+ const error = ref<boolean>(false)
59
+ const currentPackage = ref<string>('MD-Plugins')
60
+ const latestVersions = ref<Record<string, string>>({})
61
+
62
+ function queryReleases(page = 1): void {
63
+ loading.value = true
64
+ error.value = false
65
+
66
+ const xhr = new XMLHttpRequest()
67
+
68
+ xhr.addEventListener('load', function () {
69
+ const releases = JSON.parse(this.responseText)
70
+
71
+ if (!releases || releases.length === 0) {
72
+ error.value = true
73
+ return
74
+ }
75
+
76
+ error.value = false
77
+ let stopQuery = true
78
+
79
+ for (const release of releases) {
80
+ const [name, version] = release.name.split('v')
81
+
82
+ if (name.startsWith('@quasar')) {
83
+ continue
84
+ }
85
+
86
+ const packageName = currentPackage.value
87
+
88
+ if (!version) {
89
+ stopQuery = true
90
+ continue
91
+ }
92
+
93
+ if (!packages.value[packageName]) {
94
+ packages.value[packageName] = []
95
+ }
96
+
97
+ const releaseInfo: ReleaseInfo = {
98
+ version,
99
+ date: formatDate(extractDate(release.published_at, 'YYYY-MM-DD'), 'YYYY-MM-DD'),
100
+ body: release.body,
101
+ label: version,
102
+ }
103
+
104
+ packages.value[packageName].push(releaseInfo)
105
+
106
+ if (!latestVersions.value[packageName]) {
107
+ latestVersions.value[packageName] = releaseInfo.label
108
+ }
109
+ }
110
+
111
+ if (!stopQuery) {
112
+ queryReleases(page + 1)
113
+ }
114
+
115
+ if (packages.value['MD-Plugins']) {
116
+ packages.value['MD-Plugins'].sort((a, b) => {
117
+ return parseInt(b.date.replace(/-/g, ''), 10) - parseInt(a.date.replace(/-/g, ''), 10)
118
+ })
119
+ }
120
+
121
+ loading.value = false
122
+ console.log('Packages:', packages.value)
123
+ console.log('Latest versions:', latestVersions.value)
124
+ })
125
+
126
+ xhr.addEventListener('error', () => {
127
+ error.value = true
128
+ })
129
+
130
+ xhr.open(
131
+ 'GET',
132
+ `https://api.github.com/repos/md-plugins/md-plugins/releases?page=${page}&per_page=100`,
133
+ )
134
+ xhr.send()
135
+ }
136
+
137
+ onMounted(() => {
138
+ queryReleases()
139
+ })
140
+ </script>
141
+
142
+ <style lang="scss">
143
+ .packages-container {
144
+ .q-tab-panel {
145
+ padding-right: 0;
146
+ padding-top: 0;
147
+ }
148
+ }
149
+ </style>