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.
Files changed (86) hide show
  1. package/dist/core/active-marks.d.ts +15 -0
  2. package/dist/core/active-marks.js +57 -0
  3. package/dist/core/commands.d.ts +39 -0
  4. package/dist/core/commands.js +415 -0
  5. package/dist/core/editor.d.ts +25 -0
  6. package/dist/core/editor.js +102 -0
  7. package/dist/core/field-notifier.d.ts +21 -0
  8. package/dist/core/field-notifier.js +56 -0
  9. package/dist/core/highlight-style.js +60 -0
  10. package/dist/core/highlight.d.ts +8 -0
  11. package/dist/core/highlight.js +34 -0
  12. package/dist/core/plugins/blockquote.d.ts +11 -0
  13. package/dist/core/plugins/blockquote.js +78 -0
  14. package/dist/core/plugins/bracket.d.ts +6 -0
  15. package/dist/core/plugins/bracket.js +38 -0
  16. package/dist/core/plugins/code-block.d.ts +27 -0
  17. package/dist/core/plugins/code-block.js +207 -0
  18. package/dist/core/plugins/heading.d.ts +13 -0
  19. package/dist/core/plugins/heading.js +111 -0
  20. package/dist/core/plugins/inline.d.ts +14 -0
  21. package/dist/core/plugins/inline.js +103 -0
  22. package/dist/core/plugins/link.d.ts +25 -0
  23. package/dist/core/plugins/link.js +104 -0
  24. package/dist/core/plugins/list.d.ts +14 -0
  25. package/dist/core/plugins/list.js +91 -0
  26. package/dist/core/plugins/table.d.ts +12 -0
  27. package/dist/core/plugins/table.js +161 -0
  28. package/dist/core/plugins.d.ts +9 -0
  29. package/dist/core/plugins.js +9 -0
  30. package/dist/core/popover.d.ts +9 -0
  31. package/dist/core/popover.js +16 -0
  32. package/dist/core/registry.d.ts +10 -0
  33. package/dist/core/registry.js +8 -0
  34. package/dist/core/types.d.ts +25 -0
  35. package/dist/core/types.js +0 -0
  36. package/dist/core/utils.d.ts +13 -0
  37. package/dist/core/utils.js +32 -0
  38. package/dist/leepi.css +461 -0
  39. package/dist/react/code-block-popover.d.ts +76 -0
  40. package/dist/react/code-block-popover.js +223 -0
  41. package/dist/react/context.d.ts +42 -0
  42. package/dist/react/context.js +88 -0
  43. package/dist/react/editor.d.ts +30 -0
  44. package/dist/react/editor.js +60 -0
  45. package/dist/react/floating-toolbar.d.ts +30 -0
  46. package/dist/react/floating-toolbar.js +87 -0
  47. package/dist/react/link-popover.d.ts +70 -0
  48. package/dist/react/link-popover.js +222 -0
  49. package/dist/react/preview.d.ts +13 -0
  50. package/dist/react/preview.js +56 -0
  51. package/dist/react/toolbar.d.ts +51 -0
  52. package/dist/react/toolbar.js +161 -0
  53. package/package.json +90 -1
  54. package/src/core/active-marks.ts +89 -0
  55. package/src/core/commands.ts +461 -0
  56. package/src/core/editor.ts +139 -0
  57. package/src/core/field-notifier.ts +71 -0
  58. package/src/core/highlight-style.ts +66 -0
  59. package/src/core/highlight.ts +50 -0
  60. package/src/core/plugins/blockquote.ts +108 -0
  61. package/src/core/plugins/bracket.ts +34 -0
  62. package/src/core/plugins/code-block.ts +195 -0
  63. package/src/core/plugins/heading.ts +95 -0
  64. package/src/core/plugins/index.ts +16 -0
  65. package/src/core/plugins/inline.ts +62 -0
  66. package/src/core/plugins/link.ts +124 -0
  67. package/src/core/plugins/list.ts +68 -0
  68. package/src/core/plugins/table.ts +217 -0
  69. package/src/core/popover.ts +17 -0
  70. package/src/core/registry.ts +18 -0
  71. package/src/core/types.ts +25 -0
  72. package/src/core/utils.ts +38 -0
  73. package/src/react/code-block-popover.tsx +387 -0
  74. package/src/react/context.tsx +153 -0
  75. package/src/react/editor.tsx +106 -0
  76. package/src/react/floating-toolbar.tsx +161 -0
  77. package/src/react/link-popover.tsx +354 -0
  78. package/src/react/preview.tsx +80 -0
  79. package/src/react/toolbar.tsx +294 -0
  80. package/src/styles/floating-toolbar.css +52 -0
  81. package/src/styles/leepi.css +2 -0
  82. package/src/styles/popover.css +93 -0
  83. package/src/styles/preview.css +191 -0
  84. package/src/styles/theme.css +99 -0
  85. package/src/styles/tokens.css +63 -0
  86. 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
+ }