zerocodejs 1.0.1-beta.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 (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/__tests__/fixtures/sample-data.d.ts +23 -0
  4. package/dist/__tests__/fixtures/sample-data.d.ts.map +1 -0
  5. package/dist/__tests__/fixtures/sample-templates.d.ts +25 -0
  6. package/dist/__tests__/fixtures/sample-templates.d.ts.map +1 -0
  7. package/dist/components/ZeroCodeCMS.vue.d.ts +142 -0
  8. package/dist/components/ZeroCodeCMS.vue.d.ts.map +1 -0
  9. package/dist/components/ZeroCodeEditor.vue.d.ts +341 -0
  10. package/dist/components/ZeroCodeEditor.vue.d.ts.map +1 -0
  11. package/dist/components/ZeroCodePreview.vue.d.ts +36 -0
  12. package/dist/components/ZeroCodePreview.vue.d.ts.map +1 -0
  13. package/dist/core/composables/useZeroCodeData.d.ts +91 -0
  14. package/dist/core/composables/useZeroCodeData.d.ts.map +1 -0
  15. package/dist/core/composables/useZeroCodeRenderer.d.ts +7 -0
  16. package/dist/core/composables/useZeroCodeRenderer.d.ts.map +1 -0
  17. package/dist/core/renderer/renderer.d.ts +20 -0
  18. package/dist/core/renderer/renderer.d.ts.map +1 -0
  19. package/dist/core/utils/component-initializer.d.ts +6 -0
  20. package/dist/core/utils/component-initializer.d.ts.map +1 -0
  21. package/dist/core/utils/component-initializer.test.d.ts +2 -0
  22. package/dist/core/utils/component-initializer.test.d.ts.map +1 -0
  23. package/dist/core/utils/css-manager.d.ts +41 -0
  24. package/dist/core/utils/css-manager.d.ts.map +1 -0
  25. package/dist/core/utils/dom-utils.d.ts +29 -0
  26. package/dist/core/utils/dom-utils.d.ts.map +1 -0
  27. package/dist/core/utils/field-extractor.d.ts +8 -0
  28. package/dist/core/utils/field-extractor.d.ts.map +1 -0
  29. package/dist/core/utils/field-extractor.test.d.ts +2 -0
  30. package/dist/core/utils/field-extractor.test.d.ts.map +1 -0
  31. package/dist/core/utils/i18n-setup.d.ts +26 -0
  32. package/dist/core/utils/i18n-setup.d.ts.map +1 -0
  33. package/dist/core/utils/image-utils.d.ts +7 -0
  34. package/dist/core/utils/image-utils.d.ts.map +1 -0
  35. package/dist/core/utils/image-utils.test.d.ts +2 -0
  36. package/dist/core/utils/image-utils.test.d.ts.map +1 -0
  37. package/dist/core/utils/path-utils.d.ts +18 -0
  38. package/dist/core/utils/path-utils.d.ts.map +1 -0
  39. package/dist/core/utils/path-utils.test.d.ts +2 -0
  40. package/dist/core/utils/path-utils.test.d.ts.map +1 -0
  41. package/dist/core/utils/sanitize.d.ts +10 -0
  42. package/dist/core/utils/sanitize.d.ts.map +1 -0
  43. package/dist/core/utils/storage.d.ts +16 -0
  44. package/dist/core/utils/storage.d.ts.map +1 -0
  45. package/dist/core/utils/storage.test.d.ts +2 -0
  46. package/dist/core/utils/storage.test.d.ts.map +1 -0
  47. package/dist/core/utils/template-processor.d.ts +12 -0
  48. package/dist/core/utils/template-processor.d.ts.map +1 -0
  49. package/dist/core/utils/template-processor.test.d.ts +2 -0
  50. package/dist/core/utils/template-processor.test.d.ts.map +1 -0
  51. package/dist/core/utils/template-regex.d.ts +29 -0
  52. package/dist/core/utils/template-regex.d.ts.map +1 -0
  53. package/dist/core/utils/template-utils.d.ts +14 -0
  54. package/dist/core/utils/template-utils.d.ts.map +1 -0
  55. package/dist/core/utils/template-utils.test.d.ts +2 -0
  56. package/dist/core/utils/template-utils.test.d.ts.map +1 -0
  57. package/dist/core/utils/validation.d.ts +2 -0
  58. package/dist/core/utils/validation.d.ts.map +1 -0
  59. package/dist/core/utils/validation.test.d.ts +2 -0
  60. package/dist/core/utils/validation.test.d.ts.map +1 -0
  61. package/dist/css/common.css +677 -0
  62. package/dist/css/docs.css +396 -0
  63. package/dist/css/index.css +1039 -0
  64. package/dist/css/page.css +290 -0
  65. package/dist/css/sample.css +26 -0
  66. package/dist/css/site-common.css +218 -0
  67. package/dist/features/add/components/AddPanel.vue.d.ts +41 -0
  68. package/dist/features/add/components/AddPanel.vue.d.ts.map +1 -0
  69. package/dist/features/add/composables/useAddMode.d.ts +84 -0
  70. package/dist/features/add/composables/useAddMode.d.ts.map +1 -0
  71. package/dist/features/data-viewer/components/DataViewer.vue.d.ts +11 -0
  72. package/dist/features/data-viewer/components/DataViewer.vue.d.ts.map +1 -0
  73. package/dist/features/delete/components/DeletePanel.vue.d.ts +17 -0
  74. package/dist/features/delete/components/DeletePanel.vue.d.ts.map +1 -0
  75. package/dist/features/delete/composables/useDeleteMode.d.ts +20 -0
  76. package/dist/features/delete/composables/useDeleteMode.d.ts.map +1 -0
  77. package/dist/features/editor/components/ContextMenu.vue.d.ts +18 -0
  78. package/dist/features/editor/components/ContextMenu.vue.d.ts.map +1 -0
  79. package/dist/features/editor/components/EditPanel.vue.d.ts +39 -0
  80. package/dist/features/editor/components/EditPanel.vue.d.ts.map +1 -0
  81. package/dist/features/editor/components/ImageSelectModal.vue.d.ts +23 -0
  82. package/dist/features/editor/components/ImageSelectModal.vue.d.ts.map +1 -0
  83. package/dist/features/editor/components/RichTextEditor.vue.d.ts +11 -0
  84. package/dist/features/editor/components/RichTextEditor.vue.d.ts.map +1 -0
  85. package/dist/features/editor/components/SettingsPanel.vue.d.ts +25 -0
  86. package/dist/features/editor/components/SettingsPanel.vue.d.ts.map +1 -0
  87. package/dist/features/editor/components/Toolbar.vue.d.ts +21 -0
  88. package/dist/features/editor/components/Toolbar.vue.d.ts.map +1 -0
  89. package/dist/features/editor/composables/useClickHandlers.d.ts +8 -0
  90. package/dist/features/editor/composables/useClickHandlers.d.ts.map +1 -0
  91. package/dist/features/editor/composables/useContextMenu.d.ts +20 -0
  92. package/dist/features/editor/composables/useContextMenu.d.ts.map +1 -0
  93. package/dist/features/editor/composables/useEditMode.d.ts +66 -0
  94. package/dist/features/editor/composables/useEditMode.d.ts.map +1 -0
  95. package/dist/features/editor/composables/useEditorMode.d.ts +7 -0
  96. package/dist/features/editor/composables/useEditorMode.d.ts.map +1 -0
  97. package/dist/features/editor/composables/useModeSwitcher.d.ts +7 -0
  98. package/dist/features/editor/composables/useModeSwitcher.d.ts.map +1 -0
  99. package/dist/features/editor/composables/useOutlineManager.d.ts +5 -0
  100. package/dist/features/editor/composables/useOutlineManager.d.ts.map +1 -0
  101. package/dist/features/images-manager/components/ImagesManagerPanel.vue.d.ts +12 -0
  102. package/dist/features/images-manager/components/ImagesManagerPanel.vue.d.ts.map +1 -0
  103. package/dist/features/images-manager/composables/useImagesManager.d.ts +47 -0
  104. package/dist/features/images-manager/composables/useImagesManager.d.ts.map +1 -0
  105. package/dist/features/parent-selector/composables/useParentSelector.d.ts +9 -0
  106. package/dist/features/parent-selector/composables/useParentSelector.d.ts.map +1 -0
  107. package/dist/features/parts-manager/components/MonacoEditor.vue.d.ts +20 -0
  108. package/dist/features/parts-manager/components/MonacoEditor.vue.d.ts.map +1 -0
  109. package/dist/features/parts-manager/components/PartsManagerPanel.vue.d.ts +10 -0
  110. package/dist/features/parts-manager/components/PartsManagerPanel.vue.d.ts.map +1 -0
  111. package/dist/features/parts-manager/composables/usePartsManager.d.ts +190 -0
  112. package/dist/features/parts-manager/composables/usePartsManager.d.ts.map +1 -0
  113. package/dist/features/preview/PreviewArea.vue.d.ts +15 -0
  114. package/dist/features/preview/PreviewArea.vue.d.ts.map +1 -0
  115. package/dist/features/reorder/components/ReorderPanel.vue.d.ts +14 -0
  116. package/dist/features/reorder/components/ReorderPanel.vue.d.ts.map +1 -0
  117. package/dist/features/reorder/composables/useReorderMode.d.ts +9 -0
  118. package/dist/features/reorder/composables/useReorderMode.d.ts.map +1 -0
  119. package/dist/footer.html +10 -0
  120. package/dist/header.html +10 -0
  121. package/dist/i18n/index.d.ts +454 -0
  122. package/dist/i18n/index.d.ts.map +1 -0
  123. package/dist/i18n/locales/en.d.ts +231 -0
  124. package/dist/i18n/locales/en.d.ts.map +1 -0
  125. package/dist/i18n/locales/ja.d.ts +223 -0
  126. package/dist/i18n/locales/ja.d.ts.map +1 -0
  127. package/dist/images/customer-avatar.jpg +0 -0
  128. package/dist/images/default-avatar.jpg +0 -0
  129. package/dist/images/default.jpg +0 -0
  130. package/dist/images/hero-bg.jpg +0 -0
  131. package/dist/images/kv_image.jpg +0 -0
  132. package/dist/images/page-specific-hero.jpg +0 -0
  133. package/dist/images/sample-1.jpg +0 -0
  134. package/dist/images/sample-2.jpg +0 -0
  135. package/dist/images/sample-3.jpg +0 -0
  136. package/dist/images/zcode_top_01.png +0 -0
  137. package/dist/index.d.ts +6 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/js/accordion.js +24 -0
  140. package/dist/js/common.js +1093 -0
  141. package/dist/types/index.d.ts +96 -0
  142. package/dist/types/index.d.ts.map +1 -0
  143. package/dist/web-component.d.ts +14 -0
  144. package/dist/web-component.d.ts.map +1 -0
  145. package/dist/web-components/zcode-cms.d.ts +29 -0
  146. package/dist/web-components/zcode-cms.d.ts.map +1 -0
  147. package/dist/web-components/zcode-editor.d.ts +29 -0
  148. package/dist/web-components/zcode-editor.d.ts.map +1 -0
  149. package/dist/zerocode.es.js +28710 -0
  150. package/dist/zerocode.es.js.map +1 -0
  151. package/dist/zerocode.umd.js +490 -0
  152. package/dist/zerocode.umd.js.map +1 -0
  153. package/dist/zerocodejs.css +1 -0
  154. package/package.json +94 -0
@@ -0,0 +1,290 @@
1
+ .kv {
2
+ margin: 0 auto;
3
+ }
4
+
5
+ .kv__image {
6
+ border: 1px solid var(--c-color-gray-2);
7
+ border-radius: var(--c-radius);
8
+ overflow: hidden;
9
+ background: var(--c-color-white);
10
+ box-shadow: var(--c-shadow);
11
+ }
12
+
13
+ .kv__img {
14
+ width: 100%;
15
+ height: auto;
16
+ display: block;
17
+ }
18
+
19
+ .message__text {
20
+ color: var(--c-color-gray);
21
+ font-size: 16px;
22
+ line-height: 1.9;
23
+ text-align: center;
24
+ }
25
+
26
+ .message__text p + p {
27
+ margin-top: 0.9em;
28
+ }
29
+
30
+ .section {
31
+ padding: 48px 0;
32
+ }
33
+
34
+ .section__head {
35
+ display: flex;
36
+ flex-direction: column;
37
+ align-items: center;
38
+ justify-content: center;
39
+ margin-bottom: 14px;
40
+ text-align: center;
41
+ }
42
+
43
+ .section__title {
44
+ color: var(--c-color-black);
45
+ font-weight: 800;
46
+ font-size: 30px;
47
+ line-height: 1.3;
48
+ letter-spacing: -0.01em;
49
+ }
50
+
51
+ .section__subtitle {
52
+ margin-top: 6px;
53
+ color: var(--c-color-gray);
54
+ font-size: 14px;
55
+ font-weight: 600;
56
+ letter-spacing: 0.05em;
57
+ text-transform: uppercase;
58
+ }
59
+
60
+ .section__contents {
61
+ width: 100%;
62
+ }
63
+
64
+ .section__items {
65
+ display: flex;
66
+ flex-direction: column;
67
+ gap: 12px;
68
+ }
69
+
70
+ .section__items--rows {
71
+ border: 1px solid var(--c-color-gray-2);
72
+ overflow: hidden;
73
+ background: var(--c-color-white);
74
+ box-shadow: var(--c-shadow);
75
+ }
76
+
77
+ .numbered {
78
+ width: 100%;
79
+ }
80
+
81
+ .numbered__items {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: 12px;
85
+ counter-reset: numbered-item;
86
+ }
87
+
88
+ .numbered-item {
89
+ background-color: var(--c-color-white);
90
+ position: relative;
91
+ padding: 16px;
92
+ padding-left: 40px;
93
+ counter-increment: numbered-item;
94
+ }
95
+
96
+ .numbered-item__number {
97
+ position: absolute;
98
+ top: 20px;
99
+ left: 0;
100
+ color: rgb(245, 199, 124);
101
+ font-size: 30px;
102
+ line-height: 1;
103
+ }
104
+
105
+ .numbered-item__number::before {
106
+ content: counter(numbered-item);
107
+ }
108
+
109
+ .numbered-item__title {
110
+ color: var(--c-color-black);
111
+ font-weight: 800;
112
+ font-size: 16px;
113
+ line-height: 1.4;
114
+ margin-bottom: 8px;
115
+ }
116
+
117
+ .numbered-item__text {
118
+ color: var(--c-color-gray);
119
+ font-size: 14px;
120
+ line-height: 1.75;
121
+ }
122
+
123
+ .event {
124
+ width: 100%;
125
+ }
126
+
127
+ .event__items {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 10px;
131
+ }
132
+
133
+ .event-item {
134
+ border: 1px solid var(--c-color-gray-2);
135
+ border-radius: var(--c-radius);
136
+ background: var(--c-color-white);
137
+ box-shadow: var(--c-shadow);
138
+ padding: 14px 16px;
139
+ }
140
+
141
+ .event-item__meta {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-between;
145
+ gap: 10px;
146
+ margin-bottom: 6px;
147
+ }
148
+
149
+ .event-item__date {
150
+ color: rgba(100, 116, 139, 0.95);
151
+ font-size: 12px;
152
+ font-weight: 700;
153
+ letter-spacing: 0.02em;
154
+ }
155
+
156
+ .event-item__tags {
157
+ display: flex;
158
+ gap: 6px;
159
+ flex-wrap: wrap;
160
+ }
161
+
162
+ .event-item__title {
163
+ margin-top: 6px;
164
+ color: var(--c-color-black);
165
+ font-weight: 800;
166
+ font-size: 16px;
167
+ line-height: 1.4;
168
+ }
169
+
170
+ .event-item__text {
171
+ margin-top: 8px;
172
+ color: var(--c-color-gray);
173
+ font-size: 14px;
174
+ line-height: 1.75;
175
+ }
176
+
177
+ .event-item__actions {
178
+ margin-top: 10px;
179
+ }
180
+
181
+ .info {
182
+ width: 100%;
183
+ }
184
+
185
+ .info__items {
186
+ border: 1px solid var(--c-color-gray-2);
187
+ overflow: hidden;
188
+ background: var(--c-color-white);
189
+ box-shadow: var(--c-shadow);
190
+ }
191
+
192
+ .info-item {
193
+ display: grid;
194
+ grid-template-columns: 120px 1fr;
195
+ gap: 12px;
196
+ padding: 12px 14px;
197
+ border-top: 1px solid var(--c-color-gray-2);
198
+ background: var(--c-color-white);
199
+ }
200
+
201
+ .info__items .info-item:first-child {
202
+ border-top: none;
203
+ }
204
+
205
+ .info-item__label {
206
+ color: rgba(100, 116, 139, 0.95);
207
+ font-size: 12px;
208
+ font-weight: 800;
209
+ letter-spacing: 0.02em;
210
+ }
211
+
212
+ .info-item__value {
213
+ color: var(--c-color-black);
214
+ font-size: 14px;
215
+ line-height: 1.7;
216
+ }
217
+
218
+ .tag {
219
+ display: inline-flex;
220
+ align-items: center;
221
+ padding: 6px 10px;
222
+ border-radius: 999px;
223
+ border: 1px solid rgba(37, 99, 235, 0.25);
224
+ background: rgba(37, 99, 235, 0.06);
225
+ color: var(--c-color-red);
226
+ font-size: 12px;
227
+ font-weight: 800;
228
+ }
229
+
230
+ .faq {
231
+ display: flex;
232
+ flex-direction: column;
233
+ gap: 12px;
234
+ }
235
+
236
+ .faq__items {
237
+ display: flex;
238
+ flex-direction: column;
239
+ gap: 12px;
240
+ }
241
+
242
+ .faq-item {
243
+ border: 1px solid rgba(15, 23, 42, 0.14);
244
+ border-radius: 8px;
245
+ overflow: hidden;
246
+ background: white;
247
+ }
248
+
249
+ .faq-item__q {
250
+ width: 100%;
251
+ padding: 16px 20px;
252
+ text-align: left;
253
+ font-size: 16px;
254
+ font-weight: 600;
255
+ color: #0b1220;
256
+ background: white;
257
+ border: none;
258
+ cursor: pointer;
259
+ display: flex;
260
+ align-items: center;
261
+ justify-content: space-between;
262
+ transition: background 0.2s;
263
+ }
264
+
265
+ .faq-item__q:hover {
266
+ background: #f9fafb;
267
+ }
268
+
269
+ .faq-item__q::after {
270
+ content: '+';
271
+ font-size: 20px;
272
+ font-weight: 300;
273
+ color: #64748b;
274
+ transition: transform 0.2s;
275
+ }
276
+
277
+ .faq-item.s_open .faq-item__q::after {
278
+ transform: rotate(45deg);
279
+ }
280
+
281
+ .faq-item__a {
282
+ padding: 0 20px 16px;
283
+ font-size: 14px;
284
+ line-height: 1.8;
285
+ color: #64748b;
286
+ }
287
+
288
+ .faq-item__a p + p {
289
+ margin-top: 1em;
290
+ }
@@ -0,0 +1,26 @@
1
+ .test-header {
2
+ background: #3498db;
3
+ }
4
+
5
+ .zcode-callsite-controls {
6
+ position: fixed;
7
+ left: 16px;
8
+ bottom: 76px;
9
+ z-index: 999999;
10
+ display: grid;
11
+ gap: 8px;
12
+ }
13
+
14
+ .zcode-callsite-btn {
15
+ padding: 10px 12px;
16
+ border-radius: 10px;
17
+ border: 1px solid rgba(15, 23, 42, 0.2);
18
+ background: #fff;
19
+ color: #0b1220;
20
+ font-weight: 700;
21
+ cursor: pointer;
22
+ }
23
+
24
+ .zcode-callsite-btn:hover {
25
+ background: rgba(15, 23, 42, 0.03);
26
+ }
@@ -0,0 +1,218 @@
1
+ /* ZeroCode.js - サイト共通CSS */
2
+
3
+ /* 基本リセット */
4
+ * {
5
+ margin: 0;
6
+ padding: 0;
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ body {
11
+ font-family:
12
+ 'Inter',
13
+ 'Noto Sans JP',
14
+ -apple-system,
15
+ BlinkMacSystemFont,
16
+ 'Segoe UI',
17
+ 'Roboto',
18
+ 'Oxygen',
19
+ 'Ubuntu',
20
+ 'Cantarell',
21
+ 'Fira Sans',
22
+ 'Droid Sans',
23
+ 'Helvetica Neue',
24
+ sans-serif;
25
+ line-height: 1.6;
26
+ color: #2c3e50;
27
+ background: #ffffff;
28
+ min-height: 100vh;
29
+ position: relative;
30
+ }
31
+
32
+ /* 背景アニメーション(画面全体) */
33
+ .bg-particles {
34
+ position: fixed;
35
+ top: 0;
36
+ left: 0;
37
+ width: 100%;
38
+ height: 100%;
39
+ pointer-events: none;
40
+ z-index: 0;
41
+ overflow: hidden;
42
+ }
43
+
44
+ .bg-particle {
45
+ position: absolute;
46
+ border-radius: 50%;
47
+ animation: bgFloat 25s infinite ease-in-out;
48
+ filter: blur(3px);
49
+ }
50
+
51
+ .bg-particle:nth-child(1) {
52
+ width: 500px;
53
+ height: 500px;
54
+ top: -200px;
55
+ left: -150px;
56
+ background: rgba(52, 152, 219, 0.08);
57
+ }
58
+ .bg-particle:nth-child(2) {
59
+ width: 400px;
60
+ height: 400px;
61
+ top: 25%;
62
+ right: -150px;
63
+ background: rgba(155, 89, 182, 0.06);
64
+ animation-delay: -5s;
65
+ }
66
+ .bg-particle:nth-child(3) {
67
+ width: 350px;
68
+ height: 350px;
69
+ bottom: 5%;
70
+ left: 15%;
71
+ background: rgba(46, 204, 113, 0.06);
72
+ animation-delay: -10s;
73
+ }
74
+ .bg-particle:nth-child(4) {
75
+ width: 280px;
76
+ height: 280px;
77
+ top: 45%;
78
+ left: 5%;
79
+ background: rgba(241, 196, 15, 0.05);
80
+ animation-delay: -15s;
81
+ }
82
+ .bg-particle:nth-child(5) {
83
+ width: 450px;
84
+ height: 450px;
85
+ bottom: -150px;
86
+ right: 5%;
87
+ background: rgba(231, 76, 60, 0.05);
88
+ animation-delay: -8s;
89
+ }
90
+ .bg-particle:nth-child(6) {
91
+ width: 300px;
92
+ height: 300px;
93
+ top: 10%;
94
+ left: 35%;
95
+ background: rgba(52, 73, 94, 0.04);
96
+ animation-delay: -12s;
97
+ }
98
+
99
+ @keyframes bgFloat {
100
+ 0%,
101
+ 100% {
102
+ transform: translate(0, 0) scale(1);
103
+ }
104
+ 25% {
105
+ transform: translate(50px, -50px) scale(1.1);
106
+ }
107
+ 50% {
108
+ transform: translate(-40px, 40px) scale(0.9);
109
+ }
110
+ 75% {
111
+ transform: translate(30px, 20px) scale(1.05);
112
+ }
113
+ }
114
+
115
+ /* コンテンツを前面に */
116
+ .header,
117
+ .hero,
118
+ .section,
119
+ .footer {
120
+ position: relative;
121
+ z-index: 1;
122
+ }
123
+
124
+ /* ヘッダー */
125
+ .header {
126
+ background: rgba(255, 255, 255, 0.9);
127
+ border-bottom: 1px solid #e0e0e0;
128
+ padding: 12px 0;
129
+ position: sticky;
130
+ top: 0;
131
+ z-index: 100;
132
+ backdrop-filter: blur(10px);
133
+ }
134
+
135
+ .header-content {
136
+ max-width: 1200px;
137
+ margin: 0 auto;
138
+ padding: 0 20px;
139
+ display: flex;
140
+ justify-content: space-between;
141
+ align-items: center;
142
+ }
143
+
144
+ .header-logo {
145
+ font-size: 22px;
146
+ font-weight: 700;
147
+ color: #2c3e50;
148
+ text-decoration: none;
149
+ text-shadow:
150
+ 1px 1px 0 rgba(255, 255, 255, 0.8),
151
+ 2px 2px 4px rgba(0, 0, 0, 0.15);
152
+ letter-spacing: -0.5px;
153
+ }
154
+
155
+ .header-nav {
156
+ display: flex;
157
+ gap: 24px;
158
+ align-items: center;
159
+ }
160
+
161
+ .header-link {
162
+ font-size: 15px;
163
+ color: #2c3e50;
164
+ text-decoration: none;
165
+ font-weight: 500;
166
+ transition: color 0.2s;
167
+ }
168
+
169
+ .header-link:hover {
170
+ color: #3498db;
171
+ }
172
+
173
+ /* フッター */
174
+ .footer {
175
+ background: #2c3e50;
176
+ color: #ecf0f1;
177
+ padding: 40px 20px;
178
+ text-align: center;
179
+ }
180
+
181
+ .footer-content {
182
+ max-width: 1200px;
183
+ margin: 0 auto;
184
+ }
185
+
186
+ .footer-links {
187
+ display: flex;
188
+ gap: 24px;
189
+ justify-content: center;
190
+ margin-bottom: 20px;
191
+ flex-wrap: wrap;
192
+ }
193
+
194
+ .footer-link {
195
+ color: #ecf0f1;
196
+ text-decoration: none;
197
+ transition: color 0.2s;
198
+ }
199
+
200
+ .footer-link:hover {
201
+ color: #3498db;
202
+ }
203
+
204
+ .footer-copyright {
205
+ font-size: 14px;
206
+ color: #95a5a6;
207
+ }
208
+
209
+ /* レスポンシブ */
210
+ @media (max-width: 768px) {
211
+ .header-nav {
212
+ gap: 16px;
213
+ }
214
+
215
+ .header-link {
216
+ font-size: 14px;
217
+ }
218
+ }
@@ -0,0 +1,41 @@
1
+ import { TypeData, PartData, ComponentData, CMSConfig } from '../../../types';
2
+ type __VLS_Props = {
3
+ addTargetPath: string | null;
4
+ addPartCategory: 'common' | 'individual' | 'special';
5
+ addTypeTab: string | 'all' | 'selected' | null;
6
+ addSelectedPart: PartData | null;
7
+ addSelectedType: TypeData | null;
8
+ clickedComponent: ComponentData | null;
9
+ availablePartTypes: string[];
10
+ groupedPartsByType: Array<{
11
+ type: string;
12
+ description?: string;
13
+ typeData: TypeData;
14
+ parts: PartData[];
15
+ }>;
16
+ canSelectParent: boolean;
17
+ getPartPreviewHtml: (type: TypeData, part: PartData) => string;
18
+ getClickedComponentPreviewHtml: () => string;
19
+ keepAdding: boolean;
20
+ hasSpecialParts: boolean;
21
+ config?: Partial<CMSConfig>;
22
+ };
23
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
24
+ cancel: () => any;
25
+ "select-parent": () => any;
26
+ "category-tab-click": (category: "common" | "individual" | "special") => any;
27
+ "type-tab-click": (type: string) => any;
28
+ "select-part": (type: TypeData, part: PartData) => any;
29
+ "confirm-add": (position: "before" | "after") => any;
30
+ "update-keep-adding": (value: boolean) => any;
31
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
32
+ onCancel?: (() => any) | undefined;
33
+ "onSelect-parent"?: (() => any) | undefined;
34
+ "onCategory-tab-click"?: ((category: "common" | "individual" | "special") => any) | undefined;
35
+ "onType-tab-click"?: ((type: string) => any) | undefined;
36
+ "onSelect-part"?: ((type: TypeData, part: PartData) => any) | undefined;
37
+ "onConfirm-add"?: ((position: "before" | "after") => any) | undefined;
38
+ "onUpdate-keep-adding"?: ((value: boolean) => any) | undefined;
39
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
40
+ export default _default;
41
+ //# sourceMappingURL=AddPanel.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddPanel.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/add/components/AddPanel.vue"],"names":[],"mappings":"AAuRA;AA6WA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGnF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;IACrD,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;IAC/C,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,kBAAkB,EAAE,KAAK,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC;QACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC/D,8BAA8B,EAAE,MAAM,MAAM,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC;;;;;;;;;;;;;;;;;;AA6cF,wBAOG"}
@@ -0,0 +1,84 @@
1
+ import { Ref } from 'vue';
2
+ import { ZeroCodeData, ComponentData, TypeData, PartData, SlotConfig, CMSConfig } from '../../../types';
3
+ export declare function useAddMode(cmsData: ZeroCodeData, previewArea: Ref<HTMLElement | null>, renderComponentToHtml: (component: ComponentData, path: string) => string, config?: Partial<CMSConfig>): {
4
+ addTargetPath: Ref<string | null, string | null>;
5
+ addSelectedType: Ref<{
6
+ id: string;
7
+ type: string;
8
+ description: string;
9
+ parts: {
10
+ id: string;
11
+ title: string;
12
+ description: string;
13
+ body: string;
14
+ slots?: Record<string, {
15
+ allowedParts?: string[];
16
+ }> | undefined;
17
+ slotOnly?: boolean | undefined;
18
+ }[];
19
+ } | null, TypeData | {
20
+ id: string;
21
+ type: string;
22
+ description: string;
23
+ parts: {
24
+ id: string;
25
+ title: string;
26
+ description: string;
27
+ body: string;
28
+ slots?: Record<string, {
29
+ allowedParts?: string[];
30
+ }> | undefined;
31
+ slotOnly?: boolean | undefined;
32
+ }[];
33
+ } | null>;
34
+ addSelectedPart: Ref<{
35
+ id: string;
36
+ title: string;
37
+ description: string;
38
+ body: string;
39
+ slots?: Record<string, {
40
+ allowedParts?: string[];
41
+ }> | undefined;
42
+ slotOnly?: boolean | undefined;
43
+ } | null, PartData | {
44
+ id: string;
45
+ title: string;
46
+ description: string;
47
+ body: string;
48
+ slots?: Record<string, {
49
+ allowedParts?: string[];
50
+ }> | undefined;
51
+ slotOnly?: boolean | undefined;
52
+ } | null>;
53
+ clickedComponent: Ref<{
54
+ [x: string]: unknown;
55
+ id: string;
56
+ part_id: string;
57
+ slots?: Record<string, ComponentData[] | SlotConfig> | undefined;
58
+ } | null, ComponentData | {
59
+ [x: string]: unknown;
60
+ id: string;
61
+ part_id: string;
62
+ slots?: Record<string, ComponentData[] | SlotConfig> | undefined;
63
+ } | null>;
64
+ addPartCategory: Ref<"common" | "individual" | "special", "common" | "individual" | "special">;
65
+ addTypeTab: Ref<string | null, string | null>;
66
+ keepAdding: Ref<boolean, boolean>;
67
+ availablePartTypes: import('vue').ComputedRef<string[]>;
68
+ groupedPartsByType: import('vue').ComputedRef<{
69
+ type: string;
70
+ description: string;
71
+ typeData: TypeData;
72
+ parts: PartData[];
73
+ }[]>;
74
+ hasSpecialParts: import('vue').ComputedRef<boolean>;
75
+ handleAddClick: (path: string, isParentSelection?: boolean) => void;
76
+ handleCategoryTabClick: (category: "common" | "individual" | "special") => void;
77
+ handleTypeTabClick: (type: string | "all" | "selected") => void;
78
+ selectPart: (type: TypeData, part: PartData) => void;
79
+ getPartPreviewHtml: (type: TypeData, part: PartData) => string;
80
+ getClickedComponentPreviewHtml: () => string;
81
+ confirmAddPart: (position: "before" | "after") => void;
82
+ cancelAdd: () => void;
83
+ };
84
+ //# sourceMappingURL=useAddMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAddMode.d.ts","sourceRoot":"","sources":["../../../../src/features/add/composables/useAddMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM7G,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EACpC,qBAAqB,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,EACzE,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;;;;;;;;;;;;4BAMoF,CAAC;;;;;;;;;;;;;;4BAAD,CAAC;;;;;;;;;;;wBAAD,CAAC;;;;;;;;;wBAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;2BAyNlF,MAAM,sBAAqB,OAAO;uCA+GtB,QAAQ,GAAG,YAAY,GAAG,SAAS;+BAQ3C,MAAM,GAAG,KAAK,GAAG,UAAU;uBAsCnC,QAAQ,QAAQ,QAAQ;+BAlBhB,QAAQ,QAAQ,QAAQ,KAAG,MAAM;0CAKxB,MAAM;+BAwJf,QAAQ,GAAG,OAAO;;EAyNrD"}
@@ -0,0 +1,11 @@
1
+ import { ZeroCodeData, CMSConfig } from '../../../types';
2
+ type __VLS_Props = {
3
+ cmsData: ZeroCodeData;
4
+ config?: Partial<CMSConfig>;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
7
+ internalActiveTab: import('vue').Ref<"page" | "parts" | "images", "page" | "parts" | "images">;
8
+ activeCategory: import('vue').Ref<"common" | "individual" | "special", "common" | "individual" | "special">;
9
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
11
+ //# sourceMappingURL=DataViewer.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataViewer.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/data-viewer/components/DataViewer.vue"],"names":[],"mappings":"AAoFA;AAkWA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG9D,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC;;;;;AA2ZF,wBAQG"}
@@ -0,0 +1,17 @@
1
+ import { ComponentData } from '../../../types';
2
+ type __VLS_Props = {
3
+ deleteConfirmComponent: ComponentData | null;
4
+ currentMode: 'edit' | 'add' | 'reorder' | 'delete';
5
+ canSelectParent: boolean;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
8
+ cancel: () => any;
9
+ "select-parent": () => any;
10
+ confirm: () => any;
11
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onCancel?: (() => any) | undefined;
13
+ "onSelect-parent"?: (() => any) | undefined;
14
+ onConfirm?: (() => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
+ export default _default;
17
+ //# sourceMappingURL=DeletePanel.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeletePanel.vue.d.ts","sourceRoot":"","sources":["../../../../src/features/delete/components/DeletePanel.vue"],"names":[],"mappings":"AAmEA;AAsFA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,KAAK,WAAW,GAAG;IACjB,sBAAsB,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,WAAW,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;;;;;;;;;;AAwKF,wBAOG"}