vibespot 1.0.8 → 1.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.
package/ui/styles.css CHANGED
@@ -158,7 +158,7 @@ body { display: flex; }
158
158
 
159
159
  .setup__container {
160
160
  width: 100%;
161
- max-width: 520px;
161
+ max-width: 620px;
162
162
  text-align: center;
163
163
  }
164
164
 
@@ -273,7 +273,7 @@ body { display: flex; }
273
273
  /* Action buttons grid */
274
274
  .setup__actions {
275
275
  display: grid;
276
- grid-template-columns: repeat(4, 1fr);
276
+ grid-template-columns: repeat(5, 1fr);
277
277
  gap: 10px;
278
278
  margin-bottom: 16px;
279
279
  }
@@ -373,6 +373,102 @@ body { display: flex; }
373
373
  color: var(--text-muted);
374
374
  }
375
375
 
376
+ /* Figma import panel */
377
+ #panel-figma {
378
+ display: flex;
379
+ flex-direction: column;
380
+ gap: 10px;
381
+ }
382
+
383
+ /* Figma extraction progress */
384
+ .figma-progress {
385
+ font-size: 12px;
386
+ color: var(--text-muted);
387
+ padding: 8px 12px;
388
+ background: var(--bg-input);
389
+ border: 1px solid var(--border);
390
+ border-radius: var(--radius);
391
+ max-height: 120px;
392
+ overflow-y: auto;
393
+ line-height: 1.6;
394
+ }
395
+ .figma-progress__line {
396
+ display: block;
397
+ white-space: nowrap;
398
+ overflow: hidden;
399
+ text-overflow: ellipsis;
400
+ }
401
+ .figma-progress__line:last-child {
402
+ color: var(--text);
403
+ }
404
+
405
+ /* Figma image mode toggle */
406
+ .figma-toggle {
407
+ display: flex;
408
+ align-items: center;
409
+ gap: 8px;
410
+ font-size: 13px;
411
+ color: var(--text);
412
+ cursor: pointer;
413
+ margin-top: 4px;
414
+ }
415
+ .figma-toggle input[type="checkbox"] {
416
+ accent-color: var(--accent);
417
+ width: 16px;
418
+ height: 16px;
419
+ }
420
+ .figma-toggle__hint {
421
+ color: var(--text-muted);
422
+ font-size: 11px;
423
+ margin-left: 4px;
424
+ }
425
+
426
+ /* Figma import summary */
427
+ .figma-summary {
428
+ background: var(--bg-input);
429
+ border: 1px solid var(--border);
430
+ border-radius: var(--radius);
431
+ padding: 14px 16px;
432
+ margin-top: 10px;
433
+ }
434
+ .figma-summary__title {
435
+ font-weight: 600;
436
+ font-size: 14px;
437
+ margin-bottom: 8px;
438
+ }
439
+ .figma-summary__stats {
440
+ display: flex;
441
+ gap: 16px;
442
+ font-size: 12px;
443
+ color: var(--text-muted);
444
+ margin-bottom: 10px;
445
+ }
446
+ .figma-swatches {
447
+ display: flex;
448
+ gap: 6px;
449
+ margin-bottom: 10px;
450
+ }
451
+ .figma-swatch {
452
+ width: 22px;
453
+ height: 22px;
454
+ border-radius: 50%;
455
+ border: 1px solid var(--border);
456
+ flex-shrink: 0;
457
+ }
458
+ .figma-summary__sections {
459
+ display: flex;
460
+ flex-wrap: wrap;
461
+ gap: 6px;
462
+ }
463
+ .figma-summary__section-tag {
464
+ font-size: 11px;
465
+ padding: 2px 8px;
466
+ background: var(--bg-card);
467
+ border: 1px solid var(--border);
468
+ border-radius: 10px;
469
+ color: var(--text-muted);
470
+ }
471
+
376
472
  /* Select dropdown */
