@zjlab-fe/data-hub-ui 0.21.6 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/types/components/tip-tap/extensions/index.d.ts +1 -1
  2. package/es/assets/cardImg.png.js +3 -0
  3. package/es/assets/closeBtn.png.js +3 -0
  4. package/es/assets/icon-tag-header.png.js +3 -0
  5. package/es/assets/source.png.js +3 -0
  6. package/es/components/FileUploader/FileUploadModal.js +24 -0
  7. package/es/components/FileUploader/FileUploader.js +20 -0
  8. package/es/components/FileUploader/FileUploaderImpl/FileUploader.js +34 -0
  9. package/es/components/FileUploader/FileUploaderImpl/FileUploaderContextProvider.js +46 -0
  10. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.css.js +36 -0
  11. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.js +57 -0
  12. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverContainer.js +24 -0
  13. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverDesc.js +9 -0
  14. package/es/components/FileUploader/FileUploaderImpl/FileUploaderList.js +46 -0
  15. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItem.js +46 -0
  16. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemFail.js +21 -0
  17. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemPaused.js +20 -0
  18. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemUploading.js +43 -0
  19. package/es/components/FileUploader/FileUploaderImpl/FileUploaderlListItemFinished.js +32 -0
  20. package/es/components/FileUploader/Locale/translations.js +52 -0
  21. package/es/components/FileUploader/Locale/useTranslate.js +16 -0
  22. package/es/components/FileUploader/UploadStoreProvider/UploadStoreProvider.js +31 -0
  23. package/es/components/FileUploader/UploadStoreProvider/uploadStoreReducer.js +62 -0
  24. package/es/components/FileUploader/UploadStoreProvider/useOnFileAllUploaded.js +31 -0
  25. package/es/components/FileUploader/UploadStoreProvider/useSaveUnfinishedUploads.js +42 -0
  26. package/es/components/FileUploader/UploadStoreProvider/useSetupMergingEvent.js +45 -0
  27. package/es/components/FileUploader/hooks/useCancelUpload.js +40 -0
  28. package/es/components/FileUploader/hooks/useCurrentFile.js +61 -0
  29. package/es/components/FileUploader/hooks/useCurrentFileOnUploading.js +52 -0
  30. package/es/components/FileUploader/hooks/useCurrentFileSetupAndBackUp.js +39 -0
  31. package/es/components/FileUploader/hooks/useFormatFiles.js +64 -0
  32. package/es/components/FileUploader/hooks/useFormatFilesFindDuplicates.js +75 -0
  33. package/es/components/FileUploader/hooks/useFormatFilesRemoveDuplicates.js +21 -0
  34. package/es/components/FileUploader/hooks/useHandleChunkCompletion.js +31 -0
  35. package/es/components/FileUploader/hooks/useOnMounted.js +24 -0
  36. package/es/components/FileUploader/hooks/useOnMountedResumeUnfinished.js +58 -0
  37. package/es/components/FileUploader/hooks/useRetryUpload.js +33 -0
  38. package/es/components/FileUploader/hooks/useUploadChunk.js +46 -0
  39. package/es/components/FileUploader/icons/CloseFilled.js +7 -0
  40. package/es/components/FileUploader/icons/UnkownFileIcon.js +7 -0
  41. package/es/components/FileUploader/icons/UploadIcon.js +7 -0
  42. package/es/components/FileUploader/index.css.js +532 -0
  43. package/es/components/FileUploader/index.js +23 -0
  44. package/es/components/FileUploader/types.js +13 -0
  45. package/es/components/FileUploader/utils/calcDisplaySize.js +20 -0
  46. package/es/components/FileUploader/utils/checkExpiryTime.js +15 -0
  47. package/es/components/FileUploader/utils/createFileToUpload.js +60 -0
  48. package/es/components/FileUploader/utils/fileDB/addFilesToIndexdb.js +14 -0
  49. package/es/components/FileUploader/utils/fileDB/deleteFileInStore.js +18 -0
  50. package/es/components/FileUploader/utils/fileDB/deleteObjectStore.js +25 -0
  51. package/es/components/FileUploader/utils/fileDB/index.js +77 -0
  52. package/es/components/FileUploader/utils/fileDB/openDBAndRetrieveData.js +90 -0
  53. package/es/components/FileUploader/utils/fileDB/retrieveExistingData.js +49 -0
  54. package/es/components/FileUploader/utils/modalConfig.css.js +20 -0
  55. package/es/components/FileUploader/utils/modalConfig.js +32 -0
  56. package/es/components/FileUploader/utils/retrieveAllFiles.js +70 -0
  57. package/es/components/FileUploader/utils/splitFileIntoChunk.js +15 -0
  58. package/es/components/SDK-modal/document-link.js +8 -0
  59. package/es/components/SDK-modal/index.js +25 -0
  60. package/es/components/SDK-modal/index.module.scss.js +49 -0
  61. package/es/components/SDK-modal/inner-modal.js +59 -0
  62. package/es/components/SDK-modal/locale/translations.js +17 -0
  63. package/es/components/apply-perm-modal/index.js +53 -0
  64. package/es/components/apply-perm-modal/index.module.scss.js +96 -0
  65. package/es/components/auth-tag/index.js +23 -0
  66. package/es/components/bench-card/index.js +20 -0
  67. package/es/components/bench-card/index.module.scss.js +48 -0
  68. package/es/components/confirm-again/index.js +15 -0
  69. package/es/components/confirm-again/index.scss.js +37 -0
  70. package/es/components/copy/index.js +41 -0
  71. package/es/components/copy/index.module.scss.js +15 -0
  72. package/es/components/corpus-card/index.js +88 -0
  73. package/es/components/corpus-card/index.module.scss.js +171 -0
  74. package/es/components/feature-card/classNames.js +72 -0
  75. package/es/components/feature-card/components.js +48 -0
  76. package/es/components/feature-card/context.js +13 -0
  77. package/es/components/feature-card/index.css.js +655 -0
  78. package/es/components/feature-card/index.js +48 -0
  79. package/es/components/file-preview/data-table/index.js +94 -0
  80. package/es/components/file-preview/data-table/index.module.scss.js +54 -0
  81. package/es/components/file-preview/excel-preview/index.js +132 -0
  82. package/es/components/file-preview/excel-preview/index.module.scss.js +11 -0
  83. package/es/components/file-preview/excel-preview/utils.js +46 -0
  84. package/es/components/file-preview/img-preview/index.js +18 -0
  85. package/es/components/file-preview/img-preview/index.module.scss.js +17 -0
  86. package/es/components/file-preview/index.js +124 -0
  87. package/es/components/file-preview/index.module.scss.js +32 -0
  88. package/es/components/file-preview/json-preview/index.js +166 -0
  89. package/es/components/file-preview/markdown-preview/index.js +53 -0
  90. package/es/components/file-preview/markdown-preview/index.module.scss.js +1055 -0
  91. package/es/components/file-preview/parquet-preview/index.js +54 -0
  92. package/es/components/file-preview/pdf-preview/index.js +215 -0
  93. package/es/components/file-preview/pdf-preview/index.module.scss.js +16 -0
  94. package/es/components/file-preview/table-preview/index.js +43 -0
  95. package/es/components/file-preview/table-preview/index.module.scss.js +11 -0
  96. package/es/components/file-preview/txt-preview/index.js +24 -0
  97. package/es/components/file-preview/util.js +94 -0
  98. package/es/components/file-uploader/components/circle-progress.css.js +39 -0
  99. package/es/components/file-uploader/components/circle-progress.js +12 -0
  100. package/es/components/file-uploader/components/hooks/use-drop-zone.js +74 -0
  101. package/es/components/file-uploader/components/hooks/use-file-validation.js +52 -0
  102. package/es/components/file-uploader/components/icons.js +19 -0
  103. package/es/components/file-uploader/components/theme.css.js +64 -0
  104. package/es/components/file-uploader/components/uploader-drop-zone.css.js +66 -0
  105. package/es/components/file-uploader/components/uploader-drop-zone.js +74 -0
  106. package/es/components/file-uploader/components/uploader-file-item.css.js +186 -0
  107. package/es/components/file-uploader/components/uploader-file-item.js +63 -0
  108. package/es/components/file-uploader/components/uploader-file-list.css.js +43 -0
  109. package/es/components/file-uploader/components/uploader-file-list.js +27 -0
  110. package/es/components/file-uploader/components/uploader.css.js +20 -0
  111. package/es/components/file-uploader/components/uploader.js +51 -0
  112. package/es/components/file-uploader/components/uploading-status.css.js +52 -0
  113. package/es/components/file-uploader/components/uploading-status.js +54 -0
  114. package/es/components/file-uploader/components/utils/directory-reader.js +65 -0
  115. package/es/components/file-uploader/constants.js +31 -0
  116. package/es/components/file-uploader/context/action-registry.js +69 -0
  117. package/es/components/file-uploader/context/file-state-store.js +83 -0
  118. package/es/components/file-uploader/context/handler-registry.js +119 -0
  119. package/es/components/file-uploader/context/upload-context.js +36 -0
  120. package/es/components/file-uploader/context/upload-provider.js +77 -0
  121. package/es/components/file-uploader/context/upload-reducer.js +21 -0
  122. package/es/components/file-uploader/context/use-upload-engine.js +440 -0
  123. package/es/components/file-uploader/engine/queue-callbacks.js +257 -0
  124. package/es/components/file-uploader/engine/queue-manager.js +195 -0
  125. package/es/components/file-uploader/engine/queue-uploader.js +25 -0
  126. package/es/components/file-uploader/hooks/use-upload.js +327 -0
  127. package/es/components/file-uploader/utils/chunk-handlers.js +66 -0
  128. package/es/components/file-uploader/utils/ensure-handlers.js +53 -0
  129. package/es/components/file-uploader/utils/error-handler.js +84 -0
  130. package/es/components/file-uploader/utils/upload-controllers.js +43 -0
  131. package/es/components/file-uploader/utils/upload-handler.js +68 -0
  132. package/es/components/file-uploader/utils/validate-handlers.js +16 -0
  133. package/es/components/floating-label-input/index.js +46 -0
  134. package/es/components/floating-label-input/index.module.scss.js +30 -0
  135. package/es/components/floating-layer/index.js +15 -0
  136. package/es/components/floating-layer/index.scss.js +31 -0
  137. package/es/components/header/index.js +10 -0
  138. package/es/components/header/index.module.scss.js +16 -0
  139. package/es/components/input-tag/index.js +65 -0
  140. package/es/components/menu/index.js +96 -0
  141. package/es/components/menu/index.module.scss.js +188 -0
  142. package/es/components/model-card/index.js +20 -0
  143. package/es/components/model-card/index.module.scss.js +116 -0
  144. package/es/components/notion-editor/code-block/index.js +18 -0
  145. package/es/components/notion-editor/code-block/languageDetector.js +134 -0
  146. package/es/components/notion-editor/code-block/languages.js +42 -0
  147. package/es/components/notion-editor/index.js +258 -0
  148. package/es/components/notion-editor/index.scss.js +421 -0
  149. package/es/components/notion-editor/parseMarkdown.js +184 -0
  150. package/es/components/operator-chain/components/AddButton.js +20 -0
  151. package/es/components/operator-chain/components/IOCard.js +8 -0
  152. package/es/components/operator-chain/components/SingleCard.js +12 -0
  153. package/es/components/operator-chain/components/VirtualDropdown.js +56 -0
  154. package/es/components/operator-chain/index.js +83 -0
  155. package/es/components/operator-chain/index.module.scss.js +232 -0
  156. package/es/components/permission-editor/index.js +9 -0
  157. package/es/components/permission-editor/permissionEditModal/index.js +37 -0
  158. package/es/components/permission-editor/permissionEditor/index.js +253 -0
  159. package/es/components/permission-editor/permissionEditor/index.module.scss.js +22 -0
  160. package/es/components/permission-editor/permissionViewPopover/index.js +9 -0
  161. package/es/components/popover-select/index.js +42 -0
  162. package/es/components/popover-select/index.module.scss.js +22 -0
  163. package/es/components/radio-card/index.js +24 -0
  164. package/es/components/radio-card/index.scss.js +58 -0
  165. package/es/components/section-heading/classNames.js +22 -0
  166. package/es/components/section-heading/components.js +27 -0
  167. package/es/components/section-heading/context.js +13 -0
  168. package/es/components/section-heading/index.css.js +648 -0
  169. package/es/components/section-heading/index.js +37 -0
  170. package/es/components/status-tag/index.js +31 -0
  171. package/es/components/tag-group-filter/dataSizeFilter.js +100 -0
  172. package/es/components/tag-group-filter/index.js +53 -0
  173. package/es/components/tag-group-filter/index.module.scss.js +134 -0
  174. package/es/components/tag-group-filter/tagFilter.js +19 -0
  175. package/es/components/tag-view/index.js +138 -0
  176. package/es/components/tag-view/index.module.scss.js +56 -0
  177. package/es/components/tag-view/useSize.js +41 -0
  178. package/es/components/tip-tap/bubble-menu.js +47 -0
  179. package/es/components/tip-tap/editor.js +34 -0
  180. package/es/components/tip-tap/extensions/index.js +133 -0
  181. package/es/components/tip-tap/extensions/markdown-paste.js +148 -0
  182. package/es/components/tip-tap/icons/index.js +29 -0
  183. package/es/components/tip-tap/reader.js +15 -0
  184. package/es/components/tip-tap/styles/editor.css.js +863 -0
  185. package/es/components/tip-tap/toolbar/components/color-picker.js +76 -0
  186. package/es/components/tip-tap/toolbar/components/heading-dropdown.js +44 -0
  187. package/es/components/tip-tap/toolbar/components/image-button.js +26 -0
  188. package/es/components/tip-tap/toolbar/components/link-button.js +107 -0
  189. package/es/components/tip-tap/toolbar/components/table-button.js +37 -0
  190. package/es/components/tip-tap/toolbar/components/toolbar-button.js +7 -0
  191. package/es/components/tip-tap/toolbar/index.js +39 -0
  192. package/es/components/uploadDrawer/UploadStoreProvider.js +61 -0
  193. package/es/components/uploadDrawer/fileUploadDrawer.js +66 -0
  194. package/es/components/uploadDrawer/fileUploadDrawerFileDragger.js +71 -0
  195. package/es/components/uploadDrawer/fileUploadDrawerList.js +54 -0
  196. package/es/components/uploadDrawer/fileUploadDrawerListProgressButton.js +54 -0
  197. package/es/components/uploadDrawer/hooks/useCancelUpload.js +37 -0
  198. package/es/components/uploadDrawer/hooks/useFilterFiles.js +107 -0
  199. package/es/components/uploadDrawer/hooks/useFinishUpload.js +33 -0
  200. package/es/components/uploadDrawer/hooks/useFormatFiles.js +54 -0
  201. package/es/components/uploadDrawer/hooks/useProgressButtonRef.js +22 -0
  202. package/es/components/uploadDrawer/hooks/useRemoveFilesInUploadQueue.js +21 -0
  203. package/es/components/uploadDrawer/hooks/useResumeUnfinishedUploads.js +52 -0
  204. package/es/components/uploadDrawer/hooks/useRetryUpload.js +35 -0
  205. package/es/components/uploadDrawer/hooks/useSaveUnfinishedUploads.js +42 -0
  206. package/es/components/uploadDrawer/hooks/useSetupUpload.js +80 -0
  207. package/es/components/uploadDrawer/hooks/useUploadFileToOSS.js +23 -0
  208. package/es/components/uploadDrawer/index.css.js +511 -0
  209. package/es/components/uploadDrawer/index.js +43 -0
  210. package/es/components/uploadDrawer/utils/calcDisplaySize.js +19 -0
  211. package/es/components/uploadDrawer/utils/constant.js +16 -0
  212. package/es/components/uploadDrawer/utils/createFileToUpload.js +51 -0
  213. package/es/components/uploadDrawer/utils/fileDB/deleteFileInStore.js +28 -0
  214. package/es/components/uploadDrawer/utils/fileDB/deleteObjectStore.js +28 -0
  215. package/es/components/uploadDrawer/utils/fileDB/handleAddFilesToDB.js +37 -0
  216. package/es/components/uploadDrawer/utils/fileDB/index.js +9 -0
  217. package/es/components/uploadDrawer/utils/fileDB/openDB.js +111 -0
  218. package/es/components/uploadDrawer/utils/retrieveAllFiles.js +110 -0
  219. package/es/components/uploadDrawer/utils/shouldCreateNewFile.js +13 -0
  220. package/es/components/uploadDrawer/utils/splitFileIntoChunk.js +15 -0
  221. package/es/index.js +42 -1
  222. package/es/lib/utils.js +8 -0
  223. package/lib/index.js +1 -1
  224. package/package.json +164 -154
  225. package/rollup.es.config.mjs +177 -0
  226. package/tsconfig.rollup.json +7 -0
