* add pb models * api rules has updated to view public * pb setup is completed * add migrate script * add pb migrations * ignore storage * add pocketbase SDK dependency * change Tag.id and PageCardDto.id to string for PocketBase * add DocV1 content block types * add PB client singleton and PB record types * rewrite factory for PocketBase record types * rewrite api.ts for PocketBase SDK * remove unused Strapi files, add PB to config * mark Task 7 complete in plan * feat: verify build, tests, and lint pass with PocketBase API layer * move completed plan: 2026-04-06-pocketbase-api-layer.md * scaffold hudozka-writer with Vite 8, React 19, TS 5.9, Tiptap * add PocketBase client and DocV1 types to writer * add Login component for PocketBase superuser auth * add App shell with auth gate and page loader * add DocV1 <-> Tiptap serialization layer * mark Task 5 complete in writer redesign plan * add custom Tiptap nodes for DocV1 block types * add Tiptap editor with toolbar and save to PocketBase * add image picker with browse and upload * feat: verify writer build and complete integration task * move completed plan: 2026-04-06-hudozka-writer-redesign.md * add local env * rm textblock from writer * add writer editor improvements design spec * add writer editor improvements implementation plan * feat: use @tiptap/markdown for text block serialization * feat: add global markdown/rendered toggle * feat: add BlockMenu component for block type selection * feat: add hover + button for block insertion * feat: add slash commands for block insertion * feat: add interactive file block editor with FilePicker * feat: show resolved page titles in card grid block * move completed plan: 2026-04-07-writer-editor-improvements.md * writer ui improved * pages migration * spec: draft/publish workflow for hudozka-writer * spec: rename draft_doc to draft in spec * plan: writer draft/publish implementation * plan has moved * gitignores * plans upd * feat(writer): update PbPage type for draft/publish workflow * feat(writer): add save/publish/discard handlers with dirty tracking * feat(writer): add DraftBanner component * feat(writer): add Publish button and update toolbar layout * feat(writer): add published toggle and update duplicate for new schema * docs: mark manual verification steps as skipped in writer draft/publish plan * move completed plan: 20260407-writer-draft-publish.md * feat(writer): add BlockActions component for inline block menus * feat(writer): add draggable NodeViews for text blocks * feat(writer): use BlockActions in custom block NodeViews * feat(writer): replace floating BlockInsert with inline BlockActions * fix(writer): ensure all block wrappers have position: relative for BlockActions * chore: mark manual verification tasks as skipped in writer block actions plan * move completed plan: 20260408-writer-block-actions.md * writer update * refactor(writer): simplify BlockActions to always-visible delete + drag handle * feat(writer): add BlockInsert component for inserting blocks between nodes * feat(writer): redesign block sidebar with always-visible actions and insert button * move completed plan: 20260408-writer-block-actions-redesign.md * add spec: textblock container redesign for writer editor * feat(writer): add TextBlock container node definition * feat(writer): replace DraggableXxx wrappers with TextBlock container * feat(writer): update Editor extensions for TextBlock container * feat(writer): add split button to BlockActions for text blocks * feat(writer): update serialization for TextBlock container * feat(writer): update BlockMenu and SlashCommands for TextBlock * fix(writer): use Fragment.from() for replaceWith calls in BlockActions and SlashCommands * move completed plan: 20260408-textblock-container.md * add air
58 lines
1.6 KiB
JSON
58 lines
1.6 KiB
JSON
{
|
|
"name": "hudozka",
|
|
"private": true,
|
|
"version": "7.0.0",
|
|
"type": "module",
|
|
"description": "",
|
|
"scripts": {
|
|
"start": "next start",
|
|
"dev": "next dev --turbo",
|
|
"build": "next build",
|
|
"lint": "eslint .",
|
|
"format": "eslint --fix .",
|
|
"test": "vitest run"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/tmshv/hudozka"
|
|
},
|
|
"author": "Roman Timashev",
|
|
"license": "ISC",
|
|
"dependencies": {
|
|
"@radix-ui/react-navigation-menu": "^1.2.0",
|
|
"@radix-ui/react-tooltip": "^1.2.0",
|
|
"classnames": "^2.5.0",
|
|
"dangerously-set-html-content": "^1.1.0",
|
|
"date-fns": "^4.0.0",
|
|
"markdown-it": "^14.1.1",
|
|
"next": "^16.1.7",
|
|
"pocketbase": "^0.25.2",
|
|
"react": "^19.2.0",
|
|
"react-dom": "^19.2.0",
|
|
"react-icons": "^5.5.0",
|
|
"sharp": "^0.34.0",
|
|
"typograf": "^7.6.0",
|
|
"valtio": "^2.3.0"
|
|
},
|
|
"overrides": {
|
|
"dangerously-set-html-content": {
|
|
"react": "$react"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/markdown-it": "^14.1.0",
|
|
"@types/node": "^25.2.0",
|
|
"@types/react": "^19.2.0",
|
|
"@typescript-eslint/eslint-plugin": "^8.54.0",
|
|
"@typescript-eslint/parser": "^8.54.0",
|
|
"eslint": "^9.0.0",
|
|
"eslint-config-next": "^16.1.0",
|
|
"globals": "^17.3.0",
|
|
"happy-dom": "^20.5.0",
|
|
"typescript": "^5.9.0",
|
|
"vitest": "^4.0.18"
|
|
}
|
|
}
|