377
473
  .setup__select {
378
474
  flex: 1;
@@ -4028,9 +4124,410 @@ body { display: flex; }
4028
4124
  opacity: 1;
4029
4125
  }
4030
4126
 
4127
+ /* ================================================================
4128
+ AI CAPABILITIES (settings → AI tab)
4129
+ ================================================================ */
4130
+ .settings__capability-row {
4131
+ display: flex;
4132
+ align-items: flex-start;
4133
+ justify-content: space-between;
4134
+ gap: 16px;
4135
+ padding: 12px 0;
4136
+ border-bottom: 1px solid var(--border);
4137
+ }
4138
+ .settings__capability-row:last-of-type { border-bottom: none; }
4139
+ .settings__capability-label-wrap { flex: 1; min-width: 0; }
4140
+ .settings__capability-label {
4141
+ display: flex;
4142
+ align-items: center;
4143
+ gap: 8px;
4144
+ font-size: 13px;
4145
+ font-weight: 600;
4146
+ color: var(--text);
4147
+ margin-bottom: 4px;
4148
+ }
4149
+ .settings__capability-desc {
4150
+ font-size: 12px;
4151
+ line-height: 1.45;
4152
+ color: var(--text-muted);
4153
+ }
4154
+ .settings__capability-badge {
4155
+ font-size: 10px;
4156
+ font-weight: 600;
4157
+ text-transform: uppercase;
4158
+ letter-spacing: 0.06em;
4159
+ padding: 2px 8px;
4160
+ border-radius: 999px;
4161
+ border: 1px solid var(--border);
4162
+ color: var(--text-muted);
4163
+ background: var(--bg-elevated);
4164
+ }
4165
+ .settings__capability-badge--active {
4166
+ color: var(--accent);
4167
+ border-color: color-mix(in srgb, var(--accent) 50%, transparent);
4168
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
4169
+ }
4170
+ .settings__capability-badge--off {
4171
+ color: var(--text-muted);
4172
+ }
4173
+ .settings__capability-badge--soon {
4174
+ color: var(--text-muted);
4175
+ font-style: italic;
4176
+ }
4177
+ .settings__capability-badge--n\/a {
4178
+ color: var(--text-muted);
4179
+ opacity: 0.7;
4180
+ }
4181
+
4182
+ /* Sub-row for inline controls (budget select, etc.) */
4183
+ .settings__capability-sub {
4184
+ display: flex;
4185
+ align-items: center;
4186
+ gap: 12px;
4187
+ margin: 4px 0 8px;
4188
+ padding: 8px 12px;
4189
+ background: var(--bg-elevated);
4190
+ border: 1px solid var(--border);
4191
+ border-radius: 6px;
4192
+ }
4193
+ .settings__capability-sub-label {
4194
+ font-size: 12px;
4195
+ font-weight: 600;
4196
+ color: var(--text);
4197
+ }
4198
+ .settings__capability-select {
4199
+ font-size: 12px;
4200
+ padding: 4px 8px;
4201
+ background: var(--bg);
4202
+ color: var(--text);
4203
+ border: 1px solid var(--border);
4204
+ border-radius: 4px;
4205
+ }
4206
+ .settings__capability-sub-hint {
4207
+ font-size: 11px;
4208
+ color: var(--text-muted);
4209
+ margin-left: auto;
4210
+ }
4211
+
4031
4212
  /* ================================================================
4032
4213
  THEME TOGGLE (light/dark)
4033
4214
  ================================================================ */
4034
4215
  .theme-toggle__icon--light { display: none; }
4035
4216
  [data-theme="light"] .theme-toggle__icon--dark { display: none; }
4036
4217
  [data-theme="light"] .theme-toggle__icon--light { display: block; }
