tetrons 2.3.27 → 2.3.28

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 (48) hide show
  1. package/dist/app/api/ai-action/route.d.mts +9 -0
  2. package/dist/app/api/ai-action/route.mjs +36 -0
  3. package/dist/app/api/export/route.d.mts +3 -0
  4. package/dist/app/api/export/route.mjs +8 -0
  5. package/dist/app/api/register/route.d.mts +10 -0
  6. package/dist/app/api/register/route.mjs +85 -0
  7. package/dist/app/api/save/route.d.mts +9 -0
  8. package/dist/app/api/save/route.mjs +18 -0
  9. package/dist/app/api/transcribe/route.d.mts +10 -0
  10. package/dist/app/api/transcribe/route.mjs +46 -0
  11. package/dist/app/api/validate/route.d.mts +13 -0
  12. package/dist/app/api/validate/route.mjs +107 -0
  13. package/package.json +2 -2
  14. package/dist/app/page.d.ts +0 -2
  15. package/dist/components/components/UI/Button.tsx +0 -0
  16. package/dist/components/components/UI/Dropdown.tsx +0 -0
  17. package/dist/components/components/tetrons/EditorContent.tsx +0 -280
  18. package/dist/components/components/tetrons/ResizableImageComponent.tsx +0 -112
  19. package/dist/components/components/tetrons/ResizableVideoComponent.tsx +0 -56
  20. package/dist/components/tetrons/EditorContent.d.ts +0 -6
  21. package/dist/components/tetrons/ResizableImage.d.ts +0 -1
  22. package/dist/components/tetrons/ResizableImage.ts +0 -35
  23. package/dist/components/tetrons/ResizableImageComponent.d.ts +0 -4
  24. package/dist/components/tetrons/ResizableImageComponent.jsx +0 -73
  25. package/dist/components/tetrons/ResizableVideo.ts +0 -66
  26. package/dist/components/tetrons/extensions/Spellcheck.ts +0 -50
  27. package/dist/components/tetrons/helpers.ts +0 -0
  28. package/dist/components/tetrons/toolbar/AIGroup.tsx +0 -209
  29. package/dist/components/tetrons/toolbar/ActionGroup.tsx +0 -218
  30. package/dist/components/tetrons/toolbar/ClipboardGroup.tsx +0 -58
  31. package/dist/components/tetrons/toolbar/FileGroup.tsx +0 -66
  32. package/dist/components/tetrons/toolbar/FontStyleGroup.tsx +0 -194
  33. package/dist/components/tetrons/toolbar/InsertGroup.tsx +0 -267
  34. package/dist/components/tetrons/toolbar/ListAlignGroup.tsx +0 -69
  35. package/dist/components/tetrons/toolbar/MiscGroup.tsx +0 -104
  36. package/dist/components/tetrons/toolbar/TableContextMenu.tsx +0 -91
  37. package/dist/components/tetrons/toolbar/TetronsToolbar.tsx +0 -77
  38. package/dist/components/tetrons/toolbar/ToolbarButton.tsx +0 -36
  39. package/dist/components/tetrons/toolbar/extensions/Comment.ts +0 -72
  40. package/dist/components/tetrons/toolbar/extensions/Embed.ts +0 -113
  41. package/dist/components/tetrons/toolbar/extensions/FontFamily.ts +0 -43
  42. package/dist/components/tetrons/toolbar/extensions/FontSize.ts +0 -43
  43. package/dist/components/tetrons/toolbar/extensions/ResizableTable.ts +0 -16
  44. package/dist/components/tetrons/toolbar/marks/Subscript.ts +0 -45
  45. package/dist/components/tetrons/toolbar/marks/Superscript.ts +0 -45
  46. package/dist/index.d.ts +0 -6
  47. package/dist/index.js +0 -17012
  48. package/dist/styles/styles/tetrons.css +0 -563
