opacacms 0.1.11 → 0.1.13

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 (246) hide show
  1. package/dist/admin/index.js +9464 -21
  2. package/dist/admin/webcomponent.d.ts +1 -1
  3. package/dist/admin/webcomponent.js +9620 -6
  4. package/dist/admin.css +1 -0
  5. package/dist/{chunk-6dhs73zq.js → chunk-0am1m47g.js} +1 -1
  6. package/dist/{chunk-0nf7fe26.js → chunk-0d9aqz6z.js} +1 -1
  7. package/dist/{chunk-cvdd4eqh.js → chunk-2kyhqvhc.js} +5 -1
  8. package/dist/{chunk-gjjcc4hm.js → chunk-2z8wxx9g.js} +21 -6
  9. package/dist/{chunk-xg35h5a3.js → chunk-7fyepksb.js} +1 -1
  10. package/dist/{chunk-njytmdb4.js → chunk-pxh5encs.js} +34 -24
  11. package/dist/{chunk-n8aekdnr.js → chunk-qkn1ykrj.js} +33 -23
  12. package/dist/{chunk-kwp83w8b.js → chunk-wmvjvn7b.js} +4 -4
  13. package/dist/{chunk-qrt22f6e.js → chunk-wq314kkx.js} +35 -25
  14. package/dist/{chunk-eqtsfyjf.js → chunk-x2ejaftz.js} +52 -28
  15. package/dist/{chunk-6ew02s0c.js → chunk-xtwc125q.js} +18 -18
  16. package/dist/cli/index.js +5 -5
  17. package/dist/db/better-sqlite.d.ts +1 -0
  18. package/dist/db/better-sqlite.js +3 -3
  19. package/dist/db/bun-sqlite.d.ts +1 -0
  20. package/dist/db/bun-sqlite.js +3 -3
  21. package/dist/db/d1.js +3 -3
  22. package/dist/db/index.d.ts +3 -0
  23. package/dist/db/index.js +17 -13
  24. package/dist/db/postgres.js +3 -3
  25. package/dist/db/sqlite.js +3 -3
  26. package/dist/runtimes/bun.js +2 -2
  27. package/dist/runtimes/cloudflare-workers.js +2 -2
  28. package/dist/runtimes/next.js +2 -2
  29. package/dist/runtimes/node.js +2 -2
  30. package/dist/server.js +2 -2
  31. package/package.json +8 -2
  32. package/bun.lock +0 -34
  33. package/dist/admin/index.css +0 -47
  34. package/dist/api.d.ts +0 -6
  35. package/dist/api.js +0 -27
  36. package/dist/chunk-2zm8cy1w.js +0 -9482
  37. package/global.d.ts +0 -11
  38. package/src/admin/api-client.ts +0 -63
  39. package/src/admin/auth-client.ts +0 -40
  40. package/src/admin/custom-field.ts +0 -179
  41. package/src/admin/index.ts +0 -15
  42. package/src/admin/react.tsx +0 -72
  43. package/src/admin/router.ts +0 -9
  44. package/src/admin/stores/admin-queries.ts +0 -121
  45. package/src/admin/stores/auth.ts +0 -61
  46. package/src/admin/stores/column-visibility.ts +0 -67
  47. package/src/admin/stores/config.ts +0 -15
  48. package/src/admin/stores/media.ts +0 -95
  49. package/src/admin/stores/query.ts +0 -13
  50. package/src/admin/stores/ui.ts +0 -29
  51. package/src/admin/ui/admin-client.tsx +0 -283
  52. package/src/admin/ui/admin-layout.tsx +0 -276
  53. package/src/admin/ui/components/ColumnVisibilityToggle.tsx +0 -141
  54. package/src/admin/ui/components/DataDetailSheet.tsx +0 -141
  55. package/src/admin/ui/components/DataDetailView.tsx +0 -175
  56. package/src/admin/ui/components/Table.tsx +0 -67
  57. package/src/admin/ui/components/fields/ArrayField.tsx +0 -166
  58. package/src/admin/ui/components/fields/BlocksField.tsx +0 -202
  59. package/src/admin/ui/components/fields/BooleanField.tsx +0 -50
  60. package/src/admin/ui/components/fields/CollapsibleField.tsx +0 -75
  61. package/src/admin/ui/components/fields/DateField.tsx +0 -45
  62. package/src/admin/ui/components/fields/FileField.tsx +0 -322
  63. package/src/admin/ui/components/fields/GroupField.tsx +0 -50
  64. package/src/admin/ui/components/fields/JoinField.tsx +0 -23
  65. package/src/admin/ui/components/fields/NumberField.tsx +0 -46
  66. package/src/admin/ui/components/fields/RadioField.tsx +0 -62
  67. package/src/admin/ui/components/fields/RelationshipField.tsx +0 -278
  68. package/src/admin/ui/components/fields/RowField.tsx +0 -40
  69. package/src/admin/ui/components/fields/SelectField.tsx +0 -59
  70. package/src/admin/ui/components/fields/TabsField.tsx +0 -101
  71. package/src/admin/ui/components/fields/TextAreaField.tsx +0 -54
  72. package/src/admin/ui/components/fields/TextField.tsx +0 -49
  73. package/src/admin/ui/components/fields/VirtualField.tsx +0 -53
  74. package/src/admin/ui/components/fields/index.tsx +0 -371
  75. package/src/admin/ui/components/fields/richtext-editor/index.tsx +0 -211
  76. package/src/admin/ui/components/fields/richtext-editor/nodes/ImageComponent.tsx +0 -142
  77. package/src/admin/ui/components/fields/richtext-editor/nodes/ImageNode.tsx +0 -95
  78. package/src/admin/ui/components/fields/richtext-editor/plugins/ComponentPickerPlugin.tsx +0 -226
  79. package/src/admin/ui/components/fields/richtext-editor/plugins/EditableSyncPlugin.tsx +0 -16
  80. package/src/admin/ui/components/fields/richtext-editor/plugins/NotionToolbarPlugin.tsx +0 -184
  81. package/src/admin/ui/components/fields/richtext-editor/plugins/SimpleToolbarPlugin.tsx +0 -240
  82. package/src/admin/ui/components/fields/richtext-editor/plugins/ValueSyncPlugin.tsx +0 -40
  83. package/src/admin/ui/components/fields/utils.ts +0 -1
  84. package/src/admin/ui/components/link.tsx +0 -41
  85. package/src/admin/ui/components/media/AssetManagerModal.tsx +0 -334
  86. package/src/admin/ui/components/toast.tsx +0 -72
  87. package/src/admin/ui/components/ui/accordion.tsx +0 -51
  88. package/src/admin/ui/components/ui/alert-dialog.tsx +0 -98
  89. package/src/admin/ui/components/ui/blocks.tsx +0 -32
  90. package/src/admin/ui/components/ui/breadcrumbs.tsx +0 -59
  91. package/src/admin/ui/components/ui/button.tsx +0 -26
  92. package/src/admin/ui/components/ui/collapsible.tsx +0 -124
  93. package/src/admin/ui/components/ui/dialog.tsx +0 -79
  94. package/src/admin/ui/components/ui/group.tsx +0 -20
  95. package/src/admin/ui/components/ui/index.ts +0 -17
  96. package/src/admin/ui/components/ui/input.tsx +0 -12
  97. package/src/admin/ui/components/ui/join.tsx +0 -53
  98. package/src/admin/ui/components/ui/label.tsx +0 -11
  99. package/src/admin/ui/components/ui/radio-group.tsx +0 -75
  100. package/src/admin/ui/components/ui/relationship-detail-sheet.tsx +0 -122
  101. package/src/admin/ui/components/ui/relationship.tsx +0 -58
  102. package/src/admin/ui/components/ui/scroll-area.tsx +0 -19
  103. package/src/admin/ui/components/ui/select.tsx +0 -187
  104. package/src/admin/ui/components/ui/separator.tsx +0 -21
  105. package/src/admin/ui/components/ui/sheet.tsx +0 -106
  106. package/src/admin/ui/components/ui/tabs.tsx +0 -116
  107. package/src/admin/ui/components/ui/utils.ts +0 -3
  108. package/src/admin/ui/hooks/use-debounce.ts +0 -15
  109. package/src/admin/ui/styles/_locale-switcher.scss +0 -33
  110. package/src/admin/ui/styles/accordion.scss +0 -60
  111. package/src/admin/ui/styles/animations.scss +0 -41
  112. package/src/admin/ui/styles/asset-manager.scss +0 -547
  113. package/src/admin/ui/styles/badge.scss +0 -13
  114. package/src/admin/ui/styles/base.scss +0 -22
  115. package/src/admin/ui/styles/button.scss +0 -161
  116. package/src/admin/ui/styles/card.scss +0 -13
  117. package/src/admin/ui/styles/collapsible.scss +0 -75
  118. package/src/admin/ui/styles/data-detail.scss +0 -92
  119. package/src/admin/ui/styles/dialog.scss +0 -102
  120. package/src/admin/ui/styles/empty-state.scss +0 -22
  121. package/src/admin/ui/styles/group.scss +0 -19
  122. package/src/admin/ui/styles/index.scss +0 -33
  123. package/src/admin/ui/styles/input.scss +0 -80
  124. package/src/admin/ui/styles/label.scss +0 -12
  125. package/src/admin/ui/styles/layout.scss +0 -56
  126. package/src/admin/ui/styles/lexical.scss +0 -469
  127. package/src/admin/ui/styles/loading.scss +0 -102
  128. package/src/admin/ui/styles/media-registry.scss +0 -597
  129. package/src/admin/ui/styles/pagination.scss +0 -20
  130. package/src/admin/ui/styles/radio-group.scss +0 -66
  131. package/src/admin/ui/styles/row.scss +0 -17
  132. package/src/admin/ui/styles/scrollbar.scss +0 -36
  133. package/src/admin/ui/styles/select.scss +0 -121
  134. package/src/admin/ui/styles/separator.scss +0 -14
  135. package/src/admin/ui/styles/sheet.scss +0 -152
  136. package/src/admin/ui/styles/sidebar.scss +0 -148
  137. package/src/admin/ui/styles/switch.scss +0 -59
  138. package/src/admin/ui/styles/table.scss +0 -207
  139. package/src/admin/ui/styles/tabs.scss +0 -62
  140. package/src/admin/ui/styles/toast.scss +0 -45
  141. package/src/admin/ui/styles/variables.scss +0 -24
  142. package/src/admin/ui/views/collection-list-view.tsx +0 -720
  143. package/src/admin/ui/views/dashboard-view.tsx +0 -263
  144. package/src/admin/ui/views/document-edit-view.tsx +0 -384
  145. package/src/admin/ui/views/global-edit-view.tsx +0 -226
  146. package/src/admin/ui/views/init-view.tsx +0 -182
  147. package/src/admin/ui/views/login-view.tsx +0 -123
  148. package/src/admin/ui/views/media-registry-view.tsx +0 -1104
  149. package/src/admin/ui/views/settings-view.tsx +0 -729
  150. package/src/admin/webcomponent.tsx +0 -15
  151. package/src/api.ts +0 -9
  152. package/src/auth/index.ts +0 -194
  153. package/src/auth/migrations.ts +0 -87
  154. package/src/auth/premissions.ts +0 -46
  155. package/src/cli/commands/generate-types.ts +0 -116
  156. package/src/cli/commands/init.ts +0 -95
  157. package/src/cli/commands/migrate-commands.ts +0 -160
  158. package/src/cli/commands/seed-command.ts +0 -11
  159. package/src/cli/d1-mock.ts +0 -101
  160. package/src/cli/index.test.ts +0 -84
  161. package/src/cli/index.ts +0 -183
  162. package/src/cli/r2-mock.ts +0 -217
  163. package/src/cli/seeding.ts +0 -409
  164. package/src/client.ts +0 -181
  165. package/src/config-utils.ts +0 -102
  166. package/src/config.ts +0 -49
  167. package/src/db/adapter.ts +0 -53
  168. package/src/db/better-sqlite.ts +0 -632
  169. package/src/db/bun-sqlite.ts +0 -646
  170. package/src/db/d1.ts +0 -711
  171. package/src/db/index.ts +0 -6
  172. package/src/db/kysely/data-mapper.ts +0 -142
  173. package/src/db/kysely/field-mapper.ts +0 -148
  174. package/src/db/kysely/migration-generator.ts +0 -223
  175. package/src/db/kysely/query-builder.ts +0 -92
  176. package/src/db/kysely/schema-builder.ts +0 -439
  177. package/src/db/kysely/sql-utils.ts +0 -13
  178. package/src/db/postgres.ts +0 -621
  179. package/src/db/sqlite.ts +0 -660
  180. package/src/db/system-schema.ts +0 -121
  181. package/src/index.ts +0 -13
  182. package/src/runtimes/README.md +0 -59
  183. package/src/runtimes/bun.ts +0 -49
  184. package/src/runtimes/cloudflare-workers.ts +0 -38
  185. package/src/runtimes/next.ts +0 -26
  186. package/src/runtimes/node.ts +0 -52
  187. package/src/schema/collection.ts +0 -184
  188. package/src/schema/fields/base.ts +0 -164
  189. package/src/schema/fields/index.ts +0 -427
  190. package/src/schema/global.ts +0 -145
  191. package/src/schema/index.ts +0 -4
  192. package/src/schema/infer.ts +0 -72
  193. package/src/server/admin-router.ts +0 -20
  194. package/src/server/admin.ts +0 -142
  195. package/src/server/assets.ts +0 -306
  196. package/src/server/collection-router.ts +0 -55
  197. package/src/server/handlers.ts +0 -722
  198. package/src/server/middlewares/admin.ts +0 -27
  199. package/src/server/middlewares/auth.ts +0 -89
  200. package/src/server/middlewares/context.ts +0 -17
  201. package/src/server/middlewares/cors.ts +0 -24
  202. package/src/server/middlewares/database-init.ts +0 -74
  203. package/src/server/middlewares/rate-limit.ts +0 -77
  204. package/src/server/router.ts +0 -47
  205. package/src/server/setup-middlewares.ts +0 -58
  206. package/src/server/system-router.ts +0 -35
  207. package/src/server.ts +0 -9
  208. package/src/storage/adapters/cloudflare-r2.ts +0 -136
  209. package/src/storage/adapters/local.ts +0 -146
  210. package/src/storage/adapters/s3.ts +0 -186
  211. package/src/storage/errors.ts +0 -46
  212. package/src/storage/index.ts +0 -5
  213. package/src/storage/types.ts +0 -39
  214. package/src/types.ts +0 -577
  215. package/src/utils/lexical.ts +0 -37
  216. package/src/utils/logger.ts +0 -73
  217. package/src/validation.ts +0 -429
  218. package/src/validator.ts +0 -179
  219. package/test/admin-custom-field.test.ts +0 -162
  220. package/test/admin-react-field.test.tsx +0 -134
  221. package/test/api-features.test.ts +0 -78
  222. package/test/api.test.ts +0 -178
  223. package/test/auth.test.ts +0 -62
  224. package/test/cli-integration.test.ts +0 -148
  225. package/test/cli.test.ts +0 -25
  226. package/test/db/postgres.test.ts +0 -95
  227. package/test/db/sqlite-filter.test.ts +0 -53
  228. package/test/db/sqlite.test.ts +0 -82
  229. package/test/engine-features.test.ts +0 -79
  230. package/test/globals.test.ts +0 -74
  231. package/test/integration-tmp/db-app/opacacms.config.ts +0 -15
  232. package/test/integration-tmp/my-sqlite-app/opacacms.config.ts +0 -25
  233. package/test/integration-tmp/my-test-app/index.ts +0 -8
  234. package/test/integration-tmp/my-test-app/opacacms.config.ts +0 -16
  235. package/test/integration-tmp/my-test-app/package.json +0 -12
  236. package/test/populate.test.ts +0 -79
  237. package/test/runtimes.test.ts +0 -43
  238. package/test/schema-builder.test.ts +0 -107
  239. package/test/schema-features.test.ts +0 -63
  240. package/test/seeding.test.ts +0 -68
  241. package/test/storage/local.test.ts +0 -72
  242. package/test/storage/s3.test.ts +0 -60
  243. package/test/structural-data.test.ts +0 -100
  244. package/test/test-setup.ts +0 -11
  245. package/test/validation.test.ts +0 -162
  246. package/tsconfig.json +0 -42
