@cmssy/cli 0.22.4 → 9.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 (248) hide show
  1. package/dist/index.js +435 -0
  2. package/package.json +25 -86
  3. package/LICENSE +0 -21
  4. package/README.md +0 -692
  5. package/config.d.ts +0 -3
  6. package/config.js +0 -4
  7. package/dist/cli.d.ts +0 -3
  8. package/dist/cli.d.ts.map +0 -1
  9. package/dist/cli.js +0 -340
  10. package/dist/cli.js.map +0 -1
  11. package/dist/commands/add-source.d.ts +0 -13
  12. package/dist/commands/add-source.d.ts.map +0 -1
  13. package/dist/commands/add-source.js +0 -273
  14. package/dist/commands/add-source.js.map +0 -1
  15. package/dist/commands/build.d.ts +0 -7
  16. package/dist/commands/build.d.ts.map +0 -1
  17. package/dist/commands/build.js +0 -127
  18. package/dist/commands/build.js.map +0 -1
  19. package/dist/commands/codegen.d.ts +0 -7
  20. package/dist/commands/codegen.d.ts.map +0 -1
  21. package/dist/commands/codegen.js +0 -150
  22. package/dist/commands/codegen.js.map +0 -1
  23. package/dist/commands/configure.d.ts +0 -6
  24. package/dist/commands/configure.d.ts.map +0 -1
  25. package/dist/commands/configure.js +0 -39
  26. package/dist/commands/configure.js.map +0 -1
  27. package/dist/commands/create.d.ts +0 -18
  28. package/dist/commands/create.d.ts.map +0 -1
  29. package/dist/commands/create.js +0 -403
  30. package/dist/commands/create.js.map +0 -1
  31. package/dist/commands/dev.d.ts +0 -6
  32. package/dist/commands/dev.d.ts.map +0 -1
  33. package/dist/commands/dev.js +0 -144
  34. package/dist/commands/dev.js.map +0 -1
  35. package/dist/commands/doctor.d.ts +0 -2
  36. package/dist/commands/doctor.d.ts.map +0 -1
  37. package/dist/commands/doctor.js +0 -230
  38. package/dist/commands/doctor.js.map +0 -1
  39. package/dist/commands/init.d.ts +0 -6
  40. package/dist/commands/init.d.ts.map +0 -1
  41. package/dist/commands/init.js +0 -414
  42. package/dist/commands/init.js.map +0 -1
  43. package/dist/commands/lib.d.ts +0 -17
  44. package/dist/commands/lib.d.ts.map +0 -1
  45. package/dist/commands/lib.js +0 -132
  46. package/dist/commands/lib.js.map +0 -1
  47. package/dist/commands/link.d.ts +0 -8
  48. package/dist/commands/link.d.ts.map +0 -1
  49. package/dist/commands/link.js +0 -116
  50. package/dist/commands/link.js.map +0 -1
  51. package/dist/commands/migrate.d.ts +0 -2
  52. package/dist/commands/migrate.d.ts.map +0 -1
  53. package/dist/commands/migrate.js +0 -231
  54. package/dist/commands/migrate.js.map +0 -1
  55. package/dist/commands/package.d.ts +0 -14
  56. package/dist/commands/package.d.ts.map +0 -1
  57. package/dist/commands/package.js +0 -137
  58. package/dist/commands/package.js.map +0 -1
  59. package/dist/commands/publish-block-buildtime.d.ts +0 -8
  60. package/dist/commands/publish-block-buildtime.d.ts.map +0 -1
  61. package/dist/commands/publish-block-buildtime.js +0 -290
  62. package/dist/commands/publish-block-buildtime.js.map +0 -1
  63. package/dist/commands/publish-template.d.ts +0 -22
  64. package/dist/commands/publish-template.d.ts.map +0 -1
  65. package/dist/commands/publish-template.js +0 -345
  66. package/dist/commands/publish-template.js.map +0 -1
  67. package/dist/commands/publish.d.ts +0 -15
  68. package/dist/commands/publish.d.ts.map +0 -1
  69. package/dist/commands/publish.js +0 -1003
  70. package/dist/commands/publish.js.map +0 -1
  71. package/dist/commands/skills.d.ts +0 -11
  72. package/dist/commands/skills.d.ts.map +0 -1
  73. package/dist/commands/skills.js +0 -178
  74. package/dist/commands/skills.js.map +0 -1
  75. package/dist/commands/sync.d.ts +0 -6
  76. package/dist/commands/sync.d.ts.map +0 -1
  77. package/dist/commands/sync.js +0 -208
  78. package/dist/commands/sync.js.map +0 -1
  79. package/dist/commands/test.d.ts +0 -8
  80. package/dist/commands/test.d.ts.map +0 -1
  81. package/dist/commands/test.js +0 -60
  82. package/dist/commands/test.js.map +0 -1
  83. package/dist/commands/upload.d.ts +0 -11
  84. package/dist/commands/upload.d.ts.map +0 -1
  85. package/dist/commands/upload.js +0 -128
  86. package/dist/commands/upload.js.map +0 -1
  87. package/dist/commands/workspaces.d.ts +0 -2
  88. package/dist/commands/workspaces.d.ts.map +0 -1
  89. package/dist/commands/workspaces.js +0 -62
  90. package/dist/commands/workspaces.js.map +0 -1
  91. package/dist/dev-ui/app.js +0 -1284
  92. package/dist/dev-ui/index.html +0 -1511
  93. package/dist/dev-ui-react/App.tsx +0 -164
  94. package/dist/dev-ui-react/__tests__/previewData.test.ts +0 -193
  95. package/dist/dev-ui-react/components/BlocksList.tsx +0 -232
  96. package/dist/dev-ui-react/components/Editor.tsx +0 -469
  97. package/dist/dev-ui-react/components/Preview.tsx +0 -146
  98. package/dist/dev-ui-react/hooks/useBlocks.ts +0 -80
  99. package/dist/dev-ui-react/index.html +0 -13
  100. package/dist/dev-ui-react/main.tsx +0 -8
  101. package/dist/dev-ui-react/styles.css +0 -856
  102. package/dist/dev-ui-react/types.ts +0 -45
  103. package/dist/skills/claude/cmssy-block.md +0 -454
  104. package/dist/skills/claude/cmssy-mcp-content.md +0 -235
  105. package/dist/test-helpers/index.d.ts +0 -23
  106. package/dist/test-helpers/index.d.ts.map +0 -1
  107. package/dist/test-helpers/index.js +0 -50
  108. package/dist/test-helpers/index.js.map +0 -1
  109. package/dist/types/block-config.d.ts +0 -6
  110. package/dist/types/block-config.d.ts.map +0 -1
  111. package/dist/types/block-config.js +0 -12
  112. package/dist/types/block-config.js.map +0 -1
  113. package/dist/types/publish-job.d.ts +0 -61
  114. package/dist/types/publish-job.d.ts.map +0 -1
  115. package/dist/types/publish-job.js +0 -13
  116. package/dist/types/publish-job.js.map +0 -1
  117. package/dist/utils/api-error.d.ts +0 -10
  118. package/dist/utils/api-error.d.ts.map +0 -1
  119. package/dist/utils/api-error.js +0 -55
  120. package/dist/utils/api-error.js.map +0 -1
  121. package/dist/utils/block-config.d.ts +0 -87
  122. package/dist/utils/block-config.d.ts.map +0 -1
  123. package/dist/utils/block-config.js +0 -214
  124. package/dist/utils/block-config.js.map +0 -1
  125. package/dist/utils/blocks-meta-cache.d.ts +0 -28
  126. package/dist/utils/blocks-meta-cache.d.ts.map +0 -1
  127. package/dist/utils/blocks-meta-cache.js +0 -72
  128. package/dist/utils/blocks-meta-cache.js.map +0 -1
  129. package/dist/utils/builder.d.ts +0 -34
  130. package/dist/utils/builder.d.ts.map +0 -1
  131. package/dist/utils/builder.js +0 -140
  132. package/dist/utils/builder.js.map +0 -1
  133. package/dist/utils/cmssy-config.d.ts +0 -16
  134. package/dist/utils/cmssy-config.d.ts.map +0 -1
  135. package/dist/utils/cmssy-config.js +0 -19
  136. package/dist/utils/cmssy-config.js.map +0 -1
  137. package/dist/utils/config.d.ts +0 -9
  138. package/dist/utils/config.d.ts.map +0 -1
  139. package/dist/utils/config.js +0 -51
  140. package/dist/utils/config.js.map +0 -1
  141. package/dist/utils/dependency-check.d.ts +0 -21
  142. package/dist/utils/dependency-check.d.ts.map +0 -1
  143. package/dist/utils/dependency-check.js +0 -56
  144. package/dist/utils/dependency-check.js.map +0 -1
  145. package/dist/utils/dev-generator/api-routes/blocks.d.ts +0 -3
  146. package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +0 -1
  147. package/dist/utils/dev-generator/api-routes/blocks.js +0 -194
  148. package/dist/utils/dev-generator/api-routes/blocks.js.map +0 -1
  149. package/dist/utils/dev-generator/api-routes/config.d.ts +0 -2
  150. package/dist/utils/dev-generator/api-routes/config.d.ts.map +0 -1
  151. package/dist/utils/dev-generator/api-routes/config.js +0 -107
  152. package/dist/utils/dev-generator/api-routes/config.js.map +0 -1
  153. package/dist/utils/dev-generator/api-routes/preview.d.ts +0 -2
  154. package/dist/utils/dev-generator/api-routes/preview.d.ts.map +0 -1
  155. package/dist/utils/dev-generator/api-routes/preview.js +0 -50
  156. package/dist/utils/dev-generator/api-routes/preview.js.map +0 -1
  157. package/dist/utils/dev-generator/api-routes/workspaces.d.ts +0 -2
  158. package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +0 -1
  159. package/dist/utils/dev-generator/api-routes/workspaces.js +0 -128
  160. package/dist/utils/dev-generator/api-routes/workspaces.js.map +0 -1
  161. package/dist/utils/dev-generator/helpers.d.ts +0 -23
  162. package/dist/utils/dev-generator/helpers.d.ts.map +0 -1
  163. package/dist/utils/dev-generator/helpers.js +0 -128
  164. package/dist/utils/dev-generator/helpers.js.map +0 -1
  165. package/dist/utils/dev-generator/home-page.d.ts +0 -2
  166. package/dist/utils/dev-generator/home-page.d.ts.map +0 -1
  167. package/dist/utils/dev-generator/home-page.js +0 -643
  168. package/dist/utils/dev-generator/home-page.js.map +0 -1
  169. package/dist/utils/dev-generator/index.d.ts +0 -11
  170. package/dist/utils/dev-generator/index.d.ts.map +0 -1
  171. package/dist/utils/dev-generator/index.js +0 -85
  172. package/dist/utils/dev-generator/index.js.map +0 -1
  173. package/dist/utils/dev-generator/layout.d.ts +0 -3
  174. package/dist/utils/dev-generator/layout.d.ts.map +0 -1
  175. package/dist/utils/dev-generator/layout.js +0 -63
  176. package/dist/utils/dev-generator/layout.js.map +0 -1
  177. package/dist/utils/dev-generator/next-config.d.ts +0 -3
  178. package/dist/utils/dev-generator/next-config.d.ts.map +0 -1
  179. package/dist/utils/dev-generator/next-config.js +0 -111
  180. package/dist/utils/dev-generator/next-config.js.map +0 -1
  181. package/dist/utils/dev-generator/preview-pages.d.ts +0 -3
  182. package/dist/utils/dev-generator/preview-pages.d.ts.map +0 -1
  183. package/dist/utils/dev-generator/preview-pages.js +0 -833
  184. package/dist/utils/dev-generator/preview-pages.js.map +0 -1
  185. package/dist/utils/dev-generator.d.ts +0 -12
  186. package/dist/utils/dev-generator.d.ts.map +0 -1
  187. package/dist/utils/dev-generator.js +0 -1752
  188. package/dist/utils/dev-generator.js.map +0 -1
  189. package/dist/utils/field-schema.d.ts +0 -13
  190. package/dist/utils/field-schema.d.ts.map +0 -1
  191. package/dist/utils/field-schema.js +0 -182
  192. package/dist/utils/field-schema.js.map +0 -1
  193. package/dist/utils/graphql.d.ts +0 -39
  194. package/dist/utils/graphql.d.ts.map +0 -1
  195. package/dist/utils/graphql.js +0 -138
  196. package/dist/utils/graphql.js.map +0 -1
  197. package/dist/utils/lib-manifest.d.ts +0 -7
  198. package/dist/utils/lib-manifest.d.ts.map +0 -1
  199. package/dist/utils/lib-manifest.js +0 -59
  200. package/dist/utils/lib-manifest.js.map +0 -1
  201. package/dist/utils/publish-helpers.d.ts +0 -43
  202. package/dist/utils/publish-helpers.d.ts.map +0 -1
  203. package/dist/utils/publish-helpers.js +0 -215
  204. package/dist/utils/publish-helpers.js.map +0 -1
  205. package/dist/utils/publish-helpers.test.d.ts +0 -2
  206. package/dist/utils/publish-helpers.test.d.ts.map +0 -1
  207. package/dist/utils/publish-helpers.test.js +0 -24
  208. package/dist/utils/publish-helpers.test.js.map +0 -1
  209. package/dist/utils/resolve-workspace.d.ts +0 -6
  210. package/dist/utils/resolve-workspace.d.ts.map +0 -1
  211. package/dist/utils/resolve-workspace.js +0 -32
  212. package/dist/utils/resolve-workspace.js.map +0 -1
  213. package/dist/utils/scanner.d.ts +0 -42
  214. package/dist/utils/scanner.d.ts.map +0 -1
  215. package/dist/utils/scanner.js +0 -156
  216. package/dist/utils/scanner.js.map +0 -1
  217. package/dist/utils/schema-diff.d.ts +0 -22
  218. package/dist/utils/schema-diff.d.ts.map +0 -1
  219. package/dist/utils/schema-diff.js +0 -107
  220. package/dist/utils/schema-diff.js.map +0 -1
  221. package/dist/utils/source-collector.d.ts +0 -19
  222. package/dist/utils/source-collector.d.ts.map +0 -1
  223. package/dist/utils/source-collector.js +0 -565
  224. package/dist/utils/source-collector.js.map +0 -1
  225. package/dist/utils/theme-builder.d.ts +0 -12
  226. package/dist/utils/theme-builder.d.ts.map +0 -1
  227. package/dist/utils/theme-builder.js +0 -117
  228. package/dist/utils/theme-builder.js.map +0 -1
  229. package/dist/utils/type-generator.d.ts +0 -9
  230. package/dist/utils/type-generator.d.ts.map +0 -1
  231. package/dist/utils/type-generator.js +0 -86
  232. package/dist/utils/type-generator.js.map +0 -1
  233. package/dist/utils/version.d.ts +0 -10
  234. package/dist/utils/version.d.ts.map +0 -1
  235. package/dist/utils/version.js +0 -30
  236. package/dist/utils/version.js.map +0 -1
  237. package/dist/utils/versions.d.ts.map +0 -1
  238. package/dist/utils/versions.js.map +0 -1
  239. package/src/dev-app/app/api/blocks/[name]/config/route.ts +0 -140
  240. package/src/dev-app/app/api/blocks/route.ts +0 -61
  241. package/src/dev-app/app/api/config/route.ts +0 -98
  242. package/src/dev-app/app/api/context/route.ts +0 -126
  243. package/src/dev-app/app/api/preview/[name]/route.ts +0 -137
  244. package/src/dev-app/app/api/workspaces/route.ts +0 -124
  245. package/src/dev-app/app/layout.tsx +0 -18
  246. package/src/dev-app/app/page.tsx +0 -1785
  247. package/test.d.ts +0 -1
  248. package/test.js +0 -2