@@ -1,563 +0,0 @@
1
- .editor-container {
2
- display: flex;
3
- flex-direction: column;
4
- height: 100%;
5
- }
6
-
7
- .editor-toolbar {
8
- padding: 0.5rem;
9
- border-bottom: 1px solid #d1d5db;
10
- background-color: #f9fafb;
11
- display: flex;
12
- flex-wrap: wrap;
13
- align-items: center;
14
- gap: 0.75rem;
15
- }
16
-
17
- .editor-save-btn {
18
- padding: 0.25rem 0.75rem;
19
- background-color: #2563eb;
20
- color: white;
21
- border-radius: 0.375rem;
22
- transition: background-color 0.2s;
23
- }
24
-
25
- .editor-save-btn:hover {
26
- background-color: #1d4ed8;
27
- }
28
-
29
- .editor-save-btn:disabled {
30
- opacity: 0.5;
31
- cursor: not-allowed;
32
- }
33
-
34
- .editor-version-btn {
35
- padding: 0.25rem 0.5rem;
36
- border: 1px solid #d1d5db;
37
- color: #374151;
38
- border-radius: 0.375rem;
39
- font-size: 0.875rem;
40
- white-space: nowrap;
41
- transition: all 0.2s;
42
- background: none;
43
- }
44
-
45
- .editor-version-btn:hover {
46
- border-color: #4b5563;
47
- }
48
-
49
- .editor-version-btn.active {
50
- border-color: #2563eb;
51
- color: #2563eb;
52
- font-weight: 600;
53
- }
54
-
55
- .editor-content-wrapper {
56
- flex-grow: 1;
57
- padding: 1.5rem;
58
- background-color: white;
59
- border: 1px solid #d1d5db;
60
- border-radius: 0.5rem;
61
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
62
- overflow: auto;
63
- position: relative;
64
- min-height: 0;
65
- }
66
-
67
- .editor-loading {
68
- color: #6b7280;
69
- font-size: 0.875rem;
70
- text-align: center;
71
- padding: 1rem;
72
- }
73
-
74
- .editor-content-wrapper .ProseMirror {
75
- outline: none;
76
- min-height: 300px;
77
- font-size: 1rem;
78
- line-height: 1.75;
79
- }
80
-
81
- .editor-content-wrapper .ProseMirror[data-placeholder]:empty::before {
82
- content: attr(data-placeholder);
83
- color: #9ca3af;
84
- float: left;
85
- height: 0;
86
- pointer-events: none;
87
- }
88
-
89
- .ProseMirror pre {
90
- background: #f3f4f6;
91
- padding: 1rem;
92
- border-radius: 0.375rem;
93
- font-family: monospace;
94
- font-size: 0.875rem;
95
- overflow-x: auto;
96
- }
97
-
98
- .editor-versions-wrapper {
99
- display: flex;
100
- align-items: center;
101
- gap: 0.5rem;
102
- overflow-x: auto;
103
- max-width: 100%;
104
- }
105
-
106
- .editor-no-versions {
107
- color: #6b7280;
108
- font-size: 0.875rem;
109
- }
110
-
111
- .tetrons-toolbar {
112
- display: flex;
113
- flex-wrap: wrap;
114
- align-items: center;
115
- gap: 1rem;
116
- padding: 0.75rem;
117
- border-bottom: 1px solid #e5e7eb;
118
- background-color: white;
119
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
120
- position: relative;
121
- z-index: 10;
122
- }
123
-
124
- .tetrons-toolbar .group {
125
- display: flex;
126
- align-items: center;
127
- gap: 0.5rem;
128
- border-right: 1px solid #e5e7eb;
129
- padding-right: 0.75rem;
130
- }
131
-
132
- .tetrons-toolbar input[type="checkbox"] {
133
- width: 1rem;
134
- height: 1rem;
135
- }
136
-
137
- .tetrons-toolbar label {
138
- font-size: 0.875rem;
139
- -webkit-user-select: none;
140
- user-select: none;
141
- }
142
-
143
- .misc-group {
144
- display: flex;
145
- gap: 0.25rem;
146
- align-items: center;
147
- border-right: 1px solid #e5e7eb;
148
- padding-right: 0.75rem;
149
- }
150
-
151
- .list-align-group {
152
- display: flex;
153
- gap: 0.25rem;
154
- border-right: 1px solid #e5e7eb;
155
- padding-right: 0.75rem;
156
- align-items: center;
157
- }
158
-
159
- .insert-group {
160
- display: flex;
161
- gap: 0.25rem;
162
- border-right: 1px solid #e5e7eb;
163
- padding-right: 0.75rem;
164
- position: relative;
165
- align-items: center;
166
- }
167
-
168
- .table-grid-popup {
169
- position: absolute;
170
- top: 2.5rem;
171
- left: 0;
172
- background-color: white;
173
- border: 1px solid #d1d5db;
174
- border-radius: 0.25rem;
175
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
176
- padding: 0.5rem;
177
- z-index: 20;
178
- }
179
-
180
- .table-grid {
181
- display: grid;
182
- grid-template-columns: repeat(10, 1fr);
183
- gap: 1px;
184
- }
185
-
186
- .table-grid-cell {
187
- width: 1.25rem;
188
- height: 1.25rem;
189
- border: 1px solid #d1d5db;
190
- background-color: #f3f4f6;
191
- cursor: pointer;
192
- }
193
-
194
- .table-grid-cell.selected {
195
- background-color: #3b82f6;
196
- }
197
-
198
- .table-grid-label {
199
- margin-top: 0.5rem;
200
- font-size: 0.75rem;
201
- text-align: center;
202
- color: #6b7280;
203
- }
204
-
205
- .hidden-input {
206
- display: none;
207
- }
208
-
209
- .emoji-picker {
210
- position: absolute;
211
- top: 2.5rem;
212
- left: 0;
213
- z-index: 50;
214
- }
215
-
216
- .font-style-group {
217
- display: flex;
218
- gap: 0.25rem;
219
- border-right: 1px solid #e5e7eb;
220
- padding-right: 0.75rem;
221
- align-items: center;
222
- }
223
-
224
- .font-style-group select {
225
- font-size: 0.875rem;
226
- border: 1px solid #d1d5db;
227
- border-radius: 0.25rem;
228
- padding: 0.125rem 0.25rem;
229
- margin-right: 0.5rem;
230
- }
231
-
232
- .color-label {
233
- position: relative;
234
- width: 2rem;
235
- height: 2rem;
236
- display: flex;
237
- justify-content: center;
238
- align-items: center;
239
- cursor: pointer;
240
- }
241
-
242
- .color-indicator {
243
- content: "";
244
- position: absolute;
245
- bottom: 2px;
246
- left: 50%;
247
- transform: translateX(-50%);
248
- width: 12px;
249
- height: 4px;
250
- background-color: var(--indicator-color, #000000);
251
- border-radius: 2px;
252
- pointer-events: none;
253
- }
254
-
255
- .color-label input[type="color"] {
256
- position: absolute;
257
- inset: 0;
258
- opacity: 0;
259
- cursor: pointer;
260
- }
261
-
262
- .file-group {
263
- display: flex;
264
- align-items: center;
265
- gap: 0.25rem;
266
- border-right: 1px solid #e5e7eb;
267
- padding-right: 0.75rem;
268
- }
269
-
270
- .file-group input[type="file"] {
271
- display: none;
272
- }
273
-
274
- .clipboard-group {
275
- display: flex;
276
- gap: 0.25rem;
277
- border-right: 1px solid #e5e7eb;
278
- padding-right: 0.75rem;
279
- }
280
-
281
- .action-group {
282
- position: relative;
283
- display: flex;
284
- align-items: center;
285
- gap: 0.25rem;
286
- }
287
-
288
- .export-button {
289
- display: flex;
290
- align-items: center;
291
- gap: 0.25rem;
292
- padding: 0.25rem 0.5rem;
293
- border-radius: 0.25rem;
294
- background: transparent;
295
- cursor: pointer;
296
- }
297
-
298
- .export-button:hover {
299
- background-color: #f3f4f6;
300
- }
301
-
302
- .export-button:focus {
303
- outline: none;
304
- }
305
-
306
- .export-dropdown {
307
- position: absolute;
308
- z-index: 10;
309
- margin-top: 0.5rem;
310
- width: 10rem;
311
- background-color: #fff;
312
- border: 1px solid #e5e7eb;
313
- border-radius: 0.25rem;
314
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
315
- }
316
-
317
- .export-dropdown button {
318
- width: 100%;
319
- text-align: left;
320
- padding: 0.5rem 1rem;
321
- background: none;
322
- border: none;
323
- font-size: 0.875rem;
324
- cursor: pointer;
325
- }
326
-
327
- .export-dropdown button:hover {
328
- background-color: #f3f4f6;
329
- }
330
-
331
- .toolbar-button {
332
- padding: 0.5rem;
333
- border: none;
334
- background-color: transparent;
335
- border-radius: 0.375rem;
336
- cursor: pointer;
337
- display: flex;
338
- align-items: center;
339
- justify-content: center;
340
- transition: background-color 0.2s ease;
341
- }
342
-
343
- .toolbar-button:hover {
344
- background-color: #e5e7eb;
345
- }
346
-
347
- .toolbar-button.active {
348
- background-color: #d1d5db;
349
- }
350
-
351
- .toolbar-button:disabled {
352
- opacity: 0.5;
353
- cursor: not-allowed;
354
- }
355
-
356
- .tableWrapper {
357
- overflow-x: auto;
358
- margin: 1rem 0;
359
- }
360
-
361
- .tableWrapper table {
362
- width: 100%;
363
- border-collapse: collapse;
364
- }
365
-
366
- .tableWrapper th,
367
- .tableWrapper td {
368
- border: 1px solid #d1d5db;
369
- padding: 0.5rem;
370
- text-align: left;
371
- }
372
-
373
- .icon-btn {
374
- padding: 0.5rem;
375
- background: transparent;
376
- border: none;
377
- cursor: pointer;
378
- }
379
-
380
- .stop-btn {
381
- background-color: #dc2626;
382
- color: white;
383
- margin-right: 20px;
384
- }
385
-
386
- .stop-btn:hover {
387
- background-color: #b91c1c;
388
- }
389
-
390
- .voice-modal {
391
- position: fixed;
392
- inset: 0;
393
- background: rgba(0, 0, 0, 0.5);
394
- z-index: 9999;
395
- display: flex;
396
- align-items: center;
397
- justify-content: center;
398
- }
399
-
400
- .voice-modal-content {
401
- background: white;
402
- padding: 2rem;
403
- border-radius: 12px;
404
- text-align: center;
405
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
406
- }
407
-
408
- .ai-button {
409
- padding: 8px 16px;
410
- background: linear-gradient(to right, #7f00ff, #4f46e5);
411
- color: white;
412
- font-weight: bold;
413
- border: none;
414
- border-radius: 6px;
415
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
416
- cursor: pointer;
417
- transition: background 0.3s ease, transform 0.2s ease;
418
- }
419
-
420
- .ai-button:hover {
421
- background: linear-gradient(to right, #6b00d6, #4338ca);
422
- transform: translateY(-1px);
423
- }
424
-
425
- .ai-button:active {
426
- transform: scale(0.97);
427
- }
428
-
429
- .prompt-container {
430
- margin-top: 0.5rem;
431
- display: flex;
432
- flex-direction: column;
433
- gap: 0.5rem;
434
- }
435
-
436
- .prompt-textarea {
437
- width: 100%;
438
- padding: 8px;
439
- font-size: 14px;
440
- border-radius: 4px;
441
- border: 1px solid #ccc;
442
- resize: vertical;
443
- }
444
-
445
- .prompt-actions {
446
- display: flex;
447
- gap: 0.5rem;
448
- }
449
-
450
- .prompt-submit-btn {
451
- padding: 6px 12px;
452
- background-color: #4f46e5;
453
- color: #fff;
454
- border-radius: 4px;
455
- border: none;
456
- cursor: pointer;
457
- transition: background-color 0.2s ease;
458
- }
459
-
460
- .prompt-submit-btn:disabled {
461
- cursor: not-allowed;
462
- opacity: 0.6;
463
- }
464
-
465
- .prompt-cancel-btn {
466
- padding: 6px 12px;
467
- background-color: #e5e7eb;
468
- color: #000;
469
- border-radius: 4px;
470
- border: none;
471
- cursor: pointer;
472
- }
473
-
474
- .ai-error-message {
475
- color: red;
476
- font-size: 13px;
477
- margin-top: 0.5rem;
478
- }
479
-
480
- .ai-modal-backdrop {
481
- position: fixed;
482
- inset: 0;
483
- z-index: 9999;
484
- display: flex;
485
- align-items: center;
486
- justify-content: center;
487
- background-color: rgba(0, 0, 0, 0.4);
488
- -webkit-backdrop-filter: blur(4px);
489
- backdrop-filter: blur(4px);
490
- }
491
-
492
- .ai-modal-content {
493
- background-color: #ffffff;
494
- border-radius: 16px;
495
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
496
- padding: 1.5rem;
497
- width: 90%;
498
- max-width: 28rem;
499
- }
500
-
501
- .ai-modal-title {
502
- font-size: 1.125rem;
503
- font-weight: 600;
504
- margin-bottom: 0.5rem;
505
- }
506
-
507
- .ai-modal-textarea {
508
- width: 100%;
509
- border: 1px solid #ccc;
510
- border-radius: 0.5rem;
511
- padding: 0.5rem;
512
- font-size: 0.875rem;
513
- min-height: 100px;
514
- resize: none;
515
- }
516
-
517
- .ai-modal-error {
518
- font-size: 0.875rem;
519
- color: red;
520
- margin-top: 0.5rem;
521
- }
522
-
523
- .ai-modal-actions {
524
- display: flex;
525
- justify-content: flex-end;
526
- gap: 0.5rem;
527
- margin-top: 1rem;
528
- }
529
-
530
- .ai-cancel-btn {
531
- font-size: 0.875rem;
532
- padding: 0.5rem 1rem;
533
- background-color: #e5e7eb;
534
- color: #000;
535
- border: none;
536
- border-radius: 0.375rem;
537
- cursor: pointer;
538
- transition: background-color 0.2s ease;
539
- }
540
-
541
- .ai-cancel-btn:hover {
542
- background-color: #d1d5db;
543
- }
544
-
545
- .ai-submit-btn {
546
- font-size: 0.875rem;
547
- padding: 0.5rem 1rem;
548
- background-color: #2563eb;
549
- color: white;
550
- border: none;
551
- border-radius: 0.375rem;
552
- cursor: pointer;
553
- transition: background-color 0.2s ease;
554
- }
555
-
556
- .ai-submit-btn:hover {
557
- background-color: #1d4ed8;
558
- }
559
-
560
- .ai-submit-btn:disabled {
561
- opacity: 0.5;
562
- cursor: not-allowed;
563
- }