zerocodejs 1.0.1-beta.1 → 1.0.1-beta.10

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 (68) hide show
  1. package/README.ja.md +164 -0
  2. package/README.md +97 -96
  3. package/dist/components/ZeroCodeEditor.vue.d.ts.map +1 -1
  4. package/dist/core/composables/useZeroCodeRenderer.d.ts.map +1 -1
  5. package/dist/core/utils/edit-panel-fields.d.ts +17 -0
  6. package/dist/core/utils/edit-panel-fields.d.ts.map +1 -0
  7. package/dist/core/utils/template-processor.d.ts +6 -1
  8. package/dist/core/utils/template-processor.d.ts.map +1 -1
  9. package/dist/features/editor/components/EditPanel.vue.d.ts +1 -0
  10. package/dist/features/editor/components/EditPanel.vue.d.ts.map +1 -1
  11. package/dist/features/editor/composables/useEditMode.d.ts +4 -16
  12. package/dist/features/editor/composables/useEditMode.d.ts.map +1 -1
  13. package/dist/features/parts-manager/components/PartsManagerPanel.vue.d.ts.map +1 -1
  14. package/dist/features/parts-manager/composables/usePartsManager.d.ts +1 -0
  15. package/dist/features/parts-manager/composables/usePartsManager.d.ts.map +1 -1
  16. package/dist/features/preview/PreviewArea.vue.d.ts.map +1 -1
  17. package/dist/i18n/index.d.ts +18 -0
  18. package/dist/i18n/index.d.ts.map +1 -1
  19. package/dist/i18n/locales/en.d.ts +9 -0
  20. package/dist/i18n/locales/en.d.ts.map +1 -1
  21. package/dist/i18n/locales/ja.d.ts +9 -0
  22. package/dist/i18n/locales/ja.d.ts.map +1 -1
  23. package/dist/zerocode.es.js +13733 -14317
  24. package/dist/zerocode.umd.js +57 -62
  25. package/dist/zerocodejs.css +1 -1
  26. package/package.json +6 -5
  27. package/dist/__tests__/fixtures/sample-data.d.ts +0 -23
  28. package/dist/__tests__/fixtures/sample-data.d.ts.map +0 -1
  29. package/dist/__tests__/fixtures/sample-templates.d.ts +0 -25
  30. package/dist/__tests__/fixtures/sample-templates.d.ts.map +0 -1
  31. package/dist/core/utils/component-initializer.test.d.ts +0 -2
  32. package/dist/core/utils/component-initializer.test.d.ts.map +0 -1
  33. package/dist/core/utils/field-extractor.test.d.ts +0 -2
  34. package/dist/core/utils/field-extractor.test.d.ts.map +0 -1
  35. package/dist/core/utils/image-utils.test.d.ts +0 -2
  36. package/dist/core/utils/image-utils.test.d.ts.map +0 -1
  37. package/dist/core/utils/path-utils.test.d.ts +0 -2
  38. package/dist/core/utils/path-utils.test.d.ts.map +0 -1
  39. package/dist/core/utils/storage.test.d.ts +0 -2
  40. package/dist/core/utils/storage.test.d.ts.map +0 -1
  41. package/dist/core/utils/template-processor.test.d.ts +0 -2
  42. package/dist/core/utils/template-processor.test.d.ts.map +0 -1
  43. package/dist/core/utils/template-utils.test.d.ts +0 -2
  44. package/dist/core/utils/template-utils.test.d.ts.map +0 -1
  45. package/dist/core/utils/validation.test.d.ts +0 -2
  46. package/dist/core/utils/validation.test.d.ts.map +0 -1
  47. package/dist/css/common.css +0 -677
  48. package/dist/css/docs.css +0 -396
  49. package/dist/css/index.css +0 -1039
  50. package/dist/css/page.css +0 -290
  51. package/dist/css/sample.css +0 -26
  52. package/dist/css/site-common.css +0 -218
  53. package/dist/footer.html +0 -10
  54. package/dist/header.html +0 -10
  55. package/dist/images/customer-avatar.jpg +0 -0
  56. package/dist/images/default-avatar.jpg +0 -0
  57. package/dist/images/default.jpg +0 -0
  58. package/dist/images/hero-bg.jpg +0 -0
  59. package/dist/images/kv_image.jpg +0 -0
  60. package/dist/images/page-specific-hero.jpg +0 -0
  61. package/dist/images/sample-1.jpg +0 -0
  62. package/dist/images/sample-2.jpg +0 -0
  63. package/dist/images/sample-3.jpg +0 -0
  64. package/dist/images/zcode_top_01.png +0 -0
  65. package/dist/js/accordion.js +0 -24
  66. package/dist/js/common.js +0 -1093
  67. package/dist/zerocode.es.js.map +0 -1
  68. package/dist/zerocode.umd.js.map +0 -1
