@morphemecms/cms 0.0.0-stage → 0.1.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.
- package/LICENSE +21 -0
- package/README.md +51 -3
- package/astro.d.mts +2 -0
- package/astro.mjs +162 -0
- package/bin/morpheme.mjs +38 -0
- package/client.d.ts +10 -0
- package/defaults/blockTexts.ts +33 -0
- package/defaults/collections.ts +774 -0
- package/defaults/colors.ts +125 -0
- package/defaults/company.ts +20 -0
- package/defaults/editor.ts +178 -0
- package/defaults/internalLinks.ts +30 -0
- package/defaults/opens.ts +18 -0
- package/defaults/popup.tsx +93 -0
- package/defaults/privacy.ts +79 -0
- package/defaults/rules.ts +450 -0
- package/defaults/schema.ts +16 -0
- package/defaults/sitedata.ts +129 -0
- package/defaults/standard.ts +106 -0
- package/defaults/standardPages.ts +87 -0
- package/defaults/texts.ts +481 -0
- package/demo/README.md +26 -0
- package/demo/public/apple-touch-icon.png +0 -0
- package/demo/public/editor/apple-touch-icon.png +0 -0
- package/demo/public/editor/icon-192.png +0 -0
- package/demo/public/editor/icon-512.png +0 -0
- package/demo/public/editor/icon-maskable-512.png +0 -0
- package/demo/public/favicon.ico +0 -0
- package/demo/public/favicon.svg +1 -0
- package/demo/public/images/uploads/2026/10/andromeda.webp +0 -0
- package/demo/public/images/uploads/2026/10/earth-from-space.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-blog.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-colors.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-home.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-page.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-pages.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-seo.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-start.webp +0 -0
- package/demo/public/images/uploads/2026/10/editor-themes.webp +0 -0
- package/demo/public/images/uploads/2026/10/moon.webp +0 -0
- package/demo/public/images/uploads/2026/10/saturn.webp +0 -0
- package/demo/public/logo.svg +1 -0
- package/demo/src/content/blog/build-a-page-from-blocks.md +19 -0
- package/demo/src/content/blog/colors-everyone-can-read.md +19 -0
- package/demo/src/content/blog/edit-your-website-from-your-phone.md +21 -0
- package/demo/src/content/blog/every-save-is-a-version.md +21 -0
- package/demo/src/content/blog/schedule-a-post.md +17 -0
- package/demo/src/content/blog/secure-from-day-one.md +17 -0
- package/demo/src/content/blog/seo-without-the-guesswork.md +23 -0
- package/demo/src/content/blog/switch-themes-without-losing-anything.md +23 -0
- package/demo/src/content/blog/the-app-store.md +21 -0
- package/demo/src/content/pages/about.md +22 -0
- package/demo/src/content/pages/app-store.md +30 -0
- package/demo/src/content/pages/blocks.md +98 -0
- package/demo/src/content/pages/blog-page.md +11 -0
- package/demo/src/content/pages/contact.md +16 -0
- package/demo/src/content/pages/get-started.md +20 -0
- package/demo/src/content/pages/home.md +26 -0
- package/demo/src/content/pages/page-not-found.md +11 -0
- package/demo/src/content/pages/privacy-policy.md +24 -0
- package/demo/src/data/blocks.json +25 -0
- package/demo/src/data/booking.json +6 -0
- package/demo/src/data/categories/apps.json +6 -0
- package/demo/src/data/categories/design.json +6 -0
- package/demo/src/data/categories/editing.json +6 -0
- package/demo/src/data/categories/security.json +6 -0
- package/demo/src/data/categories/seo.json +6 -0
- package/demo/src/data/colors.json +75 -0
- package/demo/src/data/contact.json +8 -0
- package/demo/src/data/cookies.json +21 -0
- package/demo/src/data/footer.json +27 -0
- package/demo/src/data/menu.json +35 -0
- package/demo/src/data/mobile-menu.json +25 -0
- package/demo/src/data/popups/booking-bar.json +13 -0
- package/demo/src/data/popups/try-the-editor.json +16 -0
- package/demo/src/data/standard-pages.json +8 -0
- package/demo/src/data/testimonials/sample-bakery.json +10 -0
- package/demo/src/data/testimonials/sample-clinic.json +10 -0
- package/demo/src/data/testimonials/sample-studio.json +10 -0
- package/demo/src/site/colors.ts +11 -0
- package/demo/src/site/config.ts +19 -0
- package/icons/lucide/LICENSE +43 -0
- package/icons/lucide/LICENSE-material-design-icons +20 -0
- package/icons/lucide/address-book.svg +1 -0
- package/icons/lucide/app-window.svg +1 -0
- package/icons/lucide/arrow-counter-clockwise.svg +1 -0
- package/icons/lucide/arrow-down.svg +1 -0
- package/icons/lucide/arrow-left.svg +1 -0
- package/icons/lucide/arrow-right.svg +1 -0
- package/icons/lucide/arrow-square-out.svg +1 -0
- package/icons/lucide/arrow-u-up-left.svg +1 -0
- package/icons/lucide/arrow-u-up-right.svg +1 -0
- package/icons/lucide/arrow-up-right.svg +1 -0
- package/icons/lucide/arrow-up.svg +1 -0
- package/icons/lucide/arrows-down-up.svg +1 -0
- package/icons/lucide/arrows-in-line-horizontal.svg +1 -0
- package/icons/lucide/arrows-out-line-horizontal.svg +1 -0
- package/icons/lucide/article.svg +1 -0
- package/icons/lucide/bank.svg +1 -0
- package/icons/lucide/bell.svg +1 -0
- package/icons/lucide/bicycle.svg +1 -0
- package/icons/lucide/binoculars.svg +1 -0
- package/icons/lucide/book-open-text.svg +1 -0
- package/icons/lucide/book-open.svg +1 -0
- package/icons/lucide/browser.svg +1 -0
- package/icons/lucide/buildings.svg +1 -0
- package/icons/lucide/bus.svg +1 -0
- package/icons/lucide/calendar-blank.svg +1 -0
- package/icons/lucide/calendar-check.svg +1 -0
- package/icons/lucide/car.svg +1 -0
- package/icons/lucide/cards.svg +1 -0
- package/icons/lucide/caret-down.svg +1 -0
- package/icons/lucide/caret-left.svg +1 -0
- package/icons/lucide/caret-right.svg +1 -0
- package/icons/lucide/caret-up.svg +1 -0
- package/icons/lucide/certificate.svg +1 -0
- package/icons/lucide/chart-line-up.svg +1 -0
- package/icons/lucide/chats.svg +1 -0
- package/icons/lucide/check-circle.svg +1 -0
- package/icons/lucide/check.svg +1 -0
- package/icons/lucide/circle-half.svg +1 -0
- package/icons/lucide/circle.svg +1 -0
- package/icons/lucide/clock-counter-clockwise.svg +1 -0
- package/icons/lucide/clock.svg +1 -0
- package/icons/lucide/code.svg +1 -0
- package/icons/lucide/coffee.svg +1 -0
- package/icons/lucide/columns.svg +1 -0
- package/icons/lucide/cookie.svg +1 -0
- package/icons/lucide/copy.svg +1 -0
- package/icons/lucide/credit-card.svg +1 -0
- package/icons/lucide/currency-circle-dollar.svg +1 -0
- package/icons/lucide/cursor-click.svg +1 -0
- package/icons/lucide/database.svg +1 -0
- package/icons/lucide/desktop.svg +1 -0
- package/icons/lucide/device-mobile.svg +1 -0
- package/icons/lucide/door-open.svg +1 -0
- package/icons/lucide/download-simple.svg +1 -0
- package/icons/lucide/envelope-simple.svg +1 -0
- package/icons/lucide/eye-slash.svg +1 -0
- package/icons/lucide/eye.svg +1 -0
- package/icons/lucide/file-pdf.svg +1 -0
- package/icons/lucide/file-text.svg +1 -0
- package/icons/lucide/file-video.svg +1 -0
- package/icons/lucide/file-zip.svg +1 -0
- package/icons/lucide/flower-lotus.svg +1 -0
- package/icons/lucide/folder-simple.svg +1 -0
- package/icons/lucide/funnel.svg +1 -0
- package/icons/lucide/gauge.svg +1 -0
- package/icons/lucide/gear.svg +1 -0
- package/icons/lucide/github-logo.svg +1 -0
- package/icons/lucide/globe.svg +1 -0
- package/icons/lucide/google-logo.svg +1 -0
- package/icons/lucide/graduation-cap.svg +1 -0
- package/icons/lucide/hammer.svg +1 -0
- package/icons/lucide/hand-heart.svg +1 -0
- package/icons/lucide/handshake.svg +1 -0
- package/icons/lucide/hard-drives.svg +1 -0
- package/icons/lucide/heart.svg +1 -0
- package/icons/lucide/house.svg +1 -0
- package/icons/lucide/image-square.svg +1 -0
- package/icons/lucide/image.svg +1 -0
- package/icons/lucide/info.svg +1 -0
- package/icons/lucide/keyboard.svg +1 -0
- package/icons/lucide/leaf.svg +1 -0
- package/icons/lucide/lifebuoy.svg +1 -0
- package/icons/lucide/lightbulb.svg +1 -0
- package/icons/lucide/link-break.svg +1 -0
- package/icons/lucide/link-simple.svg +1 -0
- package/icons/lucide/list-bullets.svg +1 -0
- package/icons/lucide/list-checks.svg +1 -0
- package/icons/lucide/list-numbers.svg +1 -0
- package/icons/lucide/list.svg +1 -0
- package/icons/lucide/lock-simple-open.svg +1 -0
- package/icons/lucide/lock-simple.svg +1 -0
- package/icons/lucide/magnifying-glass.svg +1 -0
- package/icons/lucide/map-pin.svg +1 -0
- package/icons/lucide/map-trifold.svg +1 -0
- package/icons/lucide/medal.svg +1 -0
- package/icons/lucide/megaphone.svg +1 -0
- package/icons/lucide/minus.svg +1 -0
- package/icons/lucide/moon.svg +1 -0
- package/icons/lucide/newspaper.svg +1 -0
- package/icons/lucide/pack.json +23 -0
- package/icons/lucide/paint-brush-broad.svg +1 -0
- package/icons/lucide/palette.svg +1 -0
- package/icons/lucide/paper-plane-tilt.svg +1 -0
- package/icons/lucide/pencil-simple.svg +1 -0
- package/icons/lucide/phone.svg +1 -0
- package/icons/lucide/play-fill.svg +1 -0
- package/icons/lucide/plus.svg +1 -0
- package/icons/lucide/prohibit.svg +1 -0
- package/icons/lucide/puzzle-piece.svg +1 -0
- package/icons/lucide/question.svg +1 -0
- package/icons/lucide/quotes.svg +1 -0
- package/icons/lucide/rows.svg +1 -0
- package/icons/lucide/ruler.svg +1 -0
- package/icons/lucide/scan.svg +1 -0
- package/icons/lucide/shapes.svg +1 -0
- package/icons/lucide/share-network.svg +1 -0
- package/icons/lucide/shield-check.svg +1 -0
- package/icons/lucide/sidebar-simple.svg +1 -0
- package/icons/lucide/sign-out.svg +1 -0
- package/icons/lucide/signpost.svg +1 -0
- package/icons/lucide/sliders-horizontal.svg +1 -0
- package/icons/lucide/smiley.svg +1 -0
- package/icons/lucide/sparkle.svg +1 -0
- package/icons/lucide/square-half-bottom.svg +1 -0
- package/icons/lucide/square.svg +1 -0
- package/icons/lucide/squares-four.svg +1 -0
- package/icons/lucide/sticker.svg +1 -0
- package/icons/lucide/storefront.svg +1 -0
- package/icons/lucide/sun.svg +1 -0
- package/icons/lucide/swatches.svg +1 -0
- package/icons/lucide/tag.svg +1 -0
- package/icons/lucide/text-aa.svg +1 -0
- package/icons/lucide/text-align-left.svg +1 -0
- package/icons/lucide/text-b.svg +1 -0
- package/icons/lucide/text-h-one.svg +1 -0
- package/icons/lucide/text-h-three.svg +1 -0
- package/icons/lucide/text-h-two.svg +1 -0
- package/icons/lucide/text-italic.svg +1 -0
- package/icons/lucide/text-t.svg +1 -0
- package/icons/lucide/ticket.svg +1 -0
- package/icons/lucide/toggle-right.svg +1 -0
- package/icons/lucide/train.svg +1 -0
- package/icons/lucide/trash.svg +1 -0
- package/icons/lucide/upload-simple.svg +1 -0
- package/icons/lucide/user-circle.svg +1 -0
- package/icons/lucide/user.svg +1 -0
- package/icons/lucide/users-three.svg +1 -0
- package/icons/lucide/users.svg +1 -0
- package/icons/lucide/video-camera.svg +1 -0
- package/icons/lucide/warning-circle.svg +1 -0
- package/icons/lucide/warning.svg +1 -0
- package/icons/lucide/wave-sine.svg +1 -0
- package/icons/lucide/wheelchair.svg +1 -0
- package/icons/lucide/wrench.svg +1 -0
- package/icons/lucide/x.svg +1 -0
- package/icons/material-symbols/LICENSE +201 -0
- package/icons/material-symbols/LICENSE-material-design-icons +20 -0
- package/icons/material-symbols/address-book.svg +1 -0
- package/icons/material-symbols/app-window.svg +1 -0
- package/icons/material-symbols/arrow-counter-clockwise.svg +1 -0
- package/icons/material-symbols/arrow-down.svg +1 -0
- package/icons/material-symbols/arrow-left.svg +1 -0
- package/icons/material-symbols/arrow-right.svg +1 -0
- package/icons/material-symbols/arrow-square-out.svg +1 -0
- package/icons/material-symbols/arrow-u-up-left.svg +1 -0
- package/icons/material-symbols/arrow-u-up-right.svg +1 -0
- package/icons/material-symbols/arrow-up-right.svg +1 -0
- package/icons/material-symbols/arrow-up.svg +1 -0
- package/icons/material-symbols/arrows-down-up.svg +1 -0
- package/icons/material-symbols/arrows-in-line-horizontal.svg +1 -0
- package/icons/material-symbols/arrows-out-line-horizontal.svg +1 -0
- package/icons/material-symbols/article.svg +1 -0
- package/icons/material-symbols/bank.svg +1 -0
- package/icons/material-symbols/bell.svg +1 -0
- package/icons/material-symbols/bicycle.svg +1 -0
- package/icons/material-symbols/binoculars.svg +1 -0
- package/icons/material-symbols/book-open-text.svg +1 -0
- package/icons/material-symbols/book-open.svg +1 -0
- package/icons/material-symbols/browser.svg +1 -0
- package/icons/material-symbols/buildings.svg +1 -0
- package/icons/material-symbols/bus.svg +1 -0
- package/icons/material-symbols/calendar-blank.svg +1 -0
- package/icons/material-symbols/calendar-check.svg +1 -0
- package/icons/material-symbols/car.svg +1 -0
- package/icons/material-symbols/cards.svg +1 -0
- package/icons/material-symbols/caret-down.svg +1 -0
- package/icons/material-symbols/caret-left.svg +1 -0
- package/icons/material-symbols/caret-right.svg +1 -0
- package/icons/material-symbols/caret-up.svg +1 -0
- package/icons/material-symbols/certificate.svg +1 -0
- package/icons/material-symbols/chart-line-up.svg +1 -0
- package/icons/material-symbols/chats.svg +1 -0
- package/icons/material-symbols/check-circle.svg +1 -0
- package/icons/material-symbols/check.svg +1 -0
- package/icons/material-symbols/circle-half.svg +1 -0
- package/icons/material-symbols/circle.svg +1 -0
- package/icons/material-symbols/clock-counter-clockwise.svg +1 -0
- package/icons/material-symbols/clock.svg +1 -0
- package/icons/material-symbols/code.svg +1 -0
- package/icons/material-symbols/coffee.svg +1 -0
- package/icons/material-symbols/columns.svg +1 -0
- package/icons/material-symbols/cookie.svg +1 -0
- package/icons/material-symbols/copy.svg +1 -0
- package/icons/material-symbols/credit-card.svg +1 -0
- package/icons/material-symbols/currency-circle-dollar.svg +1 -0
- package/icons/material-symbols/cursor-click.svg +1 -0
- package/icons/material-symbols/database.svg +1 -0
- package/icons/material-symbols/desktop.svg +1 -0
- package/icons/material-symbols/device-mobile.svg +1 -0
- package/icons/material-symbols/door-open.svg +1 -0
- package/icons/material-symbols/download-simple.svg +1 -0
- package/icons/material-symbols/envelope-simple.svg +1 -0
- package/icons/material-symbols/eye-slash.svg +1 -0
- package/icons/material-symbols/eye.svg +1 -0
- package/icons/material-symbols/file-pdf.svg +1 -0
- package/icons/material-symbols/file-text.svg +1 -0
- package/icons/material-symbols/file-video.svg +1 -0
- package/icons/material-symbols/file-zip.svg +1 -0
- package/icons/material-symbols/flower-lotus.svg +1 -0
- package/icons/material-symbols/folder-simple.svg +1 -0
- package/icons/material-symbols/funnel.svg +1 -0
- package/icons/material-symbols/gauge.svg +1 -0
- package/icons/material-symbols/gear.svg +1 -0
- package/icons/material-symbols/github-logo.svg +1 -0
- package/icons/material-symbols/globe.svg +1 -0
- package/icons/material-symbols/google-logo.svg +1 -0
- package/icons/material-symbols/graduation-cap.svg +1 -0
- package/icons/material-symbols/hammer.svg +1 -0
- package/icons/material-symbols/hand-heart.svg +1 -0
- package/icons/material-symbols/handshake.svg +1 -0
- package/icons/material-symbols/hard-drives.svg +1 -0
- package/icons/material-symbols/heart.svg +1 -0
- package/icons/material-symbols/house.svg +1 -0
- package/icons/material-symbols/image-square.svg +1 -0
- package/icons/material-symbols/image.svg +1 -0
- package/icons/material-symbols/info.svg +1 -0
- package/icons/material-symbols/keyboard.svg +1 -0
- package/icons/material-symbols/leaf.svg +1 -0
- package/icons/material-symbols/lifebuoy.svg +1 -0
- package/icons/material-symbols/lightbulb.svg +1 -0
- package/icons/material-symbols/link-break.svg +1 -0
- package/icons/material-symbols/link-simple.svg +1 -0
- package/icons/material-symbols/list-bullets.svg +1 -0
- package/icons/material-symbols/list-checks.svg +1 -0
- package/icons/material-symbols/list-numbers.svg +1 -0
- package/icons/material-symbols/list.svg +1 -0
- package/icons/material-symbols/lock-simple-open.svg +1 -0
- package/icons/material-symbols/lock-simple.svg +1 -0
- package/icons/material-symbols/magnifying-glass.svg +1 -0
- package/icons/material-symbols/map-pin.svg +1 -0
- package/icons/material-symbols/map-trifold.svg +1 -0
- package/icons/material-symbols/medal.svg +1 -0
- package/icons/material-symbols/megaphone.svg +1 -0
- package/icons/material-symbols/minus.svg +1 -0
- package/icons/material-symbols/moon.svg +1 -0
- package/icons/material-symbols/newspaper.svg +1 -0
- package/icons/material-symbols/pack.json +29 -0
- package/icons/material-symbols/paint-brush-broad.svg +1 -0
- package/icons/material-symbols/palette.svg +1 -0
- package/icons/material-symbols/paper-plane-tilt.svg +1 -0
- package/icons/material-symbols/pencil-simple.svg +1 -0
- package/icons/material-symbols/phone.svg +1 -0
- package/icons/material-symbols/play-fill.svg +1 -0
- package/icons/material-symbols/plus.svg +1 -0
- package/icons/material-symbols/prohibit.svg +1 -0
- package/icons/material-symbols/puzzle-piece.svg +1 -0
- package/icons/material-symbols/question.svg +1 -0
- package/icons/material-symbols/quotes.svg +1 -0
- package/icons/material-symbols/rows.svg +1 -0
- package/icons/material-symbols/ruler.svg +1 -0
- package/icons/material-symbols/scan.svg +1 -0
- package/icons/material-symbols/shapes.svg +1 -0
- package/icons/material-symbols/share-network.svg +1 -0
- package/icons/material-symbols/shield-check.svg +1 -0
- package/icons/material-symbols/sidebar-simple.svg +1 -0
- package/icons/material-symbols/sign-out.svg +1 -0
- package/icons/material-symbols/signpost.svg +1 -0
- package/icons/material-symbols/sliders-horizontal.svg +1 -0
- package/icons/material-symbols/smiley.svg +1 -0
- package/icons/material-symbols/sparkle.svg +1 -0
- package/icons/material-symbols/square-half-bottom.svg +1 -0
- package/icons/material-symbols/square.svg +1 -0
- package/icons/material-symbols/squares-four.svg +1 -0
- package/icons/material-symbols/sticker.svg +1 -0
- package/icons/material-symbols/storefront.svg +1 -0
- package/icons/material-symbols/sun.svg +1 -0
- package/icons/material-symbols/swatches.svg +1 -0
- package/icons/material-symbols/tag.svg +1 -0
- package/icons/material-symbols/text-aa.svg +1 -0
- package/icons/material-symbols/text-align-left.svg +1 -0
- package/icons/material-symbols/text-b.svg +1 -0
- package/icons/material-symbols/text-h-one.svg +1 -0
- package/icons/material-symbols/text-h-three.svg +1 -0
- package/icons/material-symbols/text-h-two.svg +1 -0
- package/icons/material-symbols/text-italic.svg +1 -0
- package/icons/material-symbols/text-t.svg +1 -0
- package/icons/material-symbols/ticket.svg +1 -0
- package/icons/material-symbols/toggle-right.svg +1 -0
- package/icons/material-symbols/train.svg +1 -0
- package/icons/material-symbols/trash.svg +1 -0
- package/icons/material-symbols/upload-simple.svg +1 -0
- package/icons/material-symbols/user-circle.svg +1 -0
- package/icons/material-symbols/user.svg +1 -0
- package/icons/material-symbols/users-three.svg +1 -0
- package/icons/material-symbols/users.svg +1 -0
- package/icons/material-symbols/video-camera.svg +1 -0
- package/icons/material-symbols/warning-circle.svg +1 -0
- package/icons/material-symbols/warning.svg +1 -0
- package/icons/material-symbols/wave-sine.svg +1 -0
- package/icons/material-symbols/wheelchair.svg +1 -0
- package/icons/material-symbols/wrench.svg +1 -0
- package/icons/material-symbols/x.svg +1 -0
- package/icons/phosphor/LICENSE +21 -0
- package/icons/phosphor/address-book.svg +1 -0
- package/icons/phosphor/app-window.svg +1 -0
- package/icons/phosphor/arrow-counter-clockwise.svg +1 -0
- package/icons/phosphor/arrow-down.svg +1 -0
- package/icons/phosphor/arrow-left.svg +1 -0
- package/icons/phosphor/arrow-right.svg +1 -0
- package/icons/phosphor/arrow-square-out.svg +1 -0
- package/icons/phosphor/arrow-u-up-left.svg +1 -0
- package/icons/phosphor/arrow-u-up-right.svg +1 -0
- package/icons/phosphor/arrow-up-right.svg +1 -0
- package/icons/phosphor/arrow-up.svg +1 -0
- package/icons/phosphor/arrows-down-up.svg +1 -0
- package/icons/phosphor/arrows-in-line-horizontal.svg +1 -0
- package/icons/phosphor/arrows-out-line-horizontal.svg +1 -0
- package/icons/phosphor/article.svg +1 -0
- package/icons/phosphor/bank.svg +1 -0
- package/icons/phosphor/bell.svg +1 -0
- package/icons/phosphor/bicycle.svg +1 -0
- package/icons/phosphor/binoculars.svg +1 -0
- package/icons/phosphor/book-open-text.svg +1 -0
- package/icons/phosphor/book-open.svg +1 -0
- package/icons/phosphor/browser.svg +1 -0
- package/icons/phosphor/buildings.svg +1 -0
- package/icons/phosphor/bus.svg +1 -0
- package/icons/phosphor/calendar-blank.svg +1 -0
- package/icons/phosphor/calendar-check.svg +1 -0
- package/icons/phosphor/car.svg +1 -0
- package/icons/phosphor/cards.svg +1 -0
- package/icons/phosphor/caret-down.svg +1 -0
- package/icons/phosphor/caret-left.svg +1 -0
- package/icons/phosphor/caret-right.svg +1 -0
- package/icons/phosphor/caret-up.svg +1 -0
- package/icons/phosphor/certificate.svg +1 -0
- package/icons/phosphor/chart-line-up.svg +1 -0
- package/icons/phosphor/chats.svg +1 -0
- package/icons/phosphor/check-circle.svg +1 -0
- package/icons/phosphor/check.svg +1 -0
- package/icons/phosphor/circle-half.svg +1 -0
- package/icons/phosphor/circle.svg +1 -0
- package/icons/phosphor/clock-counter-clockwise.svg +1 -0
- package/icons/phosphor/clock.svg +1 -0
- package/icons/phosphor/code.svg +1 -0
- package/icons/phosphor/coffee.svg +1 -0
- package/icons/phosphor/columns.svg +1 -0
- package/icons/phosphor/cookie.svg +1 -0
- package/icons/phosphor/copy.svg +1 -0
- package/icons/phosphor/credit-card.svg +1 -0
- package/icons/phosphor/currency-circle-dollar.svg +1 -0
- package/icons/phosphor/cursor-click.svg +1 -0
- package/icons/phosphor/database.svg +1 -0
- package/icons/phosphor/desktop.svg +1 -0
- package/icons/phosphor/device-mobile.svg +1 -0
- package/icons/phosphor/door-open.svg +1 -0
- package/icons/phosphor/download-simple.svg +1 -0
- package/icons/phosphor/envelope-simple.svg +1 -0
- package/icons/phosphor/eye-slash.svg +1 -0
- package/icons/phosphor/eye.svg +1 -0
- package/icons/phosphor/file-pdf.svg +1 -0
- package/icons/phosphor/file-text.svg +1 -0
- package/icons/phosphor/file-video.svg +1 -0
- package/icons/phosphor/file-zip.svg +1 -0
- package/icons/phosphor/flower-lotus.svg +1 -0
- package/icons/phosphor/folder-simple.svg +1 -0
- package/icons/phosphor/funnel.svg +1 -0
- package/icons/phosphor/gauge.svg +1 -0
- package/icons/phosphor/gear.svg +1 -0
- package/icons/phosphor/github-logo.svg +1 -0
- package/icons/phosphor/globe.svg +1 -0
- package/icons/phosphor/google-logo.svg +1 -0
- package/icons/phosphor/graduation-cap.svg +1 -0
- package/icons/phosphor/hammer.svg +1 -0
- package/icons/phosphor/hand-heart.svg +1 -0
- package/icons/phosphor/handshake.svg +1 -0
- package/icons/phosphor/hard-drives.svg +1 -0
- package/icons/phosphor/heart.svg +1 -0
- package/icons/phosphor/house.svg +1 -0
- package/icons/phosphor/image-square.svg +1 -0
- package/icons/phosphor/image.svg +1 -0
- package/icons/phosphor/info.svg +1 -0
- package/icons/phosphor/keyboard.svg +1 -0
- package/icons/phosphor/leaf.svg +1 -0
- package/icons/phosphor/lifebuoy.svg +1 -0
- package/icons/phosphor/lightbulb.svg +1 -0
- package/icons/phosphor/link-break.svg +1 -0
- package/icons/phosphor/link-simple.svg +1 -0
- package/icons/phosphor/list-bullets.svg +1 -0
- package/icons/phosphor/list-checks.svg +1 -0
- package/icons/phosphor/list-numbers.svg +1 -0
- package/icons/phosphor/list.svg +1 -0
- package/icons/phosphor/lock-simple-open.svg +1 -0
- package/icons/phosphor/lock-simple.svg +1 -0
- package/icons/phosphor/magnifying-glass.svg +1 -0
- package/icons/phosphor/map-pin.svg +1 -0
- package/icons/phosphor/map-trifold.svg +1 -0
- package/icons/phosphor/medal.svg +1 -0
- package/icons/phosphor/megaphone.svg +1 -0
- package/icons/phosphor/minus.svg +1 -0
- package/icons/phosphor/moon.svg +1 -0
- package/icons/phosphor/newspaper.svg +1 -0
- package/icons/phosphor/pack.json +8 -0
- package/icons/phosphor/paint-brush-broad.svg +1 -0
- package/icons/phosphor/palette.svg +1 -0
- package/icons/phosphor/paper-plane-tilt.svg +1 -0
- package/icons/phosphor/pencil-simple.svg +1 -0
- package/icons/phosphor/phone.svg +1 -0
- package/icons/phosphor/play-fill.svg +1 -0
- package/icons/phosphor/plus.svg +1 -0
- package/icons/phosphor/prohibit.svg +1 -0
- package/icons/phosphor/puzzle-piece.svg +1 -0
- package/icons/phosphor/question.svg +1 -0
- package/icons/phosphor/quotes.svg +1 -0
- package/icons/phosphor/rows.svg +1 -0
- package/icons/phosphor/ruler.svg +1 -0
- package/icons/phosphor/scan.svg +1 -0
- package/icons/phosphor/shapes.svg +1 -0
- package/icons/phosphor/share-network.svg +1 -0
- package/icons/phosphor/shield-check.svg +1 -0
- package/icons/phosphor/sidebar-simple.svg +1 -0
- package/icons/phosphor/sign-out.svg +1 -0
- package/icons/phosphor/signpost.svg +1 -0
- package/icons/phosphor/sliders-horizontal.svg +1 -0
- package/icons/phosphor/smiley.svg +1 -0
- package/icons/phosphor/sparkle.svg +1 -0
- package/icons/phosphor/square-half-bottom.svg +1 -0
- package/icons/phosphor/square.svg +1 -0
- package/icons/phosphor/squares-four.svg +1 -0
- package/icons/phosphor/sticker.svg +1 -0
- package/icons/phosphor/storefront.svg +1 -0
- package/icons/phosphor/sun.svg +1 -0
- package/icons/phosphor/swatches.svg +1 -0
- package/icons/phosphor/tag.svg +1 -0
- package/icons/phosphor/text-aa.svg +1 -0
- package/icons/phosphor/text-align-left.svg +1 -0
- package/icons/phosphor/text-b.svg +1 -0
- package/icons/phosphor/text-h-one.svg +1 -0
- package/icons/phosphor/text-h-three.svg +1 -0
- package/icons/phosphor/text-h-two.svg +1 -0
- package/icons/phosphor/text-italic.svg +1 -0
- package/icons/phosphor/text-t.svg +1 -0
- package/icons/phosphor/ticket.svg +1 -0
- package/icons/phosphor/toggle-right.svg +1 -0
- package/icons/phosphor/train.svg +1 -0
- package/icons/phosphor/trash.svg +1 -0
- package/icons/phosphor/upload-simple.svg +1 -0
- package/icons/phosphor/user-circle.svg +1 -0
- package/icons/phosphor/user.svg +1 -0
- package/icons/phosphor/users-three.svg +1 -0
- package/icons/phosphor/users.svg +1 -0
- package/icons/phosphor/video-camera.svg +1 -0
- package/icons/phosphor/warning-circle.svg +1 -0
- package/icons/phosphor/warning.svg +1 -0
- package/icons/phosphor/wave-sine.svg +1 -0
- package/icons/phosphor/wheelchair.svg +1 -0
- package/icons/phosphor/wrench.svg +1 -0
- package/icons/phosphor/x.svg +1 -0
- package/lib/apps.d.mts +28 -0
- package/lib/apps.mjs +139 -0
- package/lib/blocks.d.mts +23 -0
- package/lib/blocks.mjs +90 -0
- package/lib/colors.ts +86 -0
- package/lib/contactBar.ts +18 -0
- package/lib/cookieCategories.d.mts +17 -0
- package/lib/cookieCategories.mjs +28 -0
- package/lib/crop.d.mts +34 -0
- package/lib/crop.mjs +83 -0
- package/lib/csp.d.mts +22 -0
- package/lib/csp.mjs +130 -0
- package/lib/cspSources.d.mts +24 -0
- package/lib/cspSources.mjs +60 -0
- package/lib/dynamic-colors.ts +426 -0
- package/lib/git.d.mts +24 -0
- package/lib/git.mjs +64 -0
- package/lib/hooks.ts +51 -0
- package/lib/inline.ts +20 -0
- package/lib/license-texts/Apache-2.0.txt +191 -0
- package/lib/license-texts/BSD-2-Clause.txt +24 -0
- package/lib/license-texts/BSD-3-Clause.txt +28 -0
- package/lib/license-texts/ISC.txt +15 -0
- package/lib/license-texts/MIT.txt +21 -0
- package/lib/licenses.d.mts +190 -0
- package/lib/licenses.mjs +683 -0
- package/lib/markdown.ts +42 -0
- package/lib/motion-schemes.d.mts +2 -0
- package/lib/motion-schemes.mjs +5 -0
- package/lib/motion.ts +131 -0
- package/lib/notice.d.mts +3 -0
- package/lib/notice.mjs +34 -0
- package/lib/scheduled.d.mts +15 -0
- package/lib/scheduled.mjs +37 -0
- package/lib/snackbar.ts +149 -0
- package/lib/status.d.mts +7 -0
- package/lib/status.mjs +18 -0
- package/lib/svg.d.mts +22 -0
- package/lib/svg.mjs +231 -0
- package/lib/text-colors.d.mts +11 -0
- package/lib/text-colors.mjs +43 -0
- package/lib/video-id.d.mts +14 -0
- package/lib/video-id.mjs +72 -0
- package/lib/video.d.mts +20 -0
- package/lib/video.mjs +91 -0
- package/package.json +131 -6
- package/pages/404.astro +10 -0
- package/pages/[...slug].astro +51 -0
- package/pages/_headers.txt +31 -0
- package/pages/blog/index.astro +10 -0
- package/pages/blog/kategori/[category].astro +18 -0
- package/pages/editor/code-images.json.js +25 -0
- package/pages/editor/index.astro +75 -0
- package/pages/editor/manifest.webmanifest.js +23 -0
- package/pages/editor/sw.js +33 -0
- package/pages/editor/sw.js.js +4 -0
- package/pages/editor/thumbnails.json.js +21 -0
- package/pages/editor/version.json.js +22 -0
- package/pages/headers.js +4 -0
- package/pages/index.astro +10 -0
- package/pages/ny.astro +6 -0
- package/pages/robots.txt.js +3 -0
- package/pages/rss.xml.js +20 -0
- package/scripts/app-screenshots.mjs +164 -0
- package/scripts/app-workers.mjs +6 -0
- package/scripts/bin.mjs +12 -0
- package/scripts/built-site.mjs +99 -0
- package/scripts/check-consent.mjs +113 -0
- package/scripts/check-content.mjs +149 -0
- package/scripts/check-demo.mjs +24 -0
- package/scripts/check-themes.mjs +45 -0
- package/scripts/check-worker.mjs +569 -0
- package/scripts/compare-html.mjs +81 -0
- package/scripts/demo-site.mjs +42 -0
- package/scripts/editor-icons.mjs +56 -0
- package/scripts/editor-roundtrip.mjs +134 -0
- package/scripts/editor-screens.mjs +101 -0
- package/scripts/git-env.mjs +9 -0
- package/scripts/icon-packs.mjs +151 -0
- package/scripts/link-counts.mjs +22 -0
- package/scripts/page-colors.mjs +42 -0
- package/scripts/releases.d.mts +10 -0
- package/scripts/releases.mjs +80 -0
- package/scripts/responsive-images.mjs +94 -0
- package/scripts/scheduled-list.mjs +15 -0
- package/scripts/theme-screenshots.mjs +88 -0
- package/scripts/types.mjs +21 -0
- package/scripts/video-thumbnails.mjs +89 -0
- package/scripts/worker-modules.mjs +34 -0
- package/site/appCookies.d.mts +9 -0
- package/site/appCookies.mjs +74 -0
- package/site/apps.ts +21 -0
- package/site/autolinks.d.mts +11 -0
- package/site/autolinks.mjs +200 -0
- package/site/blockScripts.ts +31 -0
- package/site/categories.ts +16 -0
- package/site/consent.ts +26 -0
- package/site/content.config.ts +84 -0
- package/site/content.ts +104 -0
- package/site/cookieList.ts +17 -0
- package/site/defineSite.d.mts +142 -0
- package/site/defineSite.mjs +136 -0
- package/site/directives/interact.d.mts +2 -0
- package/site/directives/interact.mjs +31 -0
- package/site/editor-version.d.mts +1 -0
- package/site/editor-version.mjs +26 -0
- package/site/fill.ts +13 -0
- package/site/format.ts +11 -0
- package/site/home.ts +66 -0
- package/site/iconPacks.d.mts +20 -0
- package/site/iconPacks.mjs +43 -0
- package/site/icons.d.mts +693 -0
- package/site/icons.mjs +605 -0
- package/site/images.d.mts +43 -0
- package/site/images.mjs +157 -0
- package/site/motion.ts +13 -0
- package/site/noindex.d.mts +6 -0
- package/site/noindex.mjs +21 -0
- package/site/pageColors.ts +110 -0
- package/site/popups.ts +98 -0
- package/site/schema.ts +189 -0
- package/site/sections.ts +3 -0
- package/site/seo.ts +28 -0
- package/site/site.ts +76 -0
- package/site/siteConfig.d.mts +1 -0
- package/site/siteConfig.mjs +8 -0
- package/site/siteCsp.d.mts +10 -0
- package/site/siteCsp.mjs +75 -0
- package/site/siteModules.d.mts +7 -0
- package/site/siteModules.mjs +27 -0
- package/site/standardPages.ts +59 -0
- package/site/testimonials.ts +48 -0
- package/site/text.ts +43 -0
- package/site/theme.d.mts +83 -0
- package/site/theme.mjs +472 -0
- package/site/tracking.client.ts +225 -0
- package/site/tracking.ts +9 -0
- package/src/ActionParts.tsx +205 -0
- package/src/Advanced.tsx +152 -0
- package/src/App.tsx +904 -0
- package/src/AppList.tsx +1345 -0
- package/src/BlockDialog.tsx +360 -0
- package/src/BlockParts.tsx +652 -0
- package/src/BlockSettings.tsx +533 -0
- package/src/BrandForm.tsx +164 -0
- package/src/Colors.tsx +476 -0
- package/src/CommunicationParts.tsx +199 -0
- package/src/CompanyForm.tsx +209 -0
- package/src/Consents.tsx +175 -0
- package/src/ContainmentParts.tsx +185 -0
- package/src/Crop.tsx +152 -0
- package/src/DataForm.tsx +434 -0
- package/src/Deleted.tsx +177 -0
- package/src/EntryForm.tsx +740 -0
- package/src/FileView.tsx +30 -0
- package/src/FormFrame.tsx +237 -0
- package/src/Keywords.tsx +225 -0
- package/src/Library.tsx +1563 -0
- package/src/Licenses.tsx +336 -0
- package/src/LinkSheet.tsx +138 -0
- package/src/MarkdownEditor.tsx +1075 -0
- package/src/Media.tsx +677 -0
- package/src/NavigationParts.tsx +350 -0
- package/src/NavigationRestParts.tsx +247 -0
- package/src/Notifications.tsx +59 -0
- package/src/PagePicker.tsx +136 -0
- package/src/Parts.tsx +991 -0
- package/src/PartsShown.tsx +168 -0
- package/src/PickerParts.tsx +183 -0
- package/src/Redirects.tsx +450 -0
- package/src/Screen.tsx +184 -0
- package/src/SectionsField.tsx +65 -0
- package/src/SelectionParts.tsx +134 -0
- package/src/SeoScores.tsx +184 -0
- package/src/Sheet.tsx +35 -0
- package/src/ThemeStore.tsx +376 -0
- package/src/Tokens.tsx +346 -0
- package/src/Versions.tsx +214 -0
- package/src/addresses.ts +75 -0
- package/src/allIcons.ts +7 -0
- package/src/appFiles.ts +29 -0
- package/src/apps.ts +281 -0
- package/src/ask.tsx +123 -0
- package/src/blocks.ts +251 -0
- package/src/brand.ts +153 -0
- package/src/cache.ts +42 -0
- package/src/check.ts +285 -0
- package/src/checkSite.ts +256 -0
- package/src/consents.ts +26 -0
- package/src/cookieList.ts +70 -0
- package/src/countries.ts +59 -0
- package/src/deploy.ts +155 -0
- package/src/editor.css +602 -0
- package/src/examples.ts +85 -0
- package/src/fields.tsx +942 -0
- package/src/frontmatter.d.mts +6 -0
- package/src/frontmatter.mjs +42 -0
- package/src/github.ts +376 -0
- package/src/i18n/da-DK/advanced.ts +28 -0
- package/src/i18n/da-DK/app.ts +71 -0
- package/src/i18n/da-DK/apps.ts +90 -0
- package/src/i18n/da-DK/blockSettings.ts +38 -0
- package/src/i18n/da-DK/blocks.ts +408 -0
- package/src/i18n/da-DK/check.ts +25 -0
- package/src/i18n/da-DK/colors.ts +64 -0
- package/src/i18n/da-DK/common.ts +118 -0
- package/src/i18n/da-DK/company.ts +24 -0
- package/src/i18n/da-DK/consents.ts +23 -0
- package/src/i18n/da-DK/forms.ts +116 -0
- package/src/i18n/da-DK/history.ts +35 -0
- package/src/i18n/da-DK/index.ts +49 -0
- package/src/i18n/da-DK/keywords.ts +19 -0
- package/src/i18n/da-DK/library.ts +135 -0
- package/src/i18n/da-DK/licenses.ts +25 -0
- package/src/i18n/da-DK/media.ts +79 -0
- package/src/i18n/da-DK/parts.ts +696 -0
- package/src/i18n/da-DK/preview.ts +13 -0
- package/src/i18n/da-DK/redirects.ts +51 -0
- package/src/i18n/da-DK/seo.ts +20 -0
- package/src/i18n/da-DK/text.ts +35 -0
- package/src/i18n/da-DK/theme.ts +41 -0
- package/src/i18n/en-US/advanced.ts +32 -0
- package/src/i18n/en-US/app.ts +84 -0
- package/src/i18n/en-US/apps.ts +134 -0
- package/src/i18n/en-US/blockSettings.ts +48 -0
- package/src/i18n/en-US/blocks.ts +441 -0
- package/src/i18n/en-US/check.ts +31 -0
- package/src/i18n/en-US/colors.ts +82 -0
- package/src/i18n/en-US/common.ts +144 -0
- package/src/i18n/en-US/company.ts +25 -0
- package/src/i18n/en-US/consents.ts +25 -0
- package/src/i18n/en-US/forms.ts +145 -0
- package/src/i18n/en-US/history.ts +43 -0
- package/src/i18n/en-US/index.ts +51 -0
- package/src/i18n/en-US/keywords.ts +24 -0
- package/src/i18n/en-US/library.ts +176 -0
- package/src/i18n/en-US/licenses.ts +36 -0
- package/src/i18n/en-US/media.ts +80 -0
- package/src/i18n/en-US/parts.ts +718 -0
- package/src/i18n/en-US/preview.ts +15 -0
- package/src/i18n/en-US/redirects.ts +66 -0
- package/src/i18n/en-US/seo.ts +26 -0
- package/src/i18n/en-US/text.ts +41 -0
- package/src/i18n/en-US/theme.ts +41 -0
- package/src/i18n/index.ts +124 -0
- package/src/icon.tsx +160 -0
- package/src/iconPacks.ts +89 -0
- package/src/images.ts +163 -0
- package/src/licenses.ts +79 -0
- package/src/markdown.d.mts +12 -0
- package/src/markdown.mjs +204 -0
- package/src/nav.ts +68 -0
- package/src/notFound.ts +28 -0
- package/src/notifications.ts +223 -0
- package/src/pagePreview.tsx +204 -0
- package/src/r2Caching.ts +55 -0
- package/src/redirects.ts +149 -0
- package/src/registry.tsx +188 -0
- package/src/schema.ts +417 -0
- package/src/sections.d.mts +45 -0
- package/src/sections.mjs +303 -0
- package/src/seo.ts +333 -0
- package/src/shared.ts +44 -0
- package/src/sidebar.ts +31 -0
- package/src/site.ts +317 -0
- package/src/standard/Block.astro +19 -0
- package/src/standard/BlockSite.astro +18 -0
- package/src/standard/accordion/index.tsx +47 -0
- package/src/standard/accordion/load.ts +23 -0
- package/src/standard/accordion/shared.ts +15 -0
- package/src/standard/accordion/view.ts +32 -0
- package/src/standard/buttons/fields.ts +98 -0
- package/src/standard/buttons/index.tsx +23 -0
- package/src/standard/buttons/load.ts +34 -0
- package/src/standard/buttons/shared.ts +12 -0
- package/src/standard/buttons/view.ts +30 -0
- package/src/standard/cards/index.tsx +71 -0
- package/src/standard/cards/load.ts +17 -0
- package/src/standard/cards/shared.ts +27 -0
- package/src/standard/cards/view.ts +29 -0
- package/src/standard/checklist/index.tsx +27 -0
- package/src/standard/checklist/load.ts +5 -0
- package/src/standard/checklist/view.ts +13 -0
- package/src/standard/cookies/index.tsx +17 -0
- package/src/standard/cookies/list.ts +56 -0
- package/src/standard/cookies/load.ts +11 -0
- package/src/standard/cookies/shared.ts +20 -0
- package/src/standard/cookies/view.ts +28 -0
- package/src/standard/faq/index.tsx +29 -0
- package/src/standard/faq/load.ts +14 -0
- package/src/standard/faq/view.ts +21 -0
- package/src/standard/head.ts +23 -0
- package/src/standard/hero/fields.ts +48 -0
- package/src/standard/hero/index.tsx +57 -0
- package/src/standard/hero/load.ts +23 -0
- package/src/standard/hero/view.ts +38 -0
- package/src/standard/links/index.tsx +41 -0
- package/src/standard/links/load.ts +17 -0
- package/src/standard/links/view.ts +25 -0
- package/src/standard/list/index.tsx +50 -0
- package/src/standard/list/load.ts +5 -0
- package/src/standard/list/view.ts +18 -0
- package/src/standard/load.ts +7 -0
- package/src/standard/notice/index.tsx +30 -0
- package/src/standard/notice/load.ts +16 -0
- package/src/standard/notice/view.ts +10 -0
- package/src/standard/points/index.tsx +42 -0
- package/src/standard/points/load.ts +5 -0
- package/src/standard/points/view.ts +12 -0
- package/src/standard/posts/index.tsx +132 -0
- package/src/standard/posts/load.ts +36 -0
- package/src/standard/posts/shared.ts +21 -0
- package/src/standard/posts/view.ts +63 -0
- package/src/standard/pricecards/index.tsx +57 -0
- package/src/standard/pricecards/load.ts +11 -0
- package/src/standard/pricecards/view.ts +50 -0
- package/src/standard/sharedTexts.ts +6 -0
- package/src/standard/site.ts +124 -0
- package/src/standard/siteLooks.ts +19 -0
- package/src/standard/sites.ts +13 -0
- package/src/standard/steps/index.tsx +28 -0
- package/src/standard/steps/load.ts +5 -0
- package/src/standard/steps/view.ts +11 -0
- package/src/standard/testimonials/index.tsx +87 -0
- package/src/standard/testimonials/list.ts +43 -0
- package/src/standard/testimonials/load.ts +58 -0
- package/src/standard/testimonials/shared.ts +13 -0
- package/src/standard/testimonials/view.ts +76 -0
- package/src/standard/themeBlocks.ts +13 -0
- package/src/standard/video/index.tsx +23 -0
- package/src/standard/video/load.ts +10 -0
- package/src/standard/video/view.ts +42 -0
- package/src/standard/view.tsx +105 -0
- package/src/standard/views.ts +37 -0
- package/src/store.ts +499 -0
- package/src/theme.ts +90 -0
- package/src/themeUi.ts +97 -0
- package/src/themes.ts +91 -0
- package/src/ui.tsx +3402 -0
- package/src/virtual.d.ts +5 -0
- package/src/when.ts +22 -0
- package/starter/.githooks/pre-push +4 -0
- package/starter/.nvmrc +1 -0
- package/starter/.prettierignore +11 -0
- package/starter/.prettierrc.json +7 -0
- package/starter/README.md +26 -0
- package/starter/astro.config.mjs +5 -0
- package/starter/package.json +67 -0
- package/starter/public/_redirects +1 -0
- package/starter/public/apple-touch-icon.png +0 -0
- package/starter/public/editor/apple-touch-icon.png +0 -0
- package/starter/public/editor/icon-192.png +0 -0
- package/starter/public/editor/icon-512.png +0 -0
- package/starter/public/editor/icon-maskable-512.png +0 -0
- package/starter/public/favicon.ico +0 -0
- package/starter/public/favicon.svg +1 -0
- package/starter/public/logo.svg +1 -0
- package/starter/src/content/pages/blog.md +8 -0
- package/starter/src/content/pages/forside.md +9 -0
- package/starter/src/content/pages/kontakt.md +7 -0
- package/starter/src/content/pages/privatlivspolitik.md +9 -0
- package/starter/src/content/pages/siden-findes-ikke.md +7 -0
- package/starter/src/content.config.ts +2 -0
- package/starter/src/data/apps.json +1 -0
- package/starter/src/data/block-settings.json +3 -0
- package/starter/src/data/blocks.json +1 -0
- package/starter/src/data/booking.json +6 -0
- package/starter/src/data/colors.json +70 -0
- package/starter/src/data/contact.json +8 -0
- package/starter/src/data/cookies.json +21 -0
- package/starter/src/data/csp.json +1 -0
- package/starter/src/data/footer.json +15 -0
- package/starter/src/data/internal-links.json +4 -0
- package/starter/src/data/menu.json +4 -0
- package/starter/src/data/mobile-menu.json +4 -0
- package/starter/src/data/old-addresses.json +1 -0
- package/starter/src/data/redirects.json +1 -0
- package/starter/src/data/standard-pages.json +8 -0
- package/starter/src/data/theme.json +1 -0
- package/starter/src/env.d.ts +2 -0
- package/starter/src/site/config.ts +13 -0
- package/starter/src/site/worker.js +14 -0
- package/starter/tsconfig.json +17 -0
- package/starter/worker/apps.js +6 -0
- package/starter/wrangler.jsonc +39 -0
- package/theme/LICENSE +21 -0
- package/theme/blocks/ArrowLink.tsx +14 -0
- package/theme/blocks/BlockHead.tsx +26 -0
- package/theme/blocks/Panel.tsx +32 -0
- package/theme/blocks/Person.tsx +26 -0
- package/theme/blocks/accordion/PageRow.tsx +25 -0
- package/theme/blocks/accordion/View.tsx +17 -0
- package/theme/blocks/buttons/Buttons.tsx +28 -0
- package/theme/blocks/buttons/View.tsx +12 -0
- package/theme/blocks/cards/LinkCards.tsx +72 -0
- package/theme/blocks/cards/View.tsx +20 -0
- package/theme/blocks/checklist/Checks.tsx +15 -0
- package/theme/blocks/checklist/View.tsx +14 -0
- package/theme/blocks/cookies/View.tsx +36 -0
- package/theme/blocks/faq/Accordion.tsx +34 -0
- package/theme/blocks/faq/View.tsx +16 -0
- package/theme/blocks/faq/script.ts +56 -0
- package/theme/blocks/hero/View.tsx +44 -0
- package/theme/blocks/links/LinkGroups.tsx +24 -0
- package/theme/blocks/links/View.tsx +17 -0
- package/theme/blocks/list/Rows.tsx +24 -0
- package/theme/blocks/list/View.tsx +14 -0
- package/theme/blocks/notice/View.tsx +13 -0
- package/theme/blocks/points/PointList.tsx +34 -0
- package/theme/blocks/points/View.tsx +14 -0
- package/theme/blocks/posts/View.tsx +26 -0
- package/theme/blocks/pricecards/View.tsx +40 -0
- package/theme/blocks/steps/StepList.tsx +23 -0
- package/theme/blocks/steps/View.tsx +14 -0
- package/theme/blocks/testimonials/List.tsx +46 -0
- package/theme/blocks/testimonials/Slider.tsx +44 -0
- package/theme/blocks/testimonials/Testimonial.tsx +124 -0
- package/theme/blocks/testimonials/View.tsx +21 -0
- package/theme/blocks/testimonials/script.ts +52 -0
- package/theme/blocks/video/View.tsx +41 -0
- package/theme/components/ActionBar.astro +63 -0
- package/theme/components/AppSlot.astro +21 -0
- package/theme/components/ArrowLink.tsx +21 -0
- package/theme/components/BlogIndex.astro +48 -0
- package/theme/components/BlogPosts.astro +18 -0
- package/theme/components/BlogPosts.tsx +45 -0
- package/theme/components/BookButton.tsx +22 -0
- package/theme/components/Container.astro +11 -0
- package/theme/components/CookieConsent.astro +121 -0
- package/theme/components/EndBlock.astro +21 -0
- package/theme/components/FontPreload.astro +6 -0
- package/theme/components/Footer.astro +85 -0
- package/theme/components/Header.astro +186 -0
- package/theme/components/Icon.astro +16 -0
- package/theme/components/Img.astro +29 -0
- package/theme/components/Img.tsx +33 -0
- package/theme/components/Inline.astro +11 -0
- package/theme/components/Logo.astro +23 -0
- package/theme/components/LogoMark.astro +10 -0
- package/theme/components/Markdown.astro +17 -0
- package/theme/components/MobileMenu.tsx +224 -0
- package/theme/components/MobileNav.astro +33 -0
- package/theme/components/PageHeader.astro +22 -0
- package/theme/components/PageSection.astro +24 -0
- package/theme/components/PhoneButton.tsx +11 -0
- package/theme/components/Popup.astro +145 -0
- package/theme/components/PopupButton.tsx +24 -0
- package/theme/components/PopupView.tsx +48 -0
- package/theme/components/PostList.tsx +58 -0
- package/theme/components/PostMeta.tsx +17 -0
- package/theme/components/RichText.astro +28 -0
- package/theme/components/Section.astro +29 -0
- package/theme/components/SectionHeading.tsx +8 -0
- package/theme/components/TextSection.astro +16 -0
- package/theme/components/home/PageBlock.astro +19 -0
- package/theme/components/home/Text.astro +13 -0
- package/theme/components/loadPopup.ts +22 -0
- package/theme/components/loadPosts.ts +16 -0
- package/theme/components/posts.ts +15 -0
- package/theme/editor/looks.mjs +7 -0
- package/theme/editor/previews.tsx +56 -0
- package/theme/layouts/Base.astro +273 -0
- package/theme/layouts/PageLayout.astro +126 -0
- package/theme/layouts/PostLayout.astro +137 -0
- package/theme/screenshots/1-front.jpg +0 -0
- package/theme/screenshots/2-front-dark.jpg +0 -0
- package/theme/screenshots/3-blog.jpg +0 -0
- package/theme/screenshots/4-contact.jpg +0 -0
- package/theme/scripts/motion.ts +29 -0
- package/theme/styles/base.css +320 -0
- package/theme/styles/blocks.css +1808 -0
- package/theme/styles/components.css +206 -0
- package/theme/styles/global.css +1302 -0
- package/theme/styles/ui.css +6544 -0
- package/theme/templates/Blog.astro +38 -0
- package/theme/templates/Category.astro +19 -0
- package/theme/templates/Home.astro +36 -0
- package/theme/templates/New.astro +68 -0
- package/theme/templates/NotFound.astro +117 -0
- package/theme/theme.json +28 -0
- package/theme/ui/Badge.tsx +45 -0
- package/theme/ui/BottomSheet.tsx +148 -0
- package/theme/ui/Button.tsx +79 -0
- package/theme/ui/ButtonGroup.tsx +31 -0
- package/theme/ui/Card.tsx +45 -0
- package/theme/ui/Carousel.tsx +124 -0
- package/theme/ui/Checkbox.tsx +59 -0
- package/theme/ui/Chip.tsx +101 -0
- package/theme/ui/ChipSet.tsx +27 -0
- package/theme/ui/DatePicker.tsx +149 -0
- package/theme/ui/DatePickerContainer.tsx +316 -0
- package/theme/ui/Dialog.tsx +100 -0
- package/theme/ui/Divider.tsx +27 -0
- package/theme/ui/ExposedDropdownMenu.tsx +77 -0
- package/theme/ui/Fab.tsx +88 -0
- package/theme/ui/FabMenu.tsx +67 -0
- package/theme/ui/IconButton.tsx +78 -0
- package/theme/ui/List.tsx +287 -0
- package/theme/ui/LoadingIndicator.tsx +29 -0
- package/theme/ui/Menu.tsx +278 -0
- package/theme/ui/NavigationBar.tsx +62 -0
- package/theme/ui/NavigationDrawer.tsx +80 -0
- package/theme/ui/NavigationRail.tsx +154 -0
- package/theme/ui/ProgressIndicator.tsx +162 -0
- package/theme/ui/RadioButton.tsx +50 -0
- package/theme/ui/Search.tsx +129 -0
- package/theme/ui/SegmentedButton.tsx +49 -0
- package/theme/ui/SideSheet.tsx +54 -0
- package/theme/ui/Slider.tsx +155 -0
- package/theme/ui/Snackbar.tsx +67 -0
- package/theme/ui/SplitButton.tsx +67 -0
- package/theme/ui/Switch.tsx +60 -0
- package/theme/ui/Tabs.tsx +114 -0
- package/theme/ui/TextField.tsx +278 -0
- package/theme/ui/TimePicker.tsx +128 -0
- package/theme/ui/TimePickerContainer.tsx +234 -0
- package/theme/ui/Toolbar.tsx +67 -0
- package/theme/ui/Tooltip.tsx +58 -0
- package/theme/ui/TopAppBar.tsx +77 -0
- package/theme/ui/bottomSheet.script.ts +8 -0
- package/theme/ui/bottomSheet.ts +211 -0
- package/theme/ui/carousel.script.ts +28 -0
- package/theme/ui/carouselLayout.ts +229 -0
- package/theme/ui/checkbox.script.ts +8 -0
- package/theme/ui/datePicker.script.ts +302 -0
- package/theme/ui/dates.ts +185 -0
- package/theme/ui/dialog.ts +48 -0
- package/theme/ui/dropdownMenu.script.ts +166 -0
- package/theme/ui/fabMenu.script.ts +57 -0
- package/theme/ui/navigationRail.script.ts +47 -0
- package/theme/ui/ripple.script.ts +159 -0
- package/theme/ui/search.script.ts +92 -0
- package/theme/ui/sideSheet.ts +48 -0
- package/theme/ui/slider.script.ts +12 -0
- package/theme/ui/sliderUpdate.ts +52 -0
- package/theme/ui/snackbar.script.ts +16 -0
- package/theme/ui/splitButton.script.ts +63 -0
- package/theme/ui/tabs.script.ts +48 -0
- package/theme/ui/textField.script.ts +17 -0
- package/theme/ui/textFieldUpdate.ts +44 -0
- package/theme/ui/timePicker.script.ts +248 -0
- package/theme/ui/toolbar.script.ts +43 -0
- package/theme/ui/tooltip.script.ts +68 -0
- package/worker/consent.js +141 -0
- package/worker/editor-github.js +167 -0
- package/worker/editor-host.js +74 -0
- package/worker/files.js +401 -0
- package/worker/github.js +36 -0
- package/worker/index.js +184 -0
- package/worker/not-found.js +97 -0
- package/worker/oauth.js +95 -0
- package/worker/publish.js +52 -0
- package/worker/push.js +270 -0
- package/worker/r2-status.js +50 -0
- package/worker/session.js +58 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Every save is a version"
|
|
3
|
+
date: 2026-09-18
|
|
4
|
+
description: "Your content lives as files on GitHub. Every save is a version you can go back to."
|
|
5
|
+
categories: ["security"]
|
|
6
|
+
image: "/images/uploads/2026/10/editor-home.webp"
|
|
7
|
+
imageAlt: "The home page open in the Morpheme editor"
|
|
8
|
+
seoTitle: "Every save is a version | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
There’s no database behind your site. Your pages, posts and settings are files in your own GitHub repository.
|
|
12
|
+
|
|
13
|
+
## What happens when you tap Save
|
|
14
|
+
|
|
15
|
+
Your change becomes one commit, with a message describing what you did. Cloudflare rebuilds your site, and you’re notified when it’s live.
|
|
16
|
+
|
|
17
|
+
## Going back is one tap
|
|
18
|
+
|
|
19
|
+
Every save is listed under Earlier versions, and you can restore your site exactly as it was. Deleted photos and files can be restored from Deleted files.
|
|
20
|
+
|
|
21
|
+
<div data-block="notice" data-props="{"text":"The editor talks to GitHub through your site’s own server, so your sign-in is never stored in the browser."}"></div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Write now, publish later"
|
|
3
|
+
date: 2026-10-02
|
|
4
|
+
description: "Schedule a post for the moment it matters, and your site publishes it on its own."
|
|
5
|
+
categories: ["editing"]
|
|
6
|
+
image: "/images/uploads/2026/10/editor-blog.webp"
|
|
7
|
+
imageAlt: "The list of blog posts in the Morpheme editor"
|
|
8
|
+
seoTitle: "Write now, publish later | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Every post and page has a status at the top of the editor.
|
|
12
|
+
|
|
13
|
+
<div data-block="points" data-props="{"items":[{"icon":"info","title":"Draft","text":"Only visible in the editor."},{"icon":"door-open","title":"Hidden","text":"Opens at its address, but stays off Google."},{"icon":"certificate","title":"Published","text":"Live on your site."},{"icon":"clock","title":"Scheduled","text":"Goes live on its own at the time you choose."}]}"></div>
|
|
14
|
+
|
|
15
|
+
## It happens without you
|
|
16
|
+
|
|
17
|
+
When the time comes, your site rebuilds and the post appears on your blog and in every list of recent posts. You can be asleep, on vacation or in a meeting.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Secure from day one"
|
|
3
|
+
date: 2026-09-10
|
|
4
|
+
description: "Security isn’t a setting you have to remember. It’s how every Morpheme site is built."
|
|
5
|
+
categories: ["security"]
|
|
6
|
+
image: "/images/uploads/2026/10/earth-from-space.webp"
|
|
7
|
+
imageAlt: "The Earth seen from space"
|
|
8
|
+
seoTitle: "Secure from day one | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Security isn’t something you have to remember to switch on. It’s how your site is built.
|
|
12
|
+
|
|
13
|
+
<div data-block="checklist" data-props="{"heading":"On every site","items":["A Content Security Policy on every page: only the page’s own scripts run","Apps can only load from the addresses they declare","The cookie banner asks before any analytics or ad cookies are set","Your privacy policy’s cookie list keeps itself up to date","Your sign-in is a cookie only your site’s server can read"]}"></div>
|
|
14
|
+
|
|
15
|
+
## Fast because it’s finished
|
|
16
|
+
|
|
17
|
+
Pages are built before anyone asks for them, and Cloudflare serves them from near each visitor. There’s nothing to compute when a page opens, and nothing to attack.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "SEO without the guesswork"
|
|
3
|
+
date: 2026-09-25
|
|
4
|
+
description: "An SEO score on every page, automatic internal links and redirects that never pile up."
|
|
5
|
+
categories: ["seo"]
|
|
6
|
+
image: "/images/uploads/2026/10/editor-seo.webp"
|
|
7
|
+
imageAlt: "The search engine settings in the Morpheme editor"
|
|
8
|
+
seoTitle: "SEO without the guesswork | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
A great page is only great if people can find it. The editor helps while you write.
|
|
12
|
+
|
|
13
|
+
## A score on every page
|
|
14
|
+
|
|
15
|
+
Each page and post has an SEO score: is the title the right length, does the heading use your keyword, does every photo have a description?
|
|
16
|
+
|
|
17
|
+
## Internal links, automatically
|
|
18
|
+
|
|
19
|
+
Give a page a keyword, and that word becomes a link to the page wherever it appears across your site. You decide how many links a page can have.
|
|
20
|
+
|
|
21
|
+
## Redirects that stay tidy
|
|
22
|
+
|
|
23
|
+
When a page moves, its old address sends visitors to the new one, and the editor tells you where. Redirects always point straight to the final page, so they never form a chain.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Switch themes without losing anything"
|
|
3
|
+
date: 2026-10-16
|
|
4
|
+
description: "A theme changes how your site looks, never what it says."
|
|
5
|
+
categories: ["design"]
|
|
6
|
+
image: "/images/uploads/2026/10/saturn.webp"
|
|
7
|
+
imageAlt: "Saturn and its rings against a black sky"
|
|
8
|
+
seoTitle: "Switch themes without losing anything | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
A theme decides how your site looks: the fonts, the shapes, the shadows and how each block is drawn. It never touches what your site says.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
## Built on Material
|
|
16
|
+
|
|
17
|
+
Every theme builds on the standard theme, Material, which follows Google’s Material Design 3. Anything a theme doesn’t change comes from Material, so a theme only has to describe what makes it different.
|
|
18
|
+
|
|
19
|
+
## Switching takes a tap
|
|
20
|
+
|
|
21
|
+
Under Appearance › Themes you’ll find your installed themes, each with pictures of your site in that style. Pick one and tap Use theme. Your content, apps and colors stay, and you can switch back anytime.
|
|
22
|
+
|
|
23
|
+
<div data-block="notice" data-props="{"text":"**Want more?** Browse the Themes tab in the app store."}"></div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Meet the app store"
|
|
3
|
+
date: 2026-09-03
|
|
4
|
+
description: "Booking, newsletters and colors drawn from your photos: apps add new features and stay put when you change themes."
|
|
5
|
+
categories: ["apps"]
|
|
6
|
+
image: "/images/uploads/2026/10/andromeda.webp"
|
|
7
|
+
imageAlt: "The Andromeda galaxy among thousands of stars"
|
|
8
|
+
seoTitle: "Meet the app store | Morpheme"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
An app gives your site something it couldn’t do before: new blocks, new kinds of pop-ups, new settings or something on every page.
|
|
12
|
+
|
|
13
|
+
## Find it in the editor
|
|
14
|
+
|
|
15
|
+
Open Apps in the editor to browse the store. Each app has its own page with screenshots, a description, the cookies it sets and the addresses it loads from. Install it, and it’s added to your site in a single change.
|
|
16
|
+
|
|
17
|
+
## Updates you can trust
|
|
18
|
+
|
|
19
|
+
You always see what’s new before an app updates. Fixes and new features arrive automatically, while bigger changes wait until you tap Update.
|
|
20
|
+
|
|
21
|
+
Read more on the [App store](/app-store/) page.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "About Morpheme"
|
|
3
|
+
description: "What Morpheme is built on, and why your site stays fast and safe."
|
|
4
|
+
seoTitle: "About Morpheme"
|
|
5
|
+
seoDescription: "Morpheme is a free, open-source website editor built on Astro, Cloudflare and GitHub. Here’s how it saves your work and keeps your site fast."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# About Morpheme
|
|
9
|
+
|
|
10
|
+
Morpheme is a website editor for sites built with [Astro](https://astro.build) and hosted on [Cloudflare](https://www.cloudflare.com). It’s free and open source under the MIT license.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
<div data-block="points" data-props="{"eyebrow":"Under the hood","heading":"Three proven parts","items":[{"icon":"book-open-text","title":"GitHub","text":"Your content lives as plain files in your own repository. Every save is one commit."},{"icon":"lightbulb","title":"Astro","text":"Your site is built ahead of time into finished pages that open instantly."},{"icon":"lifebuoy","title":"Cloudflare","text":"Pages are served from a location near each visitor, and sign-in runs on Cloudflare Workers."}]}"></div>
|
|
15
|
+
|
|
16
|
+
## How saving works
|
|
17
|
+
|
|
18
|
+
When you tap Save, the editor first checks the page. If something’s missing, it tells you what and highlights the field until it’s fixed. Then your change is saved to GitHub, Cloudflare rebuilds your site, and you get a notification when it’s live.
|
|
19
|
+
|
|
20
|
+
Every save is listed under Earlier versions, and deleted photos can be restored from Deleted files.
|
|
21
|
+
|
|
22
|
+
<div data-block="checklist" data-props="{"eyebrow":"Fast and safe","heading":"Built in, not bolted on","items":["Photos are resized for every screen","Every page has a Content Security Policy, so only its own scripts run","Your sign-in is a cookie only your site’s server can read","No tracking or ad cookies before a visitor says yes"]}"></div>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "App store"
|
|
3
|
+
description: "Add new features to your site with one tap: apps and themes from the app store."
|
|
4
|
+
wide: true
|
|
5
|
+
seoTitle: "App store | Morpheme"
|
|
6
|
+
seoDescription: "Add booking, newsletter signups, content-based colors and new themes to your site with one tap. Every install can be undone."
|
|
7
|
+
keyword: "app store"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# App store
|
|
11
|
+
|
|
12
|
+
New features, one tap away
|
|
13
|
+
|
|
14
|
+
Find it in the editor under Apps. An app adds something new to your site, like a booking calendar or a newsletter signup, and it stays put when you change themes.
|
|
15
|
+
|
|
16
|
+

|
|
17
|
+
|
|
18
|
+
<div data-block="steps" data-props="{"eyebrow":"How it works","heading":"Install, update, remove","items":[{"title":"Browse","text":"Each app has its own page with screenshots, a description, the cookies it sets and the addresses it loads from."},{"title":"Install","text":"The app is added to your site in a single change. Its blocks and settings appear in the editor right away."},{"title":"Update or remove","text":"See what’s new before every update; bigger changes wait for you. Removing an app is one change too."}]}"></div>
|
|
19
|
+
|
|
20
|
+
<div data-block="points" data-props="{"eyebrow":"Available now","heading":"Apps in the store","items":[{"icon":"clock","title":"Calendly","text":"Your Calendly calendar in a sheet that every booking button opens."},{"icon":"envelope-simple","title":"Mailchimp","text":"A pop-up that signs visitors up for your Mailchimp newsletter."},{"icon":"flower-lotus","title":"Content-based colors","text":"Each page takes its colors from its own photos."}]}"></div>
|
|
21
|
+
|
|
22
|
+
## Themes, too
|
|
23
|
+
|
|
24
|
+
The store has themes on its own tab. A theme only changes the look: fonts, shapes, how colors are used and how blocks are drawn. Your content and apps stay exactly as they are, and you can switch back anytime.
|
|
25
|
+
|
|
26
|
+
<div data-block="buttons" data-props="{"items":[{"label":"Read about themes","to":"page","href":"/switch-themes-without-losing-anything/","kind":"tonal","icon":"arrow-right"}]}"></div>
|
|
27
|
+
|
|
28
|
+
<div data-block="checklist" data-props="{"eyebrow":"Built in","heading":"Safe to try","items":["Every install, update and removal can be undone","An app only loads from the addresses it declares","Its cookies are added to your cookie list automatically","No tracking or ad cookies before a visitor says yes","Release notes for every version"]}"></div>
|
|
29
|
+
|
|
30
|
+
<div data-block="faq" data-props="{"eyebrow":"FAQ","heading":"Questions, answered","items":[{"question":"What happens to my pages if I remove an app?","answer":"If a page uses one of the app’s blocks, the editor shows you where, so you can take it out first. Everything else stays as it is."},{"question":"Do apps update on their own?","answer":"Fixes and new features do. A bigger change that could affect your site waits until you tap Update."},{"question":"Can I have an app made just for my site?","answer":"Yes. An app is a folder of blocks, settings and lists. [Get in touch](/contact/)."}]}"></div>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Blocks"
|
|
3
|
+
description: "Every block you can build a page from in Morpheme, shown live."
|
|
4
|
+
wide: true
|
|
5
|
+
seoTitle: "Blocks | Morpheme"
|
|
6
|
+
seoDescription: "Buttons, cards, points, steps, checklists, FAQs, price cards, testimonials and more: every Morpheme block, shown live."
|
|
7
|
+
keyword: "blocks"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Blocks
|
|
11
|
+
|
|
12
|
+
Every page is text, photos and blocks. Tap + anywhere in the text to add one. It takes on your theme’s fonts, colors and shapes, so it always fits. Here is each one, live.
|
|
13
|
+
|
|
14
|
+
## Buttons
|
|
15
|
+
|
|
16
|
+
Send visitors to a page, start a call or open a pop-up. Pick a style for each button.
|
|
17
|
+
|
|
18
|
+
<div data-block="buttons" data-props="{"items":[{"label":"Get started","to":"page","href":"/get-started/","kind":"filled","icon":"arrow-right"},{"label":"Browse apps","to":"page","href":"/app-store/","kind":"tonal"},{"label":"","to":"phone","kind":"outlined","icon":"phone"}]}"></div>
|
|
19
|
+
|
|
20
|
+
## Cards
|
|
21
|
+
|
|
22
|
+
Group related ideas with an icon, a photo or just text, each linking to a page if you like.
|
|
23
|
+
|
|
24
|
+
<div data-block="cards" data-props="{"items":[{"icon":"lightbulb","title":"With an icon","text":"Icons come from the icon pack you choose under Appearance."},{"icon":"heart","title":"On a surface","text":"Cards use your theme’s surfaces, corners and shadows."},{"icon":"book-open","title":"With a link","text":"Link a card to a page and “Learn more” appears at the bottom.","href":"/about/"},{"icon":"medal","title":"Any number","text":"Add as many cards as you like; they wrap neatly on every screen."}]}"></div>
|
|
25
|
+
|
|
26
|
+
<div data-block="cards" data-props="{"design":"text","background":"accent","items":[{"title":"Just text","text":"No icon, no photo. Here on the accent color."},{"title":"One background","text":"The background applies to every card in the block."}]}"></div>
|
|
27
|
+
|
|
28
|
+
## Points
|
|
29
|
+
|
|
30
|
+
Short points with an icon, for what you offer or how to find you.
|
|
31
|
+
|
|
32
|
+
<div data-block="points" data-props="{"items":[{"icon":"clock","title":"Scheduled","text":"Publishes on its own at the time you pick."},{"icon":"info","title":"Draft","text":"Stays in the editor until you publish it."},{"icon":"door-open","title":"Hidden","text":"Opens at its address but stays off Google."}]}"></div>
|
|
33
|
+
|
|
34
|
+
## Steps
|
|
35
|
+
|
|
36
|
+
A numbered sequence, for a process or a plan.
|
|
37
|
+
|
|
38
|
+
<div data-block="steps" data-props="{"items":[{"title":"Pick a block","text":"Tap + in the text and choose one."},{"title":"Fill it in","text":"The preview updates as you type."},{"title":"Save","text":"The editor checks the page and publishes it."}]}"></div>
|
|
39
|
+
|
|
40
|
+
## Checklist
|
|
41
|
+
|
|
42
|
+
Quick points with a check mark.
|
|
43
|
+
|
|
44
|
+
<div data-block="checklist" data-props="{"items":["Works on every phone","Light and dark mode","Photos sized for every screen","No tracking before consent"]}"></div>
|
|
45
|
+
|
|
46
|
+
## List
|
|
47
|
+
|
|
48
|
+
Rows under each other, as your theme draws a list, or each on its own surface.
|
|
49
|
+
|
|
50
|
+
<div data-block="list" data-props="{"items":[{"icon":"book-open","title":"Blocks","text":"Every block a page can be built from.","href":"/blocks/"},{"icon":"lightbulb","title":"App store","text":"Apps and themes you install with one tap.","href":"/app-store/"},{"icon":"info","title":"About","text":"What the editor is built on.","href":"/about/"}]}"></div>
|
|
51
|
+
|
|
52
|
+
<div data-block="list" data-props="{"design":"segmented","items":[{"icon":"clock","title":"Monday to Friday","text":"9 am to 5 pm"},{"icon":"coffee","title":"Saturday","text":"10 am to 2 pm"},{"icon":"door-open","title":"Sunday","text":"Closed"}]}"></div>
|
|
53
|
+
|
|
54
|
+
## Accordion
|
|
55
|
+
|
|
56
|
+
Topics that unfold with a short summary and a link to the full page.
|
|
57
|
+
|
|
58
|
+
<div data-block="accordion" data-props="{"items":[{"label":"Blocks","href":"/blocks/","text":"Every block a page can be built from."},{"label":"App store","href":"/app-store/","text":"Apps and themes you install with one tap.","more":[{"label":"Get started","href":"/get-started/"}]},{"label":"Morpheme","href":"/about/","text":"What the editor is built on."}]}"></div>
|
|
59
|
+
|
|
60
|
+
## Questions and answers
|
|
61
|
+
|
|
62
|
+
Questions that unfold to reveal the answer, ready for Google to show in search results.
|
|
63
|
+
|
|
64
|
+
<div data-block="faq" data-props="{"items":[{"question":"Can I use a block more than once on a page?","answer":"Yes. Each copy has its own content."},{"question":"Can I turn a block off?","answer":"Yes, under Block settings. It can’t be added again until you turn it back on."}]}"></div>
|
|
65
|
+
|
|
66
|
+
## Price cards
|
|
67
|
+
|
|
68
|
+
Up to four plans side by side, with what’s included and a button.
|
|
69
|
+
|
|
70
|
+
<div data-block="pricecards" data-props="{"items":[{"name":"Open source","price":"Free","text":"Run Morpheme on your own Cloudflare account.","features":["The editor and the standard theme","MIT license","Your own GitHub repository"],"buttons":[{"label":"Get started","to":"page","href":"/get-started/","kind":"outlined"}]},{"name":"With apps","price":"Custom","text":"Your site plus apps and themes from the app store.","features":["Everything in Open source","Apps and themes","Updates with release notes"],"buttons":[{"label":"Browse apps","to":"page","href":"/app-store/","kind":"filled"}],"featured":true,"badge":"Popular"}]}"></div>
|
|
71
|
+
|
|
72
|
+
## Testimonials
|
|
73
|
+
|
|
74
|
+
Quotes from the Testimonials list, as a carousel or a list. These are samples.
|
|
75
|
+
|
|
76
|
+
<div data-block="testimonials" data-props="{"layout":"list","show":"all"}"></div>
|
|
77
|
+
|
|
78
|
+
## Notice
|
|
79
|
+
|
|
80
|
+
A message that stands out, and can disappear on its own on a date you set.
|
|
81
|
+
|
|
82
|
+
<div data-block="notice" data-props="{"text":"**Holiday hours:** we’re closed December 24–26. Notices like this one can expire on their own."}"></div>
|
|
83
|
+
|
|
84
|
+
## Link collection
|
|
85
|
+
|
|
86
|
+
Pages grouped by topic.
|
|
87
|
+
|
|
88
|
+
<div data-block="links" data-props="{"groups":[{"title":"Product","href":"/about/","paths":["/about/","/blocks/","/app-store/"]},{"title":"Getting started","href":"/get-started/","paths":["/get-started/","/contact/"]}]}"></div>
|
|
89
|
+
|
|
90
|
+
## Posts
|
|
91
|
+
|
|
92
|
+
The newest posts, a random few or the ones you choose, with a link to the rest.
|
|
93
|
+
|
|
94
|
+
<div data-block="posts" data-props="{"show":"picked","picked":["build-a-page-from-blocks","switch-themes-without-losing-anything","colors-everyone-can-read"],"link":"design"}"></div>
|
|
95
|
+
|
|
96
|
+
## And a few more
|
|
97
|
+
|
|
98
|
+
The Banner at the top of the home page, every post on the blog page, and the Cookie list in the privacy policy. The Video block plays YouTube and Vimeo videos, loading nothing from them until a visitor presses play.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Blog"
|
|
3
|
+
seoTitle: "Blog | Morpheme"
|
|
4
|
+
seoDescription: "Tips on editing, design, SEO, apps and security for websites built with Morpheme."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Blog
|
|
8
|
+
|
|
9
|
+
Tips and ideas for running your own website: editing, design, SEO, apps and security.
|
|
10
|
+
|
|
11
|
+
<div data-block="posts" data-props="{"show":"all","design":"featured"}"></div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Contact"
|
|
3
|
+
description: "Get in touch with Morpheme."
|
|
4
|
+
seoTitle: "Contact | Morpheme"
|
|
5
|
+
seoDescription: "Questions about Morpheme, the app store or themes? Call or email us."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Contact
|
|
9
|
+
|
|
10
|
+
Questions about the editor, the app store or themes? We’d love to hear from you.
|
|
11
|
+
|
|
12
|
+
<div data-block="points" data-props="{"items":[{"icon":"phone","title":"Call","text":"+1 555 010 0199, weekdays 9 a.m. to 4 p.m."},{"icon":"envelope-simple","title":"Email","text":"hello@morpheme.example. We reply within one business day."},{"icon":"map-pin","title":"Visit","text":"1 Example Street, 12345 Exampleville."}]}"></div>
|
|
13
|
+
|
|
14
|
+
<div data-block="buttons" data-props="{"items":[{"label":"","to":"phone","kind":"filled","icon":"phone"}]}"></div>
|
|
15
|
+
|
|
16
|
+
<div data-block="faq" data-props="{"items":[{"question":"Is this a real company?","answer":"No. This is Morpheme’s demo site, with made-up contact details, so you can see how a site looks in every theme."}]}"></div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Get started"
|
|
3
|
+
description: "How to set up a website with Morpheme."
|
|
4
|
+
seoTitle: "Get started | Morpheme"
|
|
5
|
+
seoDescription: "Set up your website with Morpheme: your own GitHub repository, hosting on Cloudflare and the editor at /editor/."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Get started
|
|
9
|
+
|
|
10
|
+
You can have a site you edit yourself up and running in an afternoon.
|
|
11
|
+
|
|
12
|
+
<div data-block="steps" data-props="{"items":[{"title":"Your repository","text":"Your site gets its own repository on GitHub, with Morpheme installed from npm (@morphemecms/cms)."},{"title":"Your hosting","text":"Cloudflare builds your site every time you save and serves it worldwide."},{"title":"Your editor","text":"Open /editor/ on your site, sign in with GitHub, and make your first change."}]}"></div>
|
|
13
|
+
|
|
14
|
+
<div data-block="checklist" data-props="{"heading":"What you’ll need","items":["A free GitHub account","A free Cloudflare account","A domain name, if you want your own address"]}"></div>
|
|
15
|
+
|
|
16
|
+
## Questions?
|
|
17
|
+
|
|
18
|
+
We’re happy to help.
|
|
19
|
+
|
|
20
|
+
<div data-block="buttons" data-props="{"items":[{"label":"","to":"phone","kind":"filled","icon":"phone"},{"label":"Contact us","to":"page","href":"/contact/","kind":"outlined","icon":"envelope-simple"}]}"></div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Home"
|
|
3
|
+
seoTitle: "Morpheme | The website editor you’ll actually enjoy"
|
|
4
|
+
seoDescription: "Edit pages, posts and photos from any browser, even your phone. Every change is checked, saved as a version you can restore, and live a minute later."
|
|
5
|
+
keyword: "Morpheme"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Your website, finally easy to change
|
|
9
|
+
|
|
10
|
+
Edit pages, posts and photos from any browser, even your phone.
|
|
11
|
+
|
|
12
|
+
Make a change, tap Save, and it’s live about a minute later: checked, backed up and fast.
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
<div data-block="hero" data-props="{"text":"<div data-block=\"buttons\" data-props=\"{&quot;items&quot;:[{&quot;label&quot;:&quot;&quot;,&quot;to&quot;:&quot;booking&quot;,&quot;kind&quot;:&quot;filled&quot;,&quot;icon&quot;:&quot;arrow-right&quot;},{&quot;label&quot;:&quot;See what it can do&quot;,&quot;to&quot;:&quot;page&quot;,&quot;href&quot;:&quot;/blocks/&quot;,&quot;kind&quot;:&quot;outlined&quot;}]}\"></div>\n\nFree and open source under the MIT license."}"></div>
|
|
17
|
+
|
|
18
|
+
<div data-block="points" data-props="{"eyebrow":"Why Morpheme","heading":"Everything you need, nothing you don’t","intro":"The editor takes care of the careful work, so you can focus on what you want to say.","items":[{"icon":"phone","title":"Edit from anywhere","text":"Works in any browser and installs on your phone’s home screen like an app."},{"icon":"lightbulb","title":"Build with blocks","text":"Cards, steps, FAQs, price tables and more, styled to match your site automatically."},{"icon":"book-open","title":"Never lose a thing","text":"Every save is a version you can restore with one tap. Deleted files come back too."},{"icon":"lifebuoy","title":"Private by default","text":"No tracking cookies until visitors say yes, and a strict security policy on every page."}]}"></div>
|
|
19
|
+
|
|
20
|
+
<div data-block="cards" data-props="{"design":"image","eyebrow":"Take a closer look","heading":"Grows with your business","items":[{"image":"/images/uploads/2026/10/editor-page.webp","title":"Blocks","text":"Thirteen building blocks for pages that look designed, not assembled.","href":"/blocks/"},{"image":"/images/uploads/2026/10/andromeda.webp","title":"App store","text":"Add booking, newsletters and more in one tap, and remove them just as easily.","href":"/app-store/"},{"image":"/images/uploads/2026/10/editor-themes.webp","title":"Themes","text":"Change the whole look of your site and keep every word and photo.","href":"/switch-themes-without-losing-anything/"}]}"></div>
|
|
21
|
+
|
|
22
|
+
<div data-block="steps" data-props="{"eyebrow":"Get started","heading":"Live in three steps","intro":"No servers to manage and nothing to install on your computer.","items":[{"title":"Create your site","text":"Your site gets its own repository on GitHub and is hosted on Cloudflare."},{"title":"Sign in","text":"Open /editor/ on your site and sign in with your GitHub account."},{"title":"Publish","text":"Write, add photos and blocks, and tap Save. Your site updates on its own."}]}"></div>
|
|
23
|
+
|
|
24
|
+
<div data-block="posts" data-props="{"eyebrow":"From the blog","heading":"Tips and ideas","show":"categories","categories":[],"count":"3","order":"newest"}"></div>
|
|
25
|
+
|
|
26
|
+
<div data-block="faq" data-props="{"eyebrow":"FAQ","heading":"Questions, answered","items":[{"question":"Do I need to know how to code?","answer":"No. Everything you change day to day happens in the editor: pages, posts, photos, menus, colors and settings."},{"question":"What does it cost?","answer":"Morpheme is free and open source under the MIT license. You only need free accounts on GitHub and Cloudflare. See [Get started](/get-started/)."},{"question":"Can I break my site?","answer":"The editor checks every page before it saves, and every save can be restored under Earlier versions."},{"question":"Do I own my content?","answer":"Yes. Your pages and posts are plain files in your own GitHub repository, so you can take them anywhere."}]}"></div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Page not found"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Lost in space
|
|
6
|
+
|
|
7
|
+
This page may have moved, or the address may have a typo. Try one of these instead.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
<div data-block="links" data-props="{"groups":[{"title":"Popular pages","paths":["/blocks/","/app-store/","/about/","/get-started/","/contact/"]}]}"></div>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Privacy policy"
|
|
3
|
+
description: "What this site stores and which cookies it sets."
|
|
4
|
+
seoTitle: "Privacy policy | Morpheme"
|
|
5
|
+
seoDescription: "What the Morpheme demo stores about you, and which cookies it sets."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Privacy policy
|
|
9
|
+
|
|
10
|
+
This is Morpheme’s demo site. It doesn’t store anything about you, and it sets no analytics or advertising cookies.
|
|
11
|
+
|
|
12
|
+
## When you email us
|
|
13
|
+
|
|
14
|
+
We keep your email and message while we’re in touch, then delete them. We never share them.
|
|
15
|
+
|
|
16
|
+
## Cookies
|
|
17
|
+
|
|
18
|
+
If an app that measures visits or shows ads is installed, the cookie banner asks first, and the app’s cookies are listed below.
|
|
19
|
+
|
|
20
|
+
<div data-block="cookies"></div>
|
|
21
|
+
|
|
22
|
+
## Your rights
|
|
23
|
+
|
|
24
|
+
You can always ask what we’ve stored about you, and ask us to correct or delete it. Email hello@morpheme.example.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"testimonials": {
|
|
3
|
+
"more": "Read more",
|
|
4
|
+
"less": "Show less"
|
|
5
|
+
},
|
|
6
|
+
"cards": {
|
|
7
|
+
"more": "Learn more"
|
|
8
|
+
},
|
|
9
|
+
"buttons": {
|
|
10
|
+
"items": [
|
|
11
|
+
{
|
|
12
|
+
"label": "",
|
|
13
|
+
"to": "booking",
|
|
14
|
+
"kind": "filled",
|
|
15
|
+
"icon": "arrow-right"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"label": "",
|
|
19
|
+
"to": "phone",
|
|
20
|
+
"kind": "outlined",
|
|
21
|
+
"icon": "phone"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"light": {
|
|
3
|
+
"bg": "#f9f9ff",
|
|
4
|
+
"surface": "#ffffff",
|
|
5
|
+
"surface-container-lowest": "#ffffff",
|
|
6
|
+
"surface-container-low": "#f3f3fa",
|
|
7
|
+
"surface-container": "#ededf4",
|
|
8
|
+
"surface-container-high": "#e8e7ee",
|
|
9
|
+
"surface-container-highest": "#e2e2e9",
|
|
10
|
+
"inverse-surface": "#2f3036",
|
|
11
|
+
"inverse-on-surface": "#f0f0f7",
|
|
12
|
+
"inverse-primary": "#acc7ff",
|
|
13
|
+
"tint": "#e8e7ee",
|
|
14
|
+
"ink": "#1a1b20",
|
|
15
|
+
"muted": "#44474e",
|
|
16
|
+
"line": "#c4c6d0",
|
|
17
|
+
"outline": "#74777f",
|
|
18
|
+
"accent": "#435e91",
|
|
19
|
+
"accent-hover": "#375284",
|
|
20
|
+
"on-accent": "#ffffff",
|
|
21
|
+
"accent-container": "#d7e2ff",
|
|
22
|
+
"on-accent-container": "#2a4678",
|
|
23
|
+
"secondary": "#565e71",
|
|
24
|
+
"on-secondary": "#ffffff",
|
|
25
|
+
"secondary-container": "#dae2f9",
|
|
26
|
+
"on-secondary-container": "#3f4759",
|
|
27
|
+
"tertiary": "#705574",
|
|
28
|
+
"on-tertiary": "#ffffff",
|
|
29
|
+
"tertiary-container": "#fbd7fc",
|
|
30
|
+
"on-tertiary-container": "#573e5b",
|
|
31
|
+
"error": "#ba1a1a",
|
|
32
|
+
"on-error": "#ffffff",
|
|
33
|
+
"error-container": "#ffdad6",
|
|
34
|
+
"on-error-container": "#93000a"
|
|
35
|
+
},
|
|
36
|
+
"dark": {
|
|
37
|
+
"bg": "#111318",
|
|
38
|
+
"surface": "#1a1b20",
|
|
39
|
+
"surface-container-lowest": "#0c0e13",
|
|
40
|
+
"surface-container-low": "#1a1b20",
|
|
41
|
+
"surface-container": "#1e2025",
|
|
42
|
+
"surface-container-high": "#282a2f",
|
|
43
|
+
"surface-container-highest": "#33353a",
|
|
44
|
+
"inverse-surface": "#e2e2e9",
|
|
45
|
+
"inverse-on-surface": "#2f3036",
|
|
46
|
+
"inverse-primary": "#435e91",
|
|
47
|
+
"tint": "#282a2f",
|
|
48
|
+
"ink": "#e2e2e9",
|
|
49
|
+
"muted": "#c4c6d0",
|
|
50
|
+
"line": "#44474e",
|
|
51
|
+
"outline": "#8e9099",
|
|
52
|
+
"accent": "#acc7ff",
|
|
53
|
+
"accent-hover": "#c2d5ff",
|
|
54
|
+
"on-accent": "#0e2f60",
|
|
55
|
+
"accent-container": "#2a4678",
|
|
56
|
+
"on-accent-container": "#d7e2ff",
|
|
57
|
+
"secondary": "#bec6dc",
|
|
58
|
+
"on-secondary": "#283041",
|
|
59
|
+
"secondary-container": "#3f4759",
|
|
60
|
+
"on-secondary-container": "#dae2f9",
|
|
61
|
+
"tertiary": "#debcdf",
|
|
62
|
+
"on-tertiary": "#402844",
|
|
63
|
+
"tertiary-container": "#573e5b",
|
|
64
|
+
"on-tertiary-container": "#fbd7fc",
|
|
65
|
+
"error": "#ffb4ab",
|
|
66
|
+
"on-error": "#690005",
|
|
67
|
+
"error-container": "#93000a",
|
|
68
|
+
"on-error-container": "#ffdad6"
|
|
69
|
+
},
|
|
70
|
+
"dynamic": {
|
|
71
|
+
"source": "#425E92",
|
|
72
|
+
"variant": "tonalSpot",
|
|
73
|
+
"contrast": "standard"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"enabled": true,
|
|
3
|
+
"heading": "Cookies, only with your OK",
|
|
4
|
+
"text": "We’d like to measure how the site is used. Nothing is set unless you say yes, and you can change your mind at the bottom of any page.",
|
|
5
|
+
"more": "Learn more",
|
|
6
|
+
"no": "No thanks",
|
|
7
|
+
"yes": "Accept",
|
|
8
|
+
"choose": "Choose",
|
|
9
|
+
"save": "Save choices",
|
|
10
|
+
"consentId": "Your consent ID",
|
|
11
|
+
"necessary": "Necessary",
|
|
12
|
+
"necessaryText": "Keep the site working and remember your choice. These can’t be turned off.",
|
|
13
|
+
"preferences": "Preferences",
|
|
14
|
+
"preferencesText": "Remember your settings on the site.",
|
|
15
|
+
"statistics": "Statistics",
|
|
16
|
+
"statisticsText": "Show us how many people visit and what they read.",
|
|
17
|
+
"marketing": "Marketing",
|
|
18
|
+
"marketingText": "Show us whether our ads bring people to the site.",
|
|
19
|
+
"targeting": "Targeted ads",
|
|
20
|
+
"targetingText": "Let advertisers use your visit to show you our ads elsewhere."
|
|
21
|
+
}
|