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,161 +0,0 @@
1
- .opaca-ui-btn {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- white-space: nowrap;
6
- border-radius: var(--opaca-radius);
7
- font-size: 0.875rem;
8
- font-weight: 500;
9
- transition: all var(--opaca-transition);
10
- cursor: pointer;
11
- border: 1px solid transparent;
12
- outline: none;
13
-
14
- &:focus-visible {
15
- box-shadow: 0 0 0 2px var(--opaca-bg), 0 0 0 4px var(--opaca-primary);
16
- }
17
-
18
- &:disabled {
19
- pointer-events: none;
20
- opacity: 0.5;
21
- }
22
- }
23
-
24
- /* Sizes */
25
- .opaca-ui-btn-size-default {
26
- height: 2.25rem;
27
- padding: 0.5rem 1rem;
28
- }
29
-
30
- .opaca-ui-btn-size-sm {
31
- height: 2rem;
32
- padding: 0 0.75rem;
33
- font-size: 0.75rem;
34
- }
35
-
36
- .opaca-ui-btn-size-lg {
37
- height: 2.5rem;
38
- padding: 0 2rem;
39
- }
40
-
41
- .opaca-ui-btn-size-icon {
42
- height: 2.25rem;
43
- width: 2.25rem;
44
- padding: 0;
45
- }
46
-
47
- /* Variants */
48
- .opaca-ui-btn-default {
49
- background-color: var(--opaca-primary);
50
- color: white;
51
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
52
-
53
- &:hover {
54
- background-color: var(--opaca-primary-hover);
55
- }
56
- }
57
-
58
- .opaca-ui-btn-destructive {
59
- background-color: var(--opaca-error);
60
- color: white;
61
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
62
-
63
- &:hover {
64
- background-color: #ef4444; /* Slightly darker/lighter red */
65
- }
66
- }
67
-
68
- .opaca-ui-btn-outline {
69
- border-color: var(--opaca-border);
70
- background-color: transparent;
71
- color: var(--opaca-text);
72
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
73
-
74
- &:hover {
75
- background-color: rgba(255, 255, 255, 0.05);
76
- }
77
- }
78
-
79
- .opaca-ui-btn-secondary {
80
- background-color: var(--opaca-surface);
81
- color: var(--opaca-text);
82
- border-color: var(--opaca-border);
83
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
84
-
85
- &:hover {
86
- background-color: rgba(255, 255, 255, 0.05);
87
- }
88
- }
89
-
90
- .opaca-ui-btn-ghost {
91
- background-color: transparent;
92
- color: var(--opaca-text);
93
-
94
- &:hover {
95
- background-color: rgba(255, 255, 255, 0.05);
96
- }
97
- }
98
-
99
- .opaca-ui-btn-link {
100
- background-color: transparent;
101
- color: var(--opaca-primary);
102
- text-decoration: underline;
103
- text-underline-offset: 4px;
104
-
105
- &:hover {
106
- text-decoration: none;
107
- }
108
- }
109
-
110
- /* Compatibility with .opaca-btn classes from styles.css */
111
- .opaca-btn {
112
- display: inline-flex;
113
- align-items: center;
114
- justify-content: center;
115
- gap: 0.375rem;
116
- padding: 0.5rem 1rem;
117
- border-radius: var(--opaca-radius);
118
- font-weight: 500;
119
- font-size: 0.8125rem;
120
- cursor: pointer;
121
- transition: all var(--opaca-transition);
122
- border: none;
123
- font-family: inherit;
124
- line-height: 1.4;
125
-
126
- &-primary {
127
- background-color: var(--opaca-primary);
128
- color: white;
129
- &:hover { background-color: var(--opaca-primary-hover); }
130
- &:disabled { opacity: 0.6; cursor: not-allowed; }
131
- }
132
-
133
- &-outline {
134
- background-color: transparent;
135
- border: 1px solid var(--opaca-border);
136
- color: var(--opaca-text-muted);
137
- &:hover {
138
- border-color: var(--opaca-border-hover);
139
- color: var(--opaca-text);
140
- background-color: rgba(255, 255, 255, 0.02);
141
- }
142
- }
143
- }
144
-
145
- .opaca-item-button {
146
- &:hover {
147
- background-color: var(--opaca-brand-subtle) !important;
148
- border-color: var(--opaca-primary) !important;
149
- transform: translateY(-1px);
150
- }
151
-
152
- &:active {
153
- transform: translateY(0);
154
- }
155
-
156
- &.active {
157
- background-color: var(--opaca-brand-subtle) !important;
158
- border-color: var(--opaca-primary) !important;
159
- box-shadow: 0 0 0 1px var(--opaca-primary);
160
- }
161
- }
@@ -1,13 +0,0 @@
1
- @use './variables';
2
-
3
- .opaca-card {
4
- background-color: var(--opaca-card-bg);
5
- border: 1px solid var(--opaca-border);
6
- border-radius: var(--opaca-radius-lg);
7
- padding: 1.25rem;
8
- transition: border-color var(--opaca-transition);
9
-
10
- &:hover {
11
- border-color: var(--opaca-border-hover);
12
- }
13
- }
@@ -1,75 +0,0 @@
1
- .opaca-ui-collapsible {
2
- display: flex;
3
- flex-direction: column;
4
- border: 1px solid var(--opaca-border);
5
- border-radius: var(--opaca-radius-lg);
6
- background-color: transparent;
7
- overflow: hidden;
8
- margin-bottom: 2rem;
9
- transition: border-color var(--opaca-transition);
10
- }
11
-
12
- .opaca-ui-collapsible-trigger {
13
- display: flex;
14
- align-items: center;
15
- justify-content: space-between;
16
- width: 100%;
17
- padding: 1rem 1.25rem;
18
- font-size: 0.875rem;
19
- font-weight: 500;
20
- text-align: left;
21
- background-color: var(--opaca-surface);
22
- color: var(--opaca-text);
23
- border: none;
24
- border-bottom: 1px solid transparent;
25
- cursor: pointer;
26
- transition: all var(--opaca-transition);
27
-
28
- &:hover {
29
- background-color: var(--opaca-border);
30
- }
31
-
32
- &[aria-expanded="true"] {
33
- border-bottom-color: var(--opaca-border);
34
-
35
- .opaca-ui-collapsible-icon {
36
- transform: rotate(180deg);
37
- }
38
- }
39
- }
40
-
41
- .opaca-ui-collapsible-icon {
42
- width: 0.875rem;
43
- height: 0.875rem;
44
- transition: transform var(--opaca-transition);
45
- fill: none;
46
- stroke: var(--opaca-text-muted);
47
- stroke-width: 2;
48
- stroke-linecap: round;
49
- stroke-linejoin: round;
50
- }
51
-
52
- .opaca-ui-collapsible-content {
53
- padding: 1.25rem;
54
- background-color: transparent;
55
- color: var(--opaca-text);
56
-
57
- &[data-state="closed"] {
58
- display: none;
59
- }
60
-
61
- &[data-state="open"] {
62
- animation: collapsible-slide-down 200ms ease-out;
63
- }
64
- }
65
-
66
- @keyframes collapsible-slide-down {
67
- from {
68
- opacity: 0;
69
- transform: translateY(-5px);
70
- }
71
- to {
72
- opacity: 1;
73
- transform: translateY(0);
74
- }
75
- }
@@ -1,92 +0,0 @@
1
- .opaca-data-detail-sheet {
2
- width: 100% !important;
3
-
4
- @media (min-width: 640px) {
5
- width: 600px !important;
6
- max-width: 95vw !important;
7
- }
8
- }
9
-
10
- .opaca-detail-list {
11
- display: flex;
12
- flex-direction: column;
13
- gap: 1rem;
14
- }
15
-
16
- .opaca-detail-item-card {
17
- background: var(--opaca-surface);
18
- border: 1px solid var(--opaca-border);
19
- border-radius: var(--opaca-radius-lg);
20
- overflow: hidden;
21
- transition: all var(--opaca-transition);
22
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
23
-
24
- &:hover {
25
- border-color: var(--opaca-border-hover);
26
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
27
- }
28
- }
29
-
30
- .opaca-detail-item-header {
31
- padding: 0.75rem 1rem;
32
- background: rgba(255, 255, 255, 0.03);
33
- border-bottom: 1px solid var(--opaca-border);
34
- display: flex;
35
- align-items: center;
36
- }
37
-
38
- .opaca-detail-item-content {
39
- padding: 1rem;
40
- }
41
-
42
- .opaca-detail-grid {
43
- display: flex;
44
- flex-direction: column;
45
- gap: 1.25rem;
46
-
47
- &.nested {
48
- padding: 1rem;
49
- background: rgba(255, 255, 255, 0.015);
50
- border: 1px solid var(--opaca-border);
51
- border-radius: var(--opaca-radius);
52
- margin-top: 0.5rem;
53
- }
54
- }
55
-
56
- .opaca-detail-row {
57
- display: flex;
58
- flex-direction: column;
59
- gap: 0.25rem;
60
- }
61
-
62
- .opaca-detail-label {
63
- font-size: 0.75rem;
64
- font-weight: 600;
65
- color: var(--opaca-text-muted);
66
- text-transform: uppercase;
67
- letter-spacing: 0.05em;
68
- }
69
-
70
- .opaca-detail-value-container {
71
- font-size: 0.9375rem;
72
- color: var(--opaca-text);
73
- }
74
-
75
- .opaca-detail-value {
76
- white-space: pre-wrap;
77
- word-break: break-word;
78
- }
79
-
80
- // Interactive styles for Table badges
81
- .opaca-badge-interactive {
82
- cursor: pointer;
83
- transition: all 0.2s ease;
84
-
85
- &:hover {
86
- background: var(--opaca-surface) !important;
87
- border-color: var(--opaca-primary) !important;
88
- color: var(--opaca-primary) !important;
89
- transform: translateY(-1px);
90
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
91
- }
92
- }
@@ -1,102 +0,0 @@
1
- .opaca-ui-dialog-portal {
2
- position: fixed;
3
- inset: 0;
4
- z-index: 9999;
5
- display: flex;
6
- align-items: center;
7
- justify-content: center;
8
- }
9
-
10
- .opaca-ui-dialog-overlay {
11
- position: fixed;
12
- inset: 0;
13
- background-color: rgba(0, 0, 0, 0.8);
14
- backdrop-filter: blur(4px);
15
- transition: opacity 0.2s;
16
- border: none;
17
- padding: 0;
18
- margin: 0;
19
- cursor: default;
20
- width: 100%;
21
- height: 100%;
22
- }
23
-
24
- .opaca-ui-dialog-wrapper {
25
- position: relative;
26
- z-index: 10000;
27
- width: 100%;
28
- height: 100%;
29
- padding: 1rem;
30
- display: flex;
31
- flex-direction: column;
32
- align-items: center;
33
- justify-content: center;
34
- pointer-events: none;
35
- }
36
-
37
- .opaca-ui-dialog-content {
38
- pointer-events: auto;
39
- position: relative;
40
- width: 100%;
41
- max-height: calc(100vh - 2rem);
42
- overflow-y: auto;
43
- border-radius: var(--opaca-radius-lg);
44
- border: 1px solid var(--opaca-border);
45
- background-color: var(--opaca-card-bg);
46
- padding: 1.5rem;
47
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
48
- color: var(--opaca-text);
49
- animation: opacaDialogIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
50
-
51
- &.opaca-dialog-max-w {
52
- max-width: 425px;
53
- }
54
- }
55
-
56
- @keyframes opacaDialogIn {
57
- from {
58
- opacity: 0;
59
- transform: scale(0.95);
60
- }
61
- to {
62
- opacity: 1;
63
- transform: scale(1);
64
- }
65
- }
66
-
67
- .opaca-ui-dialog-header {
68
- display: flex;
69
- flex-direction: column;
70
- gap: 0.375rem;
71
- text-align: center;
72
-
73
- @media (min-width: 640px) {
74
- text-align: left;
75
- }
76
- }
77
-
78
- .opaca-ui-dialog-title {
79
- font-size: 1.125rem;
80
- font-weight: 600;
81
- line-height: 1;
82
- letter-spacing: -0.025em;
83
- color: var(--opaca-text);
84
- }
85
-
86
- .opaca-ui-dialog-description {
87
- font-size: 0.875rem;
88
- color: var(--opaca-text-muted);
89
- }
90
-
91
- .opaca-ui-dialog-footer {
92
- display: flex;
93
- flex-direction: column-reverse;
94
- margin-top: 1rem;
95
- gap: 0.5rem;
96
-
97
- @media (min-width: 640px) {
98
- flex-direction: row;
99
- justify-content: flex-end;
100
- gap: 0.5rem;
101
- }
102
- }
@@ -1,22 +0,0 @@
1
- @use './variables';
2
-
3
- .opaca-empty {
4
- padding: 5rem 2rem;
5
- text-align: center;
6
- display: flex;
7
- flex-direction: column;
8
- align-items: center;
9
- gap: 1rem;
10
- }
11
-
12
- .opaca-empty-icon {
13
- width: 48px;
14
- height: 48px;
15
- border-radius: 50%;
16
- background-color: var(--opaca-surface);
17
- display: flex;
18
- align-items: center;
19
- justify-content: center;
20
- color: var(--opaca-text-dim);
21
- margin-bottom: 0.5rem;
22
- }
@@ -1,19 +0,0 @@
1
- .opaca-ui-group {
2
- display: flex;
3
- flex-direction: column;
4
- gap: 1.25rem;
5
- padding: 1.5rem;
6
- border: 1px solid var(--opaca-border);
7
- border-radius: var(--opaca-radius-lg);
8
- background-color: transparent;
9
- margin-bottom: 2rem;
10
- }
11
-
12
- .opaca-ui-group-header {
13
- font-size: 0.75rem;
14
- font-weight: 500;
15
- margin-bottom: 0.5rem;
16
- color: var(--opaca-text-muted);
17
- text-transform: uppercase;
18
- letter-spacing: 0.03em;
19
- }
@@ -1,33 +0,0 @@
1
- @use './variables';
2
- @use './animations';
3
- @use './base';
4
- @use './scrollbar';
5
- @use './sidebar';
6
- @use './layout';
7
- @use './card';
8
- @use './table';
9
- @use './button';
10
- @use './input';
11
- @use './badge';
12
- @use './toast';
13
- @use './switch';
14
- @use './pagination';
15
- @use './empty-state';
16
- @use './loading';
17
- @use './lexical';
18
-
19
- /* Other components */
20
- @use './accordion';
21
- @use './asset-manager';
22
- @use './collapsible';
23
- @use './dialog';
24
- @use './group';
25
- @use './media-registry';
26
- @use './radio-group';
27
- @use './select';
28
- @use './sheet';
29
- @use './tabs';
30
- @use './data-detail';
31
- @use './row';
32
- @use './separator';
33
- @use './locale-switcher';
@@ -1,80 +0,0 @@
1
- .opaca-ui-input {
2
- display: flex;
3
- height: 2.25rem;
4
- width: 100%;
5
- border-radius: var(--opaca-radius);
6
- border: 1px solid var(--opaca-border);
7
- background-color: var(--opaca-surface);
8
- padding: 0.25rem 0.75rem;
9
- font-size: 0.875rem;
10
- color: var(--opaca-text);
11
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
12
- transition: border-color var(--opaca-transition), box-shadow var(--opaca-transition);
13
- outline: none;
14
-
15
- &::placeholder {
16
- color: var(--opaca-text-dim);
17
- }
18
-
19
- &:focus-visible {
20
- border-color: var(--opaca-primary);
21
- box-shadow: 0 0 0 1px var(--opaca-primary);
22
- }
23
-
24
- &:disabled {
25
- cursor: not-allowed;
26
- opacity: 0.5;
27
- }
28
-
29
- &[type="file"] {
30
- border: 0;
31
- background-color: transparent;
32
- font-size: 0.875rem;
33
- font-weight: 500;
34
- }
35
- }
36
-
37
- /* Compatibility with .opaca-input and .opaca-label from styles.css */
38
- .opaca-label {
39
- display: block;
40
- font-size: 0.75rem;
41
- font-weight: 500;
42
- margin-bottom: 0.375rem;
43
- color: var(--opaca-text-muted);
44
- text-transform: uppercase;
45
- letter-spacing: 0.03em;
46
- }
47
-
48
- .opaca-input {
49
- width: 100%;
50
- padding: 0.5rem 0.75rem;
51
- border-radius: var(--opaca-radius);
52
- background-color: var(--opaca-surface);
53
- border: 1px solid var(--opaca-border);
54
- color: var(--opaca-text);
55
- font-family: inherit;
56
- font-size: 0.8125rem;
57
- transition: border-color var(--opaca-transition), box-shadow var(--opaca-transition);
58
- outline: none;
59
-
60
- &::placeholder {
61
- color: var(--opaca-text-dim);
62
- }
63
-
64
- &:focus {
65
- border-color: var(--opaca-primary);
66
- box-shadow: 0 0 0 1px var(--opaca-primary-glow);
67
- }
68
-
69
- &.error {
70
- border-color: var(--opaca-error);
71
- &:focus { box-shadow: 0 0 0 1px var(--opaca-error-bg); }
72
- }
73
- }
74
-
75
- .opaca-field-error {
76
- display: block;
77
- font-size: 0.75rem;
78
- color: var(--opaca-error);
79
- margin-top: 0.25rem;
80
- }
@@ -1,12 +0,0 @@
1
- .opaca-ui-label {
2
- font-size: 0.875rem;
3
- font-weight: 500;
4
- line-height: 1;
5
- color: var(--opaca-text);
6
-
7
- &:has(+ :disabled),
8
- &[disabled] {
9
- cursor: not-allowed;
10
- opacity: 0.7;
11
- }
12
- }
@@ -1,56 +0,0 @@
1
- @use './variables';
2
-
3
- .opaca-content {
4
- flex: 1;
5
- padding: 2.5rem;
6
- overflow-y: auto;
7
- height: 100%;
8
- scroll-behavior: smooth;
9
- }
10
-
11
- .opaca-content-inner {
12
- margin: 0 auto;
13
- width: 100%;
14
- }
15
-
16
- .opaca-view-container {
17
- opacity: 1;
18
- transform: translateY(0);
19
- transition: opacity var(--opaca-transition), transform var(--opaca-transition);
20
-
21
- &.loading {
22
- opacity: 0.5;
23
- pointer-events: none;
24
- filter: blur(1px);
25
- }
26
- }
27
-
28
- .opaca-header {
29
- display: flex;
30
- justify-content: space-between;
31
- align-items: flex-start;
32
- margin-bottom: 2rem;
33
- }
34
-
35
- .opaca-title {
36
- font-size: 1.375rem;
37
- font-weight: 600;
38
- letter-spacing: -0.02em;
39
- color: var(--opaca-text);
40
- }
41
-
42
- .opaca-subtitle {
43
- color: var(--opaca-text-muted);
44
- font-size: 0.8125rem;
45
- margin-top: 0.25rem;
46
- }
47
-
48
- .opaca-grid {
49
- display: grid;
50
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
51
- gap: 1rem;
52
- }
53
-
54
- .opaca-form-group {
55
- margin-bottom: 1.5rem;
56
- }