@@ -1,856 +0,0 @@
1
- /* CSS Reset */
2
- *,
3
- *::before,
4
- *::after {
5
- box-sizing: border-box;
6
- }
7
-
8
- html,
9
- body,
10
- #root {
11
- height: 100%;
12
- margin: 0;
13
- padding: 0;
14
- }
15
-
16
- body {
17
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
18
- background: #f5f5f5;
19
- overflow: hidden;
20
- line-height: 1.5;
21
- -webkit-font-smoothing: antialiased;
22
- }
23
-
24
- /* Main Container */
25
- .container {
26
- display: grid;
27
- grid-template-columns: 280px 1fr 400px;
28
- height: 100vh;
29
- gap: 0;
30
- }
31
-
32
- /* Collapsed panels */
33
- .blocks-panel.collapsed,
34
- .editor-panel.collapsed {
35
- width: 48px;
36
- min-width: 48px;
37
- }
38
-
39
- .container:has(.blocks-panel.collapsed) {
40
- grid-template-columns: 48px 1fr 400px;
41
- }
42
-
43
- .container:has(.editor-panel.collapsed) {
44
- grid-template-columns: 280px 1fr 48px;
45
- }
46
-
47
- .container:has(.blocks-panel.collapsed):has(.editor-panel.collapsed) {
48
- grid-template-columns: 48px 1fr 48px;
49
- }
50
-
51
- /* Blocks Panel */
52
- .blocks-panel {
53
- background: #fff;
54
- border-right: 1px solid #e0e0e0;
55
- display: flex;
56
- flex-direction: column;
57
- overflow: hidden;
58
- transition: width 0.2s ease;
59
- }
60
-
61
- .blocks-panel.collapsed .blocks-header-content,
62
- .blocks-panel.collapsed .blocks-filters,
63
- .blocks-panel.collapsed .blocks-list {
64
- display: none;
65
- }
66
-
67
- .blocks-header {
68
- padding: 16px;
69
- border-bottom: 1px solid #e0e0e0;
70
- background: #fafafa;
71
- display: flex;
72
- align-items: center;
73
- justify-content: space-between;
74
- min-height: 60px;
75
- flex-shrink: 0;
76
- }
77
-
78
- .blocks-header h1 {
79
- font-size: 18px;
80
- font-weight: 600;
81
- color: #1a1a1a;
82
- margin: 0 0 4px 0;
83
- }
84
-
85
- .blocks-header p {
86
- font-size: 13px;
87
- color: #666;
88
- margin: 0;
89
- }
90
-
91
- .panel-toggle {
92
- width: 32px;
93
- height: 32px;
94
- border: none;
95
- background: transparent;
96
- cursor: pointer;
97
- display: flex;
98
- align-items: center;
99
- justify-content: center;
100
- border-radius: 6px;
101
- transition: background 0.2s;
102
- flex-shrink: 0;
103
- }
104
-
105
- .panel-toggle:hover {
106
- background: #e0e0e0;
107
- }
108
-
109
- .toggle-icon {
110
- font-size: 16px;
111
- color: #333;
112
- }
113
-
114
- /* Filters */
115
- .blocks-filters {
116
- padding: 12px;
117
- border-bottom: 1px solid #e0e0e0;
118
- background: #fafafa;
119
- display: flex;
120
- flex-direction: column;
121
- gap: 12px;
122
- flex-shrink: 0;
123
- }
124
-
125
- .search-input {
126
- width: 100%;
127
- padding: 8px 12px;
128
- border: 1px solid #ddd;
129
- border-radius: 6px;
130
- font-size: 13px;
131
- background: white;
132
- transition: border-color 0.2s, box-shadow 0.2s;
133
- }
134
-
135
- .search-input:focus {
136
- outline: none;
137
- border-color: #667eea;
138
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
139
- }
140
-
141
- .filter-tabs {
142
- display: flex;
143
- gap: 4px;
144
- background: #e0e0e0;
145
- padding: 3px;
146
- border-radius: 8px;
147
- }
148
-
149
- .filter-tab {
150
- flex: 1;
151
- padding: 6px 12px;
152
- border: none;
153
- background: transparent;
154
- cursor: pointer;
155
- font-size: 12px;
156
- font-weight: 500;
157
- color: #666;
158
- border-radius: 6px;
159
- transition: all 0.2s;
160
- }
161
-
162
- .filter-tab:hover {
163
- color: #333;
164
- }
165
-
166
- .filter-tab.active {
167
- background: white;
168
- color: #333;
169
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
170
- }
171
-
172
- .filter-select {
173
- width: 100%;
174
- padding: 8px 12px;
175
- border: 1px solid #ddd;
176
- border-radius: 6px;
177
- font-size: 12px;
178
- background: white;
179
- cursor: pointer;
180
- }
181
-
182
- .tags-filter {
183
- display: flex;
184
- flex-wrap: wrap;
185
- gap: 6px;
186
- max-height: 80px;
187
- overflow-y: auto;
188
- }
189
-
190
- .tag-chip {
191
- padding: 4px 10px;
192
- border: 1px solid #ddd;
193
- border-radius: 12px;
194
- font-size: 11px;
195
- cursor: pointer;
196
- background: white;
197
- color: #666;
198
- transition: all 0.2s;
199
- }
200
-
201
- .tag-chip:hover {
202
- border-color: #667eea;
203
- color: #667eea;
204
- }
205
-
206
- .tag-chip.active {
207
- background: #667eea;
208
- border-color: #667eea;
209
- color: white;
210
- }
211
-
212
- .clear-filters {
213
- padding: 4px 10px;
214
- border: 1px dashed #ddd;
215
- border-radius: 12px;
216
- font-size: 11px;
217
- cursor: pointer;
218
- background: transparent;
219
- color: #999;
220
- }
221
-
222
- .clear-filters:hover {
223
- border-color: #e53935;
224
- color: #e53935;
225
- }
226
-
227
- /* Blocks List */
228
- .blocks-list {
229
- padding: 12px;
230
- overflow-y: auto;
231
- flex: 1;
232
- }
233
-
234
- .block-category {
235
- margin-bottom: 16px;
236
- }
237
-
238
- .category-header {
239
- font-size: 11px;
240
- font-weight: 600;
241
- text-transform: uppercase;
242
- letter-spacing: 0.5px;
243
- color: #999;
244
- padding: 8px 12px 6px;
245
- display: flex;
246
- align-items: center;
247
- gap: 8px;
248
- }
249
-
250
- .category-count {
251
- font-size: 10px;
252
- font-weight: 500;
253
- background: #e0e0e0;
254
- padding: 2px 6px;
255
- border-radius: 10px;
256
- color: #666;
257
- }
258
-
259
- .block-item {
260
- padding: 12px 16px;
261
- margin-bottom: 4px;
262
- border-radius: 8px;
263
- cursor: pointer;
264
- transition: all 0.2s;
265
- border: 1px solid transparent;
266
- }
267
-
268
- .block-item:hover {
269
- background: #f5f5f5;
270
- }
271
-
272
- .block-item.active {
273
- background: #667eea;
274
- color: white;
275
- }
276
-
277
- .block-item.active .block-item-type,
278
- .block-item.active .status-badge {
279
- opacity: 0.8;
280
- }
281
-
282
- .block-item-header {
283
- display: flex;
284
- justify-content: space-between;
285
- align-items: center;
286
- margin-bottom: 4px;
287
- }
288
-
289
- .block-item-name {
290
- font-size: 14px;
291
- font-weight: 500;
292
- display: flex;
293
- align-items: center;
294
- gap: 8px;
295
- }
296
-
297
- .type-badge {
298
- font-size: 10px;
299
- padding: 2px 6px;
300
- border-radius: 4px;
301
- font-weight: 500;
302
- }
303
-
304
- .type-badge.template {
305
- background: #f3e8ff;
306
- color: #7c3aed;
307
- }
308
-
309
- .block-item.active .type-badge.template {
310
- background: rgba(255, 255, 255, 0.2);
311
- color: white;
312
- }
313
-
314
- .version-badge {
315
- font-size: 11px;
316
- padding: 2px 6px;
317
- background: #e3f2fd;
318
- color: #1976d2;
319
- border-radius: 4px;
320
- font-weight: 500;
321
- }
322
-
323
- .block-item.active .version-badge {
324
- background: rgba(255, 255, 255, 0.2);
325
- color: white;
326
- }
327
-
328
- .block-item-footer {
329
- display: flex;
330
- justify-content: space-between;
331
- align-items: center;
332
- }
333
-
334
- .block-item-type {
335
- font-size: 12px;
336
- opacity: 0.7;
337
- }
338
-
339
- .status-badge {
340
- font-size: 11px;
341
- padding: 2px 8px;
342
- border-radius: 10px;
343
- font-weight: 500;
344
- }
345
-
346
- .status-badge.status-local {
347
- background: #fff3e0;
348
- color: #e65100;
349
- }
350
-
351
- .block-item.active .status-badge.status-local {
352
- background: rgba(255, 255, 255, 0.2);
353
- color: white;
354
- }
355
-
356
- /* Loading & Empty States */
357
- .loading {
358
- display: flex;
359
- align-items: center;
360
- justify-content: center;
361
- padding: 40px;
362
- color: #999;
363
- gap: 12px;
364
- }
365
-
366
- .spinner {
367
- width: 20px;
368
- height: 20px;
369
- border: 2px solid #f3f3f3;
370
- border-top: 2px solid #667eea;
371
- border-radius: 50%;
372
- animation: spin 1s linear infinite;
373
- }
374
-
375
- @keyframes spin {
376
- to {
377
- transform: rotate(360deg);
378
- }
379
- }
380
-
381
- .no-results {
382
- text-align: center;
383
- padding: 40px 20px;
384
- color: #999;
385
- }
386
-
387
- .no-results-icon {
388
- font-size: 32px;
389
- margin-bottom: 12px;
390
- opacity: 0.5;
391
- }
392
-
393
- .btn-clear {
394
- margin-top: 12px;
395
- padding: 6px 16px;
396
- background: #667eea;
397
- color: white;
398
- border: none;
399
- border-radius: 6px;
400
- cursor: pointer;
401
- font-size: 13px;
402
- }
403
-
404
- /* Preview Panel */
405
- .preview-panel {
406
- background: #fafafa;
407
- display: flex;
408
- flex-direction: column;
409
- overflow: hidden;
410
- }
411
-
412
- .preview-header {
413
- padding: 16px 24px;
414
- background: white;
415
- border-bottom: 1px solid #e0e0e0;
416
- display: flex;
417
- justify-content: space-between;
418
- align-items: center;
419
- }
420
-
421
- .preview-title {
422
- font-size: 16px;
423
- font-weight: 600;
424
- color: #1a1a1a;
425
- }
426
-
427
- .preview-actions {
428
- display: flex;
429
- gap: 8px;
430
- align-items: center;
431
- }
432
-
433
- .preview-badge {
434
- font-size: 12px;
435
- padding: 4px 12px;
436
- background: #e8f5e9;
437
- color: #2e7d32;
438
- border-radius: 12px;
439
- font-weight: 500;
440
- }
441
-
442
- .btn-publish {
443
- padding: 8px 16px;
444
- background: #667eea;
445
- color: white;
446
- border: none;
447
- border-radius: 6px;
448
- font-size: 14px;
449
- font-weight: 500;
450
- cursor: pointer;
451
- transition: background 0.2s;
452
- }
453
-
454
- .btn-publish:hover {
455
- background: #5568d3;
456
- }
457
-
458
- .preview-content {
459
- flex: 1;
460
- padding: 24px;
461
- overflow: auto;
462
- display: flex;
463
- align-items: center;
464
- justify-content: center;
465
- }
466
-
467
- .preview-iframe-wrapper {
468
- width: 100%;
469
- height: 100%;
470
- background: white;
471
- border-radius: 12px;
472
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
473
- overflow: hidden;
474
- }
475
-
476
- .preview-iframe-wrapper.template-preview {
477
- background: #1a1a2e;
478
- }
479
-
480
- .preview-iframe {
481
- width: 100%;
482
- height: 100%;
483
- border: none;
484
- }
485
-
486
- .preview-empty {
487
- text-align: center;
488
- color: #999;
489
- padding: 60px 20px;
490
- }
491
-
492
- .preview-empty-icon {
493
- font-size: 48px;
494
- margin-bottom: 16px;
495
- opacity: 0.3;
496
- }
497
-
498
- /* Editor Panel */
499
- .editor-panel {
500
- background: #fff;
501
- border-left: 1px solid #e0e0e0;
502
- display: flex;
503
- flex-direction: column;
504
- overflow: hidden;
505
- transition: width 0.2s ease;
506
- }
507
-
508
- .editor-panel.collapsed .editor-header-content,
509
- .editor-panel.collapsed .editor-content {
510
- display: none;
511
- }
512
-
513
- .editor-header {
514
- padding: 16px;
515
- border-bottom: 1px solid #e0e0e0;
516
- background: #fafafa;
517
- display: flex;
518
- align-items: center;
519
- gap: 12px;
520
- min-height: 60px;
521
- flex-shrink: 0;
522
- }
523
-
524
- .editor-header h2 {
525
- font-size: 16px;
526
- font-weight: 600;
527
- color: #1a1a1a;
528
- margin: 0 0 4px 0;
529
- }
530
-
531
- .editor-header p {
532
- font-size: 13px;
533
- color: #666;
534
- margin: 0;
535
- }
536
-
537
- .editor-content {
538
- flex: 1;
539
- overflow-y: auto;
540
- padding: 20px;
541
- }
542
-
543
- .editor-empty {
544
- text-align: center;
545
- color: #999;
546
- padding: 40px 20px;
547
- }
548
-
549
- /* Form Fields */
550
- .field-group {
551
- margin-bottom: 24px;
552
- }
553
-
554
- .field-label {
555
- display: block;
556
- font-size: 13px;
557
- font-weight: 500;
558
- color: #333;
559
- margin-bottom: 8px;
560
- }
561
-
562
- .field-required {
563
- color: #e53935;
564
- margin-left: 2px;
565
- }
566
-
567
- .field-help {
568
- font-size: 12px;
569
- color: #666;
570
- margin-top: 4px;
571
- }
572
-
573
- .field-input {
574
- width: 100%;
575
- padding: 10px 12px;
576
- border: 1px solid #ddd;
577
- border-radius: 6px;
578
- font-size: 14px;
579
- font-family: inherit;
580
- transition: border-color 0.2s, box-shadow 0.2s;
581
- }
582
-
583
- .field-input:focus {
584
- outline: none;
585
- border-color: #667eea;
586
- box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
587
- }
588
-
589
- .field-textarea {
590
- min-height: 80px;
591
- resize: vertical;
592
- }
593
-
594
- .field-checkbox-label {
595
- display: flex;
596
- align-items: center;
597
- gap: 8px;
598
- cursor: pointer;
599
- }
600
-
601
- .field-checkbox-label input {
602
- width: auto;
603
- }
604
-
605
- /* Color Field */
606
- .color-field {
607
- display: flex;
608
- gap: 12px;
609
- align-items: center;
610
- }
611
-
612
- .color-preview {
613
- width: 40px;
614
- height: 40px;
615
- border: 1px solid #ddd;
616
- border-radius: 6px;
617
- cursor: pointer;
618
- padding: 0;
619
- }
620
-
621
- .color-input {
622
- flex: 1;
623
- }
624
-
625
- /* Media Field */
626
- .media-field {
627
- display: flex;
628
- gap: 12px;
629
- align-items: flex-start;
630
- }
631
-
632
- .media-preview {
633
- width: 80px;
634
- height: 80px;
635
- border: 1px solid #ddd;
636
- border-radius: 6px;
637
- overflow: hidden;
638
- background: #fafafa;
639
- display: flex;
640
- align-items: center;
641
- justify-content: center;
642
- flex-shrink: 0;
643
- }
644
-
645
- .media-preview img {
646
- width: 100%;
647
- height: 100%;
648
- object-fit: cover;
649
- }
650
-
651
- .media-placeholder {
652
- color: #999;
653
- font-size: 12px;
654
- }
655
-
656
- .media-input-group {
657
- flex: 1;
658
- }
659
-
660
- /* Repeater Fields */
661
- .repeater-items {
662
- border: 1px solid #e0e0e0;
663
- border-radius: 8px;
664
- padding: 12px;
665
- background: #fafafa;
666
- }
667
-
668
- .repeater-item {
669
- background: white;
670
- border: 1px solid #e0e0e0;
671
- border-radius: 6px;
672
- padding: 16px;
673
- margin-bottom: 12px;
674
- }
675
-
676
- .repeater-item:last-child {
677
- margin-bottom: 0;
678
- }
679
-
680
- .repeater-item-header {
681
- display: flex;
682
- justify-content: space-between;
683
- align-items: center;
684
- margin-bottom: 12px;
685
- padding-bottom: 12px;
686
- border-bottom: 1px solid #f0f0f0;
687
- }
688
-
689
- .repeater-item-title {
690
- font-size: 13px;
691
- font-weight: 500;
692
- color: #666;
693
- }
694
-
695
- .repeater-item-remove {
696
- background: #ffebee;
697
- color: #c62828;
698
- border: none;
699
- padding: 4px 12px;
700
- border-radius: 4px;
701
- font-size: 12px;
702
- cursor: pointer;
703
- font-weight: 500;
704
- }
705
-
706
- .repeater-item-remove:hover {
707
- background: #ffcdd2;
708
- }
709
-
710
- .repeater-add {
711
- width: 100%;
712
- padding: 10px;
713
- background: white;
714
- border: 1px dashed #667eea;
715
- color: #667eea;
716
- border-radius: 6px;
717
- font-size: 13px;
718
- font-weight: 500;
719
- cursor: pointer;
720
- margin-top: 8px;
721
- }
722
-
723
- .repeater-add:hover {
724
- background: #f5f7ff;
725
- border-style: solid;
726
- }
727
-
728
- /* Template Editor */
729
- .template-editor {
730
- padding: 0;
731
- }
732
-
733
- .template-info {
734
- padding: 16px;
735
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
736
- color: white;
737
- border-radius: 8px;
738
- margin-bottom: 20px;
739
- }
740
-
741
- .template-info-badge {
742
- display: inline-block;
743
- background: rgba(255, 255, 255, 0.2);
744
- padding: 4px 10px;
745
- border-radius: 12px;
746
- font-size: 11px;
747
- font-weight: 600;
748
- text-transform: uppercase;
749
- letter-spacing: 0.5px;
750
- margin-bottom: 8px;
751
- }
752
-
753
- .template-info-desc {
754
- margin: 0;
755
- font-size: 13px;
756
- opacity: 0.9;
757
- line-height: 1.5;
758
- }
759
-
760
- .template-section {
761
- margin-bottom: 24px;
762
- }
763
-
764
- .template-section-title {
765
- font-size: 12px;
766
- font-weight: 600;
767
- text-transform: uppercase;
768
- letter-spacing: 0.5px;
769
- color: #666;
770
- margin: 0 0 12px 0;
771
- padding-bottom: 8px;
772
- border-bottom: 1px solid #eee;
773
- }
774
-
775
- .template-pages-list {
776
- display: flex;
777
- flex-direction: column;
778
- gap: 8px;
779
- }
780
-
781
- .template-page-item {
782
- padding: 12px 16px;
783
- background: #f8f9fa;
784
- border: 1px solid #e9ecef;
785
- border-radius: 8px;
786
- cursor: pointer;
787
- transition: all 0.2s;
788
- }
789
-
790
- .template-page-item:hover {
791
- background: #e9ecef;
792
- border-color: #667eea;
793
- }
794
-
795
- .template-page-header {
796
- display: flex;
797
- justify-content: space-between;
798
- align-items: center;
799
- margin-bottom: 4px;
800
- }
801
-
802
- .template-page-name {
803
- font-weight: 500;
804
- font-size: 14px;
805
- color: #333;
806
- }
807
-
808
- .template-page-blocks {
809
- font-size: 11px;
810
- color: #666;
811
- background: #e9ecef;
812
- padding: 2px 8px;
813
- border-radius: 10px;
814
- }
815
-
816
- .template-page-slug {
817
- font-size: 12px;
818
- color: #999;
819
- font-family: monospace;
820
- }
821
-
822
- .template-layout-position {
823
- display: flex;
824
- justify-content: space-between;
825
- align-items: center;
826
- padding: 10px 14px;
827
- background: #f8f9fa;
828
- border-radius: 6px;
829
- margin-bottom: 8px;
830
- }
831
-
832
- .position-type {
833
- font-size: 12px;
834
- font-weight: 500;
835
- text-transform: capitalize;
836
- color: #667eea;
837
- }
838
-
839
- .position-block {
840
- font-size: 12px;
841
- color: #666;
842
- font-family: monospace;
843
- }
844
-
845
- .template-hint {
846
- padding: 12px;
847
- background: #fff3cd;
848
- border-radius: 6px;
849
- margin-top: 20px;
850
- }
851
-
852
- .template-hint p {
853
- margin: 0;
854
- font-size: 12px;
855
- color: #856404;
856
- }