4218
+
4219
+ /* ================================================================
4220
+ PLAN MODE
4221
+ ================================================================ */
4222
+
4223
+ /* ----- Plan-mode toggle (prominent, labeled mode pill) ----- */
4224
+ .chat__mode-bar {
4225
+ display: flex;
4226
+ align-items: center;
4227
+ justify-content: flex-start;
4228
+ padding: 0 4px 8px;
4229
+ }
4230
+
4231
+ .plan-toggle {
4232
+ display: inline-flex;
4233
+ align-items: center;
4234
+ gap: 8px;
4235
+ padding: 6px 12px 6px 8px;
4236
+ font-size: 12px;
4237
+ font-weight: 600;
4238
+ letter-spacing: 0.01em;
4239
+ color: var(--text-muted);
4240
+ background: var(--bg-elevated);
4241
+ border: 1px solid var(--border);
4242
+ border-radius: 999px;
4243
+ cursor: pointer;
4244
+ transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
4245
+ user-select: none;
4246
+ }
4247
+ .plan-toggle:hover {
4248
+ color: var(--text);
4249
+ border-color: var(--text-muted);
4250
+ }
4251
+ .plan-toggle__indicator {
4252
+ display: inline-flex;
4253
+ align-items: center;
4254
+ justify-content: center;
4255
+ width: 22px;
4256
+ height: 22px;
4257
+ border-radius: 999px;
4258
+ background: var(--bg);
4259
+ border: 1px solid var(--border);
4260
+ color: var(--text-muted);
4261
+ flex: none;
4262
+ transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
4263
+ }
4264
+ .plan-toggle__label {
4265
+ text-transform: uppercase;
4266
+ font-size: 11px;
4267
+ letter-spacing: 0.06em;
4268
+ }
4269
+ .plan-toggle__state {
4270
+ font-size: 11px;
4271
+ font-weight: 500;
4272
+ text-transform: uppercase;
4273
+ letter-spacing: 0.06em;
4274
+ padding: 2px 8px;
4275
+ border-radius: 999px;
4276
+ background: var(--bg);
4277
+ border: 1px solid var(--border);
4278
+ color: var(--text-muted);
4279
+ }
4280
+
4281
+ .plan-toggle.is-active,
4282
+ .plan-toggle.is-active:hover {
4283
+ color: var(--accent);
4284
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
4285
+ border-color: color-mix(in srgb, var(--accent) 60%, transparent);
4286
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);
4287
+ }
4288
+ .plan-toggle.is-active .plan-toggle__indicator {
4289
+ background: var(--accent);
4290
+ border-color: var(--accent);
4291
+ color: var(--bg);
4292
+ }
4293
+ .plan-toggle.is-active .plan-toggle__state {
4294
+ background: var(--accent);
4295
+ border-color: var(--accent);
4296
+ color: var(--bg);
4297
+ }
4298
+
4299
+ /* Plan-mode badge in chat header */
4300
+ .plan-mode-badge {
4301
+ display: inline-flex;
4302
+ align-items: center;
4303
+ gap: 4px;
4304
+ padding: 2px 8px;
4305
+ font-size: 11px;
4306
+ font-weight: 600;
4307
+ letter-spacing: 0.02em;
4308
+ color: var(--accent);
4309
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
4310
+ border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
4311
+ border-radius: 999px;
4312
+ text-transform: uppercase;
4313
+ }
4314
+
4315
+ /* Choice chips below assistant messages */
4316
+ .plan-choices {
4317
+ display: flex;
4318
+ flex-direction: column;
4319
+ gap: 6px;
4320
+ margin: 10px 0 4px;
4321
+ padding: 10px 12px;
4322
+ background: color-mix(in srgb, var(--accent) 6%, var(--bg-elevated));
4323
+ border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border));
4324
+ border-radius: 10px;
4325
+ }
4326
+ .plan-choices__question {
4327
+ font-size: 13px;
4328
+ font-weight: 600;
4329
+ color: var(--text);
4330
+ line-height: 1.4;
4331
+ }
4332
+ .plan-choices__chips {
4333
+ display: flex;
4334
+ flex-wrap: wrap;
4335
+ gap: 6px;
4336
+ }
4337
+ .plan-choices__chip {
4338
+ padding: 6px 12px;
4339
+ font-size: 12px;
4340
+ font-weight: 500;
4341
+ background: var(--bg-elevated);
4342
+ color: var(--text);
4343
+ border: 1px solid var(--border);
4344
+ border-radius: 999px;
4345
+ cursor: pointer;
4346
+ transition: background 0.12s ease, border-color 0.12s ease, transform 0.08s ease;
4347
+ }
4348
+ .plan-choices__chip:hover {
4349
+ background: color-mix(in srgb, var(--accent) 10%, var(--bg-elevated));
4350
+ border-color: var(--accent);
4351
+ }
4352
+ .plan-choices__chip:active { transform: translateY(1px); }
4353
+ .plan-choices__chip--other {
4354
+ border-style: dashed;
4355
+ font-style: italic;
4356
+ }
4357
+ .plan-choices__chip.is-selected {
4358
+ background: color-mix(in srgb, var(--accent) 18%, var(--bg-elevated));
4359
+ border-color: var(--accent);
4360
+ color: var(--accent);
4361
+ }
4362
+ .plan-choices.is-disabled { opacity: 0.5; pointer-events: none; }
4363
+
4364
+ /* Plan pane — main window, full-height reading layout */
4365
+ .plan-pane {
4366
+ position: absolute;
4367
+ inset: 36px 0 0 0; /* below the view-toggle */
4368
+ display: flex;
4369
+ flex-direction: column;
4370
+ background: var(--bg);
4371
+ z-index: 2;
4372
+ }
4373
+ .plan-pane__scroll {
4374
+ flex: 1;
4375
+ overflow-y: auto;
4376
+ padding: 32px 48px 24px;
4377
+ display: flex;
4378
+ flex-direction: column;
4379
+ align-items: center;
4380
+ }
4381
+ .plan-pane__header {
4382
+ width: 100%;
4383
+ max-width: 720px;
4384
+ display: flex;
4385
+ align-items: center;
4386
+ justify-content: space-between;
4387
+ margin-bottom: 16px;
4388
+ padding-bottom: 12px;
4389
+ border-bottom: 1px solid var(--border);
4390
+ }
4391
+ .plan-pane__title {
4392
+ margin: 0;
4393
+ font-size: 18px;
4394
+ font-weight: 600;
4395
+ color: var(--text);
4396
+ }
4397
+ .plan-pane__header-actions { display: flex; gap: 8px; }
4398
+ .plan-pane__icon-btn {
4399
+ display: inline-flex;
4400
+ align-items: center;
4401
+ gap: 4px;
4402
+ padding: 4px 10px;
4403
+ font-size: 12px;
4404
+ font-weight: 500;
4405
+ background: transparent;
4406
+ color: var(--text-muted);
4407
+ border: 1px solid var(--border);
4408
+ border-radius: 6px;
4409
+ cursor: pointer;
4410
+ transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
4411
+ }
4412
+ .plan-pane__icon-btn:hover {
4413
+ background: var(--bg-elevated);
4414
+ color: var(--text);
4415
+ border-color: var(--text-muted);
4416
+ }
4417
+
4418
+ /* Plan content: rendered markdown */
4419
+ .plan-pane__content {
4420
+ width: 100%;
4421
+ max-width: 720px;
4422
+ font-size: 15px;
4423
+ line-height: 1.65;
4424
+ color: var(--text);
4425
+ }
4426
+ .plan-pane__content h1,
4427
+ .plan-pane__content h2,
4428
+ .plan-pane__content h3 {
4429
+ color: var(--text);
4430
+ font-weight: 600;
4431
+ line-height: 1.25;
4432
+ margin: 1.4em 0 0.5em;
4433
+ }
4434
+ .plan-pane__content h1 { font-size: 24px; }
4435
+ .plan-pane__content h2 { font-size: 19px; }
4436
+ .plan-pane__content h3 { font-size: 16px; }
4437
+ .plan-pane__content h1:first-child,
4438
+ .plan-pane__content h2:first-child { margin-top: 0; }
4439
+ .plan-pane__content p { margin: 0 0 1em; }
4440
+ .plan-pane__content ul,
4441
+ .plan-pane__content ol { margin: 0 0 1em; padding-left: 24px; }
4442
+ .plan-pane__content ul li,
4443
+ .plan-pane__content ol li { margin-bottom: 0.3em; }
4444
+ .plan-pane__content code {
4445
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
4446
+ font-size: 13px;
4447
+ background: var(--bg-elevated);
4448
+ border: 1px solid var(--border);
4449
+ border-radius: 4px;
4450
+ padding: 1px 6px;
4451
+ }
4452
+ .plan-pane__content pre {
4453
+ margin: 0 0 1em;
4454
+ padding: 12px 14px;
4455
+ background: var(--bg-elevated);
4456
+ border: 1px solid var(--border);
4457
+ border-radius: 8px;
4458
+ overflow-x: auto;
4459
+ }
4460
+ .plan-pane__content pre code {
4461
+ background: transparent;
4462
+ border: none;
4463
+ padding: 0;
4464
+ }
4465
+ .plan-pane__content blockquote {
4466
+ margin: 0 0 1em;
4467
+ padding: 4px 14px;
4468
+ border-left: 3px solid var(--accent);
4469
+ color: var(--text-muted);
4470
+ background: color-mix(in srgb, var(--accent) 6%, transparent);
4471
+ }
4472
+ .plan-pane__content table {
4473
+ width: 100%;
4474
+ border-collapse: collapse;
4475
+ margin: 0 0 1em;
4476
+ font-size: 14px;
4477
+ }
4478
+ .plan-pane__content th,
4479
+ .plan-pane__content td {
4480
+ padding: 8px 12px;
4481
+ border: 1px solid var(--border);
4482
+ text-align: left;
4483
+ }
4484
+ .plan-pane__content th { background: var(--bg-elevated); font-weight: 600; }
4485
+ .plan-pane__content a { color: var(--accent); text-decoration: underline; }
4486
+ .plan-pane__content hr {
4487
+ border: 0;
4488
+ border-top: 1px solid var(--border);
4489
+ margin: 1.5em 0;
4490
+ }
4491
+
4492
+ /* Empty state */
4493
+ .plan-pane__empty {
4494
+ text-align: center;
4495
+ color: var(--text-muted);
4496
+ padding: 48px 24px;
4497
+ }
4498
+ .plan-pane__empty p { margin: 0 0 8px; }
4499
+ .plan-pane__empty-hint { font-size: 13px; max-width: 480px; margin-left: auto; margin-right: auto; }
4500
+
4501
+ /* Inline editor */
4502
+ .plan-pane__editor {
4503
+ width: 100%;
4504
+ max-width: 720px;
4505
+ min-height: 360px;
4506
+ padding: 16px;
4507
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
4508
+ font-size: 13px;
4509
+ line-height: 1.6;
4510
+ color: var(--text);
4511
+ background: var(--bg-elevated);
4512
+ border: 1px solid var(--border);
4513
+ border-radius: 8px;
4514
+ resize: vertical;
4515
+ }
4516
+ .plan-pane__editor:focus { outline: none; border-color: var(--accent); }
4517
+
4518
+ /* Sticky footer with actions */
4519
+ .plan-pane__footer {
4520
+ display: flex;
4521
+ align-items: center;
4522
+ gap: 8px;
4523
+ padding: 12px 24px;
4524
+ background: var(--bg);
4525
+ border-top: 1px solid var(--border);
4526
+ }
4527
+ .plan-pane__footer-spacer { flex: 1; }
4528
+ .plan-pane__discard {
4529
+ font-size: 12px;
4530
+ opacity: 0.75;
4531
+ }
4532
+ .plan-pane__discard:hover { opacity: 1; color: var(--danger, #d43); }
4533
+ .plan-pane__approve { font-weight: 600; }