@sparqjs/schema-vue 0.1.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 (190) hide show
  1. package/dist/asset/index.d.ts +5 -0
  2. package/dist/asset/index.d.ts.map +1 -0
  3. package/dist/asset/picker/AssetPickerParts.d.ts +43 -0
  4. package/dist/asset/picker/AssetPickerParts.d.ts.map +1 -0
  5. package/dist/asset/picker/AssetPickerRoot.d.ts +36 -0
  6. package/dist/asset/picker/AssetPickerRoot.d.ts.map +1 -0
  7. package/dist/asset/picker/AssetPickerServerPanel.d.ts +38 -0
  8. package/dist/asset/picker/AssetPickerServerPanel.d.ts.map +1 -0
  9. package/dist/asset/picker/index.d.ts +4 -0
  10. package/dist/asset/picker/index.d.ts.map +1 -0
  11. package/dist/asset/picker/service.d.ts +4 -0
  12. package/dist/asset/picker/service.d.ts.map +1 -0
  13. package/dist/asset/picker/types.d.ts +50 -0
  14. package/dist/asset/picker/types.d.ts.map +1 -0
  15. package/dist/asset/preview/AssetPreview.d.ts +64 -0
  16. package/dist/asset/preview/AssetPreview.d.ts.map +1 -0
  17. package/dist/asset/preview/index.d.ts +3 -0
  18. package/dist/asset/preview/index.d.ts.map +1 -0
  19. package/dist/asset/preview/registry.d.ts +35 -0
  20. package/dist/asset/preview/registry.d.ts.map +1 -0
  21. package/dist/asset/service.d.ts +39 -0
  22. package/dist/asset/service.d.ts.map +1 -0
  23. package/dist/asset/upload/AssetUploadPanel.d.ts +82 -0
  24. package/dist/asset/upload/AssetUploadPanel.d.ts.map +1 -0
  25. package/dist/asset/upload/executor.d.ts +59 -0
  26. package/dist/asset/upload/executor.d.ts.map +1 -0
  27. package/dist/asset/upload/files.d.ts +16 -0
  28. package/dist/asset/upload/files.d.ts.map +1 -0
  29. package/dist/asset/upload/hash-file.d.ts +7 -0
  30. package/dist/asset/upload/hash-file.d.ts.map +1 -0
  31. package/dist/asset/upload/hash-worker.d.ts +2 -0
  32. package/dist/asset/upload/hash-worker.d.ts.map +1 -0
  33. package/dist/asset/upload/index.d.ts +6 -0
  34. package/dist/asset/upload/index.d.ts.map +1 -0
  35. package/dist/asset/upload/queue.d.ts +23 -0
  36. package/dist/asset/upload/queue.d.ts.map +1 -0
  37. package/dist/assets/hash-worker-DEktbSny.js +8 -0
  38. package/dist/assets/hash-worker-DEktbSny.js.map +1 -0
  39. package/dist/components/SparqView.d.ts +65 -0
  40. package/dist/components/SparqView.d.ts.map +1 -0
  41. package/dist/custom-components/IconInput/IconInput.d.ts +45 -0
  42. package/dist/custom-components/IconInput/IconInput.d.ts.map +1 -0
  43. package/dist/custom-components/IconInput/SqIcon.d.ts +29 -0
  44. package/dist/custom-components/IconInput/SqIcon.d.ts.map +1 -0
  45. package/dist/custom-components/IconInput/SqIconInput.d.ts +184 -0
  46. package/dist/custom-components/IconInput/SqIconInput.d.ts.map +1 -0
  47. package/dist/custom-components/IconInput/index.d.ts +5 -0
  48. package/dist/custom-components/IconInput/index.d.ts.map +1 -0
  49. package/dist/custom-components/JsonEditor/JsonEditor.d.ts +39 -0
  50. package/dist/custom-components/JsonEditor/JsonEditor.d.ts.map +1 -0
  51. package/dist/custom-components/JsonEditor/SqJson.d.ts +103 -0
  52. package/dist/custom-components/JsonEditor/SqJson.d.ts.map +1 -0
  53. package/dist/custom-components/JsonEditor/index.d.ts +5 -0
  54. package/dist/custom-components/JsonEditor/index.d.ts.map +1 -0
  55. package/dist/custom-components/KeyValueEditor/KeyValueEditor.d.ts +37 -0
  56. package/dist/custom-components/KeyValueEditor/KeyValueEditor.d.ts.map +1 -0
  57. package/dist/custom-components/KeyValueEditor/SqKeyValue.d.ts +102 -0
  58. package/dist/custom-components/KeyValueEditor/SqKeyValue.d.ts.map +1 -0
  59. package/dist/custom-components/KeyValueEditor/index.d.ts +5 -0
  60. package/dist/custom-components/KeyValueEditor/index.d.ts.map +1 -0
  61. package/dist/custom-components/RichText/RichText.d.ts +49 -0
  62. package/dist/custom-components/RichText/RichText.d.ts.map +1 -0
  63. package/dist/custom-components/RichText/SqRichText.d.ts +139 -0
  64. package/dist/custom-components/RichText/SqRichText.d.ts.map +1 -0
  65. package/dist/custom-components/RichText/index.d.ts +3 -0
  66. package/dist/custom-components/RichText/index.d.ts.map +1 -0
  67. package/dist/custom-components/Upload/SqFileUpload.d.ts +42 -0
  68. package/dist/custom-components/Upload/SqFileUpload.d.ts.map +1 -0
  69. package/dist/custom-components/Upload/SqImageUpload.d.ts +42 -0
  70. package/dist/custom-components/Upload/SqImageUpload.d.ts.map +1 -0
  71. package/dist/custom-components/Upload/SqUpload.d.ts +45 -0
  72. package/dist/custom-components/Upload/SqUpload.d.ts.map +1 -0
  73. package/dist/custom-components/Upload/Upload.d.ts +44 -0
  74. package/dist/custom-components/Upload/Upload.d.ts.map +1 -0
  75. package/dist/custom-components/Upload/index.d.ts +5 -0
  76. package/dist/custom-components/Upload/index.d.ts.map +1 -0
  77. package/dist/custom-components/index.d.ts +681 -0
  78. package/dist/custom-components/index.d.ts.map +1 -0
  79. package/dist/custom-components/shared/props.d.ts +5 -0
  80. package/dist/custom-components/shared/props.d.ts.map +1 -0
  81. package/dist/custom-components/shared/render.d.ts +4 -0
  82. package/dist/custom-components/shared/render.d.ts.map +1 -0
  83. package/dist/custom-components/shared/standalone.d.ts +53 -0
  84. package/dist/custom-components/shared/standalone.d.ts.map +1 -0
  85. package/dist/custom-components/types.d.ts +20 -0
  86. package/dist/custom-components/types.d.ts.map +1 -0
  87. package/dist/display-format.d.ts +2 -0
  88. package/dist/display-format.d.ts.map +1 -0
  89. package/dist/index.d.ts +15 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +5995 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/install.d.ts +9 -0
  94. package/dist/install.d.ts.map +1 -0
  95. package/dist/keys.d.ts +74 -0
  96. package/dist/keys.d.ts.map +1 -0
  97. package/dist/presentation/host.d.ts +33 -0
  98. package/dist/presentation/host.d.ts.map +1 -0
  99. package/dist/presentation/index.d.ts +2 -0
  100. package/dist/presentation/index.d.ts.map +1 -0
  101. package/dist/registry/component.d.ts +121 -0
  102. package/dist/registry/component.d.ts.map +1 -0
  103. package/dist/registry/contribution.d.ts +95 -0
  104. package/dist/registry/contribution.d.ts.map +1 -0
  105. package/dist/registry/icon.d.ts +21 -0
  106. package/dist/registry/icon.d.ts.map +1 -0
  107. package/dist/registry/index.d.ts +5 -0
  108. package/dist/registry/index.d.ts.map +1 -0
  109. package/dist/registry/rich-text.d.ts +52 -0
  110. package/dist/registry/rich-text.d.ts.map +1 -0
  111. package/dist/render/action-context.d.ts +16 -0
  112. package/dist/render/action-context.d.ts.map +1 -0
  113. package/dist/render/audit.d.ts +5 -0
  114. package/dist/render/audit.d.ts.map +1 -0
  115. package/dist/render/container-structure.d.ts +20 -0
  116. package/dist/render/container-structure.d.ts.map +1 -0
  117. package/dist/render/context.d.ts +52 -0
  118. package/dist/render/context.d.ts.map +1 -0
  119. package/dist/render/embedded-view.d.ts +5 -0
  120. package/dist/render/embedded-view.d.ts.map +1 -0
  121. package/dist/render/field-node.d.ts +11 -0
  122. package/dist/render/field-node.d.ts.map +1 -0
  123. package/dist/render/index.d.ts +22 -0
  124. package/dist/render/index.d.ts.map +1 -0
  125. package/dist/render/layout-node.d.ts +22 -0
  126. package/dist/render/layout-node.d.ts.map +1 -0
  127. package/dist/render/page-structure.d.ts +7 -0
  128. package/dist/render/page-structure.d.ts.map +1 -0
  129. package/dist/render/structure.d.ts +7 -0
  130. package/dist/render/structure.d.ts.map +1 -0
  131. package/dist/render/view-node.d.ts +2 -0
  132. package/dist/render/view-node.d.ts.map +1 -0
  133. package/dist/render/view-structures.d.ts +24 -0
  134. package/dist/render/view-structures.d.ts.map +1 -0
  135. package/dist/runtime/controller.d.ts +4 -0
  136. package/dist/runtime/controller.d.ts.map +1 -0
  137. package/dist/runtime/feedback.d.ts +19 -0
  138. package/dist/runtime/feedback.d.ts.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/renderer.d.ts +8 -0
  142. package/dist/runtime/renderer.d.ts.map +1 -0
  143. package/dist/runtime/state.d.ts +6 -0
  144. package/dist/runtime/state.d.ts.map +1 -0
  145. package/dist/runtime/write-back.d.ts +11 -0
  146. package/dist/runtime/write-back.d.ts.map +1 -0
  147. package/dist/semantic-components/FieldDisplay.d.ts +12 -0
  148. package/dist/semantic-components/FieldDisplay.d.ts.map +1 -0
  149. package/dist/semantic-components/FieldLink.d.ts +8 -0
  150. package/dist/semantic-components/FieldLink.d.ts.map +1 -0
  151. package/dist/semantic-components/HelpText.d.ts +8 -0
  152. package/dist/semantic-components/HelpText.d.ts.map +1 -0
  153. package/dist/semantic-components/SectionBlock.d.ts +8 -0
  154. package/dist/semantic-components/SectionBlock.d.ts.map +1 -0
  155. package/dist/semantic-components/StatusTag.d.ts +14 -0
  156. package/dist/semantic-components/StatusTag.d.ts.map +1 -0
  157. package/dist/semantic-components/Thumbnail.d.ts +8 -0
  158. package/dist/semantic-components/Thumbnail.d.ts.map +1 -0
  159. package/dist/semantic-components/index.d.ts +16 -0
  160. package/dist/semantic-components/index.d.ts.map +1 -0
  161. package/dist/semantic-components/types.d.ts +28 -0
  162. package/dist/semantic-components/types.d.ts.map +1 -0
  163. package/dist/shell/audit-panel.d.ts +12 -0
  164. package/dist/shell/audit-panel.d.ts.map +1 -0
  165. package/dist/shell/detail-shell.d.ts +4 -0
  166. package/dist/shell/detail-shell.d.ts.map +1 -0
  167. package/dist/shell/index.d.ts +3 -0
  168. package/dist/shell/index.d.ts.map +1 -0
  169. package/dist/types.d.ts +403 -0
  170. package/dist/types.d.ts.map +1 -0
  171. package/dist/ui/adapter.d.ts +53 -0
  172. package/dist/ui/adapter.d.ts.map +1 -0
  173. package/dist/ui/index.d.ts +4 -0
  174. package/dist/ui/index.d.ts.map +1 -0
  175. package/dist/ui/kit.d.ts +56 -0
  176. package/dist/ui/kit.d.ts.map +1 -0
  177. package/dist/ui/schema-ui.d.ts +86 -0
  178. package/dist/ui/schema-ui.d.ts.map +1 -0
  179. package/package.json +41 -0
  180. package/src/asset/picker/style.css +537 -0
  181. package/src/asset/preview/style.css +382 -0
  182. package/src/asset/upload/style.css +167 -0
  183. package/src/custom-components/IconInput/style.css +101 -0
  184. package/src/custom-components/KeyValueEditor/style.css +44 -0
  185. package/src/custom-components/Upload/style.css +313 -0
  186. package/src/detail/style.css +427 -0
  187. package/src/render/style.css +230 -0
  188. package/src/semantic-components/style.css +263 -0
  189. package/src/style.css +9 -0
  190. package/src/tokens.css +44 -0