@@ -1,1039 +0,0 @@
1
- /* ZeroCode.js - index.html 専用CSS */
2
-
3
- /* ヒーローセクション */
4
- .hero {
5
- max-width: 1200px;
6
- margin: 0 auto;
7
- padding: 60px 20px;
8
- text-align: center;
9
- }
10
-
11
- .hero-title {
12
- font-size: 48px;
13
- font-weight: 800;
14
- margin-bottom: 16px;
15
- color: #2c3e50;
16
- line-height: 1.3;
17
- }
18
-
19
- .hero-subtitle {
20
- font-size: 18px;
21
- color: #7f8c8d;
22
- margin-bottom: 32px;
23
- }
24
-
25
- .hero-buttons {
26
- display: flex;
27
- gap: 16px;
28
- justify-content: center;
29
- margin-bottom: 60px;
30
- flex-wrap: wrap;
31
- }
32
-
33
- .btn {
34
- display: inline-block;
35
- padding: 12px 24px;
36
- border-radius: 4px;
37
- font-size: 15px;
38
- font-weight: 500;
39
- text-decoration: none;
40
- transition: background 0.2s;
41
- border: none;
42
- cursor: pointer;
43
- }
44
-
45
- .btn-primary {
46
- background: #2c3e50;
47
- color: white;
48
- }
49
-
50
- .btn-primary:hover {
51
- background: #34495e;
52
- }
53
-
54
- .btn-secondary {
55
- background: #ffffff;
56
- color: #2c3e50;
57
- border: 1px solid #bdc3c7;
58
- }
59
-
60
- .btn-secondary:hover {
61
- background: #f8f9fa;
62
- border-color: #95a5a6;
63
- }
64
-
65
- .hero-image {
66
- max-width: 800px;
67
- margin: 0 auto;
68
- background: #f8f9fa;
69
- border-radius: 8px;
70
- padding: 0;
71
- box-shadow:
72
- 0 4px 20px rgba(0, 0, 0, 0.1),
73
- 0 0 0 1px rgba(0, 0, 0, 0.05);
74
- position: relative;
75
- overflow: hidden;
76
- }
77
-
78
- .hero-image::before {
79
- content: '';
80
- position: absolute;
81
- top: 0;
82
- left: 0;
83
- right: 0;
84
- height: 32px;
85
- background: #e8e8e8;
86
- border-bottom: 1px solid #d0d0d0;
87
- z-index: 2;
88
- pointer-events: none;
89
- }
90
-
91
- .hero-image::after {
92
- content: '';
93
- position: absolute;
94
- top: 8px;
95
- left: 12px;
96
- width: 12px;
97
- height: 12px;
98
- border-radius: 50%;
99
- background: #ff5f57;
100
- box-shadow:
101
- 20px 0 0 #ffbd2e,
102
- 40px 0 0 #28ca42;
103
- z-index: 3;
104
- pointer-events: none;
105
- }
106
-
107
- .hero-image img {
108
- width: 100%;
109
- height: auto;
110
- display: block;
111
- margin-top: 32px;
112
- }
113
-
114
- /* セクション共通 */
115
- .section {
116
- max-width: 1200px;
117
- margin: 0 auto;
118
- padding: 60px 20px;
119
- }
120
-
121
- .section-title {
122
- font-size: 32px;
123
- font-weight: 600;
124
- text-align: center;
125
- margin-bottom: 40px;
126
- color: #2c3e50;
127
- }
128
-
129
- .section-subtitle {
130
- font-size: 18px;
131
- text-align: center;
132
- color: #7f8c8d;
133
- margin-bottom: 50px;
134
- max-width: 800px;
135
- margin-left: auto;
136
- margin-right: auto;
137
- }
138
-
139
- /* 特徴セクション */
140
- .features-grid {
141
- display: grid;
142
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
143
- gap: 30px;
144
- margin-top: 40px;
145
- }
146
-
147
- .feature-card {
148
- background: rgba(255, 255, 255, 0.8);
149
- border: 1px solid #e0e0e0;
150
- border-radius: 8px;
151
- padding: 32px;
152
- text-align: left;
153
- backdrop-filter: blur(10px);
154
- box-shadow:
155
- 0 8px 32px rgba(0, 0, 0, 0.08),
156
- 0 2px 8px rgba(0, 0, 0, 0.04);
157
- }
158
-
159
- .feature-title {
160
- font-size: 20px;
161
- font-weight: 600;
162
- margin-bottom: 12px;
163
- color: #2c3e50;
164
- }
165
-
166
- .feature-description {
167
- font-size: 15px;
168
- color: #7f8c8d;
169
- line-height: 1.7;
170
- }
171
-
172
- /* アーキテクチャセクション */
173
- .architecture-diagram {
174
- max-width: 800px;
175
- margin: 40px auto;
176
- padding: 40px;
177
- background: rgba(255, 255, 255, 0.8);
178
- border-radius: 8px;
179
- border: 1px solid #e0e0e0;
180
- backdrop-filter: blur(10px);
181
- box-shadow:
182
- 0 8px 32px rgba(0, 0, 0, 0.08),
183
- 0 2px 8px rgba(0, 0, 0, 0.04);
184
- }
185
-
186
- .architecture-flow {
187
- display: flex;
188
- align-items: center;
189
- justify-content: center;
190
- gap: 16px;
191
- flex-wrap: nowrap;
192
- }
193
-
194
- .arch-box {
195
- background: #ffffff;
196
- border: 2px solid #e0e0e0;
197
- border-radius: 8px;
198
- padding: 20px 16px;
199
- flex: 1 1 0;
200
- min-width: 0;
201
- text-align: center;
202
- }
203
-
204
- .arch-box.backend {
205
- border-color: #95a5a6;
206
- }
207
-
208
- .arch-box.frontend {
209
- border-color: #3498db;
210
- border-width: 3px;
211
- }
212
-
213
- .arch-frontend-group {
214
- display: flex;
215
- flex-direction: column;
216
- gap: 12px;
217
- flex: 1 1 0;
218
- min-width: 0;
219
- }
220
-
221
- .arch-box.frontend-cms {
222
- border-color: #3498db;
223
- border-width: 2px;
224
- }
225
-
226
- .arch-box.frontend-editor {
227
- border-color: #e67e22;
228
- border-width: 2px;
229
- }
230
-
231
- .arch-features {
232
- font-size: 11px;
233
- color: #7f8c8d;
234
- margin-top: 6px;
235
- line-height: 1.4;
236
- }
237
-
238
- .arch-label {
239
- font-size: 14px;
240
- font-weight: 600;
241
- color: #2c3e50;
242
- margin-bottom: 8px;
243
- }
244
-
245
- .arch-name {
246
- font-size: 18px;
247
- font-weight: 700;
248
- color: #3498db;
249
- margin: 8px 0;
250
- }
251
-
252
- .arch-desc {
253
- font-size: 13px;
254
- color: #7f8c8d;
255
- margin-top: 8px;
256
- }
257
-
258
- .arch-arrow {
259
- font-size: 24px;
260
- color: #7f8c8d;
261
- font-weight: 300;
262
- }
263
-
264
- .arch-note {
265
- text-align: center;
266
- font-size: 14px;
267
- color: #7f8c8d;
268
- margin-top: 20px;
269
- padding-top: 20px;
270
- border-top: 1px solid #e0e0e0;
271
- }
272
-
273
- /* デモセクション */
274
- .demo-grid {
275
- display: flex;
276
- align-items: stretch;
277
- justify-content: center;
278
- flex-wrap: wrap;
279
- gap: 12px;
280
- margin-top: 30px;
281
- max-width: 1200px;
282
- margin-left: auto;
283
- margin-right: auto;
284
- }
285
-
286
- .demo-arrow {
287
- font-size: 24px;
288
- color: #95a5a6;
289
- display: flex;
290
- align-items: center;
291
- justify-content: center;
292
- flex-shrink: 0;
293
- margin: 0 6px;
294
- }
295
-
296
- @media (max-width: 768px) {
297
- .demo-grid {
298
- flex-direction: column;
299
- gap: 8px;
300
- }
301
-
302
- .demo-arrow {
303
- transform: rotate(90deg);
304
- margin: 6px 0;
305
- }
306
- }
307
-
308
- .demo-card {
309
- background: rgba(255, 255, 255, 0.8);
310
- border: 1px solid #e0e0e0;
311
- padding: 24px;
312
- backdrop-filter: blur(10px);
313
- box-shadow:
314
- 0 8px 32px rgba(0, 0, 0, 0.08),
315
- 0 2px 8px rgba(0, 0, 0, 0.04);
316
- flex: 1;
317
- min-width: 280px;
318
- max-width: 100%;
319
- min-height: 100%;
320
- }
321
-
322
- .demo-card.pub {
323
- border-top: 3px solid #27ae60;
324
- }
325
-
326
- .demo-card.cms {
327
- border-top: 3px solid #3498db;
328
- }
329
-
330
- .demo-card.dev {
331
- border-top: 3px solid #e67e22;
332
- }
333
-
334
- .demo-badge {
335
- display: inline-block;
336
- padding: 4px 10px;
337
- border-radius: 4px;
338
- font-size: 11px;
339
- font-weight: 600;
340
- margin-bottom: 12px;
341
- text-transform: uppercase;
342
- letter-spacing: 0.5px;
343
- }
344
-
345
- .demo-card.pub .demo-badge {
346
- background: #d5f4e6;
347
- color: #27ae60;
348
- }
349
-
350
- .demo-card.cms .demo-badge {
351
- background: #d6eaf8;
352
- color: #3498db;
353
- }
354
-
355
- .demo-card.dev .demo-badge {
356
- background: #fadbd8;
357
- color: #e67e22;
358
- }
359
-
360
- .demo-title {
361
- font-size: 18px;
362
- font-weight: 600;
363
- margin-bottom: 8px;
364
- color: #2c3e50;
365
- }
366
-
367
- .demo-description {
368
- font-size: 14px;
369
- color: #7f8c8d;
370
- margin-bottom: 16px;
371
- line-height: 1.6;
372
- }
373
-
374
- .demo-features {
375
- list-style: none;
376
- margin-bottom: 18px;
377
- }
378
-
379
- .demo-features li {
380
- font-size: 14px;
381
- color: #7f8c8d;
382
- margin: 8px 0;
383
- padding-left: 24px;
384
- position: relative;
385
- }
386
-
387
- .demo-features li::before {
388
- content: '\2022';
389
- position: absolute;
390
- left: 0;
391
- color: #7f8c8d;
392
- font-weight: normal;
393
- }
394
-
395
- .demo-code {
396
- background: #1e1e1e;
397
- border-radius: 6px;
398
- padding: 10px;
399
- margin-bottom: 16px;
400
- overflow-x: auto;
401
- }
402
-
403
- .demo-code code {
404
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
405
- font-size: 13px;
406
- color: #d4d4d4;
407
- }
408
-
409
- .demo-button {
410
- display: block;
411
- width: 100%;
412
- padding: 10px;
413
- background: #2c3e50;
414
- color: white;
415
- text-align: center;
416
- border-radius: 4px;
417
- text-decoration: none;
418
- font-weight: 500;
419
- font-size: 14px;
420
- }
421
-
422
- .demo-button:hover {
423
- background: #34495e;
424
- }
425
-
426
- /* クイックスタートセクション */
427
- .quickstart {
428
- background: rgba(255, 255, 255, 0.8);
429
- border-radius: 8px;
430
- padding: 32px;
431
- margin-top: 40px;
432
- border: 1px solid #e0e0e0;
433
- backdrop-filter: blur(10px);
434
- box-shadow:
435
- 0 8px 32px rgba(0, 0, 0, 0.08),
436
- 0 2px 8px rgba(0, 0, 0, 0.04);
437
- }
438
-
439
- .quickstart h3 {
440
- color: #2c3e50 !important;
441
- }
442
-
443
- .quickstart-code {
444
- background: #1e1e1e;
445
- border-radius: 6px;
446
- padding: 20px;
447
- margin: 20px 0;
448
- overflow-x: auto;
449
- }
450
-
451
- .quickstart-code code {
452
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
453
- font-size: 14px;
454
- color: #d4d4d4;
455
- line-height: 1.6;
456
- }
457
-
458
- .quickstart-install {
459
- background: #1e1e1e;
460
- border-radius: 6px;
461
- padding: 16px 20px;
462
- margin-top: 20px;
463
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
464
- font-size: 14px;
465
- color: #d4d4d4;
466
- }
467
-
468
- .quickstart-tabs {
469
- display: flex;
470
- gap: 8px;
471
- margin-bottom: 20px;
472
- border-bottom: 1px solid #e0e0e0;
473
- }
474
-
475
- .quickstart-tab {
476
- padding: 10px 20px;
477
- background: transparent;
478
- border: none;
479
- border-bottom: 2px solid transparent;
480
- cursor: pointer;
481
- font-size: 14px;
482
- font-weight: 500;
483
- color: #7f8c8d;
484
- transition: all 0.2s;
485
- }
486
-
487
- .quickstart-tab:hover {
488
- color: #2c3e50;
489
- }
490
-
491
- .quickstart-tab.active {
492
- color: #2c3e50;
493
- border-bottom-color: #2c3e50;
494
- }
495
-
496
- .quickstart-tab-content {
497
- position: relative;
498
- }
499
-
500
- .tab-pane {
501
- display: none;
502
- }
503
-
504
- .tab-pane.active {
505
- display: block;
506
- }
507
-
508
- /* なぜ選ぶべきかセクション */
509
- .why-choose-grid {
510
- display: grid;
511
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
512
- gap: 30px;
513
- margin-top: 40px;
514
- }
515
-
516
- .why-choose-card {
517
- background: rgba(255, 255, 255, 0.8);
518
- border: 1px solid #e0e0e0;
519
- border-radius: 8px;
520
- padding: 32px;
521
- text-align: center;
522
- backdrop-filter: blur(10px);
523
- box-shadow:
524
- 0 8px 32px rgba(0, 0, 0, 0.08),
525
- 0 2px 8px rgba(0, 0, 0, 0.04);
526
- transition: transform 0.2s, box-shadow 0.2s;
527
- }
528
-
529
- .why-choose-card:hover {
530
- transform: translateY(-4px);
531
- box-shadow:
532
- 0 12px 40px rgba(0, 0, 0, 0.12),
533
- 0 4px 12px rgba(0, 0, 0, 0.06);
534
- }
535
-
536
- .why-choose-icon {
537
- width: 64px;
538
- height: 64px;
539
- margin: 0 auto 20px;
540
- border-radius: 12px;
541
- display: flex;
542
- align-items: center;
543
- justify-content: center;
544
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
545
- position: relative;
546
- }
547
-
548
- .why-choose-icon-link {
549
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
550
- }
551
-
552
- .why-choose-icon-link::before {
553
- content: '';
554
- width: 24px;
555
- height: 24px;
556
- border: 3px solid white;
557
- border-radius: 4px;
558
- position: relative;
559
- }
560
-
561
- .why-choose-icon-link::after {
562
- content: '';
563
- width: 12px;
564
- height: 12px;
565
- border-top: 3px solid white;
566
- border-right: 3px solid white;
567
- position: absolute;
568
- top: 50%;
569
- left: 50%;
570
- transform: translate(8px, -12px) rotate(45deg);
571
- }
572
-
573
- .why-choose-icon-swap {
574
- background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
575
- }
576
-
577
- .why-choose-icon-swap::before,
578
- .why-choose-icon-swap::after {
579
- content: '';
580
- position: absolute;
581
- width: 20px;
582
- height: 20px;
583
- border: 3px solid white;
584
- border-radius: 4px;
585
- }
586
-
587
- .why-choose-icon-swap::before {
588
- top: 12px;
589
- left: 12px;
590
- transform: rotate(-15deg);
591
- }
592
-
593
- .why-choose-icon-swap::after {
594
- bottom: 12px;
595
- right: 12px;
596
- transform: rotate(15deg);
597
- }
598
-
599
- .why-choose-icon-lightning {
600
- background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
601
- }
602
-
603
- .why-choose-icon-lightning::before {
604
- content: '';
605
- width: 0;
606
- height: 0;
607
- border-left: 8px solid transparent;
608
- border-right: 8px solid transparent;
609
- border-bottom: 16px solid white;
610
- position: absolute;
611
- top: 16px;
612
- left: 50%;
613
- transform: translateX(-50%) rotate(-20deg);
614
- }
615
-
616
- .why-choose-icon-lightning::after {
617
- content: '';
618
- width: 0;
619
- height: 0;
620
- border-left: 8px solid transparent;
621
- border-right: 8px solid transparent;
622
- border-top: 16px solid white;
623
- position: absolute;
624
- bottom: 16px;
625
- left: 50%;
626
- transform: translateX(-50%) rotate(20deg);
627
- }
628
-
629
- .why-choose-title {
630
- font-size: 20px;
631
- font-weight: 600;
632
- margin-bottom: 12px;
633
- color: #2c3e50;
634
- }
635
-
636
- .why-choose-description {
637
- font-size: 15px;
638
- color: #7f8c8d;
639
- line-height: 1.7;
640
- text-align: left;
641
- }
642
-
643
- /* 比較セクション */
644
- .comparison-container {
645
- background: rgba(255, 255, 255, 0.8);
646
- border-radius: 8px;
647
- padding: 32px;
648
- margin-top: 40px;
649
- border: 1px solid #e0e0e0;
650
- backdrop-filter: blur(10px);
651
- box-shadow:
652
- 0 8px 32px rgba(0, 0, 0, 0.08),
653
- 0 2px 8px rgba(0, 0, 0, 0.04);
654
- overflow-x: auto;
655
- }
656
-
657
- .comparison-table {
658
- width: 100%;
659
- border-collapse: collapse;
660
- margin: 0;
661
- font-size: 14px;
662
- }
663
-
664
- .comparison-table thead {
665
- background: #f8f9fa;
666
- }
667
-
668
- .comparison-table th {
669
- padding: 16px;
670
- text-align: left;
671
- font-weight: 600;
672
- color: #2c3e50;
673
- border-bottom: 2px solid #e0e0e0;
674
- }
675
-
676
- .comparison-table th:first-child {
677
- min-width: 180px;
678
- }
679
-
680
- .comparison-table td {
681
- padding: 16px;
682
- border-bottom: 1px solid #e0e0e0;
683
- color: #7f8c8d;
684
- }
685
-
686
- .comparison-table tbody tr:hover {
687
- background: #f8f9fa;
688
- }
689
-
690
- .comparison-icon {
691
- display: inline-block;
692
- width: 18px;
693
- height: 18px;
694
- margin-right: 8px;
695
- vertical-align: middle;
696
- }
697
-
698
- .comparison-icon-check {
699
- position: relative;
700
- }
701
-
702
- .comparison-icon-check::before {
703
- content: '';
704
- width: 18px;
705
- height: 18px;
706
- border: 2px solid #27ae60;
707
- border-radius: 3px;
708
- background: #27ae60;
709
- display: block;
710
- position: relative;
711
- }
712
-
713
- .comparison-icon-check::after {
714
- content: '';
715
- width: 5px;
716
- height: 10px;
717
- border: 2px solid white;
718
- border-top: 0;
719
- border-left: 0;
720
- position: absolute;
721
- top: 3px;
722
- left: 6px;
723
- transform: rotate(45deg);
724
- }
725
-
726
- .comparison-icon-cross {
727
- position: relative;
728
- width: 18px;
729
- height: 18px;
730
- border: 2px solid #e74c3c;
731
- border-radius: 3px;
732
- background: #e74c3c;
733
- }
734
-
735
- .comparison-icon-cross::before {
736
- content: '';
737
- width: 10px;
738
- height: 2px;
739
- background: white;
740
- position: absolute;
741
- top: 50%;
742
- left: 50%;
743
- transform: translate(-50%, -50%) rotate(45deg);
744
- }
745
-
746
- .comparison-icon-cross::after {
747
- content: '';
748
- width: 10px;
749
- height: 2px;
750
- background: white;
751
- position: absolute;
752
- top: 50%;
753
- left: 50%;
754
- transform: translate(-50%, -50%) rotate(-45deg);
755
- }
756
-
757
- .comparison-icon-warning {
758
- position: relative;
759
- }
760
-
761
- .comparison-icon-warning::before {
762
- content: '';
763
- width: 0;
764
- height: 0;
765
- border-left: 9px solid transparent;
766
- border-right: 9px solid transparent;
767
- border-bottom: 14px solid #f39c12;
768
- display: block;
769
- position: relative;
770
- }
771
-
772
- .comparison-icon-warning::after {
773
- content: '';
774
- width: 2px;
775
- height: 6px;
776
- background: white;
777
- position: absolute;
778
- top: 3px;
779
- left: 50%;
780
- transform: translateX(-50%);
781
- border-radius: 1px;
782
- box-shadow: 0 4px 0 white;
783
- }
784
-
785
- .comparison-yes {
786
- color: #27ae60;
787
- font-weight: 500;
788
- }
789
-
790
- .comparison-partial {
791
- color: #f39c12;
792
- font-weight: 500;
793
- }
794
-
795
- .comparison-no {
796
- color: #e74c3c;
797
- font-weight: 500;
798
- }
799
-
800
- .comparison-note {
801
- margin-top: 24px;
802
- padding-top: 24px;
803
- border-top: 1px solid #e0e0e0;
804
- font-size: 14px;
805
- color: #7f8c8d;
806
- line-height: 1.7;
807
- text-align: center;
808
- }
809
-
810
- /* ユースケースセクション */
811
- .usecase-list {
812
- display: flex;
813
- flex-direction: column;
814
- gap: 24px;
815
- margin-top: 40px;
816
- }
817
-
818
- .usecase-item {
819
- background: rgba(255, 255, 255, 0.8);
820
- border: 1px solid #e0e0e0;
821
- border-radius: 8px;
822
- padding: 24px;
823
- backdrop-filter: blur(10px);
824
- box-shadow:
825
- 0 8px 32px rgba(0, 0, 0, 0.08),
826
- 0 2px 8px rgba(0, 0, 0, 0.04);
827
- transition: transform 0.2s, box-shadow 0.2s;
828
- }
829
-
830
- .usecase-item:hover {
831
- transform: translateX(4px);
832
- box-shadow:
833
- 0 12px 40px rgba(0, 0, 0, 0.12),
834
- 0 4px 12px rgba(0, 0, 0, 0.06);
835
- }
836
-
837
- .usecase-content {
838
- width: 100%;
839
- }
840
-
841
- .usecase-content h3 {
842
- font-size: 18px;
843
- font-weight: 600;
844
- margin-bottom: 8px;
845
- color: #2c3e50;
846
- }
847
-
848
- .usecase-content p {
849
- font-size: 15px;
850
- color: #7f8c8d;
851
- line-height: 1.7;
852
- margin: 0;
853
- }
854
-
855
- /* デモヒント */
856
- .demo-hint {
857
- margin-top: 12px;
858
- font-size: 13px;
859
- color: #7f8c8d;
860
- text-align: center;
861
- font-style: italic;
862
- }
863
-
864
- /* ドキュメントセクション */
865
- .docs-section {
866
- text-align: center;
867
- background: rgba(255, 255, 255, 0.8);
868
- border-radius: 8px;
869
- padding: 48px 32px;
870
- border: 1px solid #e0e0e0;
871
- backdrop-filter: blur(10px);
872
- box-shadow:
873
- 0 8px 32px rgba(0, 0, 0, 0.08),
874
- 0 2px 8px rgba(0, 0, 0, 0.04);
875
- }
876
-
877
- .docs-text {
878
- font-size: 18px;
879
- color: #7f8c8d;
880
- margin-bottom: 30px;
881
- }
882
-
883
- /* レスポンシブ */
884
- @media (max-width: 768px) {
885
- .hero {
886
- padding: 40px 20px;
887
- }
888
-
889
- .hero-title {
890
- font-size: 32px;
891
- }
892
-
893
- .hero-subtitle {
894
- font-size: 16px;
895
- margin-bottom: 24px;
896
- }
897
-
898
- .hero-image {
899
- max-width: 100%;
900
- padding: 8px;
901
- }
902
-
903
- .section {
904
- padding: 40px 20px;
905
- }
906
-
907
- .section-title {
908
- font-size: 24px;
909
- margin-bottom: 30px;
910
- }
911
-
912
- .section-subtitle {
913
- font-size: 16px;
914
- margin-bottom: 30px;
915
- }
916
-
917
- .features-grid {
918
- grid-template-columns: 1fr;
919
- gap: 20px;
920
- }
921
-
922
- .demo-grid {
923
- flex-direction: column;
924
- gap: 8px;
925
- }
926
-
927
- .demo-arrow {
928
- transform: rotate(90deg);
929
- margin: 6px 0;
930
- }
931
-
932
- .feature-card {
933
- padding: 24px;
934
- }
935
-
936
- .demo-card {
937
- padding: 20px;
938
- }
939
-
940
- .hero-buttons {
941
- flex-direction: column;
942
- gap: 12px;
943
- margin-bottom: 40px;
944
- }
945
-
946
- .btn {
947
- width: 100%;
948
- padding: 12px 20px;
949
- font-size: 14px;
950
- }
951
-
952
- .quickstart {
953
- padding: 24px;
954
- }
955
-
956
- .quickstart-tabs {
957
- overflow-x: auto;
958
- -webkit-overflow-scrolling: touch;
959
- scrollbar-width: none;
960
- }
961
-
962
- .quickstart-tabs::-webkit-scrollbar {
963
- display: none;
964
- }
965
-
966
- .quickstart-tab {
967
- padding: 8px 16px;
968
- font-size: 13px;
969
- white-space: nowrap;
970
- }
971
-
972
- .quickstart-code {
973
- padding: 16px;
974
- font-size: 12px;
975
- }
976
-
977
- .quickstart-code code {
978
- font-size: 12px;
979
- }
980
-
981
- .docs-section {
982
- padding: 32px 20px;
983
- }
984
-
985
- .architecture-diagram {
986
- padding: 24px;
987
- }
988
-
989
- .architecture-flow {
990
- flex-direction: column;
991
- gap: 16px;
992
- }
993
-
994
- .arch-box {
995
- min-width: 100%;
996
- }
997
-
998
- .arch-frontend-group {
999
- width: 100%;
1000
- }
1001
-
1002
- .arch-arrow {
1003
- transform: rotate(90deg);
1004
- }
1005
-
1006
- .comparison-container {
1007
- padding: 20px;
1008
- }
1009
-
1010
- .comparison-table {
1011
- font-size: 12px;
1012
- }
1013
-
1014
- .comparison-table th,
1015
- .comparison-table td {
1016
- padding: 12px 8px;
1017
- }
1018
-
1019
- .comparison-table th:first-child {
1020
- min-width: 140px;
1021
- }
1022
-
1023
- .why-choose-grid {
1024
- grid-template-columns: 1fr;
1025
- gap: 20px;
1026
- }
1027
-
1028
- .why-choose-card {
1029
- padding: 24px;
1030
- }
1031
-
1032
- .usecase-list {
1033
- gap: 20px;
1034
- }
1035
-
1036
- .usecase-item {
1037
- padding: 20px;
1038
- }
1039
- }