leepi 0.0.0 → 0.0.3
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/dist/core/active-marks.d.ts +15 -0
- package/dist/core/active-marks.js +57 -0
- package/dist/core/commands.d.ts +39 -0
- package/dist/core/commands.js +415 -0
- package/dist/core/editor.d.ts +25 -0
- package/dist/core/editor.js +102 -0
- package/dist/core/field-notifier.d.ts +21 -0
- package/dist/core/field-notifier.js +56 -0
- package/dist/core/highlight-style.js +60 -0
- package/dist/core/highlight.d.ts +8 -0
- package/dist/core/highlight.js +34 -0
- package/dist/core/plugins/blockquote.d.ts +11 -0
- package/dist/core/plugins/blockquote.js +78 -0
- package/dist/core/plugins/bracket.d.ts +6 -0
- package/dist/core/plugins/bracket.js +38 -0
- package/dist/core/plugins/code-block.d.ts +27 -0
- package/dist/core/plugins/code-block.js +207 -0
- package/dist/core/plugins/heading.d.ts +13 -0
- package/dist/core/plugins/heading.js +111 -0
- package/dist/core/plugins/inline.d.ts +14 -0
- package/dist/core/plugins/inline.js +103 -0
- package/dist/core/plugins/link.d.ts +25 -0
- package/dist/core/plugins/link.js +104 -0
- package/dist/core/plugins/list.d.ts +14 -0
- package/dist/core/plugins/list.js +91 -0
- package/dist/core/plugins/table.d.ts +12 -0
- package/dist/core/plugins/table.js +161 -0
- package/dist/core/plugins.d.ts +9 -0
- package/dist/core/plugins.js +9 -0
- package/dist/core/popover.d.ts +9 -0
- package/dist/core/popover.js +16 -0
- package/dist/core/registry.d.ts +10 -0
- package/dist/core/registry.js +8 -0
- package/dist/core/types.d.ts +25 -0
- package/dist/core/types.js +0 -0
- package/dist/core/utils.d.ts +13 -0
- package/dist/core/utils.js +32 -0
- package/dist/leepi.css +461 -0
- package/dist/react/code-block-popover.d.ts +76 -0
- package/dist/react/code-block-popover.js +223 -0
- package/dist/react/context.d.ts +42 -0
- package/dist/react/context.js +88 -0
- package/dist/react/editor.d.ts +30 -0
- package/dist/react/editor.js +60 -0
- package/dist/react/floating-toolbar.d.ts +30 -0
- package/dist/react/floating-toolbar.js +87 -0
- package/dist/react/link-popover.d.ts +70 -0
- package/dist/react/link-popover.js +222 -0
- package/dist/react/preview.d.ts +13 -0
- package/dist/react/preview.js +56 -0
- package/dist/react/toolbar.d.ts +51 -0
- package/dist/react/toolbar.js +161 -0
- package/package.json +90 -1
- package/src/core/active-marks.ts +89 -0
- package/src/core/commands.ts +461 -0
- package/src/core/editor.ts +139 -0
- package/src/core/field-notifier.ts +71 -0
- package/src/core/highlight-style.ts +66 -0
- package/src/core/highlight.ts +50 -0
- package/src/core/plugins/blockquote.ts +108 -0
- package/src/core/plugins/bracket.ts +34 -0
- package/src/core/plugins/code-block.ts +195 -0
- package/src/core/plugins/heading.ts +95 -0
- package/src/core/plugins/index.ts +16 -0
- package/src/core/plugins/inline.ts +62 -0
- package/src/core/plugins/link.ts +124 -0
- package/src/core/plugins/list.ts +68 -0
- package/src/core/plugins/table.ts +217 -0
- package/src/core/popover.ts +17 -0
- package/src/core/registry.ts +18 -0
- package/src/core/types.ts +25 -0
- package/src/core/utils.ts +38 -0
- package/src/react/code-block-popover.tsx +387 -0
- package/src/react/context.tsx +153 -0
- package/src/react/editor.tsx +106 -0
- package/src/react/floating-toolbar.tsx +161 -0
- package/src/react/link-popover.tsx +354 -0
- package/src/react/preview.tsx +80 -0
- package/src/react/toolbar.tsx +294 -0
- package/src/styles/floating-toolbar.css +52 -0
- package/src/styles/leepi.css +2 -0
- package/src/styles/popover.css +93 -0
- package/src/styles/preview.css +191 -0
- package/src/styles/theme.css +99 -0
- package/src/styles/tokens.css +63 -0
- package/src/styles/toolbar.css +55 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
@layer utilities {
|
|
2
|
+
.lp-toolbar {
|
|
3
|
+
background: var(--lp-color-bg);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.lp-toolbar-btn:hover {
|
|
7
|
+
background: var(--lp-color-surface);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.lp-toolbar-btn:active {
|
|
11
|
+
background: var(--lp-color-border);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.lp-floating-toolbar {
|
|
15
|
+
background: var(--lp-color-bg);
|
|
16
|
+
border: 1px solid var(--lp-color-border);
|
|
17
|
+
box-shadow:
|
|
18
|
+
0 4px 12px rgba(0, 0, 0, 0.08),
|
|
19
|
+
0 1px 3px rgba(0, 0, 0, 0.06);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.lp-floating-toolbar-btn:hover {
|
|
23
|
+
background: var(--lp-color-surface);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.lp-floating-toolbar-btn:active {
|
|
27
|
+
background: var(--lp-color-border);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.lp-popover {
|
|
31
|
+
background: var(--lp-color-bg);
|
|
32
|
+
box-shadow:
|
|
33
|
+
0 8px 24px rgba(0, 0, 0, 0.12),
|
|
34
|
+
0 2px 6px rgba(0, 0, 0, 0.08);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.lp-popover-label {
|
|
38
|
+
color: var(--lp-color-text-secondary);
|
|
39
|
+
font-weight: var(--lp-font-weight-semibold, 600);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.lp-popover-input,
|
|
43
|
+
.lp-popover-select {
|
|
44
|
+
background: var(--lp-color-surface);
|
|
45
|
+
color: var(--lp-color-text);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.lp-popover-input::placeholder {
|
|
49
|
+
color: var(--lp-color-text-faded);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.lp-popover-input:focus,
|
|
53
|
+
.lp-popover-select:focus {
|
|
54
|
+
background: var(--lp-color-bg);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.lp-popover-btn--secondary {
|
|
58
|
+
background: transparent;
|
|
59
|
+
color: var(--lp-color-text-secondary);
|
|
60
|
+
border-color: var(--lp-color-border);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.lp-popover-btn--secondary:hover:not(:disabled) {
|
|
64
|
+
background: var(--lp-color-surface);
|
|
65
|
+
color: var(--lp-color-text);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.lp-popover-btn--primary {
|
|
69
|
+
background: var(--lp-color-accent);
|
|
70
|
+
color: #fff;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.lp-popover-btn--primary:hover:not(:disabled) {
|
|
74
|
+
filter: brightness(1.1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.lp-popover-btn--danger {
|
|
78
|
+
background: transparent;
|
|
79
|
+
color: var(--lp-syntax-variable);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.lp-popover-btn--danger:hover:not(:disabled) {
|
|
83
|
+
background: var(--lp-color-surface);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@media (prefers-color-scheme: dark) {
|
|
87
|
+
.lp-floating-toolbar {
|
|
88
|
+
box-shadow:
|
|
89
|
+
0 4px 12px rgba(0, 0, 0, 0.3),
|
|
90
|
+
0 1px 3px rgba(0, 0, 0, 0.2);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.lp-popover {
|
|
94
|
+
box-shadow:
|
|
95
|
+
0 8px 24px rgba(0, 0, 0, 0.35),
|
|
96
|
+
0 2px 6px rgba(0, 0, 0, 0.25);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
@layer base {
|
|
2
|
+
:root {
|
|
3
|
+
--lp-font-body: system-ui, -apple-system, sans-serif;
|
|
4
|
+
--lp-font-display: system-ui, -apple-system, sans-serif;
|
|
5
|
+
--lp-font-mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
|
6
|
+
--lp-font-size: 0.875rem;
|
|
7
|
+
--lp-line-height: 1.6;
|
|
8
|
+
--lp-font-weight-bold: 700;
|
|
9
|
+
--lp-font-weight-semibold: 600;
|
|
10
|
+
|
|
11
|
+
--lp-color-bg: #ffffff;
|
|
12
|
+
--lp-color-text: #1a1a1a;
|
|
13
|
+
--lp-color-text-secondary: rgba(0, 0, 0, 0.6);
|
|
14
|
+
--lp-color-text-faded: rgba(0, 0, 0, 0.36);
|
|
15
|
+
--lp-color-accent: #0078d4;
|
|
16
|
+
--lp-color-selection: rgba(0, 120, 212, 0.15);
|
|
17
|
+
--lp-color-border: rgba(0, 0, 0, 0.12);
|
|
18
|
+
--lp-color-surface: #f5f5f5;
|
|
19
|
+
--lp-color-caret: currentColor;
|
|
20
|
+
--lp-radius: 6px;
|
|
21
|
+
|
|
22
|
+
--lp-syntax-keyword: #8839ef;
|
|
23
|
+
--lp-syntax-string: #40a02b;
|
|
24
|
+
--lp-syntax-number: #e64553;
|
|
25
|
+
--lp-syntax-function: #1e66f5;
|
|
26
|
+
--lp-syntax-comment: #8c8fa1;
|
|
27
|
+
--lp-syntax-variable: #d20f39;
|
|
28
|
+
--lp-syntax-type: #df8e1d;
|
|
29
|
+
--lp-syntax-operator: #0d7680;
|
|
30
|
+
--lp-syntax-property: #d20f39;
|
|
31
|
+
--lp-syntax-tag: #d20f39;
|
|
32
|
+
--lp-syntax-attribute: #df8e1d;
|
|
33
|
+
--lp-syntax-escape: #0d7680;
|
|
34
|
+
--lp-syntax-punctuation: #4c4f69;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@media (prefers-color-scheme: dark) {
|
|
38
|
+
:root {
|
|
39
|
+
--lp-color-bg: #1e1e2e;
|
|
40
|
+
--lp-color-text: #cdd6f4;
|
|
41
|
+
--lp-color-text-secondary: rgba(205, 214, 244, 0.6);
|
|
42
|
+
--lp-color-text-faded: rgba(205, 214, 244, 0.36);
|
|
43
|
+
--lp-color-accent: #89b4fa;
|
|
44
|
+
--lp-color-selection: rgba(137, 180, 250, 0.2);
|
|
45
|
+
--lp-color-border: rgba(205, 214, 244, 0.12);
|
|
46
|
+
--lp-color-surface: #313244;
|
|
47
|
+
|
|
48
|
+
--lp-syntax-keyword: #cba6f7;
|
|
49
|
+
--lp-syntax-string: #a6e3a1;
|
|
50
|
+
--lp-syntax-number: #fab387;
|
|
51
|
+
--lp-syntax-function: #89b4fa;
|
|
52
|
+
--lp-syntax-comment: #6c7086;
|
|
53
|
+
--lp-syntax-variable: #f38ba8;
|
|
54
|
+
--lp-syntax-type: #f9e2af;
|
|
55
|
+
--lp-syntax-operator: #94e2d5;
|
|
56
|
+
--lp-syntax-property: #f38ba8;
|
|
57
|
+
--lp-syntax-tag: #f38ba8;
|
|
58
|
+
--lp-syntax-attribute: #f9e2af;
|
|
59
|
+
--lp-syntax-escape: #94e2d5;
|
|
60
|
+
--lp-syntax-punctuation: #a6adc8;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.lp-toolbar {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: 2px;
|
|
6
|
+
padding: 0.25rem 0.5rem;
|
|
7
|
+
border-bottom: 1px solid var(--lp-color-border, rgba(0, 0, 0, 0.12));
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.lp-toolbar > span {
|
|
12
|
+
display: contents;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.lp-toolbar-group {
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
gap: 1px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lp-toolbar-btn {
|
|
22
|
+
display: inline-flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
width: 1.75rem;
|
|
26
|
+
height: 1.75rem;
|
|
27
|
+
padding: 0;
|
|
28
|
+
border: none;
|
|
29
|
+
background: transparent;
|
|
30
|
+
color: inherit;
|
|
31
|
+
border-radius: 4px;
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
font: inherit;
|
|
34
|
+
font-size: 0.75rem;
|
|
35
|
+
font-weight: 600;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.lp-toolbar-btn--active {
|
|
39
|
+
color: var(--lp-color-accent, #0078d4);
|
|
40
|
+
background: var(--lp-color-selection, rgba(0, 120, 212, 0.15));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.lp-toolbar-btn svg {
|
|
44
|
+
display: block;
|
|
45
|
+
width: 16px;
|
|
46
|
+
height: 16px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.lp-toolbar-separator {
|
|
50
|
+
width: 1px;
|
|
51
|
+
height: 1rem;
|
|
52
|
+
background: var(--lp-color-border, rgba(0, 0, 0, 0.12));
|
|
53
|
+
margin: 0 0.25rem;
|
|
54
|
+
}
|
|
55
|
+
}
|