@@ -0,0 +1,382 @@
1
+ .sparq-asset-preview__thumb {
2
+ display: grid;
3
+ place-items: center;
4
+ width: 100%;
5
+ overflow: hidden;
6
+ background:
7
+ linear-gradient(45deg, color-mix(in srgb, var(--sparq-asset-preview-border, var(--sparq-picker-border, var(--sq-schema-border))) 48%, transparent) 25%, transparent 25%),
8
+ linear-gradient(-45deg, color-mix(in srgb, var(--sparq-asset-preview-border, var(--sparq-picker-border, var(--sq-schema-border))) 48%, transparent) 25%, transparent 25%),
9
+ linear-gradient(45deg, transparent 75%, color-mix(in srgb, var(--sparq-asset-preview-border, var(--sparq-picker-border, var(--sq-schema-border))) 48%, transparent) 75%),
10
+ linear-gradient(-45deg, transparent 75%, color-mix(in srgb, var(--sparq-asset-preview-border, var(--sparq-picker-border, var(--sq-schema-border))) 48%, transparent) 75%),
11
+ var(--sparq-asset-preview-muted-surface, var(--sparq-picker-muted-surface, #f8fafc));
12
+ background-position:
13
+ 0 0,
14
+ 0 6px,
15
+ 6px -6px,
16
+ -6px 0;
17
+ background-size: 12px 12px;
18
+ }
19
+
20
+ .sparq-asset-preview__thumb.is-card {
21
+ aspect-ratio: 4 / 3;
22
+ height: auto;
23
+ max-height: 160px;
24
+ }
25
+
26
+ .sparq-asset-preview__thumb.is-thumb {
27
+ width: 44px;
28
+ height: 44px;
29
+ border-radius: var(--sq-schema-radius-xs);
30
+ }
31
+
32
+ .sparq-asset-preview__thumb img {
33
+ width: 100%;
34
+ height: 100%;
35
+ object-fit: contain;
36
+ }
37
+
38
+ .sparq-asset-preview__thumb.is-previewable {
39
+ cursor: zoom-in;
40
+ }
41
+
42
+ .sparq-asset-preview__file-label {
43
+ display: grid;
44
+ width: 42px;
45
+ height: 52px;
46
+ place-items: center;
47
+ border: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
48
+ border-radius: var(--sq-schema-radius-xs);
49
+ background:
50
+ linear-gradient(135deg, transparent 0 72%, color-mix(in srgb, var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc)) 18%, transparent) 72%),
51
+ var(--sparq-asset-preview-surface, var(--sparq-picker-surface, var(--sq-schema-surface)));
52
+ color: var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc));
53
+ font-size: 11px;
54
+ font-weight: 700;
55
+ }
56
+
57
+ .sparq-asset-preview__dialog {
58
+ --sparq-asset-preview-primary: var(--sq-schema-primary);
59
+ --sparq-asset-preview-primary-soft: color-mix(in srgb, var(--sq-schema-primary-soft) 84%, var(--sq-schema-surface));
60
+ --sparq-asset-preview-danger: var(--sq-schema-danger);
61
+ --sparq-asset-preview-border: var(--sq-schema-border);
62
+ --sparq-asset-preview-surface: var(--sq-schema-surface);
63
+ --sparq-asset-preview-muted-surface: var(--sq-schema-surface-muted);
64
+ --sparq-asset-preview-text: var(--sq-schema-title);
65
+ --sparq-asset-preview-muted: var(--sq-schema-muted);
66
+ --sparq-asset-preview-shadow: var(--sq-schema-shadow-floating);
67
+ --sparq-asset-preview-overlay: var(--sq-schema-overlay);
68
+ position: fixed;
69
+ inset: 0;
70
+ z-index: var(--sparq-asset-preview-z-index, 2200);
71
+ display: grid;
72
+ place-items: center;
73
+ box-sizing: border-box;
74
+ width: 100vw;
75
+ height: 100vh;
76
+ height: 100dvh;
77
+ padding: 24px;
78
+ }
79
+
80
+ .sparq-asset-preview__mask {
81
+ position: absolute;
82
+ inset: 0;
83
+ background: var(--sparq-asset-preview-overlay, var(--sq-schema-overlay));
84
+ }
85
+
86
+ .sparq-asset-preview__panel {
87
+ position: relative;
88
+ display: grid;
89
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
90
+ width: min(960px, 100%);
91
+ height: min(760px, 100%);
92
+ max-height: 100%;
93
+ min-height: min(520px, 100%);
94
+ overflow: hidden;
95
+ border: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
96
+ border-radius: var(--sq-schema-radius-lg);
97
+ background: var(--sparq-asset-preview-surface, var(--sparq-picker-surface, #ffffff));
98
+ box-shadow: var(--sparq-asset-preview-shadow, var(--sparq-picker-shadow, 0 18px 56px rgb(15 23 42 / 18%)));
99
+ }
100
+
101
+ .sparq-asset-preview__header {
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: space-between;
105
+ gap: 12px;
106
+ border-bottom: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
107
+ padding: 12px 14px;
108
+ }
109
+
110
+ .sparq-asset-preview__title {
111
+ overflow: hidden;
112
+ color: var(--sparq-asset-preview-text, var(--sparq-picker-text, #1f2937));
113
+ font-size: 14px;
114
+ font-weight: 650;
115
+ text-overflow: ellipsis;
116
+ white-space: nowrap;
117
+ }
118
+
119
+ .sparq-asset-preview__close {
120
+ display: grid;
121
+ width: 30px;
122
+ height: 30px;
123
+ place-items: center;
124
+ border: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
125
+ border-radius: var(--sq-schema-radius-xs);
126
+ background: var(--sparq-asset-preview-surface, var(--sparq-picker-surface, #ffffff));
127
+ color: var(--sparq-asset-preview-muted, var(--sparq-picker-muted, #64748b));
128
+ cursor: pointer;
129
+ font-size: 20px;
130
+ line-height: 1;
131
+ }
132
+
133
+ .sparq-asset-preview__close:hover {
134
+ border-color: color-mix(in srgb, var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc)) 34%, var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef)));
135
+ color: var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc));
136
+ }
137
+
138
+ .sparq-asset-preview__close:focus-visible {
139
+ outline: none;
140
+ box-shadow: 0 0 0 3px var(--sparq-asset-preview-primary-soft, var(--sparq-picker-primary-soft, rgb(34 81 204 / 14%)));
141
+ }
142
+
143
+ .sparq-asset-preview__stage {
144
+ position: relative;
145
+ display: grid;
146
+ min-height: 180px;
147
+ place-items: center;
148
+ overflow: hidden;
149
+ background: var(--sparq-asset-preview-muted-surface, var(--sparq-picker-muted-surface, #f8fafc));
150
+ }
151
+
152
+ .sparq-asset-preview__image-frame {
153
+ position: absolute;
154
+ inset: 16px;
155
+ display: grid;
156
+ min-width: 0;
157
+ min-height: 0;
158
+ place-items: center;
159
+ overflow: auto;
160
+ }
161
+
162
+ .sparq-asset-preview__image-frame img {
163
+ display: block;
164
+ width: auto !important;
165
+ height: auto !important;
166
+ min-width: 0;
167
+ min-height: 0;
168
+ max-width: 100% !important;
169
+ max-height: 100% !important;
170
+ object-fit: contain !important;
171
+ transition: transform 160ms ease;
172
+ transform-origin: center;
173
+ user-select: none;
174
+ }
175
+
176
+ .sparq-asset-preview__image-frame img.is-hidden {
177
+ opacity: 0;
178
+ }
179
+
180
+ .sparq-asset-preview__placeholder {
181
+ position: absolute;
182
+ top: 50%;
183
+ left: 50%;
184
+ z-index: 1;
185
+ display: grid;
186
+ min-width: min(280px, calc(100% - 32px));
187
+ min-height: 132px;
188
+ place-items: center;
189
+ align-content: center;
190
+ gap: 12px;
191
+ border: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
192
+ border-radius: var(--sq-schema-radius);
193
+ background: color-mix(in srgb, var(--sparq-asset-preview-surface, var(--sparq-picker-surface, #ffffff)) 92%, transparent);
194
+ box-shadow: var(--sq-schema-shadow-soft);
195
+ color: var(--sparq-asset-preview-text, var(--sparq-picker-text, #1f2937));
196
+ font-size: 14px;
197
+ font-weight: 600;
198
+ transform: translate(-50%, -50%);
199
+ }
200
+
201
+ .sparq-asset-preview__spinner {
202
+ width: 34px;
203
+ height: 34px;
204
+ border: 3px solid color-mix(in srgb, var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc)) 16%, transparent);
205
+ border-top-color: var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc));
206
+ border-radius: var(--sq-schema-radius-pill);
207
+ animation: sparq-asset-preview-spin 800ms linear infinite;
208
+ }
209
+
210
+ .sparq-asset-preview__stage.is-failed .sparq-asset-preview__spinner {
211
+ border-color: var(--sparq-asset-preview-danger, var(--sparq-picker-danger, #dc2626));
212
+ animation: none;
213
+ }
214
+
215
+ .sparq-asset-preview__stage.is-failed .sparq-asset-preview__placeholder {
216
+ color: var(--sparq-asset-preview-danger, var(--sparq-picker-danger, #dc2626));
217
+ }
218
+
219
+ .sparq-asset-preview__placeholder-text {
220
+ line-height: 1;
221
+ }
222
+
223
+ .sparq-asset-preview__toolbar {
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ gap: 8px;
228
+ min-height: 42px;
229
+ border-top: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
230
+ background: var(--sparq-asset-preview-surface, var(--sparq-picker-surface, #ffffff));
231
+ padding: 6px 12px;
232
+ }
233
+
234
+ .sparq-asset-preview__toolbar.is-empty {
235
+ display: none;
236
+ }
237
+
238
+ .sparq-asset-preview__tool {
239
+ display: grid;
240
+ width: 30px;
241
+ height: 30px;
242
+ place-items: center;
243
+ border: 1px solid transparent;
244
+ border-radius: var(--sq-schema-radius-xs);
245
+ background: transparent;
246
+ color: var(--sparq-asset-preview-text, var(--sparq-picker-text, #1f2937));
247
+ cursor: pointer;
248
+ font-size: 14px;
249
+ font-weight: 650;
250
+ line-height: 1;
251
+ }
252
+
253
+ .sparq-asset-preview__tool:hover:not(:disabled) {
254
+ border-color: color-mix(in srgb, var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc)) 22%, transparent);
255
+ background: var(--sparq-asset-preview-primary-soft, var(--sparq-picker-primary-soft, rgb(34 81 204 / 14%)));
256
+ color: var(--sparq-asset-preview-primary, var(--sparq-picker-primary, #2251cc));
257
+ }
258
+
259
+ .sparq-asset-preview__tool:focus-visible {
260
+ outline: none;
261
+ box-shadow: 0 0 0 3px var(--sparq-asset-preview-primary-soft, var(--sparq-picker-primary-soft, rgb(34 81 204 / 14%)));
262
+ }
263
+
264
+ .sparq-asset-preview__tool:disabled {
265
+ color: color-mix(in srgb, var(--sparq-asset-preview-muted, var(--sparq-picker-muted, #64748b)) 56%, transparent);
266
+ cursor: not-allowed;
267
+ }
268
+
269
+ .sparq-asset-preview__scale {
270
+ min-width: 48px;
271
+ color: var(--sparq-asset-preview-muted, var(--sparq-picker-muted, #64748b));
272
+ font-size: 12px;
273
+ font-weight: 600;
274
+ text-align: center;
275
+ }
276
+
277
+ .sparq-asset-preview__divider {
278
+ width: 1px;
279
+ height: 18px;
280
+ background: var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
281
+ }
282
+
283
+ .sparq-asset-preview__meta {
284
+ display: grid;
285
+ gap: 8px;
286
+ max-height: 132px;
287
+ overflow: auto;
288
+ border-top: 1px solid var(--sparq-asset-preview-border, var(--sparq-picker-border, #dbe3ef));
289
+ margin: 0;
290
+ padding: 12px 14px;
291
+ color: var(--sparq-asset-preview-text, var(--sparq-picker-text, #1f2937));
292
+ font-size: 12px;
293
+ }
294
+
295
+ .sparq-asset-preview__meta div {
296
+ display: grid;
297
+ grid-template-columns: 64px minmax(0, 1fr);
298
+ gap: 8px;
299
+ }
300
+
301
+ .sparq-asset-preview__meta dt {
302
+ color: var(--sparq-asset-preview-muted, var(--sparq-picker-muted, #64748b));
303
+ }
304
+
305
+ .sparq-asset-preview__meta dd {
306
+ overflow: hidden;
307
+ margin: 0;
308
+ text-overflow: ellipsis;
309
+ white-space: nowrap;
310
+ }
311
+
312
+ @keyframes sparq-asset-preview-spin {
313
+ to {
314
+ transform: rotate(360deg);
315
+ }
316
+ }
317
+
318
+ @media (prefers-reduced-motion: reduce) {
319
+ .sparq-asset-preview__image-frame img {
320
+ transition: none;
321
+ }
322
+
323
+ .sparq-asset-preview__spinner {
324
+ animation: none;
325
+ }
326
+ }
327
+
328
+ @media (max-width: 640px) {
329
+ .sparq-asset-preview__dialog {
330
+ padding: 12px;
331
+ }
332
+
333
+ .sparq-asset-preview__panel {
334
+ border-radius: var(--sq-schema-radius);
335
+ min-height: min(460px, 100%);
336
+ }
337
+
338
+ .sparq-asset-preview__header,
339
+ .sparq-asset-preview__meta {
340
+ padding-right: 12px;
341
+ padding-left: 12px;
342
+ }
343
+
344
+ .sparq-asset-preview__stage {
345
+ min-height: 220px;
346
+ }
347
+
348
+ .sparq-asset-preview__image-frame {
349
+ inset: 10px;
350
+ }
351
+
352
+ .sparq-asset-preview__toolbar {
353
+ gap: 4px;
354
+ overflow-x: auto;
355
+ justify-content: flex-start;
356
+ }
357
+ }
358
+
359
+ @media (max-height: 560px) {
360
+ .sparq-asset-preview__dialog {
361
+ padding: 12px;
362
+ }
363
+
364
+ .sparq-asset-preview__panel {
365
+ min-height: 0;
366
+ }
367
+
368
+ .sparq-asset-preview__header,
369
+ .sparq-asset-preview__toolbar,
370
+ .sparq-asset-preview__meta {
371
+ padding-top: 8px;
372
+ padding-bottom: 8px;
373
+ }
374
+
375
+ .sparq-asset-preview__stage {
376
+ min-height: 140px;
377
+ }
378
+
379
+ .sparq-asset-preview__meta {
380
+ max-height: 92px;
381
+ }
382
+ }
@@ -0,0 +1,167 @@
1
+ .sparq-asset-upload {
2
+ /* 上传面板主色。默认跟随资源选择器或宿主主题色。 */
3
+ --sparq-upload-primary: var(--sparq-picker-primary, var(--sparq-primary, var(--sq-schema-primary)));
4
+ /* 上传面板边框色。用于拖拽区、任务行和进度轨道。 */
5
+ --sparq-upload-border: var(--sparq-picker-border, var(--sparq-border, var(--sq-schema-border)));
6
+ /* 上传面板表面色。用于任务行背景。 */
7
+ --sparq-upload-surface: var(--sparq-picker-surface, var(--sparq-panel, var(--sq-schema-surface)));
8
+ /* 上传面板弱背景色。用于拖拽区和空状态。 */
9
+ --sparq-upload-soft: var(--sparq-picker-muted-surface, var(--sparq-panel-soft, var(--sq-schema-surface-muted)));
10
+ /* 上传面板主要文字色。用于文件名和拖拽标题。 */
11
+ --sparq-upload-text: var(--sparq-picker-text, var(--sparq-title, var(--sq-schema-title)));
12
+ /* 上传面板次要文字色。用于大小、状态和空状态。 */
13
+ --sparq-upload-muted: var(--sparq-picker-muted, var(--sparq-subtle, var(--sq-schema-muted)));
14
+ /* 上传失败色。用于失败和取消状态。 */
15
+ --sparq-upload-danger: var(--sparq-picker-danger, var(--sparq-danger, var(--sq-schema-danger)));
16
+ display: grid;
17
+ gap: 12px;
18
+ min-width: 0;
19
+ }
20
+
21
+ .sparq-asset-upload__dropzone {
22
+ display: grid;
23
+ min-height: 260px;
24
+ place-items: center;
25
+ gap: 10px;
26
+ border: 1px dashed var(--sparq-upload-border);
27
+ border-radius: var(--sq-schema-radius, 6px);
28
+ background: var(--sparq-upload-soft);
29
+ cursor: pointer;
30
+ transition:
31
+ border-color 160ms ease,
32
+ background-color 160ms ease;
33
+ }
34
+
35
+ .sparq-asset-upload.is-compact .sparq-asset-upload__dropzone {
36
+ min-height: 176px;
37
+ }
38
+
39
+ .sparq-asset-upload__dropzone:hover,
40
+ .sparq-asset-upload__dropzone.is-dragging {
41
+ border-color: var(--sparq-upload-primary);
42
+ background: color-mix(in srgb, var(--sparq-upload-primary) 8%, var(--sparq-upload-soft));
43
+ }
44
+
45
+ .sparq-asset-upload__dropzone.is-disabled {
46
+ cursor: not-allowed;
47
+ opacity: 0.62;
48
+ }
49
+
50
+ .sparq-asset-upload__file-input {
51
+ display: none;
52
+ }
53
+
54
+ .sparq-asset-upload__drop-icon {
55
+ display: grid;
56
+ width: 52px;
57
+ height: 52px;
58
+ place-items: center;
59
+ border: 1px solid color-mix(in srgb, var(--sparq-upload-primary) 24%, var(--sparq-upload-border));
60
+ border-radius: var(--sq-schema-radius-lg, 8px);
61
+ color: var(--sparq-upload-primary);
62
+ background: color-mix(in srgb, var(--sparq-upload-primary) 8%, var(--sparq-upload-surface));
63
+ font-size: 28px;
64
+ line-height: 1;
65
+ }
66
+
67
+ .sparq-asset-upload__drop-title {
68
+ color: var(--sparq-upload-text);
69
+ font-size: 14px;
70
+ font-weight: 600;
71
+ }
72
+
73
+ .sparq-asset-upload__task-list {
74
+ display: grid;
75
+ gap: 8px;
76
+ max-height: 280px;
77
+ overflow: auto;
78
+ }
79
+
80
+ .sparq-asset-upload__task {
81
+ display: grid;
82
+ grid-template-columns: minmax(120px, 1fr) 82px minmax(100px, 160px) 58px auto;
83
+ gap: 10px;
84
+ align-items: center;
85
+ min-width: 0;
86
+ padding: 10px;
87
+ border: 1px solid var(--sparq-upload-border);
88
+ border-radius: var(--sq-schema-radius-sm, 5px);
89
+ background: var(--sparq-upload-surface);
90
+ }
91
+
92
+ .sparq-asset-upload__task-name {
93
+ overflow: hidden;
94
+ color: var(--sparq-upload-text);
95
+ text-overflow: ellipsis;
96
+ white-space: nowrap;
97
+ }
98
+
99
+ .sparq-asset-upload__task-size,
100
+ .sparq-asset-upload__task-status,
101
+ .sparq-asset-upload__empty {
102
+ color: var(--sparq-upload-muted);
103
+ font-size: 12px;
104
+ }
105
+
106
+ .sparq-asset-upload__task-progress {
107
+ height: 6px;
108
+ overflow: hidden;
109
+ border-radius: var(--sq-schema-radius-pill, 999px);
110
+ background: var(--sparq-upload-border);
111
+ }
112
+
113
+ .sparq-asset-upload__task-progress > span {
114
+ display: block;
115
+ height: 100%;
116
+ border-radius: inherit;
117
+ background: var(--sparq-upload-primary);
118
+ }
119
+
120
+ .sparq-asset-upload__task-status {
121
+ text-align: right;
122
+ }
123
+
124
+ .sparq-asset-upload__task-status.is-success {
125
+ color: var(--sq-schema-success, #16a34a);
126
+ }
127
+
128
+ .sparq-asset-upload__task-status.is-error,
129
+ .sparq-asset-upload__task-status.is-canceled {
130
+ color: var(--sparq-upload-danger);
131
+ }
132
+
133
+ .sparq-asset-upload__task-actions {
134
+ display: inline-flex;
135
+ justify-content: flex-end;
136
+ gap: 7px;
137
+ }
138
+
139
+ .sparq-asset-upload__task-action {
140
+ padding: 0;
141
+ border: 0;
142
+ color: var(--sparq-upload-primary);
143
+ background: transparent;
144
+ cursor: pointer;
145
+ font-size: 12px;
146
+ font-weight: 600;
147
+ }
148
+
149
+ .sparq-asset-upload__empty {
150
+ padding: 4px 0;
151
+ text-align: center;
152
+ }
153
+
154
+ @media (max-width: 680px) {
155
+ .sparq-asset-upload__task {
156
+ grid-template-columns: minmax(0, 1fr) auto;
157
+ }
158
+
159
+ .sparq-asset-upload__task-progress {
160
+ grid-column: 1 / -1;
161
+ grid-row: 2;
162
+ }
163
+
164
+ .sparq-asset-upload__task-size {
165
+ display: none;
166
+ }
167
+ }
@@ -0,0 +1,101 @@
1
+ .sparq-icon-input {
2
+ --sparq-icon-input-border: var(--sq-schema-border);
3
+ --sparq-icon-input-border-strong: var(--sq-schema-border-strong);
4
+ --sparq-icon-input-surface: var(--sq-schema-surface);
5
+ --sparq-icon-input-surface-soft: var(--sq-schema-surface-muted);
6
+ --sparq-icon-input-text: var(--sq-schema-text);
7
+ --sparq-icon-input-title: var(--sq-schema-title);
8
+ --sparq-icon-input-muted: var(--sq-schema-muted);
9
+ --sparq-icon-input-primary: var(--sq-schema-primary);
10
+ --sparq-icon-input-primary-soft: color-mix(in srgb, var(--sq-schema-primary-soft) 84%, var(--sq-schema-surface));
11
+ display: block;
12
+ width: 100%;
13
+ }
14
+
15
+ .sparq-icon-input-dialog {
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 12px;
19
+ }
20
+
21
+ .sparq-icon-input__status {
22
+ margin: 6px 0 0;
23
+ color: var(--sparq-icon-input-muted);
24
+ font-size: 12px;
25
+ line-height: 18px;
26
+ }
27
+
28
+ .sparq-icon-input__status.is-warning {
29
+ color: var(--sq-schema-warning-strong);
30
+ }
31
+
32
+ .sparq-icon-input-dialog__title {
33
+ color: var(--sparq-icon-input-title);
34
+ font-size: 15px;
35
+ font-weight: 600;
36
+ line-height: 22px;
37
+ }
38
+
39
+ .sparq-icon-input-grid {
40
+ display: grid;
41
+ grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
42
+ gap: 8px;
43
+ max-height: 420px;
44
+ overflow: auto;
45
+ }
46
+
47
+ .sparq-icon-input-option {
48
+ display: flex;
49
+ min-width: 0;
50
+ min-height: 72px;
51
+ flex-direction: column;
52
+ align-items: center;
53
+ justify-content: center;
54
+ gap: 7px;
55
+ border: 1px solid var(--sparq-icon-input-border);
56
+ border-radius: calc(var(--sq-schema-radius) - 4px);
57
+ background: var(--sparq-icon-input-surface);
58
+ color: var(--sparq-icon-input-text);
59
+ cursor: pointer;
60
+ padding: 8px 6px;
61
+ transition:
62
+ border-color 160ms ease,
63
+ background-color 160ms ease,
64
+ color 160ms ease,
65
+ box-shadow 160ms ease;
66
+ }
67
+
68
+ .sparq-icon-input-option:hover {
69
+ border-color: var(--sparq-icon-input-border-strong);
70
+ background: var(--sparq-icon-input-surface-soft);
71
+ }
72
+
73
+ .sparq-icon-input-option.is-selected {
74
+ border-color: var(--sparq-icon-input-primary);
75
+ background: var(--sparq-icon-input-primary-soft);
76
+ color: var(--sparq-icon-input-primary);
77
+ box-shadow: var(--sq-schema-focus);
78
+ }
79
+
80
+ .sparq-icon-input-option__label {
81
+ display: block;
82
+ width: 100%;
83
+ overflow: hidden;
84
+ color: inherit;
85
+ font-size: 11px;
86
+ font-weight: 500;
87
+ line-height: 15px;
88
+ text-align: center;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ }
92
+
93
+ .sparq-icon-input-empty {
94
+ display: flex;
95
+ min-height: 160px;
96
+ align-items: center;
97
+ justify-content: center;
98
+ color: var(--sparq-icon-input-muted);
99
+ font-size: 13px;
100
+ line-height: 20px;
101
+ }
@@ -0,0 +1,44 @@
1
+ .sparq-key-value-editor {
2
+ display: grid;
3
+ gap: 8px;
4
+ }
5
+
6
+ .sparq-key-value-editor__toolbar {
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+ gap: 8px;
10
+ }
11
+
12
+ .sparq-key-value-editor__rows {
13
+ display: grid;
14
+ gap: 8px;
15
+ }
16
+
17
+ .sparq-key-value-editor__row {
18
+ display: flex;
19
+ width: 100%;
20
+ align-items: center;
21
+ gap: 8px;
22
+ }
23
+
24
+ .sparq-key-value-editor__cell {
25
+ flex: 1 1 0;
26
+ min-width: 0;
27
+ }
28
+
29
+ .sparq-key-value-editor__error {
30
+ border: 1px solid color-mix(in srgb, var(--sq-schema-danger) 26%, var(--sq-schema-border));
31
+ border-radius: calc(var(--sq-schema-radius) - 4px);
32
+ background: color-mix(in srgb, var(--sq-schema-danger) 8%, var(--sq-schema-surface));
33
+ padding: 6px 8px;
34
+ color: var(--sq-schema-danger);
35
+ font-size: 12px;
36
+ line-height: 18px;
37
+ }
38
+
39
+ @media (max-width: 640px) {
40
+ .sparq-key-value-editor__row {
41
+ flex-direction: column;
42
+ align-items: stretch;
43
+ }
44
+ }