@hywax/cms 0.0.4 → 0.0.6

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 (98) hide show
  1. package/.nuxt/cms/autocomplete-select.ts +5 -0
  2. package/.nuxt/cms/button-copy.ts +5 -0
  3. package/.nuxt/cms/button-delete.ts +5 -0
  4. package/.nuxt/cms/editor/callout.ts +21 -0
  5. package/.nuxt/cms/editor/index.ts +2 -0
  6. package/.nuxt/cms/editor/uplora-image.ts +5 -0
  7. package/.nuxt/cms/form-panel-aside-section.ts +9 -0
  8. package/.nuxt/cms/form-panel-section.ts +8 -0
  9. package/.nuxt/cms/form-panel.ts +15 -0
  10. package/.nuxt/cms/index.ts +16 -0
  11. package/.nuxt/cms/input-seo.ts +5 -0
  12. package/.nuxt/cms/input-slug.ts +5 -0
  13. package/.nuxt/cms/modal-confirm.ts +5 -0
  14. package/.nuxt/cms/table-cell-preview.ts +9 -0
  15. package/.nuxt/cms/table-cell-seo.ts +5 -0
  16. package/.nuxt/cms/table-cell-user.ts +5 -0
  17. package/.nuxt/cms/table-panel-column-sorting.ts +5 -0
  18. package/.nuxt/cms/table-panel-column-visibility.ts +5 -0
  19. package/.nuxt/cms/table-panel-filters.ts +5 -0
  20. package/.nuxt/cms/table-panel.ts +8 -0
  21. package/cli/templates.mjs +4 -3
  22. package/dist/module.json +1 -1
  23. package/dist/module.mjs +213 -11
  24. package/dist/runtime/components/AutocompleteSelect.vue +170 -0
  25. package/dist/runtime/components/AutocompleteSelect.vue.d.ts +42 -0
  26. package/dist/runtime/components/ButtonCopy.vue +40 -0
  27. package/dist/runtime/components/ButtonCopy.vue.d.ts +23 -0
  28. package/dist/runtime/components/ButtonDelete.vue +59 -0
  29. package/dist/runtime/components/ButtonDelete.vue.d.ts +34 -0
  30. package/dist/runtime/components/FormPanel.vue +70 -0
  31. package/dist/runtime/components/FormPanel.vue.d.ts +41 -0
  32. package/dist/runtime/components/FormPanelAsideSection.vue +41 -0
  33. package/dist/runtime/components/FormPanelAsideSection.vue.d.ts +23 -0
  34. package/dist/runtime/components/FormPanelSection.vue +31 -0
  35. package/dist/runtime/components/FormPanelSection.vue.d.ts +20 -0
  36. package/dist/runtime/components/InputSeo.vue +73 -0
  37. package/dist/runtime/components/InputSeo.vue.d.ts +19 -0
  38. package/dist/runtime/components/InputSlug.vue +74 -0
  39. package/dist/runtime/components/InputSlug.vue.d.ts +31 -0
  40. package/dist/runtime/components/ModalConfirm.vue +96 -0
  41. package/dist/runtime/components/ModalConfirm.vue.d.ts +32 -0
  42. package/dist/runtime/components/TableCellPreview.vue +40 -0
  43. package/dist/runtime/components/TableCellPreview.vue.d.ts +18 -0
  44. package/dist/runtime/components/TableCellSeo.vue +34 -0
  45. package/dist/runtime/components/TableCellSeo.vue.d.ts +13 -0
  46. package/dist/runtime/components/TableCellUser.vue +33 -0
  47. package/dist/runtime/components/TableCellUser.vue.d.ts +15 -0
  48. package/dist/runtime/components/TablePanel.vue +153 -0
  49. package/dist/runtime/components/TablePanel.vue.d.ts +50 -0
  50. package/dist/runtime/components/TablePanelColumnSorting.vue +72 -0
  51. package/dist/runtime/components/TablePanelColumnSorting.vue.d.ts +20 -0
  52. package/dist/runtime/components/TablePanelColumnVisibility.vue +49 -0
  53. package/dist/runtime/components/TablePanelColumnVisibility.vue.d.ts +20 -0
  54. package/dist/runtime/components/TablePanelFilters.vue +79 -0
  55. package/dist/runtime/components/TablePanelFilters.vue.d.ts +34 -0
  56. package/dist/runtime/components/prose/UploraImage.vue +8 -3
  57. package/dist/runtime/composables/useAdmin.d.ts +6 -0
  58. package/dist/runtime/composables/useAdmin.js +14 -0
  59. package/dist/runtime/composables/useDeleteConfirm.d.ts +15 -0
  60. package/dist/runtime/composables/useDeleteConfirm.js +27 -0
  61. package/dist/runtime/composables/useSeoStats.d.ts +2 -2
  62. package/dist/runtime/composables/useSeoStats.js +1 -1
  63. package/dist/runtime/composables/useTable.d.ts +19 -0
  64. package/dist/runtime/composables/useTable.js +90 -0
  65. package/dist/runtime/editor/extensions/callout/CalloutView.vue +79 -0
  66. package/dist/runtime/editor/extensions/callout/CalloutView.vue.d.ts +7 -0
  67. package/dist/runtime/editor/extensions/callout/extension.d.ts +13 -0
  68. package/dist/runtime/editor/extensions/callout/extension.js +48 -0
  69. package/dist/runtime/editor/extensions/callout/index.d.ts +2 -0
  70. package/dist/runtime/editor/extensions/callout/index.js +2 -0
  71. package/dist/runtime/editor/extensions/callout/types.d.ts +3 -0
  72. package/dist/runtime/editor/extensions/callout/types.js +0 -0
  73. package/dist/runtime/editor/extensions/index.d.ts +26 -0
  74. package/dist/runtime/editor/extensions/index.js +85 -0
  75. package/dist/runtime/editor/extensions/uplora-image/UploraImageView.vue +26 -0
  76. package/dist/runtime/editor/extensions/uplora-image/UploraImageView.vue.d.ts +7 -0
  77. package/dist/runtime/editor/extensions/uplora-image/extension.d.ts +13 -0
  78. package/dist/runtime/editor/extensions/uplora-image/extension.js +60 -0
  79. package/dist/runtime/editor/extensions/uplora-image/index.d.ts +2 -0
  80. package/dist/runtime/editor/extensions/uplora-image/index.js +2 -0
  81. package/dist/runtime/editor/extensions/uplora-image/types.d.ts +5 -0
  82. package/dist/runtime/editor/extensions/uplora-image/types.js +0 -0
  83. package/dist/runtime/editor/markdown/index.d.ts +3 -0
  84. package/dist/runtime/editor/markdown/index.js +47 -0
  85. package/dist/runtime/editor/markdown/nodes/callout.d.ts +2 -0
  86. package/dist/runtime/editor/markdown/nodes/callout.js +21 -0
  87. package/dist/runtime/editor/markdown/nodes/uploraImage.d.ts +2 -0
  88. package/dist/runtime/editor/markdown/nodes/uploraImage.js +31 -0
  89. package/dist/runtime/server/api/uplora/[id].delete.d.ts +2 -0
  90. package/dist/runtime/server/api/uplora/[id].delete.js +4 -0
  91. package/dist/runtime/server/api/uplora/index.post.d.ts +2 -0
  92. package/dist/runtime/server/api/uplora/index.post.js +4 -0
  93. package/dist/runtime/server/utils/validation.d.ts +2 -2
  94. package/dist/runtime/types/index.d.ts +16 -0
  95. package/dist/runtime/types/index.js +16 -0
  96. package/dist/runtime/types/query.d.ts +3 -1
  97. package/dist/runtime/types/tv.d.ts +9 -3
  98. package/package.json +5 -5
