@md-plugins/quasar-app-extension-q-press 0.1.0-alpha.7 → 0.1.0-beta.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 (197) hide show
  1. package/README.md +231 -1
  2. package/package.json +28 -26
  3. package/src/index.js +27 -6
  4. package/src/install.js +48 -0
  5. package/src/templates/init/src/_q-press/.gitkeep +0 -0
  6. package/src/templates/init/src/_q-press/api/components/DarkModeToggle.json +37 -0
  7. package/src/templates/init/src/_q-press/api/components/MarkdownApi.json +67 -0
  8. package/src/templates/init/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  9. package/src/templates/init/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  10. package/src/templates/init/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  11. package/src/templates/init/src/_q-press/api/components/MarkdownCode.json +37 -0
  12. package/src/templates/init/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  13. package/src/templates/init/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  14. package/src/templates/init/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  15. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  16. package/src/templates/init/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  17. package/src/templates/init/src/_q-press/api/components/MarkdownExample.json +22 -0
  18. package/src/templates/init/src/_q-press/api/components/MarkdownHeader.json +28 -0
  19. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  20. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  21. package/src/templates/init/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  22. package/src/templates/init/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  23. package/src/templates/init/src/_q-press/api/components/MarkdownLayout.json +52 -0
  24. package/src/templates/init/src/_q-press/api/components/MarkdownLink.json +23 -0
  25. package/src/templates/init/src/_q-press/api/components/MarkdownPage.json +71 -0
  26. package/src/templates/init/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  27. package/src/templates/init/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  28. package/src/templates/init/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  29. package/src/templates/init/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  30. package/src/templates/init/src/_q-press/api/components/MarkdownTree.json +27 -0
  31. package/src/templates/init/src/_q-press/api/composables/dark.json +29 -0
  32. package/src/templates/init/src/_q-press/api/composables/scroll.json +34 -0
  33. package/src/templates/init/src/_q-press/assets/get-meta.ts +29 -0
  34. package/src/templates/init/src/_q-press/components/DarkModeToggle.vue +105 -0
  35. package/src/templates/init/src/_q-press/components/MarkdownApi.vue +663 -0
  36. package/src/templates/init/src/_q-press/components/MarkdownApiEntry.ts +836 -0
  37. package/src/templates/init/src/_q-press/components/MarkdownCardLink.vue +25 -0
  38. package/src/templates/init/src/_q-press/components/MarkdownCardTitle.vue +27 -0
  39. package/src/templates/init/src/_q-press/components/MarkdownCode.vue +31 -0
  40. package/src/templates/init/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  41. package/src/templates/init/src/_q-press/components/MarkdownCodepen.vue +194 -0
  42. package/src/templates/init/src/_q-press/components/MarkdownCopyButton.vue +107 -0
  43. package/src/templates/init/src/_q-press/components/MarkdownExample.vue +239 -0
  44. package/src/templates/init/src/_q-press/components/MarkdownLink.vue +38 -0
  45. package/src/templates/init/src/_q-press/components/MarkdownPrerender.ts +93 -0
  46. package/src/templates/init/src/_q-press/components/MarkdownTree.vue +108 -0
  47. package/src/templates/init/src/_q-press/components/markdown-utils.ts +105 -0
  48. package/src/templates/init/src/_q-press/composables/dark.ts +39 -0
  49. package/src/templates/init/src/_q-press/composables/scroll.ts +142 -0
  50. package/src/templates/init/src/_q-press/css/app.scss +680 -0
  51. package/src/templates/init/src/_q-press/css/fonts.scss +100 -0
  52. package/src/templates/init/src/_q-press/css/prism-theme.scss +298 -0
  53. package/src/templates/init/src/_q-press/css/themes/default.scss +68 -0
  54. package/src/templates/init/src/_q-press/css/themes/mystic.scss +73 -0
  55. package/src/templates/init/src/_q-press/css/themes/newspaper.scss +69 -0
  56. package/src/templates/init/src/_q-press/css/themes/sunrise.scss +69 -0
  57. package/src/templates/init/src/_q-press/css/themes/tawny.scss +69 -0
  58. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  59. package/src/templates/init/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  60. package/src/templates/init/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  61. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +36 -0
  62. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderMenu.ts +109 -0
  63. package/src/templates/init/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +46 -0
  64. package/src/templates/init/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  65. package/src/templates/init/src/_q-press/layouts/MarkdownPage.vue +330 -0
  66. package/src/templates/init/src/_q-press/layouts/MarkdownPageFooter.vue +199 -0
  67. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  68. package/src/templates/init/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  69. package/src/templates/init/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  70. package/src/templates/init/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  71. package/src/templates/init/src/_q-press/stores/markdown.ts +101 -0
  72. package/src/templates/init/src/components/LandingPage/LandingPage.vue +360 -0
  73. package/src/templates/init/src/examples/QAvatar/BasicExample.vue +11 -0
  74. package/src/templates/init/src/markdown/__elements.md +542 -0
  75. package/src/templates/init/src/markdown/__elements2.md +355 -0
  76. package/src/templates/init/src/markdown/faq/best-practices.md +0 -0
  77. package/src/templates/init/src/markdown/faq/general.md +0 -0
  78. package/src/templates/init/src/markdown/faq/troubleshooting.md +0 -0
  79. package/src/templates/init/src/markdown/getting-started/introduction.md +67 -0
  80. package/src/templates/init/src/markdown/guides/contributing.md +101 -0
  81. package/src/templates/init/src/markdown/guides/faq.md +115 -0
  82. package/src/templates/init/src/markdown/guides/release-notes.md +0 -0
  83. package/src/templates/init/src/markdown/guides/style-guide.md +0 -0
  84. package/src/templates/init/src/markdown/guides/upgrade-guide.md +90 -0
  85. package/src/templates/init/src/markdown/landing-page.md +11 -0
  86. package/src/templates/init/src/markdown/listing.ts +3 -0
  87. package/src/templates/init/src/markdown/md-plugins/blockquote/advanced.md +83 -0
  88. package/src/templates/init/src/markdown/md-plugins/blockquote/overview.md +183 -0
  89. package/src/templates/init/src/markdown/md-plugins/codeblocks/advanced.md +210 -0
  90. package/src/templates/init/src/markdown/md-plugins/codeblocks/overview.md +707 -0
  91. package/src/templates/init/src/markdown/md-plugins/containers/advanced.md +329 -0
  92. package/src/templates/init/src/markdown/md-plugins/containers/overview.md +236 -0
  93. package/src/templates/init/src/markdown/md-plugins/frontmatter/advanced.md +164 -0
  94. package/src/templates/init/src/markdown/md-plugins/frontmatter/overview.md +131 -0
  95. package/src/templates/init/src/markdown/md-plugins/headers/advanced.md +90 -0
  96. package/src/templates/init/src/markdown/md-plugins/headers/overview.md +140 -0
  97. package/src/templates/init/src/markdown/md-plugins/image/advanced.md +114 -0
  98. package/src/templates/init/src/markdown/md-plugins/image/overview.md +124 -0
  99. package/src/templates/init/src/markdown/md-plugins/imports/advanced.md +105 -0
  100. package/src/templates/init/src/markdown/md-plugins/imports/overview.md +76 -0
  101. package/src/templates/init/src/markdown/md-plugins/inline-code/advanced.md +133 -0
  102. package/src/templates/init/src/markdown/md-plugins/inline-code/overview.md +101 -0
  103. package/src/templates/init/src/markdown/md-plugins/link/advanced.md +157 -0
  104. package/src/templates/init/src/markdown/md-plugins/link/overview.md +126 -0
  105. package/src/templates/init/src/markdown/md-plugins/shared/overview.md +195 -0
  106. package/src/templates/init/src/markdown/md-plugins/table/advanced.md +190 -0
  107. package/src/templates/init/src/markdown/md-plugins/table/overview.md +186 -0
  108. package/src/templates/init/src/markdown/md-plugins/title/advanced.md +88 -0
  109. package/src/templates/init/src/markdown/md-plugins/title/overview.md +99 -0
  110. package/src/templates/init/src/markdown/other/release-notes.md +8 -0
  111. package/src/templates/init/src/markdown/privacy-policy.md +10 -0
  112. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/advanced.md +101 -0
  113. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/components.md +67 -0
  114. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/overview.md +305 -0
  115. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/site-config.md +114 -0
  116. package/src/templates/init/src/markdown/quasar-app-extensions/qpress/themes.md +130 -0
  117. package/src/templates/init/src/markdown/quasar-app-extensions/vite-md-plugin-app-ext/advanced.md +4 -0
  118. package/src/templates/init/src/markdown/quasar-app-extensions/vite-md-plugin-app-ext/overview.md +110 -0
  119. package/src/templates/init/src/markdown/vite-plugins/index.md +6 -0
  120. package/src/templates/init/src/markdown/vite-plugins/vite-examples-plugin/advanced.md +138 -0
  121. package/src/templates/init/src/markdown/vite-plugins/vite-examples-plugin/overview.md +88 -0
  122. package/src/templates/init/src/markdown/vite-plugins/vite-md-plugin/advanced.md +289 -0
  123. package/src/templates/init/src/markdown/vite-plugins/vite-md-plugin/index.md +6 -0
  124. package/src/templates/init/src/markdown/vite-plugins/vite-md-plugin/overview.md +164 -0
  125. package/src/templates/init/src/q-press.globals.d.ts +36 -0
  126. package/src/templates/init/src/siteConfig/index.ts +438 -0
  127. package/src/templates/update/src/_q-press/.gitkeep +0 -0
  128. package/src/templates/update/src/_q-press/api/components/DarkModeToggle.json +37 -0
  129. package/src/templates/update/src/_q-press/api/components/MarkdownApi.json +67 -0
  130. package/src/templates/update/src/_q-press/api/components/MarkdownApiEntry.json +76 -0
  131. package/src/templates/update/src/_q-press/api/components/MarkdownCardLink.json +28 -0
  132. package/src/templates/update/src/_q-press/api/components/MarkdownCardTitle.json +48 -0
  133. package/src/templates/update/src/_q-press/api/components/MarkdownCode.json +37 -0
  134. package/src/templates/update/src/_q-press/api/components/MarkdownCodePrism.json +29 -0
  135. package/src/templates/update/src/_q-press/api/components/MarkdownCodepen.json +21 -0
  136. package/src/templates/update/src/_q-press/api/components/MarkdownCopyButton.json +36 -0
  137. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerSidebar.json +17 -0
  138. package/src/templates/update/src/_q-press/api/components/MarkdownDrawerToc.json +17 -0
  139. package/src/templates/update/src/_q-press/api/components/MarkdownExample.json +22 -0
  140. package/src/templates/update/src/_q-press/api/components/MarkdownHeader.json +28 -0
  141. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderIconLinks.json +16 -0
  142. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderMenu.json +77 -0
  143. package/src/templates/update/src/_q-press/api/components/MarkdownHeaderTextLinks.json +33 -0
  144. package/src/templates/update/src/_q-press/api/components/MarkdownInstallation.json +33 -0
  145. package/src/templates/update/src/_q-press/api/components/MarkdownLayout.json +52 -0
  146. package/src/templates/update/src/_q-press/api/components/MarkdownLink.json +23 -0
  147. package/src/templates/update/src/_q-press/api/components/MarkdownPage.json +71 -0
  148. package/src/templates/update/src/_q-press/api/components/MarkdownPageFooter.json +21 -0
  149. package/src/templates/update/src/_q-press/api/components/MarkdownPageSidebar.json +56 -0
  150. package/src/templates/update/src/_q-press/api/components/MarkdownPageToc.json +17 -0
  151. package/src/templates/update/src/_q-press/api/components/MarkdownPrerender.json +25 -0
  152. package/src/templates/update/src/_q-press/api/components/MarkdownTree.json +27 -0
  153. package/src/templates/update/src/_q-press/api/composables/dark.json +29 -0
  154. package/src/templates/update/src/_q-press/api/composables/scroll.json +34 -0
  155. package/src/templates/update/src/_q-press/assets/get-meta.ts +29 -0
  156. package/src/templates/update/src/_q-press/components/DarkModeToggle.vue +105 -0
  157. package/src/templates/update/src/_q-press/components/MarkdownApi.vue +663 -0
  158. package/src/templates/update/src/_q-press/components/MarkdownApiEntry.ts +836 -0
  159. package/src/templates/update/src/_q-press/components/MarkdownCardLink.vue +25 -0
  160. package/src/templates/update/src/_q-press/components/MarkdownCardTitle.vue +27 -0
  161. package/src/templates/update/src/_q-press/components/MarkdownCode.vue +31 -0
  162. package/src/templates/update/src/_q-press/components/MarkdownCodePrism.ts +36 -0
  163. package/src/templates/update/src/_q-press/components/MarkdownCodepen.vue +194 -0
  164. package/src/templates/update/src/_q-press/components/MarkdownCopyButton.vue +107 -0
  165. package/src/templates/update/src/_q-press/components/MarkdownExample.vue +239 -0
  166. package/src/templates/update/src/_q-press/components/MarkdownLink.vue +38 -0
  167. package/src/templates/update/src/_q-press/components/MarkdownPrerender.ts +93 -0
  168. package/src/templates/update/src/_q-press/components/MarkdownTree.vue +108 -0
  169. package/src/templates/update/src/_q-press/components/markdown-utils.ts +105 -0
  170. package/src/templates/update/src/_q-press/composables/dark.ts +39 -0
  171. package/src/templates/update/src/_q-press/composables/scroll.ts +142 -0
  172. package/src/templates/update/src/_q-press/css/app.scss +680 -0
  173. package/src/templates/update/src/_q-press/css/fonts.scss +100 -0
  174. package/src/templates/update/src/_q-press/css/prism-theme.scss +298 -0
  175. package/src/templates/update/src/_q-press/css/themes/default.scss +68 -0
  176. package/src/templates/update/src/_q-press/css/themes/mystic.scss +73 -0
  177. package/src/templates/update/src/_q-press/css/themes/newspaper.scss +69 -0
  178. package/src/templates/update/src/_q-press/css/themes/sunrise.scss +69 -0
  179. package/src/templates/update/src/_q-press/css/themes/tawny.scss +69 -0
  180. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerSidebar.vue +32 -0
  181. package/src/templates/update/src/_q-press/layouts/MarkdownDrawerToc.vue +37 -0
  182. package/src/templates/update/src/_q-press/layouts/MarkdownHeader.vue +412 -0
  183. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderIconLinks.vue +36 -0
  184. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderMenu.ts +109 -0
  185. package/src/templates/update/src/_q-press/layouts/MarkdownHeaderTextLinks.vue +46 -0
  186. package/src/templates/update/src/_q-press/layouts/MarkdownLayout.vue +239 -0
  187. package/src/templates/update/src/_q-press/layouts/MarkdownPage.vue +330 -0
  188. package/src/templates/update/src/_q-press/layouts/MarkdownPageFooter.vue +199 -0
  189. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.scss +54 -0
  190. package/src/templates/update/src/_q-press/layouts/MarkdownPageSidebar.ts +218 -0
  191. package/src/templates/update/src/_q-press/layouts/MarkdownPageToc.vue +23 -0
  192. package/src/templates/update/src/_q-press/layouts/MarkdownSearch.vue +449 -0
  193. package/src/templates/update/src/_q-press/stores/markdown.ts +101 -0
  194. package/src/templates/update/src/q-press.globals.d.ts +36 -0
  195. package/src/old/install.js +0 -9
  196. package/src/old/prompts.js +0 -44
  197. package/src/old/uninstall.js +0 -9