@@ -1,469 +0,0 @@
1
-
2
- .opaca-lexical-wrapper {
3
- display: flex;
4
- flex-direction: column;
5
- gap: 0.75rem;
6
- }
7
-
8
- .opaca-lexical-modes {
9
- display: inline-flex;
10
- gap: 2px;
11
- background-color: var(--opaca-surface);
12
- padding: 3px;
13
- border-radius: var(--opaca-radius-lg);
14
- border: 1px solid var(--opaca-border);
15
- align-self: flex-start;
16
- margin-bottom: 0.25rem;
17
-
18
- .opaca-btn {
19
- padding: 0.4rem 0.8rem;
20
- font-size: 0.75rem;
21
- border-radius: var(--opaca-radius);
22
- border: none;
23
- background-color: transparent;
24
- color: var(--opaca-text-muted);
25
- font-weight: 500;
26
- min-width: 80px;
27
- transition: all var(--opaca-transition);
28
-
29
- &:hover {
30
- color: var(--opaca-text);
31
- background-color: rgba(255, 255, 255, 0.05);
32
- }
33
-
34
- &.opaca-btn-primary {
35
- background-color: var(--opaca-primary);
36
- color: white;
37
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
38
- }
39
- }
40
- }
41
-
42
- .opaca-lexical-container {
43
- border: 1px solid var(--opaca-border);
44
- border-radius: var(--opaca-radius-lg);
45
- background-color: var(--opaca-surface);
46
- overflow: hidden;
47
- transition: all var(--opaca-transition);
48
- display: flex;
49
- flex-direction: column;
50
-
51
- &:focus-within {
52
- border-color: var(--opaca-accent);
53
- box-shadow: 0 0 0 2px var(--opaca-primary-glow);
54
- }
55
-
56
- &.mode-notion {
57
- .opaca-lexical-content {
58
- padding: 1.5rem 1rem;
59
- }
60
- }
61
-
62
- &.is-readonly {
63
- background-color: rgba(255, 255, 255, 0.02);
64
- cursor: not-allowed;
65
- .opaca-lexical-content {
66
- padding: 0rem;
67
- }
68
- }
69
- }
70
-
71
- .opaca-lexical-toolbar {
72
- display: flex;
73
- flex-wrap: wrap;
74
- gap: 0.125rem;
75
- padding: 0.375rem;
76
- border-bottom: 1px solid var(--opaca-border);
77
- background-color: var(--opaca-card-bg);
78
- align-items: center;
79
- }
80
-
81
- .opaca-lexical-bubble-menu {
82
- background: var(--opaca-card-bg);
83
- border: 1px solid var(--opaca-border);
84
- border-radius: var(--opaca-radius-lg);
85
- padding: 4px;
86
- display: flex;
87
- gap: 4px;
88
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.4);
89
- backdrop-filter: blur(8px);
90
- }
91
-
92
- .opaca-lexical-btn {
93
- display: inline-flex;
94
- align-items: center;
95
- justify-content: center;
96
- width: 32px;
97
- height: 32px;
98
- border-radius: var(--opaca-radius);
99
- background: transparent;
100
- border: none;
101
- color: var(--opaca-text-muted);
102
- cursor: pointer;
103
- transition: all var(--opaca-transition);
104
-
105
- &:hover {
106
- background-color: rgba(255, 255, 255, 0.08);
107
- color: var(--opaca-text);
108
- }
109
-
110
- &.is-active {
111
- background-color: var(--opaca-primary-glow);
112
- color: var(--opaca-accent);
113
- }
114
- }
115
-
116
- .opaca-lexical-divider {
117
- width: 1px;
118
- height: 18px;
119
- background-color: var(--opaca-border);
120
- margin: 0 0.25rem;
121
- }
122
-
123
- .opaca-lexical-placeholder {
124
- color: var(--opaca-text-dim);
125
- position: absolute;
126
- top: 1rem;
127
- left: 1rem;
128
- pointer-events: none;
129
- font-style: normal;
130
- font-size: 0.875rem;
131
- opacity: 0.5;
132
- }
133
-
134
- .opaca-lexical-editor-inner {
135
- position: relative;
136
- flex: 1;
137
- }
138
-
139
- .opaca-lexical-content {
140
- min-height: 160px;
141
- padding: 1rem;
142
- outline: none;
143
- line-height: 1.6;
144
- color: var(--opaca-text);
145
- font-size: 0.9375rem;
146
-
147
- & > *:first-child { margin-top: 0; }
148
- & > *:last-child { margin-bottom: 0; }
149
-
150
- p { margin: 0.75em 0; }
151
-
152
- /* Heading Styles */
153
- .editor-heading-h1 {
154
- font-size: 2.25rem;
155
- font-weight: 700;
156
- margin-top: 1.5rem;
157
- margin-bottom: 0.75rem;
158
- color: var(--opaca-text);
159
- }
160
-
161
- .editor-heading-h2 {
162
- font-size: 1.875rem;
163
- font-weight: 600;
164
- margin-top: 1.25rem;
165
- margin-bottom: 0.5rem;
166
- color: var(--opaca-text);
167
- }
168
-
169
- /* Inline Formatting Styles */
170
- .editor-text-bold {
171
- font-weight: 700;
172
- }
173
-
174
- .editor-text-italic {
175
- font-style: italic;
176
- }
177
-
178
- .editor-text-underline {
179
- text-decoration: underline;
180
- }
181
-
182
- .editor-text-strikethrough {
183
- text-decoration: line-through;
184
- }
185
-
186
- .editor-text-code {
187
- background-color: rgba(255, 255, 255, 0.05);
188
- padding: 2px 4px;
189
- border-radius: 4px;
190
- font-family: monospace;
191
- font-size: 0.9em;
192
- }
193
-
194
- ul {
195
- list-style-type: disc;
196
- padding-left: 1.5rem;
197
- margin: 0.5rem 0;
198
- }
199
-
200
- ol {
201
- list-style-type: decimal;
202
- padding-left: 1.5rem;
203
- margin: 0.5rem 0;
204
- }
205
-
206
- .editor-listitem {
207
- margin: 0.25rem 0;
208
- }
209
-
210
- /* List Extensions */
211
- ul[data-type="taskList"] {
212
- list-style: none;
213
- padding: 0;
214
- p { margin: 0; }
215
- li {
216
- display: flex;
217
- margin-bottom: 0.25rem;
218
- & > label {
219
- flex: 0 0 auto;
220
- margin-right: 0.5rem;
221
- user-select: none;
222
- }
223
- & > div { flex: 1 1 auto; }
224
- input[type="checkbox"] {
225
- cursor: pointer;
226
- width: 1rem;
227
- height: 1rem;
228
- margin-top: 0.2rem;
229
- accent-color: var(--opaca-primary);
230
- }
231
- &[data-checked="true"] > div > p {
232
- text-decoration: line-through;
233
- color: var(--opaca-text-muted);
234
- }
235
- }
236
- }
237
-
238
- blockquote {
239
- border-left: 3px solid var(--opaca-border);
240
- padding-left: 1rem;
241
- margin: 1em 0;
242
- color: var(--opaca-text-dim);
243
- font-style: italic;
244
- }
245
-
246
- .editor-image-wrapper {
247
- position: relative;
248
- display: inline-block;
249
- cursor: default;
250
- user-select: none;
251
- line-height: 0;
252
-
253
- &.is-selected {
254
- outline: 3px solid var(--opaca-primary);
255
- outline-offset: 2px;
256
- border-radius: 4px;
257
- box-shadow: 0 0 0 4px var(--opaca-primary-glow);
258
- }
259
-
260
- .editor-image-img {
261
- max-width: 100%;
262
- height: auto;
263
- border-radius: var(--opaca-radius);
264
- }
265
-
266
- .editor-image-resizer {
267
- position: absolute;
268
- right: -6px;
269
- bottom: -6px;
270
- width: 14px;
271
- height: 14px;
272
- background-color: var(--opaca-primary);
273
- border: 2px solid white;
274
- cursor: nwse-resize;
275
- z-index: 20;
276
- border-radius: 50%;
277
- box-shadow: 0 2px 4px rgba(0,0,0,0.3);
278
-
279
- &:hover {
280
- background-color: var(--opaca-accent);
281
- transform: scale(1.2);
282
- }
283
- }
284
-
285
- .editor-image-delete {
286
- position: absolute;
287
- top: -8px;
288
- right: -8px;
289
- width: 24px;
290
- height: 24px;
291
- background-color: var(--opaca-error);
292
- color: white;
293
- border: 1px solid white;
294
- border-radius: 50%;
295
- display: flex;
296
- align-items: center;
297
- justify-content: center;
298
- cursor: pointer;
299
- z-index: 10;
300
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
301
- padding: 0;
302
- transition: transform 0.2s;
303
-
304
- &:hover {
305
- transform: scale(1.1);
306
- background-color: #ff4d4d;
307
- }
308
- }
309
- }
310
-
311
- a {
312
- color: var(--opaca-primary);
313
- text-decoration: underline;
314
- text-underline-offset: 2px;
315
- }
316
-
317
- pre {
318
- background-color: var(--opaca-bg);
319
- color: var(--opaca-text);
320
- padding: 1rem;
321
- border-radius: var(--opaca-radius);
322
- overflow-x: auto;
323
- border: 1px solid var(--opaca-border);
324
- margin: 1em 0;
325
- code {
326
- color: inherit;
327
- padding: 0;
328
- background: none;
329
- font-size: 0.85rem;
330
- }
331
- }
332
-
333
- /* Placeholder Extension */
334
- [contenteditable="true"] p.is-editor-empty:first-child::before,
335
- [contenteditable="true"] h1.is-empty::before,
336
- [contenteditable="true"] h2.is-empty::before,
337
- [contenteditable="true"] h3.is-empty::before,
338
- [contenteditable="true"] [data-placeholder]::before {
339
- content: attr(data-placeholder);
340
- float: left;
341
- color: var(--opaca-text-muted);
342
- pointer-events: none;
343
- height: 0;
344
- font-style: italic;
345
- opacity: 0.6;
346
- }
347
- }
348
-
349
- /* Floating & Bubble Menus */
350
- .opaca-lexical-bubble-menu {
351
- display: flex;
352
- background-color: var(--opaca-card-bg);
353
- border: 1px solid var(--opaca-border);
354
- border-radius: var(--opaca-radius);
355
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
356
- padding: 0.25rem;
357
- gap: 0.125rem;
358
- }
359
-
360
- .opaca-lexical-floating-menu {
361
- display: flex;
362
- align-items: center;
363
- margin-left: -32px;
364
- }
365
-
366
- .opaca-lexical-btn-plus {
367
- display: inline-flex;
368
- align-items: center;
369
- justify-content: center;
370
- width: 24px;
371
- height: 24px;
372
- border-radius: 50%;
373
- background: var(--opaca-surface);
374
- border: 1px solid var(--opaca-border);
375
- color: var(--opaca-text-muted);
376
- cursor: pointer;
377
- transition: all var(--opaca-transition);
378
- font-size: 1rem;
379
- margin-right: 0.5rem;
380
-
381
- &:hover {
382
- background-color: var(--opaca-primary-glow);
383
- color: var(--opaca-primary);
384
- border-color: var(--opaca-primary);
385
- }
386
- }
387
-
388
- .opaca-lexical-floating-menu-items {
389
- display: none;
390
- background-color: var(--opaca-card-bg);
391
- border: 1px solid var(--opaca-border);
392
- border-radius: var(--opaca-radius);
393
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
394
- padding: 0.25rem;
395
- gap: 0.125rem;
396
- animation: opaca-fade-in 100ms ease-out;
397
- }
398
-
399
- .opaca-lexical-floating-menu:hover .opaca-lexical-floating-menu-items {
400
- display: flex;
401
- }
402
-
403
- /* Slash Menu List */
404
- .opaca-slash-menu {
405
- display: flex;
406
- flex-direction: column;
407
- background-color: var(--opaca-card-bg);
408
- border: 1px solid var(--opaca-border);
409
- border-radius: var(--opaca-radius);
410
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
411
- padding: 0.5rem;
412
- max-height: 300px;
413
- overflow-y: auto;
414
- min-width: 250px;
415
- }
416
-
417
- .opaca-slash-menu-item {
418
- display: flex;
419
- align-items: center;
420
- gap: 0.75rem;
421
- padding: 0.3rem;
422
- border: none;
423
- background: transparent;
424
- color: var(--opaca-text);
425
- border-radius: var(--opaca-radius);
426
- cursor: pointer;
427
- text-align: left;
428
- transition: background-color var(--opaca-transition);
429
-
430
- &:hover,
431
- &.is-selected {
432
- background-color: var(--opaca-surface);
433
- }
434
- }
435
-
436
- .opaca-slash-menu-icon {
437
- display: flex;
438
- align-items: center;
439
- justify-content: center;
440
- width: 32px;
441
- height: 32px;
442
- background-color: var(--opaca-bg);
443
- border: 1px solid var(--opaca-border);
444
- border-radius: var(--opaca-radius);
445
- color: var(--opaca-text-muted);
446
- }
447
-
448
- .opaca-slash-menu-text {
449
- display: flex;
450
- flex-direction: column;
451
- }
452
-
453
- .opaca-slash-menu-title {
454
- font-size: 0.8125rem;
455
- font-weight: 500;
456
- color: var(--opaca-text);
457
- }
458
-
459
- .opaca-slash-menu-desc {
460
- font-size: 0.7rem;
461
- color: var(--opaca-text-muted);
462
- }
463
-
464
- .opaca-slash-menu-empty {
465
- padding: 1rem;
466
- color: var(--opaca-text-muted);
467
- font-size: 0.8125rem;
468
- text-align: center;
469
- }
@@ -1,102 +0,0 @@
1
- @use './variables';
2
- @use './animations';
3
-
4
- .opaca-loading-screen {
5
- display: flex;
6
- flex-direction: column;
7
- align-items: center;
8
- justify-content: center;
9
- height: 100vh;
10
- width: 100%;
11
- background-color: var(--opaca-bg);
12
- color: var(--opaca-text);
13
- gap: 2rem;
14
- }
15
-
16
- .opaca-loading-logo-container {
17
- position: relative;
18
- display: flex;
19
- align-items: center;
20
- justify-content: center;
21
- }
22
-
23
- .opaca-loading-logo-pulse {
24
- position: absolute;
25
- width: 64px;
26
- height: 64px;
27
- background-color: var(--opaca-primary);
28
- border-radius: var(--opaca-radius);
29
- opacity: 0.2;
30
- animation: opaca-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
31
- }
32
-
33
- .opaca-loading-status {
34
- display: flex;
35
- align-items: center;
36
- gap: 0.75rem;
37
- font-size: 0.875rem;
38
- color: var(--opaca-text-muted);
39
- animation: opaca-fade-in 1s ease-out;
40
- }
41
-
42
- /* Login Container */
43
- .opaca-login-container {
44
- display: flex;
45
- align-items: center;
46
- justify-content: center;
47
- min-height: 100vh;
48
- width: 100%;
49
- background-color: var(--opaca-bg);
50
- font-family: var(--opaca-font);
51
- color: var(--opaca-text);
52
- -webkit-font-smoothing: antialiased;
53
- }
54
-
55
- .opaca-login-card {
56
- width: 100%;
57
- max-width: 380px;
58
- background-color: var(--opaca-card-bg);
59
- border: 1px solid var(--opaca-border);
60
- border-radius: var(--opaca-radius-lg);
61
- padding: 2rem;
62
- }
63
-
64
- .opaca-login-header {
65
- text-align: center;
66
- margin-bottom: 1.5rem;
67
- }
68
-
69
- .opaca-login-logo {
70
- width: 48px;
71
- height: 48px;
72
- display: flex;
73
- align-items: center;
74
- justify-content: center;
75
- background-color: var(--opaca-primary);
76
- border-radius: var(--opaca-radius);
77
- margin: 0 auto 1rem;
78
- }
79
-
80
- .opaca-logo-circle {
81
- width: 48px;
82
- height: 48px;
83
- display: flex;
84
- align-items: center;
85
- justify-content: center;
86
- background-color: var(--opaca-primary);
87
- border-radius: var(--opaca-radius);
88
- color: white;
89
- }
90
-
91
- .opaca-login-error {
92
- padding: 0.625rem 0.75rem;
93
- background-color: var(--opaca-error-bg);
94
- border: 1px solid rgba(248, 113, 113, 0.2);
95
- color: var(--opaca-error);
96
- border-radius: var(--opaca-radius);
97
- margin-bottom: 1.25rem;
98
- display: flex;
99
- align-items: center;
100
- gap: 0.5rem;
101
- font-size: 0.8125rem;
102
- }