@mframework/ui 0.0.1 → 0.0.4

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 (291) hide show
  1. package/dist/runtime/design/tokens.d.ts +22 -0
  2. package/dist/runtime/design/tokens.js +22 -0
  3. package/dist/runtime/plugins/icon-switcher.d.ts +2 -0
  4. package/dist/runtime/plugins/icon-switcher.js +18 -0
  5. package/dist/runtime/plugins/icons.d.ts +4 -0
  6. package/dist/runtime/plugins/icons.js +13 -0
  7. package/dist/runtime/plugins/theme.d.ts +2 -0
  8. package/dist/runtime/plugins/theme.js +28 -0
  9. package/dist/runtime/plugins/vuetify.d.ts +88 -0
  10. package/dist/runtime/plugins/vuetify.js +60 -0
  11. package/dist/runtime/search/client.d.ts +2 -0
  12. package/dist/runtime/search/client.js +21 -0
  13. package/dist/runtime/search/plugin.d.ts +2 -0
  14. package/dist/runtime/search/plugin.js +8 -0
  15. package/dist/types/ui/api/global-search.d.ts +8 -0
  16. package/dist/types/ui/blocks/block-button-group.d.ts +6 -0
  17. package/dist/types/ui/blocks/block-button.d.ts +13 -0
  18. package/dist/types/ui/blocks/block-column.d.ts +18 -0
  19. package/dist/types/ui/blocks/block-cta.d.ts +11 -0
  20. package/dist/types/ui/blocks/block-divider.d.ts +4 -0
  21. package/dist/types/ui/blocks/block-faq.d.ts +11 -0
  22. package/dist/types/ui/blocks/block-form.d.ts +7 -0
  23. package/dist/types/ui/blocks/block-gallery.d.ts +13 -0
  24. package/dist/types/ui/blocks/block-hero.d.ts +11 -0
  25. package/dist/types/ui/blocks/block-html.d.ts +4 -0
  26. package/dist/types/ui/blocks/block-logocloud.d.ts +13 -0
  27. package/dist/types/ui/blocks/block-quote.d.ts +10 -0
  28. package/dist/types/ui/blocks/block-richtext.d.ts +7 -0
  29. package/dist/types/ui/blocks/block-steps.d.ts +21 -0
  30. package/dist/types/ui/blocks/block-team.d.ts +6 -0
  31. package/dist/types/ui/blocks/block-testimonial.d.ts +13 -0
  32. package/dist/types/ui/blocks/block-video.d.ts +9 -0
  33. package/dist/types/ui/blocks/block.d.ts +17 -0
  34. package/dist/types/ui/component.d.ts +6 -0
  35. package/dist/types/ui/content/category.d.ts +10 -0
  36. package/dist/types/ui/content/form.d.ts +21 -0
  37. package/dist/types/ui/content/page.d.ts +38 -0
  38. package/dist/types/ui/content/post.d.ts +38 -0
  39. package/dist/types/ui/content/team.d.ts +17 -0
  40. package/dist/types/ui/content/testimonial.d.ts +18 -0
  41. package/dist/types/ui/form.d.ts +12 -0
  42. package/dist/types/ui/help/index.d.ts +51 -0
  43. package/dist/types/ui/meta/analytics.d.ts +21 -0
  44. package/dist/types/ui/meta/config.d.ts +22 -0
  45. package/dist/types/ui/meta/globals.d.ts +33 -0
  46. package/dist/types/ui/meta/navigation.d.ts +31 -0
  47. package/dist/types/ui/meta/redirect.d.ts +12 -0
  48. package/dist/types/ui/meta/seo.d.ts +19 -0
  49. package/dist/types/ui/os/contact.d.ts +22 -0
  50. package/dist/types/ui/os/conversation.d.ts +23 -0
  51. package/dist/types/ui/os/organization.d.ts +51 -0
  52. package/dist/types/ui/os/os-activity.d.ts +26 -0
  53. package/dist/types/ui/os/os-deal.d.ts +42 -0
  54. package/dist/types/ui/os/os-expense.d.ts +21 -0
  55. package/dist/types/ui/os/os-invoice.d.ts +46 -0
  56. package/dist/types/ui/os/os-item.d.ts +17 -0
  57. package/dist/types/ui/os/os-payment.d.ts +27 -0
  58. package/dist/types/ui/os/os-project.d.ts +45 -0
  59. package/dist/types/ui/os/os-proposal.d.ts +61 -0
  60. package/dist/types/ui/os/os-settings.d.ts +17 -0
  61. package/dist/types/ui/os/os-subscription.d.ts +12 -0
  62. package/dist/types/ui/os/os-task.d.ts +32 -0
  63. package/dist/types/ui/os/os-tax-rate.d.ts +12 -0
  64. package/dist/types/ui/pageComponentMap.d.ts +2 -0
  65. package/dist/types/ui/pagination.d.ts +6 -0
  66. package/dist/types/ui/schema.d.ts +78 -0
  67. package/dist/types/ui/state.d.ts +5 -0
  68. package/dist/types/ui/system/file.d.ts +47 -0
  69. package/dist/types/ui/system/folder.d.ts +8 -0
  70. package/dist/types/ui/system/role.d.ts +20 -0
  71. package/dist/types/ui/system/user.d.ts +57 -0
  72. package/dist/types/ui.d.ts +21 -0
  73. package/module.ts +104 -0
  74. package/package.json +10 -11
  75. package/runtime/assets/config/tailwind.conifg.js +11 -0
  76. package/runtime/assets/css/tailwind.css +11 -0
  77. package/runtime/design/tokens.ts +22 -0
  78. package/runtime/plugins/icon-switcher.ts +21 -0
  79. package/runtime/plugins/theme.ts +29 -0
  80. package/runtime/plugins/vuetify.js +12 -0
  81. package/runtime/plugins/vuetify.ts +64 -0
  82. package/runtime/search/client.ts +25 -0
  83. package/runtime/search/components/MSearch.vue +19 -0
  84. package/runtime/search/plugin.ts +10 -0
  85. package/tsconfig.json +11 -8
  86. package/type.d.ts +5 -0
  87. package/types/ui/api/global-search.js +1 -0
  88. package/types/ui/blocks/block-button-group.js +1 -0
  89. package/types/ui/blocks/block-button.js +1 -0
  90. package/types/ui/blocks/block-column.js +1 -0
  91. package/types/ui/blocks/block-cta.js +1 -0
  92. package/types/ui/blocks/block-divider.js +1 -0
  93. package/types/ui/blocks/block-faq.js +1 -0
  94. package/types/ui/blocks/block-form.js +1 -0
  95. package/types/ui/blocks/block-gallery.js +1 -0
  96. package/types/ui/blocks/block-hero.js +1 -0
  97. package/types/ui/blocks/block-html.js +1 -0
  98. package/types/ui/blocks/block-logocloud.js +1 -0
  99. package/types/ui/blocks/block-quote.js +1 -0
  100. package/types/ui/blocks/block-richtext.js +1 -0
  101. package/types/ui/blocks/block-steps.js +1 -0
  102. package/types/ui/blocks/block-team.js +1 -0
  103. package/types/ui/blocks/block-testimonial.js +1 -0
  104. package/types/ui/blocks/block-video.js +1 -0
  105. package/types/ui/blocks/block.js +1 -0
  106. package/types/ui/blocks/index.js +1 -0
  107. package/types/ui/blocks/index.ts +18 -0
  108. package/types/ui/component.js +1 -0
  109. package/types/ui/content/category.js +1 -0
  110. package/types/ui/content/form.js +1 -0
  111. package/types/ui/content/index.js +1 -0
  112. package/types/ui/content/index.ts +6 -0
  113. package/types/ui/content/page.js +1 -0
  114. package/types/ui/content/post.js +1 -0
  115. package/types/ui/content/team.js +1 -0
  116. package/types/ui/content/testimonial.js +1 -0
  117. package/types/ui/form.js +1 -0
  118. package/types/ui/help/index.js +1 -0
  119. package/types/ui/meta/analytics.js +1 -0
  120. package/types/ui/meta/config.js +1 -0
  121. package/types/ui/meta/globals.js +1 -0
  122. package/types/ui/meta/index.js +1 -0
  123. package/types/ui/meta/index.ts +6 -0
  124. package/types/ui/meta/navigation.js +1 -0
  125. package/types/ui/meta/redirect.js +1 -0
  126. package/types/ui/meta/seo.js +1 -0
  127. package/types/ui/os/contact.js +1 -0
  128. package/types/ui/os/conversation.js +1 -0
  129. package/types/ui/os/index.js +1 -0
  130. package/types/ui/os/index.ts +16 -0
  131. package/types/ui/os/organization.js +1 -0
  132. package/types/ui/os/os-activity.js +1 -0
  133. package/types/ui/os/os-deal.js +1 -0
  134. package/types/ui/os/os-expense.js +1 -0
  135. package/types/ui/os/os-invoice.js +1 -0
  136. package/types/ui/os/os-item.js +1 -0
  137. package/types/ui/os/os-payment.js +1 -0
  138. package/types/ui/os/os-project.js +1 -0
  139. package/types/ui/os/os-proposal.js +1 -0
  140. package/types/ui/os/os-settings.js +1 -0
  141. package/types/ui/os/os-subscription.js +1 -0
  142. package/types/ui/os/os-task.js +1 -0
  143. package/types/ui/os/os-tax-rate.js +1 -0
  144. package/types/ui/pageComponentMap.js +7 -0
  145. package/types/ui/pagination.js +1 -0
  146. package/types/ui/schema.js +1 -0
  147. package/types/ui/state.js +1 -0
  148. package/types/ui/system/file.js +1 -0
  149. package/types/ui/system/folder.js +1 -0
  150. package/types/ui/system/index.js +1 -0
  151. package/types/ui/system/index.ts +4 -0
  152. package/types/ui/system/role.js +1 -0
  153. package/types/ui/system/user.js +1 -0
  154. package/types/ui.js +1 -0
  155. package/tailwind.conifg.js +0 -1
  156. /package/{src → dist}/types/ui/api/global-search.js +0 -0
  157. /package/{src → dist}/types/ui/blocks/block-button-group.js +0 -0
  158. /package/{src → dist}/types/ui/blocks/block-button.js +0 -0
  159. /package/{src → dist}/types/ui/blocks/block-column.js +0 -0
  160. /package/{src → dist}/types/ui/blocks/block-cta.js +0 -0
  161. /package/{src → dist}/types/ui/blocks/block-divider.js +0 -0
  162. /package/{src → dist}/types/ui/blocks/block-faq.js +0 -0
  163. /package/{src → dist}/types/ui/blocks/block-form.js +0 -0
  164. /package/{src → dist}/types/ui/blocks/block-gallery.js +0 -0
  165. /package/{src → dist}/types/ui/blocks/block-hero.js +0 -0
  166. /package/{src → dist}/types/ui/blocks/block-html.js +0 -0
  167. /package/{src → dist}/types/ui/blocks/block-logocloud.js +0 -0
  168. /package/{src → dist}/types/ui/blocks/block-quote.js +0 -0
  169. /package/{src → dist}/types/ui/blocks/block-richtext.js +0 -0
  170. /package/{src → dist}/types/ui/blocks/block-steps.js +0 -0
  171. /package/{src → dist}/types/ui/blocks/block-team.js +0 -0
  172. /package/{src → dist}/types/ui/blocks/block-testimonial.js +0 -0
  173. /package/{src → dist}/types/ui/blocks/block-video.js +0 -0
  174. /package/{src → dist}/types/ui/blocks/block.js +0 -0
  175. /package/{src/types/ui/blocks/index.ts → dist/types/ui/blocks/index.d.ts} +0 -0
  176. /package/{src → dist}/types/ui/blocks/index.js +0 -0
  177. /package/{src → dist}/types/ui/component.js +0 -0
  178. /package/{src → dist}/types/ui/content/category.js +0 -0
  179. /package/{src → dist}/types/ui/content/form.js +0 -0
  180. /package/{src/types/ui/content/index.ts → dist/types/ui/content/index.d.ts} +0 -0
  181. /package/{src → dist}/types/ui/content/index.js +0 -0
  182. /package/{src → dist}/types/ui/content/page.js +0 -0
  183. /package/{src → dist}/types/ui/content/post.js +0 -0
  184. /package/{src → dist}/types/ui/content/team.js +0 -0
  185. /package/{src → dist}/types/ui/content/testimonial.js +0 -0
  186. /package/{src → dist}/types/ui/form.js +0 -0
  187. /package/{src → dist}/types/ui/help/index.js +0 -0
  188. /package/{src → dist}/types/ui/meta/analytics.js +0 -0
  189. /package/{src → dist}/types/ui/meta/config.js +0 -0
  190. /package/{src → dist}/types/ui/meta/globals.js +0 -0
  191. /package/{src/types/ui/meta/index.ts → dist/types/ui/meta/index.d.ts} +0 -0
  192. /package/{src → dist}/types/ui/meta/index.js +0 -0
  193. /package/{src → dist}/types/ui/meta/navigation.js +0 -0
  194. /package/{src → dist}/types/ui/meta/redirect.js +0 -0
  195. /package/{src → dist}/types/ui/meta/seo.js +0 -0
  196. /package/{src → dist}/types/ui/os/contact.js +0 -0
  197. /package/{src → dist}/types/ui/os/conversation.js +0 -0
  198. /package/{src/types/ui/os/index.ts → dist/types/ui/os/index.d.ts} +0 -0
  199. /package/{src → dist}/types/ui/os/index.js +0 -0
  200. /package/{src → dist}/types/ui/os/organization.js +0 -0
  201. /package/{src → dist}/types/ui/os/os-activity.js +0 -0
  202. /package/{src → dist}/types/ui/os/os-deal.js +0 -0
  203. /package/{src → dist}/types/ui/os/os-expense.js +0 -0
  204. /package/{src → dist}/types/ui/os/os-invoice.js +0 -0
  205. /package/{src → dist}/types/ui/os/os-item.js +0 -0
  206. /package/{src → dist}/types/ui/os/os-payment.js +0 -0
  207. /package/{src → dist}/types/ui/os/os-project.js +0 -0
  208. /package/{src → dist}/types/ui/os/os-proposal.js +0 -0
  209. /package/{src → dist}/types/ui/os/os-settings.js +0 -0
  210. /package/{src → dist}/types/ui/os/os-subscription.js +0 -0
  211. /package/{src → dist}/types/ui/os/os-task.js +0 -0
  212. /package/{src → dist}/types/ui/os/os-tax-rate.js +0 -0
  213. /package/{src → dist}/types/ui/pageComponentMap.js +0 -0
  214. /package/{src → dist}/types/ui/pagination.js +0 -0
  215. /package/{src → dist}/types/ui/schema.js +0 -0
  216. /package/{src → dist}/types/ui/state.js +0 -0
  217. /package/{src → dist}/types/ui/system/file.js +0 -0
  218. /package/{src → dist}/types/ui/system/folder.js +0 -0
  219. /package/{src/types/ui/system/index.ts → dist/types/ui/system/index.d.ts} +0 -0
  220. /package/{src → dist}/types/ui/system/index.js +0 -0
  221. /package/{src → dist}/types/ui/system/role.js +0 -0
  222. /package/{src → dist}/types/ui/system/user.js +0 -0
  223. /package/{src → dist}/types/ui.js +0 -0
  224. /package/{src/types → types}/ui/api/global-search.ts +0 -0
  225. /package/{src/types → types}/ui/blocks/block-button-group.ts +0 -0
  226. /package/{src/types → types}/ui/blocks/block-button.ts +0 -0
  227. /package/{src/types → types}/ui/blocks/block-column.ts +0 -0
  228. /package/{src/types → types}/ui/blocks/block-cta.ts +0 -0
  229. /package/{src/types → types}/ui/blocks/block-divider.ts +0 -0
  230. /package/{src/types → types}/ui/blocks/block-faq.ts +0 -0
  231. /package/{src/types → types}/ui/blocks/block-form.ts +0 -0
  232. /package/{src/types → types}/ui/blocks/block-gallery.ts +0 -0
  233. /package/{src/types → types}/ui/blocks/block-hero.ts +0 -0
  234. /package/{src/types → types}/ui/blocks/block-html.ts +0 -0
  235. /package/{src/types → types}/ui/blocks/block-logocloud.ts +0 -0
  236. /package/{src/types → types}/ui/blocks/block-quote.ts +0 -0
  237. /package/{src/types → types}/ui/blocks/block-richtext.ts +0 -0
  238. /package/{src/types → types}/ui/blocks/block-steps.ts +0 -0
  239. /package/{src/types → types}/ui/blocks/block-team.ts +0 -0
  240. /package/{src/types → types}/ui/blocks/block-testimonial.ts +0 -0
  241. /package/{src/types → types}/ui/blocks/block-video.ts +0 -0
  242. /package/{src/types → types}/ui/blocks/block.ts +0 -0
  243. /package/{src/types → types}/ui/component.ts +0 -0
  244. /package/{src/types → types}/ui/content/category.ts +0 -0
  245. /package/{src/types → types}/ui/content/form.ts +0 -0
  246. /package/{src/types → types}/ui/content/page.ts +0 -0
  247. /package/{src/types → types}/ui/content/post.ts +0 -0
  248. /package/{src/types → types}/ui/content/team.ts +0 -0
  249. /package/{src/types → types}/ui/content/testimonial.ts +0 -0
  250. /package/{src/types → types}/ui/env.d.ts +0 -0
  251. /package/{src/types → types}/ui/form.ts +0 -0
  252. /package/{src/types → types}/ui/help/index.ts +0 -0
  253. /package/{src/types → types}/ui/meta/analytics.ts +0 -0
  254. /package/{src/types → types}/ui/meta/config.ts +0 -0
  255. /package/{src/types → types}/ui/meta/globals.ts +0 -0
  256. /package/{src/types → types}/ui/meta/navigation.ts +0 -0
  257. /package/{src/types → types}/ui/meta/redirect.ts +0 -0
  258. /package/{src/types → types}/ui/meta/seo.ts +0 -0
  259. /package/{src/types → types}/ui/os/contact.ts +0 -0
  260. /package/{src/types → types}/ui/os/conversation.ts +0 -0
  261. /package/{src/types → types}/ui/os/organization.ts +0 -0
  262. /package/{src/types → types}/ui/os/os-activity.ts +0 -0
  263. /package/{src/types → types}/ui/os/os-deal.ts +0 -0
  264. /package/{src/types → types}/ui/os/os-expense.ts +0 -0
  265. /package/{src/types → types}/ui/os/os-invoice.ts +0 -0
  266. /package/{src/types → types}/ui/os/os-item.ts +0 -0
  267. /package/{src/types → types}/ui/os/os-payment.ts +0 -0
  268. /package/{src/types → types}/ui/os/os-project.ts +0 -0
  269. /package/{src/types → types}/ui/os/os-proposal.ts +0 -0
  270. /package/{src/types → types}/ui/os/os-settings.ts +0 -0
  271. /package/{src/types → types}/ui/os/os-subscription.ts +0 -0
  272. /package/{src/types → types}/ui/os/os-task.ts +0 -0
  273. /package/{src/types → types}/ui/os/os-tax-rate.ts +0 -0
  274. /package/{src/types → types}/ui/pageComponentMap.ts +0 -0
  275. /package/{src/types → types}/ui/pagination.ts +0 -0
  276. /package/{src/types → types}/ui/schema.d.ts +0 -0
  277. /package/{src/types → types}/ui/schema.ts +0 -0
  278. /package/{src/types → types}/ui/state.ts +0 -0
  279. /package/{src/types → types}/ui/system/file.ts +0 -0
  280. /package/{src/types → types}/ui/system/folder.ts +0 -0
  281. /package/{src/types → types}/ui/system/role.ts +0 -0
  282. /package/{src/types → types}/ui/system/user.ts +0 -0
  283. /package/{src/types → types}/ui.ts +0 -0
  284. /package/{src/utils → utils}/color.js +0 -0
  285. /package/{src/utils → utils}/color.ts +0 -0
  286. /package/{src/utils → utils}/fonts.js +0 -0
  287. /package/{src/utils → utils}/fonts.ts +0 -0
  288. /package/{src/utils → utils}/formkit.js +0 -0
  289. /package/{src/utils → utils}/formkit.ts +0 -0
  290. /package/{src/utils → utils}/icons.js +0 -0
  291. /package/{src/utils → utils}/icons.ts +0 -0