@@ -0,0 +1,863 @@
1
+ var style = document.createElement('style');
2
+ style.textContent = `/* TipTap Editor - Modern Rich Text Editor */
3
+ /* CSS Variables for TipTap Editor Theme */
4
+ :root {
5
+ /* Colors - Indigo Theme */
6
+ --tip-tap-primary-50: #eef2ff;
7
+ --tip-tap-primary-100: #e0e7ff;
8
+ --tip-tap-primary-200: #c7d2fe;
9
+ --tip-tap-primary-300: #a5b4fc;
10
+ --tip-tap-primary-400: #818cf8;
11
+ --tip-tap-primary-500: #6366f1;
12
+ --tip-tap-primary-600: #4f46e5;
13
+ --tip-tap-primary-700: #4338ca;
14
+
15
+ /* Neutral Colors */
16
+ --tip-tap-gray-50: #f8fafc;
17
+ --tip-tap-gray-100: #f1f5f9;
18
+ --tip-tap-gray-200: #e2e8f0;
19
+ --tip-tap-gray-300: #cbd5e1;
20
+ --tip-tap-gray-400: #94a3b8;
21
+ --tip-tap-gray-500: #64748b;
22
+ --tip-tap-gray-600: #475569;
23
+ --tip-tap-gray-700: #334155;
24
+ --tip-tap-gray-800: #1e293b;
25
+ --tip-tap-gray-900: #0f172a;
26
+
27
+ /* Semantic Colors */
28
+ --tip-tap-success: #10b981;
29
+ --tip-tap-warning: #f59e0b;
30
+ --tip-tap-error: #ef4444;
31
+ --tip-tap-info: #3b82f6;
32
+
33
+ /* Spacing */
34
+ --tip-tap-space-1: 4px;
35
+ --tip-tap-space-2: 8px;
36
+ --tip-tap-space-3: 12px;
37
+ --tip-tap-space-4: 16px;
38
+ --tip-tap-space-5: 20px;
39
+ --tip-tap-space-6: 24px;
40
+ --tip-tap-space-8: 32px;
41
+ }
42
+ /* Toolbar Styles */
43
+ .tip-tap-toolbar {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 2px;
47
+ padding: 8px 12px;
48
+ border-bottom: 1px solid var(--tip-tap-border-color);
49
+ background: linear-gradient(to bottom, #fafbfc, #f8f9fa);
50
+ border-radius: var(--tip-tap-radius) var(--tip-tap-radius) 0 0;
51
+ flex-wrap: wrap;
52
+ min-height: 48px;
53
+ }
54
+ .tip-tap-toolbar__group {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 2px;
58
+ padding: 0 4px;
59
+ }
60
+ .tip-tap-toolbar__divider {
61
+ width: 1px;
62
+ height: 24px;
63
+ background: var(--tip-tap-gray-200);
64
+ margin: 0 6px;
65
+ flex-shrink: 0;
66
+ }
67
+ /* Toolbar Button */
68
+ .tip-tap-btn {
69
+ display: inline-flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ width: 32px;
73
+ height: 32px;
74
+ padding: 0;
75
+ border: none;
76
+ border-radius: var(--tip-tap-radius-sm);
77
+ background: transparent;
78
+ color: var(--tip-tap-gray-600);
79
+ cursor: pointer;
80
+ transition: all var(--tip-tap-transition);
81
+ position: relative;
82
+ font-size: 18px;
83
+ }
84
+ .tip-tap-btn:hover {
85
+ background: var(--tip-tap-gray-100);
86
+ color: var(--tip-tap-gray-800);
87
+ }
88
+ .tip-tap-btn:active {
89
+ transform: scale(0.95);
90
+ }
91
+ .tip-tap-btn--active {
92
+ background: var(--tip-tap-primary-100);
93
+ color: var(--tip-tap-primary-600);
94
+ }
95
+ .tip-tap-btn--active:hover {
96
+ background: var(--tip-tap-primary-200);
97
+ color: var(--tip-tap-primary-700);
98
+ }
99
+ .tip-tap-btn:disabled {
100
+ opacity: 0.4;
101
+ cursor: not-allowed;
102
+ pointer-events: none;
103
+ }
104
+ /* Button with text */
105
+ .tip-tap-btn--text {
106
+ width: auto;
107
+ padding: 0 10px;
108
+ font-size: 13px;
109
+ font-weight: 500;
110
+ gap: 6px;
111
+ }
112
+ /* Dropdown Button */
113
+ .tip-tap-dropdown {
114
+ position: relative;
115
+ }
116
+ .tip-tap-dropdown__trigger {
117
+ display: inline-flex;
118
+ align-items: center;
119
+ gap: 4px;
120
+ padding: 4px 10px;
121
+ height: 32px;
122
+ border: none;
123
+ border-radius: var(--tip-tap-radius-sm);
124
+ background: transparent;
125
+ color: var(--tip-tap-gray-700);
126
+ font-size: 13px;
127
+ font-weight: 500;
128
+ cursor: pointer;
129
+ transition: all var(--tip-tap-transition);
130
+ white-space: nowrap;
131
+ }
132
+ .tip-tap-dropdown__trigger:hover {
133
+ background: var(--tip-tap-gray-100);
134
+ }
135
+ .tip-tap-dropdown__trigger--active {
136
+ background: var(--tip-tap-primary-100);
137
+ color: var(--tip-tap-primary-600);
138
+ }
139
+ .tip-tap-dropdown__arrow {
140
+ font-size: 12px;
141
+ transition: transform var(--tip-tap-transition);
142
+ }
143
+ .tip-tap-dropdown--open .tip-tap-dropdown__arrow {
144
+ transform: rotate(180deg);
145
+ }
146
+ .tip-tap-dropdown__menu {
147
+ position: absolute;
148
+ top: calc(100% + 4px);
149
+ left: 0;
150
+ min-width: 160px;
151
+ padding: 6px;
152
+ background: var(--tip-tap-bg);
153
+ border: 1px solid var(--tip-tap-gray-200);
154
+ border-radius: var(--tip-tap-radius-sm);
155
+ box-shadow: var(--tip-tap-shadow-lg);
156
+ z-index: 100;
157
+ opacity: 0;
158
+ visibility: hidden;
159
+ transform: translateY(-8px);
160
+ transition: all var(--tip-tap-transition);
161
+ }
162
+ .tip-tap-dropdown--open .tip-tap-dropdown__menu {
163
+ opacity: 1;
164
+ visibility: visible;
165
+ transform: translateY(0);
166
+ }
167
+ .tip-tap-dropdown__item {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: 10px;
171
+ width: 100%;
172
+ padding: 8px 12px;
173
+ border: none;
174
+ border-radius: 6px;
175
+ background: transparent;
176
+ color: var(--tip-tap-gray-700);
177
+ font-size: 14px;
178
+ text-align: left;
179
+ cursor: pointer;
180
+ transition: all var(--tip-tap-transition);
181
+ }
182
+ .tip-tap-dropdown__item:hover {
183
+ background: var(--tip-tap-gray-100);
184
+ }
185
+ .tip-tap-dropdown__item--active {
186
+ background: var(--tip-tap-primary-50);
187
+ color: var(--tip-tap-primary-600);
188
+ }
189
+ .tip-tap-dropdown__item-icon {
190
+ width: 20px;
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ font-size: 16px;
195
+ }
196
+ /* Color Picker */
197
+ .tip-tap-color-picker {
198
+ display: grid;
199
+ grid-template-columns: repeat(8, 1fr);
200
+ gap: 4px;
201
+ padding: 8px;
202
+ min-width: 200px;
203
+ }
204
+ .tip-tap-color-picker__swatch {
205
+ width: 24px;
206
+ height: 24px;
207
+ border-radius: 4px;
208
+ border: 2px solid transparent;
209
+ cursor: pointer;
210
+ transition: all var(--tip-tap-transition);
211
+ }
212
+ .tip-tap-color-picker__swatch:hover {
213
+ transform: scale(1.15);
214
+ border-color: var(--tip-tap-gray-300);
215
+ }
216
+ .tip-tap-color-picker__swatch--active {
217
+ border-color: var(--tip-tap-primary-500);
218
+ box-shadow: 0 0 0 2px var(--tip-tap-primary-200);
219
+ }
220
+ .tip-tap-color-picker__swatch--reset {
221
+ background: linear-gradient(135deg, #fff 45%, #ef4444 45%, #ef4444 55%, #fff 55%);
222
+ border: 1px solid var(--tip-tap-gray-300);
223
+ }
224
+ /* Tooltip */
225
+ .tip-tap-tooltip {
226
+ position: absolute;
227
+ bottom: calc(100% + 8px);
228
+ left: 50%;
229
+ transform: translateX(-50%);
230
+ padding: 6px 10px;
231
+ background: var(--tip-tap-gray-800);
232
+ color: white;
233
+ font-size: 12px;
234
+ font-weight: 500;
235
+ border-radius: 6px;
236
+ white-space: nowrap;
237
+ opacity: 0;
238
+ visibility: hidden;
239
+ transition: all 150ms;
240
+ pointer-events: none;
241
+ z-index: 200;
242
+ }
243
+ .tip-tap-tooltip::after {
244
+ content: '';
245
+ position: absolute;
246
+ top: 100%;
247
+ left: 50%;
248
+ transform: translateX(-50%);
249
+ border: 5px solid transparent;
250
+ border-top-color: var(--tip-tap-gray-800);
251
+ }
252
+ .tip-tap-btn:hover .tip-tap-tooltip,
253
+ .tip-tap-dropdown__trigger:hover .tip-tap-tooltip {
254
+ opacity: 1;
255
+ visibility: visible;
256
+ }
257
+ /* Bubble Menu */
258
+ .tip-tap-bubble-menu {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 2px;
262
+ padding: 6px 8px;
263
+ background: var(--tip-tap-bg);
264
+ border: 1px solid var(--tip-tap-gray-200);
265
+ border-radius: 10px;
266
+ box-shadow: var(--tip-tap-shadow-lg);
267
+ animation: tip-tap-menu-in 150ms ease-out;
268
+ }
269
+ .tip-tap-bubble-menu .tip-tap-btn {
270
+ width: 28px;
271
+ height: 28px;
272
+ font-size: 16px;
273
+ }
274
+ .tip-tap-bubble-menu .tip-tap-toolbar__divider {
275
+ height: 20px;
276
+ margin: 0 4px;
277
+ }
278
+ /* Floating Menu */
279
+ .tip-tap-floating-menu {
280
+ display: flex;
281
+ align-items: center;
282
+ gap: 2px;
283
+ padding: 6px 8px;
284
+ background: var(--tip-tap-bg);
285
+ border: 1px solid var(--tip-tap-gray-200);
286
+ border-radius: 10px;
287
+ box-shadow: var(--tip-tap-shadow-lg);
288
+ animation: tip-tap-menu-in 150ms ease-out;
289
+ }
290
+ .tip-tap-floating-menu .tip-tap-btn {
291
+ width: 28px;
292
+ height: 28px;
293
+ font-size: 16px;
294
+ }
295
+ .tip-tap-floating-menu .tip-tap-btn:hover {
296
+ background: var(--tip-tap-primary-50);
297
+ color: var(--tip-tap-primary-600);
298
+ }
299
+ /* Link Input Popup */
300
+ .tip-tap-link-popup {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 8px;
304
+ padding: 8px;
305
+ background: var(--tip-tap-bg);
306
+ border: 1px solid var(--tip-tap-gray-200);
307
+ border-radius: 10px;
308
+ box-shadow: var(--tip-tap-shadow-lg);
309
+ animation: tip-tap-menu-in 150ms ease-out;
310
+ }
311
+ .tip-tap-link-popup__input {
312
+ width: 240px;
313
+ padding: 8px 12px;
314
+ border: 1px solid var(--tip-tap-gray-300);
315
+ border-radius: 6px;
316
+ font-size: 14px;
317
+ color: var(--tip-tap-gray-800);
318
+ outline: none;
319
+ transition: all var(--tip-tap-transition);
320
+ }
321
+ .tip-tap-link-popup__input:focus {
322
+ border-color: var(--tip-tap-primary-400);
323
+ box-shadow: 0 0 0 3px var(--tip-tap-primary-100);
324
+ }
325
+ .tip-tap-link-popup__input::-moz-placeholder {
326
+ color: var(--tip-tap-gray-400);
327
+ }
328
+ .tip-tap-link-popup__input::placeholder {
329
+ color: var(--tip-tap-gray-400);
330
+ }
331
+ .tip-tap-link-popup__btn {
332
+ display: inline-flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ padding: 8px 16px;
336
+ border: none;
337
+ border-radius: 6px;
338
+ background: var(--tip-tap-primary-500);
339
+ color: white;
340
+ font-size: 13px;
341
+ font-weight: 500;
342
+ cursor: pointer;
343
+ transition: all var(--tip-tap-transition);
344
+ }
345
+ .tip-tap-link-popup__btn:hover {
346
+ background: var(--tip-tap-primary-600);
347
+ }
348
+ .tip-tap-link-popup__btn--secondary {
349
+ background: var(--tip-tap-gray-100);
350
+ color: var(--tip-tap-gray-700);
351
+ }
352
+ .tip-tap-link-popup__btn--secondary:hover {
353
+ background: var(--tip-tap-gray-200);
354
+ }
355
+ .tip-tap-link-popup__btn--danger {
356
+ background: #fef2f2;
357
+ color: #dc2626;
358
+ }
359
+ .tip-tap-link-popup__btn--danger:hover {
360
+ background: #fee2e2;
361
+ }
362
+ /* Table Menu */
363
+ .tip-tap-table-menu {
364
+ padding: 12px;
365
+ background: var(--tip-tap-bg);
366
+ border: 1px solid var(--tip-tap-gray-200);
367
+ border-radius: 10px;
368
+ box-shadow: var(--tip-tap-shadow-lg);
369
+ }
370
+ .tip-tap-table-menu__label {
371
+ font-size: 12px;
372
+ color: var(--tip-tap-gray-500);
373
+ margin-bottom: 8px;
374
+ font-weight: 500;
375
+ }
376
+ .tip-tap-table-menu__grid {
377
+ display: grid;
378
+ grid-template-columns: repeat(6, 1fr);
379
+ gap: 3px;
380
+ }
381
+ .tip-tap-table-menu__cell {
382
+ width: 20px;
383
+ height: 20px;
384
+ border: 1px solid var(--tip-tap-gray-300);
385
+ border-radius: 3px;
386
+ background: var(--tip-tap-bg);
387
+ cursor: pointer;
388
+ transition: all var(--tip-tap-transition);
389
+ }
390
+ .tip-tap-table-menu__cell:hover,
391
+ .tip-tap-table-menu__cell--active {
392
+ background: var(--tip-tap-primary-100);
393
+ border-color: var(--tip-tap-primary-400);
394
+ }
395
+ .tip-tap-table-menu__size {
396
+ text-align: center;
397
+ font-size: 12px;
398
+ color: var(--tip-tap-gray-600);
399
+ margin-top: 8px;
400
+ font-weight: 500;
401
+ }
402
+ /* Editor Content Area */
403
+ .tip-tap-editor__content {
404
+ padding: 0;
405
+ }
406
+ .tip-tap-editor__content .tiptap {
407
+ padding: 20px 24px;
408
+ min-height: 300px;
409
+ outline: none;
410
+ color: var(--tip-tap-gray-800);
411
+ font-size: 16px;
412
+ line-height: 1.7;
413
+ }
414
+ /* Placeholder */
415
+ .tip-tap-editor__content .tiptap p.is-editor-empty:first-child::before {
416
+ content: attr(data-placeholder);
417
+ color: var(--tip-tap-gray-400);
418
+ pointer-events: none;
419
+ position: absolute;
420
+ font-style: italic;
421
+ }
422
+ /* Headings */
423
+ .tip-tap-editor__content .tiptap h1,
424
+ .tip-tap-reader__content .tiptap h1 {
425
+ font-size: 2em;
426
+ font-weight: 700;
427
+ line-height: 1.3;
428
+ margin: 1em 0 0.5em;
429
+ color: var(--tip-tap-gray-900);
430
+ }
431
+ .tip-tap-editor__content .tiptap h2,
432
+ .tip-tap-reader__content .tiptap h2 {
433
+ font-size: 1.5em;
434
+ font-weight: 600;
435
+ line-height: 1.35;
436
+ margin: 0.9em 0 0.45em;
437
+ color: var(--tip-tap-gray-900);
438
+ }
439
+ .tip-tap-editor__content .tiptap h3,
440
+ .tip-tap-reader__content .tiptap h3 {
441
+ font-size: 1.25em;
442
+ font-weight: 600;
443
+ line-height: 1.4;
444
+ margin: 0.8em 0 0.4em;
445
+ color: var(--tip-tap-gray-900);
446
+ }
447
+ .tip-tap-editor__content .tiptap h4,
448
+ .tip-tap-reader__content .tiptap h4 {
449
+ font-size: 1.1em;
450
+ font-weight: 600;
451
+ line-height: 1.4;
452
+ margin: 0.7em 0 0.35em;
453
+ color: var(--tip-tap-gray-900);
454
+ }
455
+ /* Paragraphs */
456
+ .tip-tap-editor__content .tiptap p,
457
+ .tip-tap-reader__content .tiptap p {
458
+ margin: 0 0 0.75em;
459
+ }
460
+ /* Links */
461
+ .tip-tap-editor__content .tiptap a,
462
+ .tip-tap-reader__content .tiptap a {
463
+ color: var(--tip-tap-primary-500);
464
+ text-decoration: underline;
465
+ text-underline-offset: 3px;
466
+ transition: color var(--tip-tap-transition);
467
+ }
468
+ .tip-tap-editor__content .tiptap a:hover,
469
+ .tip-tap-reader__content .tiptap a:hover {
470
+ color: var(--tip-tap-primary-700);
471
+ }
472
+ /* Lists */
473
+ .tip-tap-editor__content .tiptap ul,
474
+ .tip-tap-reader__content .tiptap ul {
475
+ list-style-type: disc;
476
+ padding-left: 1.5em;
477
+ margin: 0.75em 0;
478
+ }
479
+ .tip-tap-editor__content .tiptap ol,
480
+ .tip-tap-reader__content .tiptap ol {
481
+ list-style-type: decimal;
482
+ padding-left: 1.5em;
483
+ margin: 0.75em 0;
484
+ }
485
+ .tip-tap-editor__content .tiptap li,
486
+ .tip-tap-reader__content .tiptap li {
487
+ margin: 0.25em 0;
488
+ }
489
+ .tip-tap-editor__content .tiptap li p,
490
+ .tip-tap-reader__content .tiptap li p {
491
+ margin: 0;
492
+ }
493
+ /* Blockquote */
494
+ .tip-tap-editor__content .tiptap blockquote,
495
+ .tip-tap-reader__content .tiptap blockquote {
496
+ border-left: 4px solid var(--tip-tap-primary-300);
497
+ padding: 12px 20px;
498
+ margin: 1em 0;
499
+ background: var(--tip-tap-primary-50);
500
+ border-radius: 0 8px 8px 0;
501
+ color: var(--tip-tap-gray-700);
502
+ font-style: italic;
503
+ }
504
+ .tip-tap-editor__content .tiptap blockquote p,
505
+ .tip-tap-reader__content .tiptap blockquote p {
506
+ margin: 0;
507
+ }
508
+ /* Code - Inline */
509
+ .tip-tap-editor__content .tiptap code,
510
+ .tip-tap-reader__content .tiptap code {
511
+ background: #f1f5f9;
512
+ color: #e11d48;
513
+ padding: 2px 6px;
514
+ border-radius: 4px;
515
+ font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
516
+ font-size: 0.9em;
517
+ }
518
+ /* Code Block */
519
+ .tip-tap-editor__content .tiptap pre,
520
+ .tip-tap-reader__content .tiptap pre {
521
+ background: #1e293b;
522
+ color: #e2e8f0;
523
+ padding: 16px 20px;
524
+ border-radius: 10px;
525
+ margin: 1em 0;
526
+ overflow-x: auto;
527
+ font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
528
+ font-size: 14px;
529
+ line-height: 1.6;
530
+ }
531
+ .tip-tap-editor__content .tiptap pre code,
532
+ .tip-tap-reader__content .tiptap pre code {
533
+ background: none;
534
+ color: inherit;
535
+ padding: 0;
536
+ font-size: inherit;
537
+ }
538
+ /* Syntax Highlighting */
539
+ .tip-tap-editor__content .tiptap pre .hljs-comment,
540
+ .tip-tap-reader__content .tiptap pre .hljs-comment {
541
+ color: #64748b;
542
+ }
543
+ .tip-tap-editor__content .tiptap pre .hljs-keyword,
544
+ .tip-tap-reader__content .tiptap pre .hljs-keyword {
545
+ color: #c084fc;
546
+ }
547
+ .tip-tap-editor__content .tiptap pre .hljs-string,
548
+ .tip-tap-reader__content .tiptap pre .hljs-string {
549
+ color: #4ade80;
550
+ }
551
+ .tip-tap-editor__content .tiptap pre .hljs-number,
552
+ .tip-tap-reader__content .tiptap pre .hljs-number {
553
+ color: #fb923c;
554
+ }
555
+ .tip-tap-editor__content .tiptap pre .hljs-function,
556
+ .tip-tap-reader__content .tiptap pre .hljs-function {
557
+ color: #60a5fa;
558
+ }
559
+ /* Horizontal Rule */
560
+ .tip-tap-editor__content .tiptap hr,
561
+ .tip-tap-reader__content .tiptap hr {
562
+ border: none;
563
+ height: 2px;
564
+ background: linear-gradient(to right, transparent, var(--tip-tap-gray-300), transparent);
565
+ margin: 2em 0;
566
+ }
567
+ /* Images */
568
+ .tip-tap-editor__content .tiptap img,
569
+ .tip-tap-reader__content .tiptap img {
570
+ max-width: 100%;
571
+ height: auto;
572
+ border-radius: 8px;
573
+ margin: 1em 0;
574
+ }
575
+ .tip-tap-editor__content .tiptap img.ProseMirror-selectednode {
576
+ outline: 3px solid var(--tip-tap-primary-400);
577
+ outline-offset: 2px;
578
+ }
579
+ /* Table Wrapper - for horizontal scroll on overflow */
580
+ .tip-tap-editor__content .tiptap .tableWrapper,
581
+ .tip-tap-reader__content .tiptap .tableWrapper {
582
+ overflow-x: auto;
583
+ margin: 1em 0;
584
+ border-radius: 8px;
585
+ border: 1px solid var(--tip-tap-gray-200);
586
+ }
587
+ /* Tables */
588
+ .tip-tap-editor__content .tiptap table,
589
+ .tip-tap-reader__content .tiptap table {
590
+ width: 100%;
591
+ border-collapse: collapse;
592
+ margin: 0;
593
+ border-radius: 8px;
594
+ overflow: hidden;
595
+ border: none;
596
+ }
597
+ /* Hide colgroup to prevent inline width styles from affecting layout */
598
+ .tip-tap-editor__content .tiptap table colgroup,
599
+ .tip-tap-reader__content .tiptap table colgroup {
600
+ display: none;
601
+ }
602
+ .tip-tap-editor__content .tiptap th,
603
+ .tip-tap-reader__content .tiptap th {
604
+ background: var(--tip-tap-gray-100);
605
+ font-weight: 600;
606
+ text-align: left;
607
+ padding: 12px 16px;
608
+ border: 1px solid var(--tip-tap-gray-200);
609
+ min-width: 150px;
610
+ max-width: 500px;
611
+ word-break: break-word;
612
+ overflow-wrap: break-word;
613
+ }
614
+ .tip-tap-editor__content .tiptap td,
615
+ .tip-tap-reader__content .tiptap td {
616
+ padding: 10px 16px;
617
+ border: 1px solid var(--tip-tap-gray-200);
618
+ min-width: 150px;
619
+ max-width: 500px;
620
+ word-break: break-word;
621
+ overflow-wrap: break-word;
622
+ }
623
+ .tip-tap-editor__content .tiptap .selectedCell {
624
+ background: var(--tip-tap-primary-50);
625
+ }
626
+ /* Task List */
627
+ .tip-tap-editor__content .tiptap ul[data-type='taskList'],
628
+ .tip-tap-reader__content .tiptap ul[data-type='taskList'] {
629
+ list-style: none;
630
+ padding-left: 0;
631
+ }
632
+ .tip-tap-editor__content .tiptap ul[data-type='taskList'] li,
633
+ .tip-tap-reader__content .tiptap ul[data-type='taskList'] li {
634
+ display: flex;
635
+ align-items: flex-start;
636
+ gap: 8px;
637
+ }
638
+ .tip-tap-editor__content .tiptap ul[data-type='taskList'] input[type='checkbox'],
639
+ .tip-tap-reader__content .tiptap ul[data-type='taskList'] input[type='checkbox'] {
640
+ margin-top: 4px;
641
+ accent-color: var(--tip-tap-primary-500);
642
+ }
643
+ /* Highlight */
644
+ .tip-tap-editor__content .tiptap mark,
645
+ .tip-tap-reader__content .tiptap mark {
646
+ background: #fef08a;
647
+ padding: 1px 2px;
648
+ border-radius: 2px;
649
+ }
650
+ /* Text Selection */
651
+ .tip-tap-editor__content .tiptap ::-moz-selection {
652
+ background: var(--tip-tap-primary-200);
653
+ }
654
+ .tip-tap-editor__content .tiptap ::selection {
655
+ background: var(--tip-tap-primary-200);
656
+ }
657
+ /* Text alignment classes */
658
+ .tip-tap-editor__content .tiptap .text-left,
659
+ .tip-tap-reader__content .tiptap .text-left {
660
+ text-align: left;
661
+ }
662
+ .tip-tap-editor__content .tiptap .text-center,
663
+ .tip-tap-reader__content .tiptap .text-center {
664
+ text-align: center;
665
+ }
666
+ .tip-tap-editor__content .tiptap .text-right,
667
+ .tip-tap-reader__content .tiptap .text-right {
668
+ text-align: right;
669
+ }
670
+ .tip-tap-editor__content .tiptap .text-justify,
671
+ .tip-tap-reader__content .tiptap .text-justify {
672
+ text-align: justify;
673
+ }
674
+ /* First child margin reset */
675
+ .tip-tap-editor__content .tiptap > *:first-child,
676
+ .tip-tap-reader__content .tiptap > *:first-child {
677
+ margin-top: 0;
678
+ }
679
+ /* Last child margin reset */
680
+ .tip-tap-editor__content .tiptap > *:last-child,
681
+ .tip-tap-reader__content .tiptap > *:last-child {
682
+ margin-bottom: 0;
683
+ }
684
+ /* Animations for TipTap Editor */
685
+ /* Menu entrance animation */
686
+ @keyframes tip-tap-menu-in {
687
+ from {
688
+ opacity: 0;
689
+ transform: scale(0.95) translateY(-4px);
690
+ }
691
+ to {
692
+ opacity: 1;
693
+ transform: scale(1) translateY(0);
694
+ }
695
+ }
696
+ /* Button press animation */
697
+ @keyframes tip-tap-btn-press {
698
+ 0% {
699
+ transform: scale(1);
700
+ }
701
+ 50% {
702
+ transform: scale(0.92);
703
+ }
704
+ 100% {
705
+ transform: scale(1);
706
+ }
707
+ }
708
+ /* Fade in */
709
+ @keyframes tip-tap-fade-in {
710
+ from {
711
+ opacity: 0;
712
+ }
713
+ to {
714
+ opacity: 1;
715
+ }
716
+ }
717
+ /* Slide up */
718
+ @keyframes tip-tap-slide-up {
719
+ from {
720
+ opacity: 0;
721
+ transform: translateY(8px);
722
+ }
723
+ to {
724
+ opacity: 1;
725
+ transform: translateY(0);
726
+ }
727
+ }
728
+ /* Slide down */
729
+ @keyframes tip-tap-slide-down {
730
+ from {
731
+ opacity: 0;
732
+ transform: translateY(-8px);
733
+ }
734
+ to {
735
+ opacity: 1;
736
+ transform: translateY(0);
737
+ }
738
+ }
739
+ /* Pulse animation for active states */
740
+ @keyframes tip-tap-pulse {
741
+ 0%,
742
+ 100% {
743
+ box-shadow: 0 0 0 0 var(--tip-tap-primary-200);
744
+ }
745
+ 50% {
746
+ box-shadow: 0 0 0 4px var(--tip-tap-primary-100);
747
+ }
748
+ }
749
+ /* Shimmer effect for loading states */
750
+ @keyframes tip-tap-shimmer {
751
+ 0% {
752
+ background-position: -200% 0;
753
+ }
754
+ 100% {
755
+ background-position: 200% 0;
756
+ }
757
+ }
758
+ /* Highlight flash animation */
759
+ @keyframes tip-tap-highlight-flash {
760
+ 0% {
761
+ background: var(--tip-tap-primary-200);
762
+ }
763
+ 100% {
764
+ background: transparent;
765
+ }
766
+ }
767
+ /* Scale in from center */
768
+ @keyframes tip-tap-scale-in {
769
+ from {
770
+ opacity: 0;
771
+ transform: scale(0.9);
772
+ }
773
+ to {
774
+ opacity: 1;
775
+ transform: scale(1);
776
+ }
777
+ }
778
+ /* Bounce animation */
779
+ @keyframes tip-tap-bounce {
780
+ 0%,
781
+ 100% {
782
+ transform: translateY(0);
783
+ }
784
+ 50% {
785
+ transform: translateY(-4px);
786
+ }
787
+ }
788
+ /* Spin animation for loading */
789
+ @keyframes tip-tap-spin {
790
+ from {
791
+ transform: rotate(0deg);
792
+ }
793
+ to {
794
+ transform: rotate(360deg);
795
+ }
796
+ }
797
+ /* Base Container */
798
+ .tip-tap-editor {
799
+ --tip-tap-border-color: #e2e8f0;
800
+ --tip-tap-bg: #ffffff;
801
+ --tip-tap-text: #1e293b;
802
+ --tip-tap-text-muted: #64748b;
803
+ --tip-tap-primary: #6366f1;
804
+ --tip-tap-primary-light: #818cf8;
805
+ --tip-tap-primary-bg: #eef2ff;
806
+ --tip-tap-radius: 12px;
807
+ --tip-tap-radius-sm: 8px;
808
+ --tip-tap-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
809
+ --tip-tap-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
810
+ --tip-tap-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);
811
+
812
+ position: relative;
813
+ background: var(--tip-tap-bg);
814
+ border: 2px solid var(--tip-tap-border-color);
815
+ border-radius: var(--tip-tap-radius);
816
+ transition:
817
+ border-color var(--tip-tap-transition),
818
+ box-shadow var(--tip-tap-transition);
819
+ font-family:
820
+ 'Geist',
821
+ 'Inter',
822
+ -apple-system,
823
+ BlinkMacSystemFont,
824
+ 'Segoe UI',
825
+ sans-serif;
826
+ }
827
+ .tip-tap-editor--focused {
828
+ border-color: var(--tip-tap-primary);
829
+ box-shadow: 0 0 0 3px var(--tip-tap-primary-bg);
830
+ }
831
+ /* Reader Mode */
832
+ .tip-tap-reader {
833
+ overflow-x: auto;
834
+ font-family:
835
+ 'Geist',
836
+ 'Inter',
837
+ -apple-system,
838
+ BlinkMacSystemFont,
839
+ 'Segoe UI',
840
+ sans-serif;
841
+ }
842
+ .tip-tap-reader__content .tiptap {
843
+ padding: 0;
844
+ outline: none;
845
+ font-size: 16px;
846
+ }
847
+ /* Scrollbar Styling */
848
+ .tip-tap-editor__content .tiptap::-webkit-scrollbar {
849
+ width: 8px;
850
+ height: 8px;
851
+ }
852
+ .tip-tap-editor__content .tiptap::-webkit-scrollbar-track {
853
+ background: transparent;
854
+ }
855
+ .tip-tap-editor__content .tiptap::-webkit-scrollbar-thumb {
856
+ background: #cbd5e1;
857
+ border-radius: 4px;
858
+ }
859
+ .tip-tap-editor__content .tiptap::-webkit-scrollbar-thumb:hover {
860
+ background: #94a3b8;
861
+ }
862
+ `;
863
+ document.head.appendChild(style);