package/README.md CHANGED
@@ -1,6 +1,236 @@
1
1
  # Q-Press
2
2
 
3
- The Ultimate Markdown Solution for Quasar Framework
3
+ The Ultimate Markdown Solution for the Quasar Framework.
4
+
5
+ See the [documentation](https://md-plugins.netlify.app/quasar-app-extensions/qpress/overview) for more information.
6
+
7
+ > Q-Press currently targets Quasar Vite projects using `@quasar/app-vite` `^3.0.0-beta.12`. TypeScript processing is required.
8
+
9
+ ## Features
10
+
11
+ - **Markdown**
12
+ - **Dark Mode**
13
+ - **Landing Page**
14
+ - **Markdown Layouts**
15
+ - **Markdown Components**
16
+ - **siteConfig**
17
+ - **CSS Themes**
18
+ - **Automatic Routing**
19
+
20
+ ## Installation
21
+
22
+ 1. Install the **Q-Press** App-Ext
23
+
24
+ - `quasar ext add @md-plugins/q-press`
25
+ - Here is what gets installed on a **new** install:
26
+ - `src/.q-press`
27
+ - `src/q-press.globals.d.ts`
28
+ - `src/components`
29
+ - `src/markdown`
30
+ - `src/examples`
31
+ - `src/siteConfig`
32
+ - Here is what gets installed on an **update** install:
33
+ - `src/.q-press`
34
+ - `src/q-press.globals.d.ts`
35
+
36
+ 2. Install `markdown-it` and `@types/markdown-it` in your project devDependencies
37
+
38
+ - `npm i -D markdown-it @types/markdown-it`
39
+ - `yarn add -D markdown-it @types/markdown-it`
40
+ - `pnpm i -D markdown-it @types/markdown-it`
41
+
42
+ 3. Add `prismjs` to your project dependencies
43
+
44
+ - `npm i prismjs`
45
+ - `yarn add prismjs`
46
+ - `pnpm add prismjs`
47
+
48
+ ## Modifications
49
+
50
+ 1. Modify your `src/css/quasar.variables.scss`
51
+
52
+ - import a Q-Press theme (`default`, `sunrise`, `newspaper`, `tawny`, `mystic`, your own or a 3rd-party theme)
53
+ - ```ts
54
+ @import '../.q-press/css/themes/sunrise.scss';
55
+ ```
56
+
57
+ 2. Modify your `src/css/app.scss`
58
+
59
+ - import Q-Press styles
60
+
61
+ - ```scss
62
+ @import '../.q-press/css/app.scss';
63
+ @import '../.q-press/css/fonts.scss';
64
+ @import '../.q-press/css/prism-theme.scss';
65
+ ```
66
+
67
+ 3. Modify your `quasar.config.ts`
68
+
69
+ - ```ts
70
+ import { viteMdPlugin, type MenuItem, type MarkdownOptions } from '@md-plugins/vite-md-plugin'
71
+
72
+ export default defineConfig(async (ctx) => {
73
+ // Dynamically import siteConfig
74
+ const siteConfig = await import('./src/siteConfig')
75
+ const { sidebar } = siteConfig.default
76
+ return {
77
+ build: {
78
+ vitePlugins: [
79
+ // add this plugin
80
+ [
81
+ viteMdPlugin,
82
+ {
83
+ path: ctx.appPaths.srcDir + '/markdown',
84
+ menu: sidebar as MenuItem[],
85
+ // options: myOptions as MarkdownOptions
86
+ },
87
+ ],
88
+ // ...
89
+ ```
90
+
91
+ 4. Modify your `src/routes/routes.ts`
92
+
93
+ - ```ts
94
+ import type { RouteRecordRaw } from 'vue-router'
95
+ import mdPageList from 'src/markdown/listing'
96
+ const routes = [
97
+ {
98
+ path: '/',
99
+ component: () => import('src/.q-press/layouts/MarkdownLayout.vue'),
100
+ children: [
101
+ // Include the Landing Page route first
102
+ ...Object.entries(mdPageList)
103
+ .filter(([key]) => key.includes('landing-page.md'))
104
+ .map(([_key, component]) => ({
105
+ path: '',
106
+ name: 'Landing Page',
107
+ component,
108
+ meta: { fullscreen: true, dark: true },
109
+ })),
110
+
111
+ // Now include all other routes, excluding the landing-page
112
+ ...Object.keys(mdPageList)
113
+ .filter((key) => !key.includes('landing-page.md')) // Exclude duplicates
114
+ .map((key) => {
115
+ const acc = {
116
+ path: '',
117
+ component: mdPageList[key],
118
+ }
119
+
120
+ if (acc.path === '') {
121
+ // Remove '.md' from the end of the filename
122
+ const parts = key.substring(1, key.length - 3).split('/')
123
+ const len = parts.length
124
+ const path = parts[len - 2] === parts[len - 1] ? parts.slice(0, len - 1) : parts
125
+
126
+ acc.path = path.join('/')
127
+ }
128
+
129
+ return acc
130
+ }),
131
+ ],
132
+ },
133
+ // Always leave this as last one,
134
+ // but you can also remove it
135
+ {
136
+ path: '/:catchAll(.*)*',
137
+ component: () => import('pages/ErrorNotFound.vue'),
138
+ },
139
+ ] as RouteRecordRaw[]
140
+
141
+ export default routes
142
+ ```
143
+
144
+ 5. Set up for Dark mode support, update your App.vue
145
+
146
+ - ```ts
147
+ <template>
148
+ <router-view />
149
+ </template>
150
+
151
+ <script setup lang="ts">
152
+ import { useDark } from 'src/.q-press/composables/dark'
153
+ const { initDark } = useDark()
154
+ initDark()
155
+ </script>
156
+ ```
157
+
158
+ ## Running the App
159
+
160
+ This is a Quasar app, so all you have to do is run `quasar dev`. You can test it out now and you will have the `MD-Plugins` web site running.
161
+
162
+ All you need to do now is change the configuration and landing page to make it your own.
163
+
164
+ ## Configuration
165
+
166
+ ### Modify `src/siteConfig/index.ts`
167
+
168
+ 1. Make any appropriate changes to the `siteConfig.ts` file
169
+
170
+ ### Modify `src/components/LandingPage/LandingPage.vue`
171
+
172
+ 1. Update the `LandingPage.vue` file to include your own content
173
+
174
+ ---
175
+
176
+ ## FAQ
177
+
178
+ Q. I have errors in my `routes.ts` file, what should I do?
179
+ A. You can remove the following line: `import type { RouteRecordRaw } from 'vue-router'` and also remove the `type` keyword from the `routes` variable (`: RouteRecordRaw[]`).
180
+
181
+ Q. I still see an error in my `routes.ts` file, for `_key`, what should I do?
182
+ A. In your `eslint.config.js` file, add/replace the following in your rules:
183
+
184
+ ```js
185
+ '@typescript-eslint/no-unused-vars': [
186
+ 'error',
187
+ {
188
+ argsIgnorePattern: '^_',
189
+ ignoreRestSiblings: true,
190
+ varsIgnorePattern: '^_',
191
+ },
192
+ ],
193
+ ```
194
+
195
+ Q. Every time I save a markdown file, `prettier` changes it so that it breaks. How can I prevent this?
196
+ A. This is both a `prettier` and `eslint` issue. In `eslint.config.js`, add the following to the top of the file, right after `export default [`:
197
+
198
+ ```js
199
+ {
200
+ /**
201
+ * Ignore the following files.
202
+ * Please note that pluginQuasar.configs.recommended() already ignores
203
+ * the "node_modules" folder for you (and all other Quasar project
204
+ * relevant folders and files).
205
+ *
206
+ * ESLint requires "ignores" key to be the only one in this object
207
+ */
208
+ ignores: ['eslint.config.js', '**/*.md', 'dist/**/*', 'node_modules'],
209
+ },
210
+ ```
211
+
212
+ If you don't have a `.prettierignore` file, create one and add the following:
213
+
214
+ ```
215
+ # Ignore all Markdown files:
216
+ **/*.md
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Updating
222
+
223
+ When you update, only the `src/.q-press` folder will be updated as well as the file `src/q-press.globals.d.ts`. If you want to re-install everything, just remove the `src/siteConfig` folder.
224
+
225
+ To make it easier to update, you can use the following command:
226
+
227
+ ```bash
228
+ quasar ext invoke @md-plugins/q-press
229
+ ```
230
+
231
+ ## Documentation
232
+
233
+ In case this README falls out of date, please refer to the [documentation](https://md-plugins.netlify.app/quasar-app-extensions/qpress/overview) for the latest information.
4
234
 
5
235
  ## License
6
236
 
package/package.json CHANGED
@@ -1,57 +1,59 @@
1
1
  {
2
2
  "name": "@md-plugins/quasar-app-extension-q-press",
3
- "version": "0.1.0-alpha.7",
3
+ "version": "0.1.0-beta.0",
4
4
  "description": "QPress - The Ultimate Markdown Solution for Quasar Framework",
5
- "author": "hawkeye64 <galbraith64@gmail.com>",
6
5
  "keywords": [
7
- "markdown-it",
8
- "quasarframework",
9
- "quasar",
10
6
  "markdown",
7
+ "markdown-it",
11
8
  "q-press",
9
+ "quasar",
10
+ "quasarframework",
12
11
  "vite"
13
12
  ],
14
13
  "homepage": "https://github.com/md-plugins",
15
14
  "bugs": {
16
15
  "url": "https://github.com/md-plugins/md-plugins/issues"
17
16
  },
17
+ "license": "MIT",
18
+ "author": "hawkeye64 <galbraith64@gmail.com>",
18
19
  "repository": {
19
20
  "type": "git",
20
21
  "url": "git+https://github.com/md-plugins/md-plugins.git"
21
22
  },
22
- "license": "MIT",
23
23
  "type": "module",
24
- "engines": {
25
- "node": ">= 12.2.0",
26
- "npm": ">= 5.6.0",
27
- "yarn": ">= 1.6.0"
24
+ "publishConfig": {
25
+ "access": "public"
28
26
  },
29
27
  "dependencies": {
30
- "@md-plugins/md-plugin-blockquote": "0.1.0-alpha.7",
31
- "@md-plugins/md-plugin-frontmatter": "0.1.0-alpha.7",
32
- "@md-plugins/md-plugin-codeblocks": "0.1.0-alpha.7",
33
- "@md-plugins/md-plugin-headers": "0.1.0-alpha.7",
34
- "@md-plugins/md-plugin-image": "0.1.0-alpha.7",
35
- "@md-plugins/md-plugin-imports": "0.1.0-alpha.7",
36
- "@md-plugins/md-plugin-containers": "0.1.0-alpha.7",
37
- "@md-plugins/md-plugin-inlinecode": "0.1.0-alpha.7",
38
- "@md-plugins/md-plugin-table": "0.1.0-alpha.7",
39
- "@md-plugins/md-plugin-link": "0.1.0-alpha.7",
40
- "@md-plugins/shared": "0.1.0-alpha.7",
41
- "@md-plugins/md-plugin-title": "0.1.0-alpha.7"
28
+ "@types/markdown-it": "^14.1.2",
29
+ "fs-extra": "^11.3.4",
30
+ "markdown-it": "^14.1.1",
31
+ "@md-plugins/md-plugin-blockquote": "0.1.0-beta.0",
32
+ "@md-plugins/md-plugin-containers": "0.1.0-beta.0",
33
+ "@md-plugins/md-plugin-codeblocks": "0.1.0-beta.0",
34
+ "@md-plugins/md-plugin-frontmatter": "0.1.0-beta.0",
35
+ "@md-plugins/md-plugin-image": "0.1.0-beta.0",
36
+ "@md-plugins/md-plugin-headers": "0.1.0-beta.0",
37
+ "@md-plugins/md-plugin-imports": "0.1.0-beta.0",
38
+ "@md-plugins/md-plugin-link": "0.1.0-beta.0",
39
+ "@md-plugins/md-plugin-inlinecode": "0.1.0-beta.0",
40
+ "@md-plugins/md-plugin-table": "0.1.0-beta.0",
41
+ "@md-plugins/md-plugin-title": "0.1.0-beta.0",
42
+ "@md-plugins/shared": "0.1.0-beta.0",
43
+ "@md-plugins/vite-md-plugin": "0.1.0-beta.0"
42
44
  },
43
45
  "devDependencies": {
44
46
  "@types/markdown-it": "^14.1.2",
45
- "markdown-it": "^14.1.0",
46
- "vite": "^6.0.7"
47
+ "vite": "^8.0.3"
47
48
  },
48
49
  "peerDependencies": {
49
50
  "markdown-it": "^14.1.0"
50
51
  },
51
- "publishConfig": {
52
- "access": "public"
52
+ "engines": {
53
+ "node": ">=20"
53
54
  },
54
55
  "scripts": {
56
+ "build": "node ./scripts/build.js",
55
57
  "test": "echo \"No test specified\" && exit 0"
56
58
  }
57
59
  }
package/src/index.js CHANGED
@@ -1,4 +1,3 @@
1
- /*global console*/
2
1
  /**
3
2
  * Quasar App Extension index/runner script
4
3
  * (runs on each dev/build)
@@ -6,12 +5,16 @@
6
5
  * Docs: https://quasar.dev/app-extensions/development-guide/index-api
7
6
  */
8
7
 
9
- function extendConfig(config, api) {
10
- console.log('config', config)
11
- console.log('api', api)
8
+ // import fse from 'fs-extra'
9
+ // import { viteMdPlugin } from '@md-plugins/vite-md-plugin'
10
+
11
+ async function extendConfig(config /*, api*/) {
12
+ // console.log('config', config)
13
+ // console.log('api', api)
14
+
12
15
  // make sure 'vueRouterMode' has 'history' mode
13
16
  if (config.build.vueRouterMode !== 'history') {
14
- console.log('Changing vueRouterMode to "history" - required for hash links to work correctly')
17
+ console.warn('Changing vueRouterMode to "history" - required for hash links to work correctly')
15
18
  config.build.vueRouterMode = 'history'
16
19
  }
17
20
 
@@ -24,6 +27,24 @@ function extendConfig(config, api) {
24
27
  extensions.add('md')
25
28
  extensions.add('vue')
26
29
  config.framework.autoImportVueExtensions = Array.from(extensions)
30
+
31
+ // add the appropriate plugins
32
+ const plugins = new Set(config.framework.plugins || [])
33
+ plugins.add('Cookies')
34
+ plugins.add('Dark')
35
+ plugins.add('Meta')
36
+ plugins.add('Notify')
37
+ config.framework.plugins = Array.from(plugins)
38
+
39
+ // const markdownPath = api.resolve.src('markdown')
40
+ // const path = api.resolve.src('siteConfig')
41
+ // if (fse.pathExistsSync(path) && fse.pathExistsSync(markdownPath)) {
42
+ // const siteConfig = await import(path)
43
+ // const { sidebar } = siteConfig.default || siteConfig
44
+
45
+ // // add vite-md-plugin to quasar.config.js
46
+ // config.vite.plugins.push(viteMdPlugin({ path: markdownPath, menu: sidebar }))
47
+ // }
27
48
  }
28
49
 
29
50
  export default function (api) {
@@ -33,7 +54,7 @@ export default function (api) {
33
54
  }
34
55
 
35
56
  api.compatibleWith('quasar', '^2.0.0')
36
- api.compatibleWith('@quasar/app-vite', '^2.0.0')
57
+ api.compatibleWith('@quasar/app-vite', '^3.0.0-beta.12')
37
58
 
38
59
  // here we extend /quasar.config, so we can add some Vite/Vue stuff
39
60
  api.extendQuasarConf(extendConfig)
package/src/install.js ADDED
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Quasar App Extension install script
3
+ *
4
+ * Docs: https://quasar.dev/app-extensions/development-guide/install-api
5
+ */
6
+
7
+ import fse from 'fs-extra'
8
+
9
+ export default async function (api) {
10
+ // verify this is a Vite project
11
+ if (!api.hasVite) {
12
+ throw new Error('This extension requires Vite')
13
+ }
14
+
15
+ api.compatibleWith('quasar', '^2.0.0')
16
+ api.compatibleWith('@quasar/app-vite', '^3.0.0-beta.12')
17
+
18
+ // project must have pinia installed
19
+ if ((await api.getStorePackageName()) !== 'pinia') {
20
+ console.error('-----------------------------')
21
+ console.error('This extension requires pinia')
22
+ console.error('-----------------------------')
23
+ throw new Error('This extension requires pinia')
24
+ }
25
+
26
+ // project must be typescript
27
+ if ((await api.hasTypescript()) !== true) {
28
+ console.error('----------------------------------')
29
+ console.error('This extension requires TypeScript')
30
+ console.error('----------------------------------')
31
+ throw new Error('This extension requires TypeScript')
32
+ }
33
+
34
+ const path = api.resolve.src('siteConfig')
35
+ if (fse.pathExistsSync(path)) {
36
+ // this is an update scenario
37
+ console.warn('-------------------------------------')
38
+ console.warn("Update only for 'src/.q-press' folder")
39
+ console.warn('-------------------------------------')
40
+ api.render('./templates/update')
41
+ } else {
42
+ // this is a project initial setup
43
+ console.warn('--------------------------------------------')
44
+ console.warn('Initial setup. Be sure to read the\ndocumentation on the manual set up required.')
45
+ console.warn('--------------------------------------------')
46
+ api.render('./templates/init')
47
+ }
48
+ }
File without changes
@@ -0,0 +1,37 @@
1
+ {
2
+ "type": "component",
3
+ "meta": {
4
+ "docsUrl": "https://path-to-your-docs/dark-mode-toggle"
5
+ },
6
+ "props": {
7
+ "darkIcon": {
8
+ "type": "String",
9
+ "desc": "Icon name for dark mode",
10
+ "examples": [
11
+ "mdiMoonWaningCrescent"
12
+ ],
13
+ "default": "mdiMoonWaningCrescent",
14
+ "category": "content"
15
+ },
16
+ "lightIcon": {
17
+ "type": "String",
18
+ "desc": "Icon name for light mode",
19
+ "examples": [
20
+ "mdiWhiteBalanceSunny"
21
+ ],
22
+ "default": "mdiWhiteBalanceSunny",
23
+ "category": "content"
24
+ }
25
+ },
26
+ "events": {
27
+ "update:mode": {
28
+ "desc": "Emitted when the mode is toggled",
29
+ "params": {
30
+ "mode": {
31
+ "type": "String",
32
+ "desc": "The current mode ('dark' or 'light')"
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "type": "component",
3
+ "meta": {
4
+ "docsUrl": "https://path-to-your-docs/markdown-api"
5
+ },
6
+ "props": {
7
+ "nameBanner": {
8
+ "type": "String",
9
+ "desc": "Title to display in the banner",
10
+ "examples": [
11
+ "'API Documentation'",
12
+ "'Component API'"
13
+ ],
14
+ "category": "content"
15
+ },
16
+ "pageLink": {
17
+ "type": "String",
18
+ "desc": "URL for the page link",
19
+ "examples": [
20
+ "'https://github.com/user/repo/edit/main/docs/page.md'"
21
+ ],
22
+ "category": "navigation"
23
+ }
24
+ },
25
+ "events": {
26
+ "searchFieldClick": {
27
+ "desc": "Emitted when the search field is clicked",
28
+ "params": {
29
+ "evt": {
30
+ "type": "Event",
31
+ "desc": "JS event object"
32
+ }
33
+ }
34
+ },
35
+ "filterClick": {
36
+ "desc": "Emitted when the filter button is clicked",
37
+ "params": {
38
+ "evt": {
39
+ "type": "Event",
40
+ "desc": "JS event object"
41
+ }
42
+ }
43
+ }
44
+ },
45
+ "methods": {
46
+ "onSearchFieldClick": {
47
+ "desc": "Handler for the search field click event",
48
+ "params": {
49
+ "evt": {
50
+ "type": "Event",
51
+ "desc": "JS event object"
52
+ }
53
+ },
54
+ "returns": null
55
+ },
56
+ "onFilterClick": {
57
+ "desc": "Handler for the filter button click event",
58
+ "params": {
59
+ "evt": {
60
+ "type": "Event",
61
+ "desc": "JS event object"
62
+ }
63
+ },
64
+ "returns": null
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "type": "component",
3
+ "meta": {
4
+ "docsUrl": "https://path-to-your-docs/markdown-api-entry"
5
+ },
6
+ "functions": {
7
+ "getProp": {
8
+ "desc": "Function to get a property node for the API entry.",
9
+ "params": {
10
+ "openState": {
11
+ "type": "Object",
12
+ "desc": "The state object to manage open/close state of nodes."
13
+ },
14
+ "masterKey": {
15
+ "type": "String",
16
+ "desc": "The master key for the API entry."
17
+ },
18
+ "prop": {
19
+ "type": "Object",
20
+ "desc": "The property object to generate the node for."
21
+ },
22
+ "paramName": {
23
+ "type": "String",
24
+ "desc": "The name of the parameter."
25
+ },
26
+ "level": {
27
+ "type": "Number",
28
+ "desc": "The level of the property in the hierarchy."
29
+ }
30
+ },
31
+ "returns": {
32
+ "type": "Array<VNode>",
33
+ "desc": "An array of VNode elements representing the property."
34
+ }
35
+ },
36
+ "getDiv": {
37
+ "desc": "Function to create a div element for the API entry.",
38
+ "params": {
39
+ "cols": {
40
+ "type": "Number",
41
+ "desc": "The number of columns the div should span."
42
+ },
43
+ "label": {
44
+ "type": "String",
45
+ "desc": "The label for the div."
46
+ },
47
+ "key": {
48
+ "type": "String",
49
+ "desc": "The key for the div."
50
+ },
51
+ "children": {
52
+ "type": "Array<VNode>",
53
+ "desc": "The child nodes for the div."
54
+ }
55
+ },
56
+ "returns": {
57
+ "type": "VNode",
58
+ "desc": "A VNode element representing the div."
59
+ }
60
+ },
61
+ "getStringType": {
62
+ "desc": "Function to get the string representation of a type.",
63
+ "params": {
64
+ "type": {
65
+ "type": "Object",
66
+ "desc": "The type object to get the string representation for."
67
+ }
68
+ },
69
+ "returns": {
70
+ "type": "String",
71
+ "desc": "The string representation of the type."
72
+ }
73
+ }
74
+ },
75
+ "types": {}
76
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "type": "component",
3
+ "meta": {
4
+ "docsUrl": "https://path-to-your-docs/markdown-card-link"
5
+ },
6
+ "props": {
7
+ "to": {
8
+ "type": "String",
9
+ "desc": "The target URL or path for the link",
10
+ "examples": [
11
+ "/home",
12
+ "https://example.com"
13
+ ],
14
+ "required": true,
15
+ "category": "navigation"
16
+ },
17
+ "external": {
18
+ "type": "Boolean",
19
+ "desc": "Flag to indicate if the link is external",
20
+ "category": "navigation"
21
+ }
22
+ },
23
+ "slots": {
24
+ "default": {
25
+ "desc": "Slot for custom content inside the link"
26
+ }
27
+ }
28
+ }