@@ -0,0 +1,22 @@
1
+ export declare const tokens: {
2
+ colors: {
3
+ primary: string;
4
+ secondary: string;
5
+ success: string;
6
+ warning: string;
7
+ error: string;
8
+ surface: string;
9
+ background: string;
10
+ };
11
+ radius: {
12
+ sm: string;
13
+ md: string;
14
+ lg: string;
15
+ };
16
+ spacing: {
17
+ xs: string;
18
+ sm: string;
19
+ md: string;
20
+ lg: string;
21
+ };
22
+ };
@@ -0,0 +1,22 @@
1
+ export const tokens = {
2
+ colors: {
3
+ primary: '#4f46e5',
4
+ secondary: '#64748b',
5
+ success: '#22c55e',
6
+ warning: '#f59e0b',
7
+ error: '#ef4444',
8
+ surface: '#ffffff',
9
+ background: '#f8fafc'
10
+ },
11
+ radius: {
12
+ sm: '4px',
13
+ md: '8px',
14
+ lg: '12px'
15
+ },
16
+ spacing: {
17
+ xs: '4px',
18
+ sm: '8px',
19
+ md: '16px',
20
+ lg: '24px'
21
+ }
22
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: (nuxtApp: any) => void;
2
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { vuetify } from './vuetify';
2
+ export default (nuxtApp) => {
3
+ const stored = typeof localStorage !== 'undefined' ? localStorage.getItem('mframework-icon-set') : null;
4
+ const initial = stored || 'mdi';
5
+ vuetify.framework = vuetify.framework || {};
6
+ vuetify.framework.icons = vuetify.framework.icons || {};
7
+ vuetify.framework.icons.defaultSet = initial;
8
+ const setIconSet = (name) => {
9
+ ;
10
+ vuetify.framework.icons.defaultSet = name;
11
+ if (typeof localStorage !== 'undefined')
12
+ localStorage.setItem('mframework-icon-set', name);
13
+ };
14
+ nuxtApp.provide('mIcons', {
15
+ setIconSet,
16
+ current: () => vuetify.framework.icons.defaultSet,
17
+ });
18
+ };
@@ -0,0 +1,4 @@
1
+ import '@fortawesome/fontawesome-free/css/all.css';
2
+ import '@mdi/font/css/materialdesignicons.css';
3
+ declare const _default: any;
4
+ export default _default;
@@ -0,0 +1,13 @@
1
+ // @mframework/ui/runtime/plugins/icons.ts
2
+ import { defineNuxtPlugin } from '#imports';
3
+ import { library } from '@fortawesome/fontawesome-svg-core';
4
+ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
5
+ import { fas } from '@fortawesome/free-solid-svg-icons';
6
+ import '@fortawesome/fontawesome-free/css/all.css';
7
+ import '@mdi/font/css/materialdesignicons.css';
8
+ export default defineNuxtPlugin((nuxtApp) => {
9
+ // Add all solid icons (you can be more selective if you want)
10
+ library.add(fas);
11
+ // Register global FA component
12
+ nuxtApp.vueApp.component('FaIcon', FontAwesomeIcon);
13
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: (nuxtApp: any) => void;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { useTheme } from 'vuetify';
2
+ export default (nuxtApp) => {
3
+ const theme = useTheme();
4
+ // Attempt to read runtime config from nuxtApp (fallbacks to undefined)
5
+ const config = (nuxtApp && nuxtApp.$config && nuxtApp.$config.public && nuxtApp.$config.public.mframeworkUi) || {};
6
+ // 1. Load persisted theme
7
+ const stored = typeof localStorage !== 'undefined' ? localStorage.getItem('mframework-theme') : null;
8
+ const initial = stored || config?.theme?.default || 'light';
9
+ theme.global.name.value = initial;
10
+ // 2. Expose a global toggle
11
+ const toggleTheme = () => {
12
+ const newTheme = theme.global.current.value.dark ? 'light' : 'dark';
13
+ theme.global.name.value = newTheme;
14
+ if (typeof localStorage !== 'undefined')
15
+ localStorage.setItem('mframework-theme', newTheme);
16
+ };
17
+ // 3. Expose to app
18
+ nuxtApp.provide('mTheme', {
19
+ theme,
20
+ toggleTheme,
21
+ setTheme: (name) => {
22
+ ;
23
+ theme.global.name.value = name;
24
+ if (typeof localStorage !== 'undefined')
25
+ localStorage.setItem('mframework-theme', name);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,88 @@
1
+ import '@mdi/font/css/materialdesignicons.css';
2
+ import 'vuetify/styles';
3
+ export declare const vuetify: {
4
+ install: (app: import("vue").App<any>) => void;
5
+ unmount: () => void;
6
+ defaults: import("vue").Ref<import("vuetify").DefaultsInstance, import("vuetify").DefaultsInstance>;
7
+ display: import("vuetify").DisplayInstance;
8
+ theme: import("vuetify").ThemeInstance & {
9
+ install: (app: import("vue").App<any>) => void;
10
+ };
11
+ icons: {
12
+ defaultSet: string;
13
+ aliases: Partial<import("vuetify").IconAliases>;
14
+ sets: Record<string, import("vuetify").IconSet>;
15
+ };
16
+ locale: {
17
+ name: string;
18
+ decimalSeparator: import("vue").ShallowRef<string>;
19
+ messages: import("vue").Ref<import("vuetify").LocaleMessages, import("vuetify").LocaleMessages>;
20
+ current: import("vue").Ref<string, string>;
21
+ fallback: import("vue").Ref<string, string>;
22
+ t: (key: string, ...params: unknown[]) => string;
23
+ n: (value: number) => string;
24
+ provide: (props: import("vuetify").LocaleOptions) => import("vuetify").LocaleInstance;
25
+ isRtl: import("vue").Ref<boolean, boolean>;
26
+ rtl: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
27
+ rtlClasses: import("vue").Ref<string, string>;
28
+ };
29
+ date: {
30
+ options: {
31
+ adapter: (new (options: {
32
+ locale: any;
33
+ formats?: any;
34
+ }) => import("vuetify").DateInstance) | import("vuetify").DateInstance;
35
+ formats?: Record<string, any>;
36
+ locale: Record<string, any>;
37
+ };
38
+ instance: {
39
+ date: (value?: any) => unknown;
40
+ format: (date: unknown, formatString: string) => string;
41
+ toJsDate: (value: unknown) => Date;
42
+ parseISO: (date: string) => unknown;
43
+ toISO: (date: unknown) => string;
44
+ startOfDay: (date: unknown) => unknown;
45
+ endOfDay: (date: unknown) => unknown;
46
+ startOfWeek: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown;
47
+ endOfWeek: (date: unknown) => unknown;
48
+ startOfMonth: (date: unknown) => unknown;
49
+ endOfMonth: (date: unknown) => unknown;
50
+ startOfYear: (date: unknown) => unknown;
51
+ endOfYear: (date: unknown) => unknown;
52
+ isAfter: (date: unknown, comparing: unknown) => boolean;
53
+ isAfterDay: (date: unknown, comparing: unknown) => boolean;
54
+ isSameDay: (date: unknown, comparing: unknown) => boolean;
55
+ isSameMonth: (date: unknown, comparing: unknown) => boolean;
56
+ isSameYear: (date: unknown, comparing: unknown) => boolean;
57
+ isBefore: (date: unknown, comparing: unknown) => boolean;
58
+ isEqual: (date: unknown, comparing: unknown) => boolean;
59
+ isValid: (date: any) => boolean;
60
+ isWithinRange: (date: unknown, range: [unknown, unknown]) => boolean;
61
+ addMinutes: (date: unknown, amount: number) => unknown;
62
+ addHours: (date: unknown, amount: number) => unknown;
63
+ addDays: (date: unknown, amount: number) => unknown;
64
+ addWeeks: (date: unknown, amount: number) => unknown;
65
+ addMonths: (date: unknown, amount: number) => unknown;
66
+ getYear: (date: unknown) => number;
67
+ setYear: (date: unknown, year: number) => unknown;
68
+ getDiff: (date: unknown, comparing: unknown, unit?: string | undefined) => number;
69
+ getWeekArray: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown[][];
70
+ getWeekdays: (firstDayOfWeek?: string | number | undefined, weekdayFormat?: "long" | "narrow" | "short" | undefined) => string[];
71
+ getWeek: (date: unknown, firstDayOfWeek?: string | number | undefined, firstDayOfYear?: string | number | undefined) => number;
72
+ getMonth: (date: unknown) => number;
73
+ setMonth: (date: unknown, month: number) => unknown;
74
+ getDate: (date: unknown) => number;
75
+ setDate: (date: unknown, day: number) => unknown;
76
+ getNextMonth: (date: unknown) => unknown;
77
+ getPreviousMonth: (date: unknown) => unknown;
78
+ getHours: (date: unknown) => number;
79
+ setHours: (date: unknown, hours: number) => unknown;
80
+ getMinutes: (date: unknown) => number;
81
+ setMinutes: (date: unknown, minutes: number) => unknown;
82
+ locale?: any;
83
+ };
84
+ };
85
+ goTo: import("vuetify").GoToInstance;
86
+ };
87
+ declare const _default: (nuxtApp: any) => void;
88
+ export default _default;
@@ -0,0 +1,60 @@
1
+ // plugins/vuetify.ts
2
+ import '@mdi/font/css/materialdesignicons.css';
3
+ import 'vuetify/styles';
4
+ import { createVuetify } from 'vuetify';
5
+ import { aliases, fa } from 'vuetify/iconsets/fa-svg';
6
+ import { library } from '@fortawesome/fontawesome-svg-core';
7
+ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
8
+ import { fas } from '@fortawesome/free-solid-svg-icons';
9
+ import * as components from 'vuetify/components';
10
+ import * as labsComponents from 'vuetify/labs/components';
11
+ import * as directives from 'vuetify/directives';
12
+ import { mdi } from 'vuetify/iconsets/mdi';
13
+ // Register fontawesome icons at module scope
14
+ library.add(fas);
15
+ // Create Vuetify instance at module scope so other runtime plugins can import it
16
+ export const vuetify = createVuetify({
17
+ ssr: true,
18
+ directives,
19
+ icons: {
20
+ defaultSet: 'fa',
21
+ aliases,
22
+ sets: {
23
+ fa,
24
+ mdi,
25
+ },
26
+ },
27
+ components: {
28
+ ...components,
29
+ ...labsComponents,
30
+ },
31
+ theme: {
32
+ defaultTheme: 'light',
33
+ themes: {
34
+ light: {
35
+ dark: false,
36
+ variables: {}, // required to avoid Vuetify crash
37
+ colors: {
38
+ primary: '#6200EE',
39
+ 'primary-darken-1': '#3700B3',
40
+ secondary: '#03DAC6',
41
+ 'secondary-darken-1': '#018786',
42
+ error: '#B00020',
43
+ info: '#2196F3',
44
+ success: '#4CAF50',
45
+ warning: '#FB8C00',
46
+ },
47
+ },
48
+ dark: {
49
+ dark: true,
50
+ variables: {},
51
+ colors: {},
52
+ },
53
+ },
54
+ },
55
+ });
56
+ export default (nuxtApp) => {
57
+ // Register FontAwesome component on the actual Vue app instance
58
+ nuxtApp.vueApp.component('font-awesome-icon', FontAwesomeIcon);
59
+ nuxtApp.vueApp.use(vuetify);
60
+ };
@@ -0,0 +1,2 @@
1
+ import type { SearchClient } from 'instantsearch.js';
2
+ export declare function getSearchClient(): SearchClient | null;
@@ -0,0 +1,21 @@
1
+ export function getSearchClient() {
2
+ let mod;
3
+ try {
4
+ mod = require('@searchkit/instantsearch-client');
5
+ }
6
+ catch {
7
+ console.warn('[mframework-ui] Searchkit client missing');
8
+ return null;
9
+ }
10
+ const candidate = mod?.default?.default ||
11
+ mod?.default?.createClient ||
12
+ mod?.default ||
13
+ mod?.createClient ||
14
+ mod;
15
+ if (typeof candidate !== 'function')
16
+ return null;
17
+ const host = process.env.NUXT_PUBLIC_SEARCHKIT_HOST;
18
+ if (!host)
19
+ return null;
20
+ return candidate({ host });
21
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { defineNuxtPlugin } from '#app';
2
+ import { getSearchClient } from './client';
3
+ export default defineNuxtPlugin((nuxtApp) => {
4
+ const client = getSearchClient();
5
+ const indexName = process.env.NUXT_PUBLIC_SEARCH_INDEX || 'default';
6
+ nuxtApp.provide('mSearchClient', client);
7
+ nuxtApp.provide('mSearchIndex', indexName);
8
+ });
@@ -0,0 +1,8 @@
1
+ export interface GlobalSearchResult {
2
+ id?: string;
3
+ title?: string;
4
+ type?: string;
5
+ description?: string;
6
+ image?: string;
7
+ url?: string;
8
+ }
@@ -0,0 +1,6 @@
1
+ import type { BlockButton } from './block-button';
2
+ export interface BlockButtonGroup {
3
+ id: string;
4
+ buttons: (string | BlockButton)[] | null;
5
+ alignment: 'left' | 'center' | null;
6
+ }
@@ -0,0 +1,13 @@
1
+ import type { Post, Page } from '../content';
2
+ export interface BlockButton {
3
+ id: string;
4
+ sort: number | null;
5
+ type: ('pages' | 'posts' | 'external') | null;
6
+ label: string | null;
7
+ color: 'primary' | 'white' | 'gray' | 'white' | 'black';
8
+ variant: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';
9
+ page: string | Page | null;
10
+ post: string | Post | null;
11
+ external_url: string | null;
12
+ icon: string | null;
13
+ }
@@ -0,0 +1,18 @@
1
+ import type { File } from '../system';
2
+ import type { BlockButtonGroup } from '.';
3
+ export interface BlockColumn {
4
+ headline?: string | null;
5
+ id?: string;
6
+ title?: string | null;
7
+ rows?: (number | BlockColumnRow)[];
8
+ }
9
+ export interface BlockColumnRow {
10
+ block_columns?: (string | BlockColumn) | null;
11
+ content?: string | null;
12
+ headline?: string | null;
13
+ id?: string;
14
+ image?: (string | File) | null;
15
+ image_position?: string | null;
16
+ title?: string | null;
17
+ button_group?: (string | BlockButtonGroup) | null;
18
+ }
@@ -0,0 +1,11 @@
1
+ import type { BlockButtonGroup } from '.';
2
+ export interface BlockCta {
3
+ buttons?: {
4
+ [key: string]: any;
5
+ } | null;
6
+ content?: string | null;
7
+ headline?: string | null;
8
+ id?: string;
9
+ title?: string | null;
10
+ button_group?: (string | BlockButtonGroup) | null;
11
+ }
@@ -0,0 +1,4 @@
1
+ export interface BlockDivider {
2
+ id?: string;
3
+ title?: string | null;
4
+ }
@@ -0,0 +1,11 @@
1
+ export interface BlockFaq {
2
+ faqs?: BlockFaqQuestion[] | null;
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ alignment?: 'left' | 'center' | null;
7
+ }
8
+ export interface BlockFaqQuestion {
9
+ title: string | null;
10
+ answer: string | null;
11
+ }
@@ -0,0 +1,7 @@
1
+ import type { Form } from '../content';
2
+ export interface BlockForm {
3
+ form?: (string | Form) | null;
4
+ headline?: string | null;
5
+ id?: string;
6
+ title?: string | null;
7
+ }
@@ -0,0 +1,13 @@
1
+ import type { File } from '../system';
2
+ export interface BlockGallery {
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ gallery_items?: BlockGalleryFile[] | null;
7
+ }
8
+ export interface BlockGalleryFile {
9
+ block_gallery?: (string | BlockGallery) | null;
10
+ directus_files_id?: (string | File) | null;
11
+ id?: number;
12
+ sort?: number | null;
13
+ }
@@ -0,0 +1,11 @@
1
+ import type { File } from '../system';
2
+ import type { BlockButtonGroup } from '.';
3
+ export interface BlockHero {
4
+ id?: string;
5
+ title?: string | null;
6
+ headline?: string | null;
7
+ content?: string | null;
8
+ image?: (string | File) | null;
9
+ image_position?: 'left' | 'right' | null;
10
+ button_group?: (string | BlockButtonGroup) | null;
11
+ }
@@ -0,0 +1,4 @@
1
+ export interface BlockHtml {
2
+ id?: string;
3
+ raw_html?: string | null;
4
+ }
@@ -0,0 +1,13 @@
1
+ import type { File } from '../system';
2
+ export interface BlockLogocloud {
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ logos?: (string | BlockLogocloudFile)[];
7
+ }
8
+ export interface BlockLogocloudFile {
9
+ id?: string;
10
+ sort?: number | null;
11
+ block_logocloud_id?: (string | BlockLogocloud) | null;
12
+ directus_files_id?: (string | File) | null;
13
+ }
@@ -0,0 +1,10 @@
1
+ import type { File } from '../system';
2
+ export interface BlockQuote {
3
+ background_color?: string | null;
4
+ content?: string | null;
5
+ headline?: string | null;
6
+ id?: string;
7
+ image?: (string | File) | null;
8
+ subtitle?: string | null;
9
+ title?: string | null;
10
+ }
@@ -0,0 +1,7 @@
1
+ export interface BlockRichtext {
2
+ content?: string | null;
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ alignment?: 'left' | 'center' | null;
7
+ }
@@ -0,0 +1,21 @@
1
+ import type { File } from '../system';
2
+ import type { BlockButtonGroup } from '.';
3
+ export interface BlockStep {
4
+ id?: string;
5
+ title?: string | null;
6
+ headline?: string | null;
7
+ /** If enabled, image position is mframeworkd between left and right. */
8
+ mframework_image_position?: boolean;
9
+ /** Show the step numbers on the website. For example: (Step 1, Step 2, etc) */
10
+ show_step_numbers?: boolean | null;
11
+ steps?: (number | BlockStepItem)[];
12
+ }
13
+ export interface BlockStepItem {
14
+ id?: string;
15
+ title?: string | null;
16
+ content?: string | null;
17
+ image?: (string | File) | null;
18
+ sort?: number | null;
19
+ block_steps?: (string | BlockStep) | null;
20
+ button_group?: (string | BlockButtonGroup) | null;
21
+ }
@@ -0,0 +1,6 @@
1
+ export interface BlockTeam {
2
+ content?: string | null;
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ }
@@ -0,0 +1,13 @@
1
+ import type { Testimonial } from '../content';
2
+ export interface BlockTestimonial {
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ testimonials?: (string | BlockTestimonialItem)[];
7
+ }
8
+ export interface BlockTestimonialItem {
9
+ block_testimonials_slider_id?: (string | BlockTestimonial) | null;
10
+ id?: string;
11
+ sort?: number | null;
12
+ testimonials_id?: (string | Testimonial) | null;
13
+ }
@@ -0,0 +1,9 @@
1
+ import type { File } from '../system';
2
+ export interface BlockVideo {
3
+ headline?: string | null;
4
+ id?: string;
5
+ title?: string | null;
6
+ type?: string | null;
7
+ video_file?: (string | File) | null;
8
+ video_url?: string | null;
9
+ }
@@ -0,0 +1,17 @@
1
+ import type { BlockColumn } from './block-column';
2
+ import type { BlockCta } from './block-cta';
3
+ import type { BlockFaq } from './block-faq';
4
+ import type { BlockForm } from './block-form';
5
+ import type { BlockGallery } from './block-gallery';
6
+ import type { BlockHero } from './block-hero';
7
+ import type { BlockHtml } from './block-html';
8
+ import type { BlockLogocloud } from './block-logocloud';
9
+ import type { BlockQuote } from './block-quote';
10
+ import type { BlockRichtext } from './block-richtext';
11
+ import type { BlockStep } from './block-steps';
12
+ import type { BlockTeam } from './block-team';
13
+ import type { BlockTestimonial } from './block-testimonial';
14
+ import type { BlockVideo } from './block-video';
15
+ import type { BlockDivider } from './block-divider';
16
+ export type BlockType = 'block_columns' | 'block_cta' | 'block_faqs' | 'block_form' | 'block_gallery' | 'block_hero' | 'block_html' | 'block_logocloud' | 'block_quote' | 'block_richtext' | 'block_steps' | 'block_team' | 'block_testimonials' | 'block_video' | 'block_divider';
17
+ export type Block = BlockColumn | BlockCta | BlockFaq | BlockForm | BlockGallery | BlockHero | BlockHtml | BlockLogocloud | BlockQuote | BlockRichtext | BlockStep | BlockTeam | BlockTestimonial | BlockVideo | BlockDivider;
@@ -0,0 +1,6 @@
1
+ export interface ComponentSize {
2
+ size?: 'sm' | 'md' | 'lg';
3
+ }
4
+ export interface ComponentVariant {
5
+ variant?: 'primary' | 'secondary' | 'danger' | 'ghost';
6
+ }
@@ -0,0 +1,10 @@
1
+ import type { SEO } from '../meta';
2
+ export interface Category {
3
+ color?: string | null;
4
+ content?: string | null;
5
+ id?: string;
6
+ seo?: (string | SEO) | null;
7
+ slug?: string | null;
8
+ sort?: number | null;
9
+ title?: string | null;
10
+ }
@@ -0,0 +1,21 @@
1
+ import type { User } from '../system';
2
+ export interface Form {
3
+ date_created?: string | null;
4
+ date_updated?: string | null;
5
+ id?: string;
6
+ key?: string | null;
7
+ on_success?: string | null;
8
+ redirect_url?: string | null;
9
+ /** The fields for the form. */
10
+ schema?: {
11
+ [key: string]: any;
12
+ }[] | null;
13
+ sort?: number | null;
14
+ status?: string;
15
+ /** The text for the submit button label. */
16
+ submit_label?: string | null;
17
+ success_message?: string | null;
18
+ title?: string | null;
19
+ user_created?: string | User | null;
20
+ user_updated?: string | User | null;
21
+ }
@@ -0,0 +1,38 @@
1
+ import type { SEO } from '../meta';
2
+ import type { User } from '../system';
3
+ import type { Post } from '.';
4
+ import type { BlockColumn, BlockCta, BlockFaq, BlockForm, BlockGallery, BlockHero, BlockHtml, BlockLogocloud, BlockQuote, BlockRichtext, BlockStep, BlockTeam, BlockTestimonial, BlockVideo, BlockType } from '../blocks';
5
+ export interface Page {
6
+ id?: string;
7
+ permalink: string;
8
+ date_created?: string | null;
9
+ date_updated?: string | null;
10
+ seo?: (string | SEO) | null;
11
+ sort?: number | null;
12
+ status?: string;
13
+ title?: string | null;
14
+ user_created?: (string | User) | null;
15
+ user_updated?: (string | User) | null;
16
+ blocks?: (string | PageBlock)[];
17
+ }
18
+ export interface PageBlock {
19
+ collection?: BlockType | null;
20
+ id?: string;
21
+ item?: (string | BlockColumn | BlockCta | BlockFaq | BlockForm | BlockGallery | BlockHero | BlockHtml | BlockLogocloud | BlockQuote | BlockRichtext | BlockStep | BlockTeam | BlockTestimonial | BlockVideo)[] | null;
22
+ pages_id?: (string | Page) | null;
23
+ sort?: number | null;
24
+ hide_block?: boolean | null;
25
+ }
26
+ export interface PagesProjects {
27
+ id?: string;
28
+ title?: string | null;
29
+ headline?: string | null | undefined;
30
+ seo: (string | SEO) | null;
31
+ }
32
+ export interface PagesBlog {
33
+ id?: string;
34
+ title?: string | null;
35
+ headline?: string | null;
36
+ featured_post?: (string | Post) | null;
37
+ seo: (string | SEO) | null;
38
+ }