diff --git a/packages/svelte-lexical/src/global.css b/packages/svelte-lexical/src/global.css
new file mode 100644
index 00000000..1f8a5266
--- /dev/null
+++ b/packages/svelte-lexical/src/global.css
@@ -0,0 +1,1829 @@
+/**
+ * Copyright (c) Syed Umar Anis.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+@import 'https://fonts.googleapis.com/css?family=Reenie+Beanie';
+
+body {
+ margin: 0;
+ font-family:
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ '.SFNSText-Regular',
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background: #eee;
+ padding: 0 20px;
+}
+
+header {
+ max-width: 580px;
+ margin: auto;
+ position: relative;
+ display: flex;
+ justify-content: center;
+}
+
+header a {
+ max-width: 220px;
+ margin: 20px 0 0 0;
+ display: block;
+}
+
+header img {
+ display: block;
+ height: 100%;
+ width: 100%;
+}
+
+header h1 {
+ text-align: left;
+ color: #333;
+ display: inline-block;
+ margin: 20px 0 0 0;
+}
+
+.editor-shell {
+ margin: 20px auto;
+ border-radius: 2px;
+ max-width: 1100px;
+ color: #000;
+ position: relative;
+ line-height: 1.7;
+ font-weight: 400;
+}
+
+.editor-shell .editor-container {
+ background: #fff;
+ position: relative;
+ cursor: text;
+ display: block;
+ border-bottom-left-radius: 10px;
+ border-bottom-right-radius: 10px;
+}
+
+.editor-shell .editor-container.tree-view {
+ border-radius: 0;
+}
+
+.editor-shell .editor-container.plain-text {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+}
+
+.editor-scroller {
+ min-height: 150px;
+ border: 0;
+ cursor: text;
+ display: flex;
+ position: relative;
+ outline: 0;
+ z-index: 0;
+ overflow: auto;
+ resize: vertical;
+}
+
+.editor {
+ flex: auto;
+ position: relative;
+ resize: vertical;
+ z-index: -1;
+}
+
+.test-recorder-output {
+ margin: 20px auto 20px auto;
+ width: 100%;
+}
+
+pre {
+ line-height: 1.1;
+ background: #222;
+ color: #fff;
+ margin: 0;
+ padding: 10px;
+ font-size: 12px;
+ overflow: auto;
+ max-height: 400px;
+}
+
+.tree-view-output {
+ display: block;
+ background: #222;
+ color: #fff;
+ padding: 0;
+ font-size: 12px;
+ margin: 1px auto 10px auto;
+ position: relative;
+ overflow: hidden;
+ border-bottom-left-radius: 10px;
+ border-bottom-right-radius: 10px;
+}
+
+pre::-webkit-scrollbar {
+ background: transparent;
+ width: 10px;
+}
+
+pre::-webkit-scrollbar-thumb {
+ background: #999;
+}
+
+.editor-dev-button {
+ position: relative;
+ display: block;
+ width: 40px;
+ height: 40px;
+ font-size: 12px;
+ border-radius: 20px;
+ border: none;
+ cursor: pointer;
+ outline: none;
+ box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.3);
+ background-color: #444;
+}
+
+.editor-dev-button::after {
+ content: '';
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ bottom: 10px;
+ left: 10px;
+ display: block;
+ background-size: contain;
+ filter: invert(1);
+}
+
+.editor-dev-button:hover {
+ background-color: #555;
+}
+
+.editor-dev-button.active {
+ background-color: rgb(233, 35, 35);
+}
+
+.test-recorder-toolbar {
+ display: flex;
+}
+
+.test-recorder-button {
+ position: relative;
+ display: block;
+ width: 32px;
+ height: 32px;
+ font-size: 10px;
+ padding: 6px 6px;
+ border-radius: 4px;
+ border: none;
+ cursor: pointer;
+ outline: none;
+ box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.4);
+ background-color: #222;
+ transition: box-shadow 50ms ease-out;
+}
+
+.test-recorder-button:active {
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.4);
+}
+
+.test-recorder-button + .test-recorder-button {
+ margin-left: 4px;
+}
+
+.test-recorder-button::after {
+ content: '';
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ bottom: 8px;
+ left: 8px;
+ display: block;
+ background-size: contain;
+ filter: invert(1);
+}
+
+#options-button {
+ position: fixed;
+ left: 20px;
+ bottom: 20px;
+}
+
+#test-recorder-button {
+ position: fixed;
+ left: 70px;
+ bottom: 20px;
+}
+
+#paste-log-button {
+ position: fixed;
+ left: 120px;
+ bottom: 20px;
+}
+
+#docs-button {
+ position: fixed;
+ left: 170px;
+ bottom: 20px;
+}
+
+#options-button::after {
+ background-image: url(/images/icons/gear.svg);
+}
+
+#test-recorder-button::after {
+ background-image: url(/images/icons/journal-code.svg);
+}
+
+#paste-log-button::after {
+ background-image: url(/images/icons/clipboard.svg);
+}
+
+#docs-button::after {
+ background-image: url(/images/icons/file-earmark-text.svg);
+}
+
+#test-recorder-button-snapshot {
+ margin-right: auto;
+}
+
+#test-recorder-button-snapshot::after {
+ background-image: url(/images/icons/camera.svg);
+}
+
+#test-recorder-button-copy::after {
+ background-image: url(/images/icons/clipboard.svg);
+}
+
+#test-recorder-button-download::after {
+ background-image: url(/images/icons/download.svg);
+}
+
+.typeahead-popover {
+ background: #fff;
+ box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.3);
+ border-radius: 8px;
+ margin-top: 25px;
+}
+
+.typeahead-popover ul {
+ padding: 0;
+ list-style: none;
+ margin: 0;
+ border-radius: 8px;
+ max-height: 200px;
+ overflow-y: scroll;
+}
+
+.typeahead-popover ul::-webkit-scrollbar {
+ display: none;
+}
+
+.typeahead-popover ul {
+ -ms-overflow-style: none;
+ scrollbar-width: none;
+}
+
+.typeahead-popover ul li {
+ margin: 0;
+ min-width: 180px;
+ font-size: 14px;
+ outline: none;
+ cursor: pointer;
+ border-radius: 8px;
+}
+
+.typeahead-popover ul li.selected {
+ background: #eee;
+}
+
+.typeahead-popover li {
+ margin: 0 8px 0 8px;
+ padding: 8px;
+ color: #050505;
+ cursor: pointer;
+ line-height: 16px;
+ font-size: 15px;
+ display: flex;
+ align-content: center;
+ flex-direction: row;
+ flex-shrink: 0;
+ background-color: #fff;
+ border-radius: 8px;
+ border: 0;
+}
+
+.typeahead-popover li.active {
+ display: flex;
+ width: 20px;
+ height: 20px;
+ background-size: contain;
+}
+
+.typeahead-popover li:first-child {
+ border-radius: 8px 8px 0px 0px;
+}
+
+.typeahead-popover li:last-child {
+ border-radius: 0px 0px 8px 8px;
+}
+
+.typeahead-popover li:hover {
+ background-color: #eee;
+}
+
+.typeahead-popover li .text {
+ display: flex;
+ line-height: 20px;
+ flex-grow: 1;
+ min-width: 150px;
+}
+
+.typeahead-popover li .icon {
+ display: flex;
+ width: 20px;
+ height: 20px;
+ user-select: none;
+ margin-right: 8px;
+ line-height: 16px;
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
+.component-picker-menu {
+ width: 200px;
+}
+
+.mentions-menu {
+ width: 250px;
+}
+
+.auto-embed-menu {
+ width: 150px;
+}
+
+.emoji-menu {
+ width: 200px;
+}
+
+i.palette {
+ background-image: url(/images/icons/palette.svg);
+}
+
+i.bucket {
+ background-image: url(/images/icons/paint-bucket.svg);
+}
+
+i.bold {
+ background-image: url(/images/icons/type-bold.svg);
+}
+
+i.italic {
+ background-image: url(/images/icons/type-italic.svg);
+}
+
+i.clear {
+ background-image: url(/images/icons/trash.svg);
+}
+
+i.code {
+ background-image: url(/images/icons/code.svg);
+}
+
+i.underline {
+ background-image: url(/images/icons/type-underline.svg);
+}
+
+i.strikethrough {
+ background-image: url(/images/icons/type-strikethrough.svg);
+}
+
+i.subscript {
+ background-image: url(/images/icons/type-subscript.svg);
+}
+
+i.superscript {
+ background-image: url(/images/icons/type-superscript.svg);
+}
+
+i.link {
+ background-image: url(/images/icons/link.svg);
+}
+
+i.horizontal-rule {
+ background-image: url(/images/icons/horizontal-rule.svg);
+}
+
+.icon.plus {
+ background-image: url(/images/icons/plus.svg);
+}
+
+.icon.caret-right {
+ background-image: url(/images/icons/caret-right-fill.svg);
+}
+
+.icon.dropdown-more {
+ background-image: url(/images/icons/dropdown-more.svg);
+}
+
+.icon.font-color {
+ background-image: url(/images/icons/font-color.svg);
+}
+
+.icon.font-family {
+ background-image: url(/images/icons/font-family.svg);
+}
+
+.icon.bg-color {
+ background-image: url(/images/icons/bg-color.svg);
+}
+
+i.image {
+ background-image: url(/images/icons/file-image.svg);
+}
+
+i.table {
+ background-image: url(/images/icons/table.svg);
+}
+
+i.close {
+ background-image: url(/images/icons/close.svg);
+}
+
+i.figma {
+ background-image: url(/images/icons/figma.svg);
+}
+
+i.poll {
+ background-image: url(/images/icons/card-checklist.svg);
+}
+
+i.tweet {
+ background-image: url(/images/icons/tweet.svg);
+}
+
+i.youtube {
+ background-image: url(/images/icons/youtube.svg);
+}
+
+.icon.left-align,
+i.left-align {
+ background-image: url(/images/icons/text-left.svg);
+}
+
+i.center-align {
+ background-image: url(/images/icons/text-center.svg);
+}
+
+i.right-align {
+ background-image: url(/images/icons/text-right.svg);
+}
+
+i.justify-align {
+ background-image: url(/images/icons/justify.svg);
+}
+
+i.indent {
+ background-image: url(/images/icons/indent.svg);
+}
+
+i.markdown {
+ background-image: url(/images/icons/markdown.svg);
+}
+
+i.outdent {
+ background-image: url(/images/icons/outdent.svg);
+}
+
+i.undo {
+ background-image: url(/images/icons/arrow-counterclockwise.svg);
+}
+
+i.redo {
+ background-image: url(/images/icons/arrow-clockwise.svg);
+}
+
+i.sticky {
+ background-image: url(/images/icons/sticky.svg);
+}
+
+i.mic {
+ background-image: url(/images/icons/mic.svg);
+}
+
+i.import {
+ background-image: url(/images/icons/upload.svg);
+}
+
+i.export {
+ background-image: url(/images/icons/download.svg);
+}
+
+i.diagram-2 {
+ background-image: url(/images/icons/diagram-2.svg);
+}
+
+i.user {
+ background-image: url(/images/icons/user.svg);
+}
+
+i.equation {
+ background-image: url(/images/icons/plus-slash-minus.svg);
+}
+
+i.gif {
+ background-image: url(/images/icons/filetype-gif.svg);
+}
+
+i.copy {
+ background-image: url(/images/icons/copy.svg);
+}
+
+i.success {
+ background-image: url(/images/icons/success.svg);
+}
+
+i.prettier {
+ background-image: url(/images/icons/prettier.svg);
+}
+
+i.prettier-error {
+ background-image: url(/images/icons/prettier-error.svg);
+}
+
+.link-editor .button.active,
+.toolbar .button.active {
+ background-color: rgb(223, 232, 250);
+}
+
+.link-editor .link-input {
+ display: block;
+ width: calc(100% - 75px);
+ box-sizing: border-box;
+ margin: 12px 12px;
+ padding: 8px 12px;
+ border-radius: 15px;
+ background-color: #eee;
+ font-size: 15px;
+ color: rgb(5, 5, 5);
+ border: 0;
+ outline: 0;
+ position: relative;
+ font-family: inherit;
+}
+
+.link-editor .link-view {
+ display: block;
+ width: calc(100% - 24px);
+ margin: 8px 12px;
+ padding: 8px 12px;
+ border-radius: 15px;
+ font-size: 15px;
+ color: rgb(5, 5, 5);
+ border: 0;
+ outline: 0;
+ position: relative;
+ font-family: inherit;
+}
+
+.link-editor .link-view a {
+ display: block;
+ word-break: break-word;
+ width: calc(100% - 33px);
+}
+
+.link-editor div.link-edit {
+ background-image: url(/images/icons/pencil-fill.svg);
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 35px;
+ vertical-align: -0.25em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ cursor: pointer;
+}
+
+.link-editor div.link-cancel {
+ background-image: url(/images/icons/close.svg);
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 35px;
+ vertical-align: -0.25em;
+ margin-right: 28px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ cursor: pointer;
+}
+
+.link-editor div.link-confirm {
+ background-image: url(/images/icons/success-alt.svg);
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 35px;
+ vertical-align: -0.25em;
+ margin-right: 2px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ cursor: pointer;
+}
+
+.link-editor .link-input a {
+ color: rgb(33, 111, 219);
+ text-decoration: none;
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ margin-right: 30px;
+ text-overflow: ellipsis;
+}
+
+.link-editor .link-input a:hover {
+ text-decoration: underline;
+}
+
+.link-editor .font-size-wrapper,
+.link-editor .font-family-wrapper {
+ display: flex;
+ margin: 0 4px;
+}
+
+.link-editor select {
+ padding: 6px;
+ border: none;
+ background-color: rgba(0, 0, 0, 0.075);
+ border-radius: 4px;
+}
+
+.ContentEditable__root .PlaygroundEditorTheme__link {
+ pointer-events: none;
+}
+
+.mention:focus {
+ box-shadow: rgb(180 213 255) 0px 0px 0px 2px;
+ outline: none;
+}
+
+#block-controls {
+ display: block;
+ position: absolute;
+ right: 10px;
+ width: 32px;
+ height: 32px;
+ box-sizing: border-box;
+ box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px 0px;
+ top: 16px;
+ z-index: 10;
+ border-radius: 8px;
+ border: 1px solid rgb(206, 208, 212);
+ overflow: hidden;
+}
+
+#block-controls button {
+ border: 1px solid white;
+ background-color: #fff;
+ display: block;
+ transition: background-color 0.1s ease;
+ cursor: pointer;
+ outline: none;
+ border-radius: 8px;
+ padding: 3px;
+}
+
+#block-controls button:hover {
+ background-color: #efefef;
+}
+
+#block-controls button:focus-visible {
+ border-color: blue;
+}
+
+#block-controls span.block-type {
+ background-size: contain;
+ display: block;
+ width: 18px;
+ height: 18px;
+ margin: 2px;
+}
+
+#block-controls span.block-type.paragraph {
+ background-image: url(/images/icons/text-paragraph.svg);
+}
+
+#block-controls span.block-type.h1 {
+ background-image: url(/images/icons/type-h1.svg);
+}
+
+#block-controls span.block-type.h2 {
+ background-image: url(/images/icons/type-h2.svg);
+}
+
+#block-controls span.block-type.quote {
+ background-image: url(/images/icons/chat-square-quote.svg);
+}
+
+#block-controls span.block-type.ul {
+ background-image: url(/images/icons/list-ul.svg);
+}
+
+#block-controls span.block-type.ol {
+ background-image: url(/images/icons/list-ol.svg);
+}
+
+#block-controls span.block-type.code {
+ background-image: url(/images/icons/code.svg);
+}
+
+.characters-limit {
+ color: #888;
+ font-size: 12px;
+ text-align: right;
+ display: block;
+ position: absolute;
+ left: 12px;
+ bottom: 5px;
+}
+
+.characters-limit.characters-limit-exceeded {
+ color: red;
+}
+
+.dropdown {
+ z-index: 10;
+ display: block;
+ position: fixed;
+ box-shadow:
+ 0 12px 28px 0 rgba(0, 0, 0, 0.2),
+ 0 2px 4px 0 rgba(0, 0, 0, 0.1),
+ inset 0 0 0 1px rgba(255, 255, 255, 0.5);
+ border-radius: 8px;
+ min-height: 40px;
+ background-color: #fff;
+}
+
+.dropdown .item {
+ margin: 0 8px 0 8px;
+ padding: 8px;
+ color: #050505;
+ cursor: pointer;
+ line-height: 16px;
+ font-size: 15px;
+ display: flex;
+ align-content: center;
+ flex-direction: row;
+ flex-shrink: 0;
+ justify-content: space-between;
+ background-color: #fff;
+ border-radius: 8px;
+ border: 0;
+ max-width: 250px;
+ min-width: 100px;
+}
+
+.dropdown .item.fontsize-item,
+.dropdown .item.fontsize-item .text {
+ min-width: unset;
+}
+
+.dropdown .item .active {
+ display: flex;
+ width: 20px;
+ height: 20px;
+ background-size: contain;
+}
+
+.dropdown .item:first-child {
+ margin-top: 8px;
+}
+
+.dropdown .item:last-child {
+ margin-bottom: 8px;
+}
+
+.dropdown .item:hover {
+ background-color: #eee;
+}
+
+.dropdown .item .text {
+ display: flex;
+ line-height: 20px;
+ flex-grow: 1;
+ min-width: 150px;
+}
+
+.dropdown .item .icon {
+ display: flex;
+ width: 20px;
+ height: 20px;
+ user-select: none;
+ margin-right: 12px;
+ line-height: 16px;
+ background-size: contain;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.dropdown .divider {
+ width: auto;
+ background-color: #eee;
+ margin: 4px 8px;
+ height: 1px;
+}
+
+@media screen and (max-width: 1100px) {
+ .dropdown-button-text {
+ display: none !important;
+ }
+ .font-size .dropdown-button-text {
+ display: flex !important;
+ }
+ .code-language .dropdown-button-text {
+ display: flex !important;
+ }
+}
+
+.icon.paragraph {
+ background-image: url(/images/icons/text-paragraph.svg);
+}
+
+.icon.h1 {
+ background-image: url(/images/icons/type-h1.svg);
+}
+
+.icon.h2 {
+ background-image: url(/images/icons/type-h2.svg);
+}
+
+.icon.h3 {
+ background-image: url(/images/icons/type-h3.svg);
+}
+
+.icon.h4 {
+ background-image: url(/images/icons/type-h4.svg);
+}
+
+.icon.h5 {
+ background-image: url(/images/icons/type-h5.svg);
+}
+
+.icon.h6 {
+ background-image: url(/images/icons/type-h6.svg);
+}
+
+.icon.bullet-list,
+.icon.bullet {
+ background-image: url(/images/icons/list-ul.svg);
+}
+
+.icon.check-list,
+.icon.check {
+ background-image: url(/images/icons/square-check.svg);
+}
+
+.icon.numbered-list,
+.icon.number {
+ background-image: url(/images/icons/list-ol.svg);
+}
+
+.icon.quote {
+ background-image: url(/images/icons/chat-square-quote.svg);
+}
+
+.icon.code {
+ background-image: url(/images/icons/code.svg);
+}
+
+.switches {
+ z-index: 6;
+ position: fixed;
+ left: 10px;
+ bottom: 70px;
+ animation: slide-in 0.4s ease;
+}
+
+@keyframes slide-in {
+ 0% {
+ opacity: 0;
+ transform: translateX(-200px);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateX(0);
+ }
+}
+
+.switch {
+ display: block;
+ color: #444;
+ margin: 5px 0;
+ background-color: rgba(238, 238, 238, 0.7);
+ padding: 5px 10px;
+ border-radius: 10px;
+}
+
+#rich-text-switch {
+ right: 0;
+}
+
+#character-count-switch {
+ right: 130px;
+}
+
+.switch label {
+ margin-right: 5px;
+ line-height: 24px;
+ width: 100px;
+ font-size: 14px;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.switch button {
+ background-color: rgb(206, 208, 212);
+ height: 24px;
+ box-sizing: border-box;
+ border-radius: 12px;
+ width: 44px;
+ display: inline-block;
+ vertical-align: middle;
+ position: relative;
+ outline: none;
+ cursor: pointer;
+ transition: background-color 0.1s;
+ border: 2px solid transparent;
+}
+
+.switch button:focus-visible {
+ border-color: blue;
+}
+
+.switch button span {
+ top: 0px;
+ left: 0px;
+ display: block;
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ border-radius: 12px;
+ background-color: white;
+ transition: transform 0.2s;
+}
+
+.switch button[aria-checked='true'] {
+ background-color: rgb(24, 119, 242);
+}
+
+.switch button[aria-checked='true'] span {
+ transform: translateX(20px);
+}
+
+.editor-shell span.editor-image {
+ cursor: default;
+ display: inline-block;
+ position: relative;
+ user-select: none;
+ white-space: nowrap; /* without this, image editor is having extra height (// TODO: see if still required after fully porting lexical) */
+}
+
+.editor-shell .editor-image img {
+ max-width: 100%;
+ cursor: default;
+}
+
+.editor-shell .editor-image img.focused {
+ outline: 2px solid rgb(60, 132, 244);
+ user-select: none;
+}
+
+.editor-shell .editor-image img.focused.draggable {
+ cursor: grab;
+}
+
+.editor-shell .editor-image img.focused.draggable:active {
+ cursor: grabbing;
+}
+
+.editor-shell .editor-image .image-caption-container .tree-view-output {
+ margin: 0;
+ border-radius: 0;
+}
+
+.editor-shell .editor-image .image-caption-container {
+ display: block;
+ position: absolute;
+ bottom: 4px;
+ left: 0;
+ right: 0;
+ padding: 0;
+ margin: 0;
+ border-top: 1px solid #fff;
+ background-color: rgba(255, 255, 255, 0.9);
+ min-width: 100px;
+ color: #000;
+ overflow: hidden;
+}
+
+.editor-shell .editor-image .image-caption-button {
+ display: block;
+ position: absolute;
+ bottom: 20px;
+ left: 0;
+ right: 0;
+ width: 30%;
+ padding: 10px;
+ margin: 0 auto;
+ border: 1px solid rgba(255, 255, 255, 0.3);
+ border-radius: 5px;
+ background-color: rgba(0, 0, 0, 0.5);
+ min-width: 100px;
+ color: #fff;
+ cursor: pointer;
+ user-select: none;
+}
+
+.editor-shell .editor-image .image-caption-button:hover {
+ background-color: rgba(60, 132, 244, 0.5);
+}
+
+.editor-shell .editor-image .image-resizer {
+ display: block;
+ width: 7px;
+ height: 7px;
+ position: absolute;
+ background-color: rgb(60, 132, 244);
+ border: 1px solid #fff;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-n {
+ top: -6px;
+ left: 48%;
+ cursor: n-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-ne {
+ top: -6px;
+ right: -6px;
+ cursor: ne-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-e {
+ bottom: 48%;
+ right: -6px;
+ cursor: e-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-se {
+ bottom: -2px;
+ right: -6px;
+ cursor: nwse-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-s {
+ bottom: -2px;
+ left: 48%;
+ cursor: s-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-sw {
+ bottom: -2px;
+ left: -6px;
+ cursor: sw-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-w {
+ bottom: 48%;
+ left: -6px;
+ cursor: w-resize;
+}
+
+.editor-shell .editor-image .image-resizer.image-resizer-nw {
+ top: -6px;
+ left: -6px;
+ cursor: nw-resize;
+}
+
+.emoji {
+ color: transparent;
+ caret-color: rgb(5, 5, 5);
+ background-size: 16px 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ vertical-align: middle;
+ margin: 0 -1px;
+}
+
+.emoji-inner {
+ padding: 0 0.15em;
+}
+
+.emoji-inner::selection {
+ color: transparent;
+ background-color: rgba(150, 150, 150, 0.4);
+}
+
+.emoji-inner::moz-selection {
+ color: transparent;
+ background-color: rgba(150, 150, 150, 0.4);
+}
+
+.emoji.happysmile {
+ background-image: url(/images/emoji/1F642.png);
+}
+
+.emoji.veryhappysmile {
+ background-image: url(/images/emoji/1F600.png);
+}
+
+.emoji.unhappysmile {
+ background-image: url(/images/emoji/1F641.png);
+}
+
+.emoji.heart {
+ background-image: url(/images/emoji/2764.png);
+}
+
+.keyword {
+ color: rgb(241, 118, 94);
+ font-weight: bold;
+}
+
+.actions {
+ position: relative;
+ text-align: right;
+ padding: 10px;
+}
+
+.actions i {
+ background-size: contain;
+ display: inline-block;
+ height: 15px;
+ width: 15px;
+ vertical-align: -0.25em;
+}
+
+.actions i.indent {
+ background-image: url(/images/icons/indent.svg);
+}
+
+.actions i.outdent {
+ background-image: url(/images/icons/outdent.svg);
+}
+
+.actions i.lock {
+ background-image: url(/images/icons/lock-fill.svg);
+}
+
+.actions i.image {
+ background-image: url(/images/icons/file-image.svg);
+}
+
+.actions i.table {
+ background-image: url(/images/icons/table.svg);
+}
+
+.actions i.unlock {
+ background-image: url(/images/icons/lock.svg);
+}
+
+.actions i.left-align {
+ background-image: url(/images/icons/text-left.svg);
+}
+
+.actions i.center-align {
+ background-image: url(/images/icons/text-center.svg);
+}
+
+.actions i.right-align {
+ background-image: url(/images/icons/text-right.svg);
+}
+
+.actions i.justify-align {
+ background-image: url(/images/icons/justify.svg);
+}
+
+.actions i.disconnect {
+ background-image: url(/images/icons/plug.svg);
+}
+
+.actions i.connect {
+ background-image: url(/images/icons/plug-fill.svg);
+}
+
+table.disable-selection {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+table.disable-selection span::selection {
+ background-color: transparent;
+}
+
+table.disable-selection br::selection {
+ background-color: transparent;
+}
+
+.table-cell-action-button-container {
+ position: absolute;
+ top: 0;
+ left: 0;
+ will-change: transform;
+}
+
+.table-cell-action-button {
+ background-color: none;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: 0;
+ position: relative;
+ border-radius: 15px;
+ color: #222;
+ display: inline-block;
+ cursor: pointer;
+}
+
+i.chevron-down {
+ background-color: transparent;
+ background-size: contain;
+ display: inline-block;
+ height: 8px;
+ width: 8px;
+ background-image: url(/images/icons/chevron-down.svg);
+}
+
+.action-button {
+ background-color: #eee;
+ border: 0;
+ padding: 8px 12px;
+ position: relative;
+ margin-left: 5px;
+ border-radius: 15px;
+ color: #222;
+ display: inline-block;
+ cursor: pointer;
+}
+
+.action-button:hover {
+ background-color: #ddd;
+ color: #000;
+}
+
+.action-button-mic.active {
+ animation: mic-pulsate-color 3s infinite;
+}
+button.action-button:disabled {
+ opacity: 0.6;
+ background: #eee;
+ cursor: not-allowed;
+}
+
+@keyframes mic-pulsate-color {
+ 0% {
+ background-color: #ffdcdc;
+ }
+ 50% {
+ background-color: #ff8585;
+ }
+ 100% {
+ background-color: #ffdcdc;
+ }
+}
+
+.debug-timetravel-panel {
+ overflow: hidden;
+ padding: 0 0 10px 0;
+ margin: auto;
+ display: flex;
+}
+
+.debug-timetravel-panel-slider {
+ padding: 0;
+ flex: 8;
+}
+
+.debug-timetravel-panel-button {
+ padding: 0;
+ border: 0;
+ background: none;
+ flex: 1;
+ color: #fff;
+ font-size: 12px;
+}
+
+.debug-timetravel-panel-button:hover {
+ text-decoration: underline;
+}
+
+.debug-timetravel-button {
+ border: 0;
+ padding: 0;
+ font-size: 12px;
+ top: 10px;
+ right: 15px;
+ position: absolute;
+ background: none;
+ color: #fff;
+}
+
+.debug-timetravel-button:hover {
+ text-decoration: underline;
+}
+
+.connecting {
+ font-size: 15px;
+ color: #999;
+ overflow: hidden;
+ position: absolute;
+ text-overflow: ellipsis;
+ top: 10px;
+ left: 10px;
+ user-select: none;
+ white-space: nowrap;
+ display: inline-block;
+ pointer-events: none;
+}
+
+.ltr {
+ text-align: left;
+}
+
+.rtl {
+ text-align: right;
+}
+
+.toolbar {
+ display: flex;
+ margin-bottom: 1px;
+ background: #fff;
+ padding: 4px;
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+ vertical-align: middle;
+ overflow: auto;
+ height: 36px;
+ position: sticky;
+ top: 0;
+ z-index: 2;
+}
+
+.toolbar button.toolbar-item {
+ border: 0;
+ display: flex;
+ background: none;
+ border-radius: 10px;
+ padding: 8px;
+ cursor: pointer;
+ vertical-align: middle;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.toolbar button.toolbar-item:disabled {
+ cursor: not-allowed;
+}
+
+.toolbar button.toolbar-item.spaced {
+ margin-right: 2px;
+}
+
+.toolbar button.toolbar-item i.format {
+ background-size: contain;
+ display: inline-block;
+ height: 18px;
+ width: 18px;
+ vertical-align: -0.25em;
+ display: flex;
+ opacity: 0.6;
+}
+
+.toolbar button.toolbar-item:disabled .icon,
+.toolbar button.toolbar-item:disabled .text,
+.toolbar button.toolbar-item:disabled i.format,
+.toolbar button.toolbar-item:disabled .chevron-down {
+ opacity: 0.2;
+}
+
+.toolbar button.toolbar-item.active {
+ background-color: rgba(223, 232, 250, 0.3);
+}
+
+.toolbar button.toolbar-item.active i {
+ opacity: 1;
+}
+
+.toolbar .toolbar-item:hover:not([disabled]) {
+ background-color: #eee;
+}
+
+.toolbar .toolbar-item.font-family .text {
+ display: block;
+ max-width: 40px;
+}
+
+.toolbar .code-language {
+ width: 150px;
+}
+
+.toolbar .toolbar-item .text {
+ display: flex;
+ line-height: 20px;
+ vertical-align: middle;
+ font-size: 14px;
+ color: #777;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ height: 20px;
+ text-align: left;
+ padding-right: 10px;
+}
+
+.toolbar .toolbar-item .icon {
+ display: flex;
+ width: 20px;
+ height: 20px;
+ user-select: none;
+ margin-right: 8px;
+ line-height: 16px;
+ background-size: contain;
+}
+
+.toolbar i.chevron-down {
+ margin-top: 3px;
+ width: 16px;
+ height: 16px;
+ display: flex;
+ user-select: none;
+}
+
+.toolbar i.chevron-down.inside {
+ width: 16px;
+ height: 16px;
+ display: flex;
+ margin-left: -25px;
+ margin-top: 11px;
+ margin-right: 10px;
+ pointer-events: none;
+}
+
+.toolbar .divider {
+ width: 1px;
+ background-color: #eee;
+ margin: 0 4px;
+}
+
+.sticky-note-container {
+ position: absolute;
+ z-index: 9;
+ width: 120px;
+ display: inline-block;
+}
+
+.sticky-note {
+ line-height: 1;
+ text-align: left;
+ width: 120px;
+ margin: 25px;
+ padding: 20px 10px;
+ position: relative;
+ border: 1px solid #e8e8e8;
+ font-family: 'Reenie Beanie';
+ font-size: 24px;
+ border-bottom-right-radius: 60px 5px;
+ display: block;
+ cursor: move;
+}
+
+.sticky-note:after {
+ content: '';
+ position: absolute;
+ z-index: -1;
+ right: -0px;
+ bottom: 20px;
+ width: 120px;
+ height: 25px;
+ background: rgba(0, 0, 0, 0.2);
+ box-shadow: 2px 15px 5px rgba(0, 0, 0, 0.4);
+ transform: matrix(-1, -0.1, 0, 1, 0, 0);
+}
+
+.sticky-note.yellow {
+ border-top: 1px solid #fdfd86;
+ background: linear-gradient(
+ 135deg,
+ #ffff88 81%,
+ #ffff88 82%,
+ #ffff88 82%,
+ #ffffc6 100%
+ );
+}
+
+.sticky-note.pink {
+ border-top: 1px solid #e7d1e4;
+ background: linear-gradient(
+ 135deg,
+ #f7cbe8 81%,
+ #f7cbe8 82%,
+ #f7cbe8 82%,
+ #e7bfe1 100%
+ );
+}
+
+.sticky-note-container.dragging {
+ transition: none !important;
+}
+
+.sticky-note div {
+ cursor: text;
+}
+
+.sticky-note .delete {
+ border: 0;
+ background: none;
+ position: absolute;
+ top: 8px;
+ right: 10px;
+ font-size: 10px;
+ cursor: pointer;
+ opacity: 0.5;
+}
+
+.sticky-note .delete:hover {
+ font-weight: bold;
+ opacity: 1;
+}
+
+.sticky-note .color {
+ border: 0;
+ background: none;
+ position: absolute;
+ top: 8px;
+ right: 25px;
+ cursor: pointer;
+ opacity: 0.5;
+}
+
+.sticky-note .color:hover {
+ opacity: 1;
+}
+
+.sticky-note .color i {
+ display: block;
+ width: 12px;
+ height: 12px;
+ background-size: contain;
+}
+
+.excalidraw-button {
+ border: 0;
+ padding: 0;
+ margin: 0;
+ background-color: transparent;
+}
+
+.excalidraw-button.selected {
+ outline: 2px solid rgb(60, 132, 244);
+ user-select: none;
+}
+
+.github-corner:hover .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+}
+@keyframes octocat-wave {
+ 0%,
+ 100% {
+ transform: rotate(0);
+ }
+ 20%,
+ 60% {
+ transform: rotate(-25deg);
+ }
+ 40%,
+ 80% {
+ transform: rotate(10deg);
+ }
+}
+@media (max-width: 500px) {
+ .github-corner:hover .octo-arm {
+ animation: none;
+ }
+ .github-corner .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+ }
+}
+
+.spacer {
+ letter-spacing: -2px;
+}
+
+.editor-equation {
+ cursor: default;
+ user-select: none;
+}
+
+.editor-equation.focused {
+ outline: 2px solid rgb(60, 132, 244);
+}
+
+button.item i {
+ opacity: 0.6;
+}
+
+button.item.dropdown-item-active {
+ background-color: rgba(223, 232, 250, 0.3);
+}
+
+button.item.dropdown-item-active i {
+ opacity: 1;
+}
+
+hr {
+ padding: 2px 2px;
+ border: none;
+ margin: 1em 0;
+ cursor: pointer;
+}
+
+hr:after {
+ content: '';
+ display: block;
+ height: 2px;
+ background-color: #ccc;
+ line-height: 2px;
+}
+
+hr.selected {
+ outline: 2px solid rgb(60, 132, 244);
+ user-select: none;
+}
+
+.TableNode__contentEditable {
+ min-height: 20px;
+ border: 0px;
+ resize: none;
+ cursor: text;
+ display: block;
+ position: relative;
+ tab-size: 1;
+ outline: 0px;
+ padding: 0;
+ user-select: text;
+ font-size: 15px;
+ white-space: pre-wrap;
+ word-break: break-word;
+ z-index: 3;
+}
+
+.PlaygroundEditorTheme__blockCursor {
+ display: block;
+ pointer-events: none;
+ position: absolute;
+}
+
+.PlaygroundEditorTheme__blockCursor:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: -2px;
+ width: 20px;
+ border-top: 1px solid black;
+ animation: CursorBlink 1.1s steps(2, start) infinite;
+}
+
+@keyframes CursorBlink {
+ to {
+ visibility: hidden;
+ }
+}
+
+/* START: dialog input fields (InsertImageDialog) */
+.Input__wrapper {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ margin-bottom: 10px;
+}
+.Input__label {
+ display: flex;
+ flex: 1;
+ color: #666;
+}
+.Input__input {
+ display: flex;
+ flex: 3;
+ border: 1px solid #999;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ padding-left: 10px;
+ padding-right: 10px;
+ font-size: 16px;
+ border-radius: 5px;
+}
+/* END: dialog input fields */
+
+/* START: modal dialog */
+.Modal__overlay {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: fixed;
+ flex-direction: column;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+ background-color: rgba(40, 40, 40, 0.6);
+ flex-grow: 0px;
+ flex-shrink: 1px;
+ z-index: 100;
+}
+.Modal__modal {
+ padding: 20px;
+ min-height: 100px;
+ min-width: 400px;
+ display: flex;
+ flex-grow: 0px;
+ background-color: #fff;
+ flex-direction: column;
+ position: relative;
+ box-shadow: 0 0 20px 0 #444;
+ border-radius: 10px;
+}
+.Modal__title {
+ color: #444;
+ margin: 0px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #ccc;
+}
+.Modal__closeButton {
+ border: 0px;
+ position: absolute;
+ right: 20px;
+ border-radius: 20px;
+ justify-content: center;
+ align-items: center;
+ display: flex;
+ width: 30px;
+ height: 30px;
+ text-align: center;
+ cursor: pointer;
+ background-color: #eee;
+}
+.Modal__closeButton:hover {
+ background-color: #ddd;
+}
+.Modal__content {
+ padding-top: 20px;
+}
+
+.Button__root {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 15px;
+ padding-right: 15px;
+ border: 0px;
+ background-color: #eee;
+ border-radius: 5px;
+ cursor: pointer;
+ font-size: 14px;
+}
+.Button__root:hover {
+ background-color: #ddd;
+}
+
+.ToolbarPlugin__dialogActions {
+ display: flex;
+ flex-direction: row;
+ justify-content: right;
+ margin-top: 20px;
+}
+
+.ToolbarPlugin__dialogButtonsList {
+ display: flex;
+ flex-direction: column;
+ justify-content: right;
+ margin-top: 20px;
+}
+
+.ToolbarPlugin__dialogButtonsList button {
+ margin-bottom: 20px;
+}
+/* END: modal dialog */
diff --git a/packages/svelte-lexical/src/routes/+page.svelte b/packages/svelte-lexical/src/routes/+page.svelte
index aa7e9372..6984e8b2 100644
--- a/packages/svelte-lexical/src/routes/+page.svelte
+++ b/packages/svelte-lexical/src/routes/+page.svelte
@@ -1,9 +1,32 @@
-
Welcome to svelte-lexical library
-
- Create your package using @sveltejs/package and preview/showcase your work
- with SvelteKit
-
-
- Visit kit.svelte.dev
- to read the documentation
-
+
+
+
+
+
+ Welcome to
+ svelte-lexical
+
+ demo built using
+ SvelteKit
+
+
+
+
+
+
+
diff --git a/packages/svelte-lexical/src/routes/RichTextComposer.svelte b/packages/svelte-lexical/src/routes/RichTextComposer.svelte
new file mode 100644
index 00000000..06581715
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/RichTextComposer.svelte
@@ -0,0 +1,83 @@
+
+
+
+
+
diff --git a/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.css b/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.css
new file mode 100644
index 00000000..e50318c3
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.css
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ *
+ */
+
+.CommentEditorTheme__paragraph {
+ margin: 0;
+ position: 'relative';
+}
diff --git a/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.js b/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.js
new file mode 100644
index 00000000..04dd660a
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/CommentEditorTheme.js
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+import './CommentEditorTheme.css';
+
+import baseTheme from './PlaygroundEditorTheme';
+
+const theme = {
+ ...baseTheme,
+ paragraph: 'CommentEditorTheme__paragraph',
+};
+
+export default theme;
diff --git a/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.css b/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.css
new file mode 100644
index 00000000..f963ef24
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.css
@@ -0,0 +1,433 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ *
+ */
+.PlaygroundEditorTheme__ltr {
+ text-align: left;
+}
+.PlaygroundEditorTheme__rtl {
+ text-align: right;
+}
+.PlaygroundEditorTheme__paragraph {
+ margin: 0;
+ position: relative;
+}
+.PlaygroundEditorTheme__quote {
+ margin: 0;
+ margin-left: 20px;
+ margin-bottom: 10px;
+ font-size: 15px;
+ color: rgb(101, 103, 107);
+ border-left-color: rgb(206, 208, 212);
+ border-left-width: 4px;
+ border-left-style: solid;
+ padding-left: 16px;
+}
+.PlaygroundEditorTheme__h1 {
+ font-size: 24px;
+ color: rgb(5, 5, 5);
+ font-weight: 400;
+ margin: 0;
+}
+.PlaygroundEditorTheme__h2 {
+ font-size: 15px;
+ color: rgb(101, 103, 107);
+ font-weight: 700;
+ margin: 0;
+ text-transform: uppercase;
+}
+.PlaygroundEditorTheme__h3 {
+ font-size: 12px;
+ margin: 0;
+ text-transform: uppercase;
+}
+.PlaygroundEditorTheme__textBold {
+ font-weight: bold;
+}
+.PlaygroundEditorTheme__textItalic {
+ font-style: italic;
+}
+.PlaygroundEditorTheme__textUnderline {
+ text-decoration: underline;
+}
+.PlaygroundEditorTheme__textStrikethrough {
+ text-decoration: line-through;
+}
+.PlaygroundEditorTheme__textUnderlineStrikethrough {
+ text-decoration: underline line-through;
+}
+.PlaygroundEditorTheme__textSubscript {
+ font-size: 0.8em;
+ vertical-align: sub !important;
+}
+.PlaygroundEditorTheme__textSuperscript {
+ font-size: 0.8em;
+ vertical-align: super;
+}
+.PlaygroundEditorTheme__textCode {
+ background-color: rgb(240, 242, 245);
+ padding: 1px 0.25rem;
+ font-family: Menlo, Consolas, Monaco, monospace;
+ font-size: 94%;
+}
+.PlaygroundEditorTheme__hashtag {
+ background-color: rgba(88, 144, 255, 0.15);
+ border-bottom: 1px solid rgba(88, 144, 255, 0.3);
+}
+.PlaygroundEditorTheme__link {
+ color: rgb(33, 111, 219);
+ text-decoration: none;
+}
+.PlaygroundEditorTheme__link:hover {
+ text-decoration: underline;
+ cursor: pointer;
+}
+.PlaygroundEditorTheme__code {
+ background-color: rgb(240, 242, 245);
+ font-family: Menlo, Consolas, Monaco, monospace;
+ display: block;
+ padding: 8px 8px 8px 52px;
+ line-height: 1.53;
+ font-size: 13px;
+ margin: 0;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ tab-size: 2;
+ /* white-space: pre; */
+ overflow-x: auto;
+ position: relative;
+}
+.PlaygroundEditorTheme__code:before {
+ content: attr(data-gutter);
+ position: absolute;
+ background-color: #eee;
+ left: 0;
+ top: 0;
+ border-right: 1px solid #ccc;
+ padding: 8px;
+ color: #777;
+ white-space: pre-wrap;
+ text-align: right;
+ min-width: 25px;
+}
+.PlaygroundEditorTheme__table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ max-width: 100%;
+ overflow-y: scroll;
+ table-layout: fixed;
+ width: calc(100% - 25px);
+ margin: 30px 0;
+}
+.PlaygroundEditorTheme__tableSelected {
+ outline: 2px solid rgb(60, 132, 244);
+}
+.PlaygroundEditorTheme__tableCell {
+ border: 1px solid #bbb;
+ min-width: 75px;
+ vertical-align: top;
+ text-align: start;
+ padding: 6px 8px;
+ position: relative;
+ cursor: default;
+ outline: none;
+}
+.PlaygroundEditorTheme__tableCellSortedIndicator {
+ display: block;
+ opacity: 0.5;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 4px;
+ background-color: #999;
+}
+.PlaygroundEditorTheme__tableCellResizer {
+ position: absolute;
+ right: -4px;
+ height: 100%;
+ width: 8px;
+ cursor: ew-resize;
+ z-index: 10;
+ top: 0;
+}
+.PlaygroundEditorTheme__tableCellHeader {
+ background-color: #f2f3f5;
+ text-align: start;
+}
+.PlaygroundEditorTheme__tableCellSelected {
+ background-color: #c9dbf0;
+}
+.PlaygroundEditorTheme__tableCellPrimarySelected {
+ border: 2px solid rgb(60, 132, 244);
+ display: block;
+ height: calc(100% - 2px);
+ position: absolute;
+ width: calc(100% - 2px);
+ left: -1px;
+ top: -1px;
+ z-index: 2;
+}
+.PlaygroundEditorTheme__tableCellEditing {
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.4);
+ border-radius: 3px;
+}
+.PlaygroundEditorTheme__tableAddColumns {
+ position: absolute;
+ top: 0;
+ width: 20px;
+ background-color: #eee;
+ height: 100%;
+ right: 0;
+ animation: table-controls 0.2s ease;
+ border: 0;
+ cursor: pointer;
+}
+.PlaygroundEditorTheme__tableAddColumns:after {
+ background-image: url(/images/icons/plus.svg);
+ background-size: contain;
+ background-position: center;
+ background-repeat: no-repeat;
+ display: block;
+ content: ' ';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0.4;
+}
+.PlaygroundEditorTheme__tableAddColumns:hover {
+ background-color: #c9dbf0;
+}
+.PlaygroundEditorTheme__tableAddRows {
+ position: absolute;
+ bottom: -25px;
+ width: calc(100% - 25px);
+ background-color: #eee;
+ height: 20px;
+ left: 0;
+ animation: table-controls 0.2s ease;
+ border: 0;
+ cursor: pointer;
+}
+.PlaygroundEditorTheme__tableAddRows:after {
+ background-image: url(/images/icons/plus.svg);
+ background-size: contain;
+ background-position: center;
+ background-repeat: no-repeat;
+ display: block;
+ content: ' ';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0.4;
+}
+.PlaygroundEditorTheme__tableAddRows:hover {
+ background-color: #c9dbf0;
+}
+@keyframes table-controls {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+.PlaygroundEditorTheme__tableCellResizeRuler {
+ display: block;
+ position: absolute;
+ width: 1px;
+ background-color: rgb(60, 132, 244);
+ height: 100%;
+ top: 0;
+}
+.PlaygroundEditorTheme__tableCellActionButtonContainer {
+ display: block;
+ right: 5px;
+ top: 6px;
+ position: absolute;
+ z-index: 4;
+ width: 20px;
+ height: 20px;
+}
+.PlaygroundEditorTheme__tableCellActionButton {
+ background-color: #eee;
+ display: block;
+ border: 0;
+ border-radius: 20px;
+ width: 20px;
+ height: 20px;
+ color: #222;
+ cursor: pointer;
+}
+.PlaygroundEditorTheme__tableCellActionButton:hover {
+ background-color: #ddd;
+}
+.PlaygroundEditorTheme__characterLimit {
+ display: inline;
+ background-color: #ffbbbb !important;
+}
+.PlaygroundEditorTheme__ol1 {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__ol2 {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-type: upper-alpha;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__ol3 {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-type: lower-alpha;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__ol4 {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-type: upper-roman;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__ol5 {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-type: lower-roman;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__ul {
+ padding: 0;
+ margin: 0;
+ margin-left: 16px;
+ list-style-position: outside;
+}
+.PlaygroundEditorTheme__listItem {
+ margin: 0 32px;
+}
+.PlaygroundEditorTheme__listItemChecked,
+.PlaygroundEditorTheme__listItemUnchecked {
+ position: relative;
+ margin-left: 8px;
+ margin-right: 8px;
+ padding-left: 24px;
+ padding-right: 24px;
+ list-style-type: none;
+ outline: none;
+}
+.PlaygroundEditorTheme__listItemChecked {
+ text-decoration: line-through;
+}
+.PlaygroundEditorTheme__listItemUnchecked:before,
+.PlaygroundEditorTheme__listItemChecked:before {
+ content: '';
+ width: 16px;
+ height: 16px;
+ top: 2px;
+ left: 0;
+ cursor: pointer;
+ display: block;
+ background-size: cover;
+ position: absolute;
+}
+.PlaygroundEditorTheme__listItemUnchecked[dir='rtl']:before,
+.PlaygroundEditorTheme__listItemChecked[dir='rtl']:before {
+ left: auto;
+ right: 0;
+}
+.PlaygroundEditorTheme__listItemUnchecked:focus:before,
+.PlaygroundEditorTheme__listItemChecked:focus:before {
+ box-shadow: 0 0 0 2px #a6cdfe;
+ border-radius: 2px;
+}
+.PlaygroundEditorTheme__listItemUnchecked:before {
+ border: 1px solid #999;
+ border-radius: 2px;
+}
+.PlaygroundEditorTheme__listItemChecked:before {
+ border: 1px solid rgb(61, 135, 245);
+ border-radius: 2px;
+ background-color: #3d87f5;
+ background-repeat: no-repeat;
+}
+.PlaygroundEditorTheme__listItemChecked:after {
+ content: '';
+ cursor: pointer;
+ border-color: #fff;
+ border-style: solid;
+ position: absolute;
+ display: block;
+ top: 6px;
+ width: 3px;
+ left: 7px;
+ right: 7px;
+ height: 6px;
+ transform: rotate(45deg);
+ border-width: 0 2px 2px 0;
+}
+.PlaygroundEditorTheme__nestedListItem {
+ list-style-type: none;
+}
+.PlaygroundEditorTheme__nestedListItem:before,
+.PlaygroundEditorTheme__nestedListItem:after {
+ display: none;
+}
+.PlaygroundEditorTheme__tokenComment {
+ color: slategray;
+}
+.PlaygroundEditorTheme__tokenPunctuation {
+ color: #999;
+}
+.PlaygroundEditorTheme__tokenProperty {
+ color: #905;
+}
+.PlaygroundEditorTheme__tokenSelector {
+ color: #690;
+}
+.PlaygroundEditorTheme__tokenOperator {
+ color: #9a6e3a;
+}
+.PlaygroundEditorTheme__tokenAttr {
+ color: #07a;
+}
+.PlaygroundEditorTheme__tokenVariable {
+ color: #e90;
+}
+.PlaygroundEditorTheme__tokenFunction {
+ color: #dd4a68;
+}
+.PlaygroundEditorTheme__mark {
+ background: rgba(255, 212, 0, 0.14);
+ border-bottom: 2px solid rgba(255, 212, 0, 0.3);
+ padding-bottom: 2px;
+}
+.PlaygroundEditorTheme__markOverlap {
+ background: rgba(255, 212, 0, 0.3);
+ border-bottom: 2px solid rgba(255, 212, 0, 0.7);
+}
+.PlaygroundEditorTheme__mark.selected {
+ background: rgba(255, 212, 0, 0.5);
+ border-bottom: 2px solid rgba(255, 212, 0, 1);
+}
+.PlaygroundEditorTheme__markOverlap.selected {
+ background: rgba(255, 212, 0, 0.7);
+ border-bottom: 2px solid rgba(255, 212, 0, 0.7);
+}
+.PlaygroundEditorTheme__embedBlock {
+ user-select: none;
+}
+.PlaygroundEditorTheme__embedBlockFocus {
+ outline: 2px solid rgb(60, 132, 244);
+}
diff --git a/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.js b/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.js
new file mode 100644
index 00000000..561ad03d
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/PlaygroundEditorTheme.js
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) Syed Umar Anis
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+
+import './PlaygroundEditorTheme.css';
+
+const theme = {
+ blockCursor: 'PlaygroundEditorTheme__blockCursor',
+ characterLimit: 'PlaygroundEditorTheme__characterLimit',
+ code: 'PlaygroundEditorTheme__code',
+ codeHighlight: {
+ atrule: 'PlaygroundEditorTheme__tokenAttr',
+ attr: 'PlaygroundEditorTheme__tokenAttr',
+ boolean: 'PlaygroundEditorTheme__tokenProperty',
+ builtin: 'PlaygroundEditorTheme__tokenSelector',
+ cdata: 'PlaygroundEditorTheme__tokenComment',
+ char: 'PlaygroundEditorTheme__tokenSelector',
+ class: 'PlaygroundEditorTheme__tokenFunction',
+ 'class-name': 'PlaygroundEditorTheme__tokenFunction',
+ comment: 'PlaygroundEditorTheme__tokenComment',
+ constant: 'PlaygroundEditorTheme__tokenProperty',
+ deleted: 'PlaygroundEditorTheme__tokenProperty',
+ doctype: 'PlaygroundEditorTheme__tokenComment',
+ entity: 'PlaygroundEditorTheme__tokenOperator',
+ function: 'PlaygroundEditorTheme__tokenFunction',
+ important: 'PlaygroundEditorTheme__tokenVariable',
+ inserted: 'PlaygroundEditorTheme__tokenSelector',
+ keyword: 'PlaygroundEditorTheme__tokenAttr',
+ namespace: 'PlaygroundEditorTheme__tokenVariable',
+ number: 'PlaygroundEditorTheme__tokenProperty',
+ operator: 'PlaygroundEditorTheme__tokenOperator',
+ prolog: 'PlaygroundEditorTheme__tokenComment',
+ property: 'PlaygroundEditorTheme__tokenProperty',
+ punctuation: 'PlaygroundEditorTheme__tokenPunctuation',
+ regex: 'PlaygroundEditorTheme__tokenVariable',
+ selector: 'PlaygroundEditorTheme__tokenSelector',
+ string: 'PlaygroundEditorTheme__tokenSelector',
+ symbol: 'PlaygroundEditorTheme__tokenProperty',
+ tag: 'PlaygroundEditorTheme__tokenProperty',
+ url: 'PlaygroundEditorTheme__tokenOperator',
+ variable: 'PlaygroundEditorTheme__tokenVariable',
+ },
+ embedBlock: {
+ base: 'PlaygroundEditorTheme__embedBlock',
+ focus: 'PlaygroundEditorTheme__embedBlockFocus',
+ },
+ hashtag: 'PlaygroundEditorTheme__hashtag',
+ heading: {
+ h1: 'PlaygroundEditorTheme__h1',
+ h2: 'PlaygroundEditorTheme__h2',
+ h3: 'PlaygroundEditorTheme__h3',
+ h4: 'PlaygroundEditorTheme__h4',
+ h5: 'PlaygroundEditorTheme__h5',
+ h6: 'PlaygroundEditorTheme__h6',
+ },
+ image: 'editor-image',
+ link: 'PlaygroundEditorTheme__link',
+ list: {
+ listitem: 'PlaygroundEditorTheme__listItem',
+ listitemChecked: 'PlaygroundEditorTheme__listItemChecked',
+ listitemUnchecked: 'PlaygroundEditorTheme__listItemUnchecked',
+ nested: {
+ listitem: 'PlaygroundEditorTheme__nestedListItem',
+ },
+ olDepth: [
+ 'PlaygroundEditorTheme__ol1',
+ 'PlaygroundEditorTheme__ol2',
+ 'PlaygroundEditorTheme__ol3',
+ 'PlaygroundEditorTheme__ol4',
+ 'PlaygroundEditorTheme__ol5',
+ ],
+ ul: 'PlaygroundEditorTheme__ul',
+ },
+ ltr: 'PlaygroundEditorTheme__ltr',
+ mark: 'PlaygroundEditorTheme__mark',
+ markOverlap: 'PlaygroundEditorTheme__markOverlap',
+ paragraph: 'PlaygroundEditorTheme__paragraph',
+ quote: 'PlaygroundEditorTheme__quote',
+ rtl: 'PlaygroundEditorTheme__rtl',
+ table: 'PlaygroundEditorTheme__table',
+ tableAddColumns: 'PlaygroundEditorTheme__tableAddColumns',
+ tableAddRows: 'PlaygroundEditorTheme__tableAddRows',
+ tableCell: 'PlaygroundEditorTheme__tableCell',
+ tableCellActionButton: 'PlaygroundEditorTheme__tableCellActionButton',
+ tableCellActionButtonContainer:
+ 'PlaygroundEditorTheme__tableCellActionButtonContainer',
+ tableCellEditing: 'PlaygroundEditorTheme__tableCellEditing',
+ tableCellHeader: 'PlaygroundEditorTheme__tableCellHeader',
+ tableCellPrimarySelected: 'PlaygroundEditorTheme__tableCellPrimarySelected',
+ tableCellResizer: 'PlaygroundEditorTheme__tableCellResizer',
+ tableCellSelected: 'PlaygroundEditorTheme__tableCellSelected',
+ tableCellSortedIndicator: 'PlaygroundEditorTheme__tableCellSortedIndicator',
+ tableResizeRuler: 'PlaygroundEditorTheme__tableCellResizeRuler',
+ tableSelected: 'PlaygroundEditorTheme__tableSelected',
+ text: {
+ bold: 'PlaygroundEditorTheme__textBold',
+ code: 'PlaygroundEditorTheme__textCode',
+ italic: 'PlaygroundEditorTheme__textItalic',
+ strikethrough: 'PlaygroundEditorTheme__textStrikethrough',
+ subscript: 'PlaygroundEditorTheme__textSubscript',
+ superscript: 'PlaygroundEditorTheme__textSuperscript',
+ underline: 'PlaygroundEditorTheme__textUnderline',
+ underlineStrikethrough: 'PlaygroundEditorTheme__textUnderlineStrikethrough',
+ },
+};
+
+export default theme;
diff --git a/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.css b/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.css
new file mode 100644
index 00000000..f5638696
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.css
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ *
+ */
+
+.StickyEditorTheme__paragraph {
+ margin: 0;
+ position: 'relative';
+}
diff --git a/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.js b/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.js
new file mode 100644
index 00000000..33e3ef60
--- /dev/null
+++ b/packages/svelte-lexical/src/routes/themes/StickyEditorTheme.js
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) Syed Umar Anis
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ */
+
+import './StickyEditorTheme.css';
+
+import baseTheme from './PlaygroundEditorTheme';
+
+const theme = {
+ ...baseTheme,
+ paragraph: 'StickyEditorTheme__paragraph',
+};
+
+export default theme;
diff --git a/packages/svelte-lexical/static/favicon.png b/packages/svelte-lexical/static/favicon.png
new file mode 100644
index 00000000..825b9e65
Binary files /dev/null and b/packages/svelte-lexical/static/favicon.png differ
diff --git a/packages/svelte-lexical/static/images/cat-typing.gif b/packages/svelte-lexical/static/images/cat-typing.gif
new file mode 100644
index 00000000..4f45feb3
Binary files /dev/null and b/packages/svelte-lexical/static/images/cat-typing.gif differ
diff --git a/packages/svelte-lexical/static/images/emoji/1F600.png b/packages/svelte-lexical/static/images/emoji/1F600.png
new file mode 100644
index 00000000..ba0e4feb
Binary files /dev/null and b/packages/svelte-lexical/static/images/emoji/1F600.png differ
diff --git a/packages/svelte-lexical/static/images/emoji/1F641.png b/packages/svelte-lexical/static/images/emoji/1F641.png
new file mode 100644
index 00000000..0dd4e5be
Binary files /dev/null and b/packages/svelte-lexical/static/images/emoji/1F641.png differ
diff --git a/packages/svelte-lexical/static/images/emoji/1F642.png b/packages/svelte-lexical/static/images/emoji/1F642.png
new file mode 100644
index 00000000..b37115fd
Binary files /dev/null and b/packages/svelte-lexical/static/images/emoji/1F642.png differ
diff --git a/packages/svelte-lexical/static/images/emoji/2764.png b/packages/svelte-lexical/static/images/emoji/2764.png
new file mode 100644
index 00000000..6dd2cd56
Binary files /dev/null and b/packages/svelte-lexical/static/images/emoji/2764.png differ
diff --git a/packages/svelte-lexical/static/images/emoji/LICENSE.md b/packages/svelte-lexical/static/images/emoji/LICENSE.md
new file mode 100644
index 00000000..87b04e9a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/emoji/LICENSE.md
@@ -0,0 +1,5 @@
+OpenMoji
+https://openmoji.org
+
+Licensed under Attribution-ShareAlike 4.0 International
+https://creativecommons.org/licenses/by-sa/4.0/
diff --git a/packages/svelte-lexical/static/images/icons/LICENSE.md b/packages/svelte-lexical/static/images/icons/LICENSE.md
new file mode 100644
index 00000000..ce74f6ab
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/LICENSE.md
@@ -0,0 +1,5 @@
+Bootstrap Icons
+https://icons.getbootstrap.com
+
+Licensed under MIT license
+https://github.com/twbs/icons/blob/main/LICENSE.md
diff --git a/packages/svelte-lexical/static/images/icons/arrow-clockwise.svg b/packages/svelte-lexical/static/images/icons/arrow-clockwise.svg
new file mode 100644
index 00000000..80b3ad06
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/arrow-clockwise.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/arrow-counterclockwise.svg b/packages/svelte-lexical/static/images/icons/arrow-counterclockwise.svg
new file mode 100644
index 00000000..46d3581d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/arrow-counterclockwise.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/bg-color.svg b/packages/svelte-lexical/static/images/icons/bg-color.svg
new file mode 100644
index 00000000..ae08b2c1
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/bg-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/camera.svg b/packages/svelte-lexical/static/images/icons/camera.svg
new file mode 100755
index 00000000..968ebf4e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/camera.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/card-checklist.svg b/packages/svelte-lexical/static/images/icons/card-checklist.svg
new file mode 100644
index 00000000..f81734be
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/card-checklist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/caret-right-fill.svg b/packages/svelte-lexical/static/images/icons/caret-right-fill.svg
new file mode 100644
index 00000000..04c258e6
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/caret-right-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chat-left-text.svg b/packages/svelte-lexical/static/images/icons/chat-left-text.svg
new file mode 100644
index 00000000..7c7acc23
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chat-left-text.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chat-right-dots.svg b/packages/svelte-lexical/static/images/icons/chat-right-dots.svg
new file mode 100644
index 00000000..110925a1
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chat-right-dots.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chat-right-text.svg b/packages/svelte-lexical/static/images/icons/chat-right-text.svg
new file mode 100644
index 00000000..08daa52b
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chat-right-text.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chat-right.svg b/packages/svelte-lexical/static/images/icons/chat-right.svg
new file mode 100644
index 00000000..d9c2b110
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chat-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chat-square-quote.svg b/packages/svelte-lexical/static/images/icons/chat-square-quote.svg
new file mode 100755
index 00000000..5501848a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chat-square-quote.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/chevron-down.svg b/packages/svelte-lexical/static/images/icons/chevron-down.svg
new file mode 100644
index 00000000..ef1a6ba3
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/chevron-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/clipboard.svg b/packages/svelte-lexical/static/images/icons/clipboard.svg
new file mode 100755
index 00000000..f09e1a1c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/clipboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/close.svg b/packages/svelte-lexical/static/images/icons/close.svg
new file mode 100644
index 00000000..4f5bb393
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/code.svg b/packages/svelte-lexical/static/images/icons/code.svg
new file mode 100755
index 00000000..c9070bf0
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/comments.svg b/packages/svelte-lexical/static/images/icons/comments.svg
new file mode 100644
index 00000000..6a23ac54
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/comments.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/copy.svg b/packages/svelte-lexical/static/images/icons/copy.svg
new file mode 100644
index 00000000..e757cdfe
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/copy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/diagram-2.svg b/packages/svelte-lexical/static/images/icons/diagram-2.svg
new file mode 100644
index 00000000..7b7b696d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/diagram-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/download.svg b/packages/svelte-lexical/static/images/icons/download.svg
new file mode 100755
index 00000000..cd27d96c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/draggable-block-menu.svg b/packages/svelte-lexical/static/images/icons/draggable-block-menu.svg
new file mode 100644
index 00000000..7086d299
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/draggable-block-menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/dropdown-more.svg b/packages/svelte-lexical/static/images/icons/dropdown-more.svg
new file mode 100644
index 00000000..399ea8de
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/dropdown-more.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/figma.svg b/packages/svelte-lexical/static/images/icons/figma.svg
new file mode 100644
index 00000000..fa319e12
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/figma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/file-earmark-text.svg b/packages/svelte-lexical/static/images/icons/file-earmark-text.svg
new file mode 100644
index 00000000..0d60c795
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/file-earmark-text.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/file-image.svg b/packages/svelte-lexical/static/images/icons/file-image.svg
new file mode 100644
index 00000000..73a9ff15
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/file-image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/filetype-gif.svg b/packages/svelte-lexical/static/images/icons/filetype-gif.svg
new file mode 100644
index 00000000..12acb80f
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/filetype-gif.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/font-color.svg b/packages/svelte-lexical/static/images/icons/font-color.svg
new file mode 100644
index 00000000..1ac53f7a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/font-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/font-family.svg b/packages/svelte-lexical/static/images/icons/font-family.svg
new file mode 100644
index 00000000..a13f5ad1
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/font-family.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/gear.svg b/packages/svelte-lexical/static/images/icons/gear.svg
new file mode 100755
index 00000000..ee6efa04
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/gear.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/horizontal-rule.svg b/packages/svelte-lexical/static/images/icons/horizontal-rule.svg
new file mode 100644
index 00000000..cb84970f
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/horizontal-rule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/indent.svg b/packages/svelte-lexical/static/images/icons/indent.svg
new file mode 100644
index 00000000..c9c5df7b
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/indent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/journal-code.svg b/packages/svelte-lexical/static/images/icons/journal-code.svg
new file mode 100755
index 00000000..9db6666a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/journal-code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/journal-text.svg b/packages/svelte-lexical/static/images/icons/journal-text.svg
new file mode 100755
index 00000000..9defed2c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/journal-text.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/justify.svg b/packages/svelte-lexical/static/images/icons/justify.svg
new file mode 100644
index 00000000..6c5f8d0f
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/justify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/link.svg b/packages/svelte-lexical/static/images/icons/link.svg
new file mode 100755
index 00000000..bc38ff5d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/list-ol.svg b/packages/svelte-lexical/static/images/icons/list-ol.svg
new file mode 100755
index 00000000..ad288e8e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/list-ol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/list-ul.svg b/packages/svelte-lexical/static/images/icons/list-ul.svg
new file mode 100755
index 00000000..6d7aae75
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/list-ul.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/lock-fill.svg b/packages/svelte-lexical/static/images/icons/lock-fill.svg
new file mode 100644
index 00000000..466ca138
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/lock-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/lock.svg b/packages/svelte-lexical/static/images/icons/lock.svg
new file mode 100644
index 00000000..3e19e71b
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/markdown.svg b/packages/svelte-lexical/static/images/icons/markdown.svg
new file mode 100644
index 00000000..310bff6d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/mic.svg b/packages/svelte-lexical/static/images/icons/mic.svg
new file mode 100644
index 00000000..afdb58da
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/mic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/outdent.svg b/packages/svelte-lexical/static/images/icons/outdent.svg
new file mode 100644
index 00000000..a98e0e19
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/outdent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/paint-bucket.svg b/packages/svelte-lexical/static/images/icons/paint-bucket.svg
new file mode 100644
index 00000000..baa02d3b
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/paint-bucket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/palette.svg b/packages/svelte-lexical/static/images/icons/palette.svg
new file mode 100644
index 00000000..338222ec
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/palette.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/pencil-fill.svg b/packages/svelte-lexical/static/images/icons/pencil-fill.svg
new file mode 100755
index 00000000..eb01fb2a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/pencil-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/plug-fill.svg b/packages/svelte-lexical/static/images/icons/plug-fill.svg
new file mode 100644
index 00000000..3863ef84
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/plug-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/plug.svg b/packages/svelte-lexical/static/images/icons/plug.svg
new file mode 100644
index 00000000..de8d4c80
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/plug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/plus-slash-minus.svg b/packages/svelte-lexical/static/images/icons/plus-slash-minus.svg
new file mode 100644
index 00000000..40ff781e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/plus-slash-minus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/plus.svg b/packages/svelte-lexical/static/images/icons/plus.svg
new file mode 100644
index 00000000..1a26928a
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/plus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/prettier-error.svg b/packages/svelte-lexical/static/images/icons/prettier-error.svg
new file mode 100644
index 00000000..8fc8450d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/prettier-error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/prettier.svg b/packages/svelte-lexical/static/images/icons/prettier.svg
new file mode 100644
index 00000000..b25a626c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/prettier.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/send.svg b/packages/svelte-lexical/static/images/icons/send.svg
new file mode 100644
index 00000000..04e9f298
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/send.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/square-check.svg b/packages/svelte-lexical/static/images/icons/square-check.svg
new file mode 100644
index 00000000..352ba615
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/square-check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/sticky.svg b/packages/svelte-lexical/static/images/icons/sticky.svg
new file mode 100644
index 00000000..2b14115c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/sticky.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/success-alt.svg b/packages/svelte-lexical/static/images/icons/success-alt.svg
new file mode 100644
index 00000000..c9d4ad9c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/success-alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/success.svg b/packages/svelte-lexical/static/images/icons/success.svg
new file mode 100644
index 00000000..8e11879e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/success.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/table.svg b/packages/svelte-lexical/static/images/icons/table.svg
new file mode 100644
index 00000000..e514555c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/text-center.svg b/packages/svelte-lexical/static/images/icons/text-center.svg
new file mode 100644
index 00000000..97ced49e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/text-center.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/text-left.svg b/packages/svelte-lexical/static/images/icons/text-left.svg
new file mode 100644
index 00000000..5fe4cc44
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/text-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/text-paragraph.svg b/packages/svelte-lexical/static/images/icons/text-paragraph.svg
new file mode 100755
index 00000000..1b943ab4
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/text-paragraph.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/text-right.svg b/packages/svelte-lexical/static/images/icons/text-right.svg
new file mode 100644
index 00000000..de984517
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/text-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/trash.svg b/packages/svelte-lexical/static/images/icons/trash.svg
new file mode 100644
index 00000000..75680bb7
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/trash3.svg b/packages/svelte-lexical/static/images/icons/trash3.svg
new file mode 100644
index 00000000..5c38b387
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/trash3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/tweet.svg b/packages/svelte-lexical/static/images/icons/tweet.svg
new file mode 100644
index 00000000..3304020e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/tweet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-bold.svg b/packages/svelte-lexical/static/images/icons/type-bold.svg
new file mode 100755
index 00000000..ec0dc2ec
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-bold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h1.svg b/packages/svelte-lexical/static/images/icons/type-h1.svg
new file mode 100755
index 00000000..379da930
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h2.svg b/packages/svelte-lexical/static/images/icons/type-h2.svg
new file mode 100755
index 00000000..e724a0be
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h3.svg b/packages/svelte-lexical/static/images/icons/type-h3.svg
new file mode 100755
index 00000000..02d4a06c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h4.svg b/packages/svelte-lexical/static/images/icons/type-h4.svg
new file mode 100755
index 00000000..eb950c9e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h5.svg b/packages/svelte-lexical/static/images/icons/type-h5.svg
new file mode 100755
index 00000000..5d565639
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h5.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-h6.svg b/packages/svelte-lexical/static/images/icons/type-h6.svg
new file mode 100755
index 00000000..8274acac
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-h6.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-italic.svg b/packages/svelte-lexical/static/images/icons/type-italic.svg
new file mode 100755
index 00000000..ac139f3c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-italic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-strikethrough.svg b/packages/svelte-lexical/static/images/icons/type-strikethrough.svg
new file mode 100755
index 00000000..a0d7e17e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-strikethrough.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-subscript.svg b/packages/svelte-lexical/static/images/icons/type-subscript.svg
new file mode 100644
index 00000000..f6ebe4b6
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-subscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-superscript.svg b/packages/svelte-lexical/static/images/icons/type-superscript.svg
new file mode 100644
index 00000000..bed98f9d
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-superscript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/type-underline.svg b/packages/svelte-lexical/static/images/icons/type-underline.svg
new file mode 100755
index 00000000..d5c7046e
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/type-underline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/upload.svg b/packages/svelte-lexical/static/images/icons/upload.svg
new file mode 100644
index 00000000..81328ddb
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/upload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/user.svg b/packages/svelte-lexical/static/images/icons/user.svg
new file mode 100644
index 00000000..823b72d1
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/icons/youtube.svg b/packages/svelte-lexical/static/images/icons/youtube.svg
new file mode 100644
index 00000000..e7fb9faa
--- /dev/null
+++ b/packages/svelte-lexical/static/images/icons/youtube.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/image/LICENSE.md b/packages/svelte-lexical/static/images/image/LICENSE.md
new file mode 100644
index 00000000..f11a532c
--- /dev/null
+++ b/packages/svelte-lexical/static/images/image/LICENSE.md
@@ -0,0 +1,5 @@
+yellow-flower.jpg by Andrew Haimerl
+https://unsplash.com/photos/oxQHb8Yqt14
+
+Licensed under Unsplash License
+https://unsplash.com/license
diff --git a/packages/svelte-lexical/static/images/landscape.jpg b/packages/svelte-lexical/static/images/landscape.jpg
new file mode 100644
index 00000000..a54a11a4
Binary files /dev/null and b/packages/svelte-lexical/static/images/landscape.jpg differ
diff --git a/packages/svelte-lexical/static/images/logo.svg b/packages/svelte-lexical/static/images/logo.svg
new file mode 100644
index 00000000..44b2c694
--- /dev/null
+++ b/packages/svelte-lexical/static/images/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte-lexical/static/images/yellow-flower-small.jpg b/packages/svelte-lexical/static/images/yellow-flower-small.jpg
new file mode 100644
index 00000000..93a6ad0e
Binary files /dev/null and b/packages/svelte-lexical/static/images/yellow-flower-small.jpg differ
diff --git a/packages/svelte-lexical/static/images/yellow-flower.jpg b/packages/svelte-lexical/static/images/yellow-flower.jpg
new file mode 100644
index 00000000..9f96c1e5
Binary files /dev/null and b/packages/svelte-lexical/static/images/yellow-flower.jpg differ