@@ -0,0 +1,26 @@
1
+ export type DefineFullExtension = ReturnType<typeof defineFullExtension>;
2
+ export type DefineLightExtension = ReturnType<typeof defineLightExtension>;
3
+ export declare function defineFullExtension(): import("prosekit/core").Union<readonly [import("prosekit/extensions/doc").DocExtension, import("prosekit/extensions/text").TextExtension, import("prosekit/extensions/paragraph").ParagraphExtension, import("prosekit/extensions/heading").HeadingExtension, import("prosekit/extensions/list").ListExtension, import("prosekit/extensions/blockquote").BlockquoteExtension, import("prosekit/extensions/image").ImageExtension, import("prosekit/extensions/horizontal-rule").HorizontalRuleExtension, import("prosekit/extensions/table").TableExtension, import("prosekit/extensions/code-block").CodeBlockExtension, import("prosekit/extensions/italic").ItalicExtension, import("prosekit/extensions/bold").BoldExtension, import("prosekit/extensions/underline").UnderlineExtension, import("prosekit/extensions/strike").StrikeExtension, import("prosekit/extensions/code").CodeExtension, import("prosekit/extensions/link").LinkExtension, import("prosekit/core").PlainExtension, import("prosekit/core").BaseCommandsExtension, import("prosekit/core").HistoryExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
4
+ Nodes: {
5
+ uploraImage: import("./uplora-image").UploraImageAttrs;
6
+ };
7
+ }>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
8
+ Commands: {
9
+ setUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
10
+ insertUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
11
+ toggleUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
12
+ setUploraAttrs: [attrs: import("./uplora-image").UploraImageAttrs];
13
+ };
14
+ }>]>, import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
15
+ Nodes: {
16
+ callout: import("./callout").CalloutAttrs;
17
+ };
18
+ }>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
19
+ Commands: {
20
+ setCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
21
+ insertCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
22
+ toggleCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
23
+ setCalloutAttrs: [attrs: import("./callout").CalloutAttrs];
24
+ };
25
+ }>]>]>;
26
+ export declare function defineLightExtension(): import("prosekit/core").Union<readonly [import("prosekit/extensions/doc").DocExtension, import("prosekit/extensions/text").TextExtension, import("prosekit/extensions/paragraph").ParagraphExtension, import("prosekit/extensions/list").ListExtension, import("prosekit/extensions/blockquote").BlockquoteExtension, import("prosekit/extensions/code-block").CodeBlockExtension, import("prosekit/extensions/italic").ItalicExtension, import("prosekit/extensions/bold").BoldExtension, import("prosekit/extensions/underline").UnderlineExtension, import("prosekit/extensions/strike").StrikeExtension, import("prosekit/extensions/code").CodeExtension, import("prosekit/extensions/link").LinkExtension, import("prosekit/core").PlainExtension, import("prosekit/core").BaseCommandsExtension, import("prosekit/core").HistoryExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension]>;
@@ -0,0 +1,85 @@
1
+ import { defineBaseCommands, defineBaseKeymap, defineHistory, union } from "prosekit/core";
2
+ import { defineBlockquote } from "prosekit/extensions/blockquote";
3
+ import { defineBold } from "prosekit/extensions/bold";
4
+ import { defineCode } from "prosekit/extensions/code";
5
+ import { defineCodeBlock } from "prosekit/extensions/code-block";
6
+ import { defineDoc } from "prosekit/extensions/doc";
7
+ import { defineDropCursor } from "prosekit/extensions/drop-cursor";
8
+ import { defineGapCursor } from "prosekit/extensions/gap-cursor";
9
+ import { defineHeading } from "prosekit/extensions/heading";
10
+ import { defineHorizontalRule } from "prosekit/extensions/horizontal-rule";
11
+ import { defineImage } from "prosekit/extensions/image";
12
+ import { defineItalic } from "prosekit/extensions/italic";
13
+ import { defineLink } from "prosekit/extensions/link";
14
+ import { defineList } from "prosekit/extensions/list";
15
+ import { defineModClickPrevention } from "prosekit/extensions/mod-click-prevention";
16
+ import { defineParagraph } from "prosekit/extensions/paragraph";
17
+ import { definePlaceholder } from "prosekit/extensions/placeholder";
18
+ import { defineStrike } from "prosekit/extensions/strike";
19
+ import { defineTable } from "prosekit/extensions/table";
20
+ import { defineText } from "prosekit/extensions/text";
21
+ import { defineUnderline } from "prosekit/extensions/underline";
22
+ import { defineVirtualSelection } from "prosekit/extensions/virtual-selection";
23
+ import { defineCallout } from "./callout/index.js";
24
+ import { defineUploraImage } from "./uplora-image/index.js";
25
+ export function defineFullExtension() {
26
+ return union([
27
+ // Nodes
28
+ defineDoc(),
29
+ defineText(),
30
+ defineParagraph(),
31
+ defineHeading(),
32
+ defineList(),
33
+ defineBlockquote(),
34
+ defineImage(),
35
+ defineHorizontalRule(),
36
+ defineTable(),
37
+ defineCodeBlock(),
38
+ // Marks
39
+ defineItalic(),
40
+ defineBold(),
41
+ defineUnderline(),
42
+ defineStrike(),
43
+ defineCode(),
44
+ defineLink(),
45
+ // Others
46
+ defineBaseKeymap(),
47
+ defineBaseCommands(),
48
+ defineHistory(),
49
+ defineDropCursor(),
50
+ defineGapCursor(),
51
+ defineVirtualSelection(),
52
+ defineModClickPrevention(),
53
+ definePlaceholder({
54
+ placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 '/' \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434"
55
+ }),
56
+ defineUploraImage(),
57
+ defineCallout()
58
+ ]);
59
+ }
60
+ export function defineLightExtension() {
61
+ return union([
62
+ // Nodes
63
+ defineDoc(),
64
+ defineText(),
65
+ defineParagraph(),
66
+ defineList(),
67
+ defineBlockquote(),
68
+ defineCodeBlock(),
69
+ // Marks
70
+ defineItalic(),
71
+ defineBold(),
72
+ defineUnderline(),
73
+ defineStrike(),
74
+ defineCode(),
75
+ defineLink(),
76
+ // Others
77
+ defineBaseKeymap(),
78
+ defineBaseCommands(),
79
+ defineHistory(),
80
+ defineModClickPrevention(),
81
+ definePlaceholder({
82
+ placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442..."
83
+ })
84
+ ]);
85
+ }
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <div :class="ui.root()">
3
+ ...
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ import theme from "#build/cms/editor/uplora-image";
9
+ import { computed, useAppConfig } from "#imports";
10
+ import { tv } from "../../../utils/tv";
11
+ </script>
12
+
13
+ <script setup>
14
+ const _props = defineProps({
15
+ contentRef: { type: [String, Object, Function], required: true },
16
+ view: { type: Object, required: true },
17
+ getPos: { type: Function, required: true },
18
+ setAttrs: { type: Function, required: true },
19
+ node: { type: null, required: true },
20
+ selected: { type: null, required: true },
21
+ decorations: { type: null, required: true },
22
+ innerDecorations: { type: null, required: true }
23
+ });
24
+ const appConfig = useAppConfig();
25
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.cms?.editor?.uploraImage || {} })());
26
+ </script>
@@ -0,0 +1,7 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { VueNodeViewProps } from 'prosekit/vue';
3
+ import type { ComponentConfig } from '../../../types';
4
+ import theme from '#build/cms/editor/uplora-image';
5
+ export type ProseUploraImage = ComponentConfig<typeof theme, AppConfig, 'uploraImage', 'cms.editor'>;
6
+ declare const _default: import("vue").DefineComponent<VueNodeViewProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VueNodeViewProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import type { UploraImageAttrs } from './types';
2
+ export declare function defineUploraImage(): import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
3
+ Nodes: {
4
+ uploraImage: UploraImageAttrs;
5
+ };
6
+ }>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
7
+ Commands: {
8
+ setUploraImage: [attrs?: UploraImageAttrs | undefined];
9
+ insertUploraImage: [attrs?: UploraImageAttrs | undefined];
10
+ toggleUploraImage: [attrs?: UploraImageAttrs | undefined];
11
+ setUploraAttrs: [attrs: UploraImageAttrs];
12
+ };
13
+ }>]>;
@@ -0,0 +1,60 @@
1
+ import { Fragment, Slice } from "@prosekit/pm/model";
2
+ import { defineCommands, defineNodeSpec, getNodeType, insertNode, setNodeAttrs, toggleWrap, union } from "prosekit/core";
3
+ import { defineVueNodeView } from "prosekit/vue";
4
+ import UploraImageView from "./UploraImageView.vue";
5
+ function defineUploraImageSpec() {
6
+ return defineNodeSpec({
7
+ name: "uploraImage",
8
+ group: "block",
9
+ atom: true,
10
+ attrs: {
11
+ image: { default: "" },
12
+ alt: { default: "" },
13
+ lqip: { default: "" }
14
+ },
15
+ parseDOM: [{ tag: 'div[data-type="uplora-image"]' }],
16
+ toDOM({ attrs }) {
17
+ return ["div", { "data-type": "uplora-image", ...attrs }];
18
+ }
19
+ });
20
+ }
21
+ function defineUploraImageView() {
22
+ return defineVueNodeView({
23
+ name: "uploraImage",
24
+ component: UploraImageView
25
+ });
26
+ }
27
+ function defineUploraImageCommands() {
28
+ return defineCommands({
29
+ setUploraImage: (attrs) => {
30
+ return (state, dispatch) => {
31
+ if (!dispatch) {
32
+ return true;
33
+ }
34
+ const { schema, tr } = state;
35
+ const type = getNodeType(schema, "uploraImage");
36
+ const node = type.create(attrs);
37
+ const pos = tr.selection.anchor;
38
+ tr.replaceRange(pos, pos, new Slice(Fragment.from(node), 0, 0));
39
+ dispatch(tr);
40
+ return true;
41
+ };
42
+ },
43
+ insertUploraImage: (attrs) => {
44
+ return insertNode({ type: "uploraImage", attrs });
45
+ },
46
+ toggleUploraImage: (attrs) => {
47
+ return toggleWrap({ type: "uploraImage", attrs });
48
+ },
49
+ setUploraAttrs: (attrs) => {
50
+ return setNodeAttrs({ type: "uploraImage", attrs });
51
+ }
52
+ });
53
+ }
54
+ export function defineUploraImage() {
55
+ return union([
56
+ defineUploraImageSpec(),
57
+ defineUploraImageView(),
58
+ defineUploraImageCommands()
59
+ ]);
60
+ }
@@ -0,0 +1,2 @@
1
+ export * from './extension';
2
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ export * from "./extension.js";
2
+ export * from "./types.js";
@@ -0,0 +1,5 @@
1
+ export interface UploraImageAttrs {
2
+ image: string;
3
+ alt: string;
4
+ lqip?: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ import type { MDCProsemirrorOptions } from '@unpress/mdc-prosemirror';
2
+ export declare function docToMarkdown(doc: any, config?: MDCProsemirrorOptions): Promise<string>;
3
+ export declare function markdownToDoc(markdown: string, config?: MDCProsemirrorOptions): Promise<import("@unpress/mdc-prosemirror").NodeJSON>;
@@ -0,0 +1,47 @@
1
+ import { docToMarkdown as docToMarkdownProsemirror, markdownToDoc as markdownToDocProsemirror } from "@unpress/mdc-prosemirror";
2
+ import { defu } from "defu";
3
+ import { calloutNode } from "./nodes/callout.js";
4
+ import { uploraImageNode } from "./nodes/uploraImage.js";
5
+ function genericComponentNode(type) {
6
+ const componentMap = {
7
+ "callout": "callout",
8
+ "caution": "callout",
9
+ "note": "callout",
10
+ "warning": "callout",
11
+ "tip": "callout",
12
+ "uplora-image": "uploraImage"
13
+ };
14
+ return {
15
+ type,
16
+ parse: () => {
17
+ },
18
+ compile: (node) => {
19
+ if (!node || !node.attrs?.componentName) {
20
+ return;
21
+ }
22
+ for (const [markdown, prosemirror] of Object.entries(componentMap)) {
23
+ if (markdown === node.attrs.componentName) {
24
+ node.type = prosemirror;
25
+ return;
26
+ }
27
+ }
28
+ }
29
+ };
30
+ }
31
+ const extraNodes = [
32
+ genericComponentNode("containerComponent"),
33
+ genericComponentNode("textComponent"),
34
+ genericComponentNode("leafComponent"),
35
+ uploraImageNode,
36
+ calloutNode
37
+ ];
38
+ export function docToMarkdown(doc, config) {
39
+ return docToMarkdownProsemirror(doc, defu(config || {}, {
40
+ extraNodes
41
+ }));
42
+ }
43
+ export function markdownToDoc(markdown, config) {
44
+ return markdownToDocProsemirror(markdown, defu(config || {}, {
45
+ extraNodes
46
+ }));
47
+ }
@@ -0,0 +1,2 @@
1
+ import type { ExtraNode } from '@unpress/mdc-prosemirror';
2
+ export declare const calloutNode: ExtraNode;
@@ -0,0 +1,21 @@
1
+ export const calloutNode = {
2
+ type: "callout",
3
+ parse: (node) => {
4
+ if (!node) {
5
+ return;
6
+ }
7
+ Object.assign(node, {
8
+ type: "containerComponent",
9
+ name: node.attrs?.type || "note"
10
+ });
11
+ },
12
+ compile: (node) => {
13
+ if (!node) {
14
+ return;
15
+ }
16
+ node.type = "callout";
17
+ node.attrs = {
18
+ type: node.attrs?.componentName
19
+ };
20
+ }
21
+ };
@@ -0,0 +1,2 @@
1
+ import type { ExtraNode } from '@unpress/mdc-prosemirror';
2
+ export declare const uploraImageNode: ExtraNode;
@@ -0,0 +1,31 @@
1
+ export const uploraImageNode = {
2
+ type: "uploraImage",
3
+ parse: (node) => {
4
+ if (!node) {
5
+ return;
6
+ }
7
+ Object.assign(node, {
8
+ type: "containerComponent",
9
+ name: "uplora-image",
10
+ attributes: {
11
+ image: node.attrs?.image || "",
12
+ alt: node.attrs?.alt || "",
13
+ lqip: node.attrs?.lqip || ""
14
+ },
15
+ children: []
16
+ });
17
+ },
18
+ compile: (node) => {
19
+ if (!node) {
20
+ return;
21
+ }
22
+ node.type = "uploraImage";
23
+ node.attrs = {
24
+ image: node.attrs?.attributes?.image || node.attrs?.fmAttributes?.image || "",
25
+ alt: node.attrs?.attributes?.alt || node.attrs?.fmAttributes?.alt || "",
26
+ color: node.attrs?.attributes?.color || node.attrs?.fmAttributes?.color || "",
27
+ lqip: node.attrs?.attributes?.lqip || node.attrs?.fmAttributes?.lqip || ""
28
+ };
29
+ delete node.children;
30
+ }
31
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{}>>;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { defineHttpHandler } from "../../utils/httpHandler.js";
2
+ export default defineHttpHandler(() => {
3
+ return {};
4
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{}>>;
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { defineHttpHandler } from "../../utils/httpHandler.js";
2
+ export default defineHttpHandler(() => {
3
+ return {};
4
+ });
@@ -1,3 +1,3 @@
1
- import type { PaginationQuery, PaginationQueryRaw, SortQuery, SortQueryRaw } from '../../types';
1
+ import type { PaginationQueryRaw, PaginationQueryValidated, SortQuery, SortQueryRaw } from '../../types';
2
2
  export declare function getValidatedSort<T extends string[]>(query: SortQueryRaw, availableColumns: readonly [...T]): SortQuery<T[number]>;
3
- export declare function getValidatedPagination(query: PaginationQueryRaw): PaginationQuery;
3
+ export declare function getValidatedPagination(query: PaginationQueryRaw): PaginationQueryValidated;
@@ -1,4 +1,20 @@
1
+ export * from '../components/AutocompleteSelect.vue';
1
2
  export * from '../components/ButtonClear.vue';
3
+ export * from '../components/ButtonCopy.vue';
4
+ export * from '../components/ButtonDelete.vue';
5
+ export * from '../components/FormPanel.vue';
6
+ export * from '../components/FormPanelAsideSection.vue';
7
+ export * from '../components/FormPanelSection.vue';
8
+ export * from '../components/InputSeo.vue';
9
+ export * from '../components/InputSlug.vue';
10
+ export * from '../components/ModalConfirm.vue';
11
+ export * from '../components/TableCellPreview.vue';
12
+ export * from '../components/TableCellSeo.vue';
13
+ export * from '../components/TableCellUser.vue';
14
+ export * from '../components/TablePanel.vue';
15
+ export * from '../components/TablePanelColumnSorting.vue';
16
+ export * from '../components/TablePanelColumnVisibility.vue';
17
+ export * from '../components/TablePanelFilters.vue';
2
18
  export * from '../components/UploraImage.vue';
3
19
  export * from './image';
4
20
  export * from './query';
@@ -1,4 +1,20 @@
1
+ export * from "../components/AutocompleteSelect.vue";
1
2
  export * from "../components/ButtonClear.vue";
3
+ export * from "../components/ButtonCopy.vue";
4
+ export * from "../components/ButtonDelete.vue";
5
+ export * from "../components/FormPanel.vue";
6
+ export * from "../components/FormPanelAsideSection.vue";
7
+ export * from "../components/FormPanelSection.vue";
8
+ export * from "../components/InputSeo.vue";
9
+ export * from "../components/InputSlug.vue";
10
+ export * from "../components/ModalConfirm.vue";
11
+ export * from "../components/TableCellPreview.vue";
12
+ export * from "../components/TableCellSeo.vue";
13
+ export * from "../components/TableCellUser.vue";
14
+ export * from "../components/TablePanel.vue";
15
+ export * from "../components/TablePanelColumnSorting.vue";
16
+ export * from "../components/TablePanelColumnVisibility.vue";
17
+ export * from "../components/TablePanelFilters.vue";
2
18
  export * from "../components/UploraImage.vue";
3
19
  export * from "./image.js";
4
20
  export * from "./query.js";
@@ -16,5 +16,7 @@ export interface PaginationQueryRaw {
16
16
  export interface PaginationQuery {
17
17
  page: number;
18
18
  perPage: number;
19
- pageOffset: number;
20
19
  }
20
+ export type PaginationQueryValidated = PaginationQuery & {
21
+ pageOffset: number;
22
+ };
@@ -27,14 +27,20 @@ type ComponentSlots<T extends {
27
27
  [K in keyof T['slots']]?: ClassValue;
28
28
  }>;
29
29
  type GetComponentAppConfig<A, U extends string, K extends string> = A extends Record<U, Record<K, any>> ? A[U][K] : object;
30
- type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U extends string = 'cms' | 'cms.prose'> = A & (U extends 'cms.prose' ? {
30
+ type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U extends string = 'cms' | 'cms.prose' | 'cms.editor'> = A & (U extends 'cms.prose' ? {
31
31
  cms?: {
32
32
  prose?: {
33
33
  [k in K]?: Partial<T>;
34
34
  };
35
35
  };
36
+ } : U extends 'cms.editor' ? {
37
+ cms?: {
38
+ editor?: {
39
+ [k in K]?: Partial<T>;
40
+ };
41
+ };
36
42
  } : {
37
- [key in Exclude<U, 'cms.prose'>]?: {
43
+ [key in Exclude<U, 'cms.prose' | 'cms.editor'>]?: {
38
44
  [k in K]?: Partial<T>;
39
45
  };
40
46
  });
@@ -45,7 +51,7 @@ type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U ex
45
51
  * @template K The key identifying the component (e.g., 'badge').
46
52
  * @template U The top-level key in AppConfig ('cms' or 'cms.prose').
47
53
  */
48
- export type ComponentConfig<T extends Record<string, any>, A extends Record<string, any>, K extends string, U extends 'cms' | 'cms.prose' = 'cms'> = {
54
+ export type ComponentConfig<T extends Record<string, any>, A extends Record<string, any>, K extends string, U extends 'cms' | 'cms.prose' | 'cms.editor' = 'cms'> = {
49
55
  AppConfig: ComponentAppConfig<T, A, K, U>;
50
56
  variants: ComponentVariants<T & GetComponentAppConfig<A, U, K>>;
51
57
  slots: ComponentSlots<T>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hywax/cms",
3
3
  "type": "module",
4
- "version": "0.0.4",
4
+ "version": "0.0.6",
5
5
  "description": "Hywax CMS. ⚠️ This package is intended for internal use only.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -57,7 +57,7 @@
57
57
  "dependencies": {
58
58
  "@dicebear/collection": "^9.2.2",
59
59
  "@dicebear/core": "^9.2.2",
60
- "@iconify-json/lucide": "1.2.50",
60
+ "@iconify-json/lucide": "1.2.51",
61
61
  "@nuxt/kit": "^3.17.5",
62
62
  "@nuxt/ui-pro": "^3.1.3",
63
63
  "@nuxtjs/mdc": "^0.17.0",
@@ -74,14 +74,14 @@
74
74
  "zod": "^3.25.67"
75
75
  },
76
76
  "devDependencies": {
77
- "@antfu/eslint-config": "^4.14.1",
77
+ "@antfu/eslint-config": "^4.15.0",
78
78
  "@commitlint/cli": "^19.8.1",
79
79
  "@commitlint/config-conventional": "^19.8.1",
80
80
  "@nuxt/devtools": "^2.5.0",
81
81
  "@nuxt/module-builder": "^1.0.1",
82
82
  "@nuxt/schema": "^3.17.5",
83
83
  "@nuxt/test-utils": "^3.19.1",
84
- "@types/node": "^22.14.0",
84
+ "@types/node": "^22.15.32",
85
85
  "@vue/test-utils": "^2.4.6",
86
86
  "changelogen": "^0.6.1",
87
87
  "eslint": "^9.29.0",
@@ -90,7 +90,7 @@
90
90
  "lint-staged": "^16.1.2",
91
91
  "nuxt": "^3.17.5",
92
92
  "typescript": "^5.8.3",
93
- "vitest": "^3.2.3",
93
+ "vitest": "^3.2.4",
94
94
  "vue-tsc": "^2.2.10"
95
95
  },
96
96
  "resolutions": {