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,547 +0,0 @@
1
- .asset-manager-overlay {
2
- position: fixed;
3
- inset: 0;
4
- z-index: 100;
5
- display: flex;
6
- align-items: center;
7
- justify-content: center;
8
- background-color: rgba(0, 0, 0, 0.5);
9
- padding: 1rem;
10
- }
11
-
12
- .asset-manager-container {
13
- background-color: var(--opaca-card-bg);
14
- border-radius: var(--opaca-radius);
15
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
16
- width: 100%;
17
- border: 1px solid var(--opaca-border);
18
- max-width: 56rem; // 4xl
19
- height: 600px;
20
- display: flex;
21
- flex-direction: column;
22
- color: var(--opaca-text);
23
- overflow: hidden;
24
- }
25
-
26
- .asset-manager-header {
27
- padding: 1.25rem 1.75rem;
28
- border-bottom: 1px solid var(--opaca-border);
29
- display: flex;
30
- justify-content: space-between;
31
- align-items: center;
32
- background-color: var(--opaca-card-bg);
33
-
34
- h2 {
35
- font-size: 1.125rem;
36
- font-weight: 600;
37
- margin: 0;
38
- }
39
-
40
- .asset-manager-breadcrumbs {
41
- display: flex;
42
- align-items: center;
43
- gap: 0.5rem;
44
- margin-top: 0.25rem;
45
- font-size: 0.8125rem;
46
- color: var(--opaca-text-dim);
47
-
48
- button {
49
- background: none;
50
- border: none;
51
- padding: 0;
52
- color: inherit;
53
- cursor: pointer;
54
-
55
- &:hover {
56
- color: var(--opaca-accent);
57
- text-decoration: underline;
58
- }
59
- }
60
-
61
- .breadcrumb-separator {
62
- opacity: 0.5;
63
- }
64
- }
65
-
66
- .header-actions {
67
- display: flex;
68
- align-items: center;
69
- gap: 1rem;
70
-
71
- .bucket-selector {
72
- min-width: 140px;
73
- height: 36px;
74
- }
75
- }
76
-
77
- .close-button {
78
- color: var(--opaca-text-dim);
79
- background: transparent;
80
- border: none;
81
- display: flex;
82
- align-items: center;
83
- justify-content: center;
84
- cursor: pointer;
85
- transition: all var(--opaca-transition);
86
- padding: 0.25rem;
87
- border-radius: 6px;
88
-
89
- &:hover {
90
- background-color: var(--opaca-surface);
91
- color: var(--opaca-text);
92
- }
93
- }
94
- }
95
-
96
- .asset-manager-upload-zone {
97
- padding: 2rem;
98
- border-bottom: 2px dashed var(--opaca-border);
99
- background-color: rgba(0, 0, 0, 0.2);
100
- cursor: pointer;
101
- text-align: center;
102
- position: relative;
103
- transition: all 0.2s;
104
- display: flex;
105
- flex-direction: column;
106
- align-items: center;
107
- justify-content: center;
108
-
109
- &.uploading {
110
- pointer-events: none;
111
- opacity: 0.7;
112
- }
113
-
114
- .upload-icon {
115
- margin-bottom: 0.75rem;
116
- color: var(--opaca-text-dim);
117
- }
118
-
119
- .upload-prompt {
120
- color: var(--opaca-text-dim);
121
- margin: 0;
122
- font-size: 0.875rem;
123
-
124
- span {
125
- color: var(--opaca-accent);
126
- font-weight: 600;
127
- }
128
- }
129
-
130
- .uploading-status {
131
- display: flex;
132
- flex-direction: column;
133
- align-items: center;
134
- gap: 0.75rem;
135
-
136
- .status-text {
137
- color: var(--opaca-accent);
138
- font-weight: 600;
139
- font-size: 0.875rem;
140
- }
141
- }
142
- }
143
-
144
- .asset-manager-grid-container {
145
- flex: 1;
146
- overflow-y: auto;
147
- padding: 1.5rem;
148
- background-color: rgba(0, 0, 0, 0.1);
149
-
150
- .loading-assets,
151
- .no-assets {
152
- display: flex;
153
- justify-content: center;
154
- align-items: center;
155
- height: 100%;
156
- color: #9ca3af;
157
- }
158
- }
159
-
160
- .asset-manager-grid {
161
- display: grid;
162
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
163
- gap: 1.25rem;
164
- }
165
-
166
- .asset-manager-card {
167
- position: relative;
168
- background-color: var(--opaca-surface);
169
- border-radius: 12px;
170
- border: 1px solid var(--opaca-border);
171
- overflow: hidden;
172
- cursor: pointer;
173
- transition: all var(--opaca-transition);
174
- display: flex;
175
- flex-direction: column;
176
-
177
- &:hover {
178
- border-color: var(--opaca-accent);
179
- transform: translateY(-2px);
180
- box-shadow: var(--opaca-shadow-lg);
181
-
182
- .selection-overlay {
183
- opacity: 1;
184
- }
185
- }
186
-
187
- .asset-thumb {
188
- aspect-ratio: 16 / 10;
189
- display: flex;
190
- align-items: center;
191
- justify-content: center;
192
- background-color: var(--opaca-bg-alt);
193
- overflow: hidden;
194
- position: relative;
195
-
196
- img {
197
- width: 100%;
198
- height: 100%;
199
- object-fit: cover;
200
- }
201
-
202
- .folder-icon {
203
- color: #eab308;
204
- }
205
- }
206
-
207
- .asset-info {
208
- padding: 0.75rem;
209
- display: flex;
210
- flex-direction: column;
211
- gap: 0.25rem;
212
- background-color: var(--opaca-card-bg);
213
- flex: 1;
214
-
215
- .filename {
216
- font-size: 0.8125rem;
217
- font-weight: 500;
218
- color: var(--opaca-text);
219
- overflow: hidden;
220
- text-overflow: ellipsis;
221
- white-space: nowrap;
222
- }
223
-
224
- .file-meta {
225
- font-size: 0.6875rem;
226
- color: var(--opaca-text-dim);
227
- }
228
- }
229
-
230
- .selection-overlay {
231
- position: absolute;
232
- inset: 0;
233
- background-color: rgba(var(--opaca-accent-rgb), 0.1);
234
- display: flex;
235
- align-items: center;
236
- justify-content: center;
237
- opacity: 0;
238
- transition: opacity var(--opaca-transition);
239
- pointer-events: none;
240
-
241
- .select-badge {
242
- background-color: var(--opaca-accent);
243
- color: white;
244
- font-size: 0.75rem;
245
- font-weight: 600;
246
- padding: 0.375rem 0.75rem;
247
- border-radius: 9999px;
248
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
249
- }
250
- }
251
-
252
- &.folder-card {
253
- .asset-thumb {
254
- background-color: rgba(234, 179, 8, 0.05);
255
- }
256
- }
257
- }
258
-
259
- /* FileField Styles */
260
-
261
- .file-field-container {
262
- margin-bottom: 2rem;
263
- background-color: transparent; // Let the row handle background if needed
264
- padding: 0;
265
- border: none;
266
- box-shadow: none;
267
- }
268
-
269
- .file-field-label-row {
270
- display: flex;
271
- justify-content: space-between;
272
- align-items: center;
273
- margin-bottom: 0.5rem;
274
-
275
- label {
276
- display: block;
277
- font-size: 0.875rem;
278
- font-weight: 500;
279
- color: var(--opaca-text);
280
- text-transform: capitalize;
281
- }
282
-
283
- .upload-error {
284
- font-size: 0.75rem;
285
- color: #ef4444;
286
- font-weight: 500;
287
- }
288
- }
289
-
290
- .file-field-optimistic-card {
291
- display: flex;
292
- flex-direction: column;
293
- gap: 0.5rem;
294
- padding: 1rem;
295
- border: 1px solid var(--opaca-primary);
296
- border-radius: var(--opaca-radius);
297
- background-color: rgba(var(--opaca-primary-rgb), 0.1);
298
-
299
- .optimistic-info {
300
- display: flex;
301
- align-items: center;
302
- gap: 1rem;
303
- opacity: 0.7;
304
-
305
- img {
306
- width: 4rem;
307
- height: 4rem;
308
- object-fit: cover;
309
- border-radius: 0.25rem;
310
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
311
- }
312
-
313
- .file-icon-placeholder {
314
- width: 4rem;
315
- height: 4rem;
316
- background-color: #e5e7eb;
317
- border-radius: 0.25rem;
318
- display: flex;
319
- align-items: center;
320
- justify-content: center;
321
-
322
- span {
323
- font-size: 0.75rem;
324
- font-family: monospace;
325
- }
326
- }
327
-
328
- .optimistic-details {
329
- display: flex;
330
- flex-direction: column;
331
- flex: 1;
332
- min-width: 0;
333
-
334
- .filename {
335
- font-size: 0.875rem;
336
- font-weight: 500;
337
- overflow: hidden;
338
- text-overflow: ellipsis;
339
- white-space: nowrap;
340
- }
341
-
342
- .progress-text {
343
- font-size: 0.75rem;
344
- color: #2563eb;
345
- margin-bottom: 0.25rem;
346
- font-weight: 600;
347
- }
348
-
349
- .progress-bar-bg {
350
- width: 100%;
351
- background-color: #bfdbfe;
352
- border-radius: 9999px;
353
- height: 0.375rem;
354
-
355
- .progress-bar-fill {
356
- background-color: #2563eb;
357
- height: 100%;
358
- border-radius: 9999px;
359
- transition: width 0.3s;
360
- }
361
- }
362
- }
363
- }
364
- }
365
-
366
- .file-field-asset-card {
367
- display: flex;
368
- flex-direction: column;
369
- gap: 1rem;
370
- }
371
-
372
- .file-field-asset-info {
373
- display: flex;
374
- align-items: center;
375
- padding: 1rem;
376
- border: 1px solid var(--opaca-border);
377
- border-radius: var(--opaca-radius);
378
- background-color: var(--opaca-card-bg);
379
- justify-content: space-between;
380
-
381
- .asset-preview {
382
- display: flex;
383
- align-items: center;
384
- gap: 1rem;
385
-
386
- img {
387
- width: 4rem;
388
- height: 4rem;
389
- object-fit: cover;
390
- border-radius: 0.25rem;
391
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
392
- border: 1px solid #e5e7eb;
393
- }
394
-
395
- .file-icon-placeholder {
396
- width: 4rem;
397
- height: 4rem;
398
- background-color: var(--opaca-border);
399
- border-radius: 0.25rem;
400
- display: flex;
401
- align-items: center;
402
- justify-content: center;
403
- border: 1px solid var(--opaca-border);
404
-
405
- span {
406
- font-size: 0.75rem;
407
- font-family: monospace;
408
- color: var(--opaca-subtitle);
409
- }
410
- }
411
-
412
- .asset-details {
413
- display: flex;
414
- flex-direction: column;
415
-
416
- .filename {
417
- font-size: 0.875rem;
418
- font-weight: 500;
419
- color: var(--opaca-text);
420
- overflow: hidden;
421
- text-overflow: ellipsis;
422
- white-space: nowrap;
423
- max-width: 200px;
424
- }
425
-
426
- .filesize {
427
- font-size: 0.75rem;
428
- color: var(--opaca-subtitle);
429
- font-family: monospace;
430
- margin-top: 0.125rem;
431
- }
432
- }
433
- }
434
-
435
- .asset-actions {
436
- display: flex;
437
- gap: 0.75rem;
438
-
439
- button {
440
- font-size: 0.875rem;
441
- font-weight: 500;
442
- background: transparent;
443
- border: none;
444
- cursor: pointer;
445
- transition: color 0.2s;
446
-
447
- &.replace-button {
448
- color: var(--opaca-primary);
449
-
450
- &:hover {
451
- opacity: 0.8;
452
- }
453
- }
454
-
455
- &.remove-button {
456
- color: var(--opaca-error);
457
-
458
- &:hover {
459
- opacity: 0.8;
460
- }
461
- }
462
- }
463
- }
464
- }
465
-
466
- .file-field-metadata {
467
- padding-left: 1rem;
468
- border-left: 2px solid #bfdbfe;
469
- display: flex;
470
- flex-direction: column;
471
- gap: 0.75rem;
472
- padding-top: 0.5rem;
473
-
474
- h4 {
475
- font-size: 0.75rem;
476
- text-transform: uppercase;
477
- letter-spacing: 0.05em;
478
- color: #6b7280;
479
- font-weight: 600;
480
- margin-bottom: 0.5rem;
481
- }
482
-
483
- .metadata-field {
484
- label {
485
- display: block;
486
- font-size: 0.75rem;
487
- font-weight: 500;
488
- color: var(--opaca-subtitle);
489
- margin-bottom: 0.25rem;
490
- text-transform: capitalize;
491
-
492
- .required {
493
- color: #ef4444;
494
- }
495
- }
496
-
497
- input,
498
- textarea {
499
- width: 100%;
500
- font-size: 0.875rem;
501
- border: 1px solid #d1d5db;
502
- border-radius: 0.375rem;
503
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
504
- padding: 0.5rem 0.75rem;
505
- outline: none;
506
- transition: all 0.2s;
507
-
508
- &:focus {
509
- border-color: #3b82f6;
510
- outline: 1px solid #3b82f6;
511
- }
512
- }
513
- }
514
- }
515
-
516
- .file-field-empty-button {
517
- width: 100%;
518
- padding: 3.5rem 0;
519
- border: 2px dashed var(--opaca-border);
520
- border-radius: var(--opaca-radius);
521
- color: var(--opaca-text-dim);
522
- background-color: var(--opaca-surface);
523
- cursor: pointer;
524
- transition: all var(--opaca-transition);
525
- display: flex;
526
- flex-direction: column;
527
- align-items: center;
528
- justify-content: center;
529
- gap: 0.75rem;
530
-
531
- &:hover {
532
- border-color: var(--opaca-primary);
533
- color: var(--opaca-accent);
534
- background-color: rgba(124, 58, 237, 0.05);
535
- }
536
-
537
- svg {
538
- width: 2rem;
539
- height: 2rem;
540
- color: #9ca3af;
541
- }
542
-
543
- span {
544
- font-weight: 500;
545
- font-size: 0.875rem;
546
- }
547
- }
@@ -1,13 +0,0 @@
1
- @use './variables';
2
-
3
- .opaca-badge {
4
- display: inline-flex;
5
- align-items: center;
6
- padding: 0.125rem 0.5rem;
7
- font-size: 0.6875rem;
8
- font-weight: 500;
9
- border-radius: var(--opaca-radius);
10
- background-color: var(--opaca-primary-glow);
11
- color: var(--opaca-accent);
12
- letter-spacing: 0.02em;
13
- }
@@ -1,22 +0,0 @@
1
- @use './variables';
2
-
3
- .opaca-admin *,
4
- .opaca-admin *::before,
5
- .opaca-admin *::after {
6
- box-sizing: border-box;
7
- margin: 0;
8
- padding: 0;
9
- }
10
-
11
- .opaca-admin {
12
- background-color: var(--opaca-bg);
13
- color: var(--opaca-text);
14
- font-family: var(--opaca-font);
15
- height: 100vh;
16
- display: flex;
17
- font-size: 14px;
18
- line-height: 1.6;
19
- -webkit-font-smoothing: antialiased;
20
- -moz-osx-font-smoothing: grayscale;
21
- overflow: hidden;
22
- }