@q1travel/design-system 0.5.0 → 0.6.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.
@@ -206,6 +206,7 @@
206
206
  在组件内自持。恒黑 shadow token 混色,暗色靠 --q1-color-border-overlay 发丝边保证清晰度。 */
207
207
  --q1-shadow-popover: 0 8px 28px color-mix(in srgb, var(--q1-color-shadow) 16%, transparent);
208
208
  --q1-shadow-modal: 0 16px 48px color-mix(in srgb, var(--q1-color-shadow) 32%, transparent);
209
+ --q1-z-popover: 1200;
209
210
  }
210
211
 
211
212
  :root[data-theme='dark'] {
@@ -7165,3 +7166,434 @@ a.q1-card:focus-visible {
7165
7166
  outline: none;
7166
7167
  box-shadow: var(--q1-shadow-focus);
7167
7168
  }
7169
+
7170
+ .q1-sidebar {
7171
+ display: flex;
7172
+ min-width: 0;
7173
+ min-height: 100%;
7174
+ flex-direction: column;
7175
+ border-inline-end: 1px solid var(--q1-color-border);
7176
+ background: var(--q1-color-bg-panel);
7177
+ color: var(--q1-color-text-primary);
7178
+ }
7179
+
7180
+ .q1-sidebar__header,
7181
+ .q1-sidebar__footer {
7182
+ flex: none;
7183
+ }
7184
+
7185
+ .q1-sidebar__content {
7186
+ min-height: 0;
7187
+ flex: 1 1 auto;
7188
+ overflow-y: auto;
7189
+ }
7190
+
7191
+ .q1-navigation {
7192
+ --q1-navigation-row-min-height: var(--q1-space-8);
7193
+ --q1-navigation-chevron-transition: transform 160ms ease;
7194
+
7195
+ display: grid;
7196
+ gap: var(--q1-space-6);
7197
+ color: var(--q1-color-text-primary);
7198
+ font-size: var(--q1-font-size-label-14);
7199
+ font-weight: var(--q1-font-weight-regular);
7200
+ line-height: var(--q1-line-height-label-14);
7201
+ }
7202
+
7203
+ .q1-navigation__section {
7204
+ min-width: 0;
7205
+ }
7206
+
7207
+ .q1-navigation__section-header {
7208
+ display: flex;
7209
+ align-items: center;
7210
+ justify-content: space-between;
7211
+ gap: var(--q1-space-3);
7212
+ min-height: var(--q1-navigation-row-min-height);
7213
+ padding: 0 var(--q1-space-2);
7214
+ }
7215
+
7216
+ .q1-navigation__section-heading {
7217
+ margin: 0;
7218
+ color: var(--q1-color-text-secondary);
7219
+ font-size: var(--q1-font-size-label-13);
7220
+ font-weight: var(--q1-font-weight-semibold);
7221
+ line-height: var(--q1-line-height-label-13);
7222
+ }
7223
+
7224
+ .q1-navigation__section-action {
7225
+ display: inline-flex;
7226
+ flex: none;
7227
+ align-items: center;
7228
+ }
7229
+
7230
+ .q1-navigation__section-content {
7231
+ display: grid;
7232
+ gap: var(--q1-space-1);
7233
+ }
7234
+
7235
+ .q1-navigation__item-row {
7236
+ display: flex;
7237
+ align-items: center;
7238
+ gap: var(--q1-space-1);
7239
+ min-width: 0;
7240
+ }
7241
+
7242
+ .q1-navigation__item {
7243
+ display: flex;
7244
+ flex: 1 1 auto;
7245
+ align-items: center;
7246
+ gap: var(--q1-space-2);
7247
+ min-width: 0;
7248
+ min-height: var(--q1-navigation-row-min-height);
7249
+ border: 0;
7250
+ border-radius: var(--q1-radius-2);
7251
+ background: none;
7252
+ padding: 0 var(--q1-space-2);
7253
+ color: var(--q1-color-text-primary);
7254
+ font: inherit;
7255
+ text-align: start;
7256
+ text-decoration: none;
7257
+ }
7258
+
7259
+ a.q1-navigation__item:not([aria-disabled='true']),
7260
+ button.q1-navigation__item:not(:disabled),
7261
+ .q1-navigation__group-trigger {
7262
+ cursor: pointer;
7263
+ }
7264
+
7265
+ .q1-navigation__item:hover:not([aria-disabled='true']):not(:disabled),
7266
+ .q1-navigation__group-trigger:hover {
7267
+ background: var(--q1-color-bg-subtle);
7268
+ }
7269
+
7270
+ .q1-navigation__item:focus-visible,
7271
+ .q1-navigation__group-trigger:focus-visible {
7272
+ outline: none;
7273
+ box-shadow: var(--q1-shadow-focus);
7274
+ }
7275
+
7276
+ .q1-navigation__item--active {
7277
+ color: var(--q1-color-action-primary);
7278
+ font-weight: var(--q1-font-weight-semibold);
7279
+ }
7280
+
7281
+ .q1-navigation__item--disabled {
7282
+ color: var(--q1-color-text-muted);
7283
+ cursor: not-allowed;
7284
+ }
7285
+
7286
+ a.q1-navigation__item[aria-disabled='true'] {
7287
+ pointer-events: none;
7288
+ }
7289
+
7290
+ .q1-navigation__item-icon,
7291
+ .q1-navigation__item-badge,
7292
+ .q1-navigation__item-action,
7293
+ .q1-navigation__group-icon {
7294
+ display: inline-flex;
7295
+ flex: none;
7296
+ align-items: center;
7297
+ justify-content: center;
7298
+ }
7299
+
7300
+ .q1-navigation__item-icon {
7301
+ color: currentColor;
7302
+ }
7303
+
7304
+ .q1-navigation__group-icon {
7305
+ color: var(--q1-color-text-secondary);
7306
+ }
7307
+
7308
+ .q1-navigation__item-content {
7309
+ display: grid;
7310
+ flex: 1 1 auto;
7311
+ min-width: 0;
7312
+ }
7313
+
7314
+ .q1-navigation__item-label,
7315
+ .q1-navigation__item-description {
7316
+ overflow: hidden;
7317
+ text-overflow: ellipsis;
7318
+ white-space: nowrap;
7319
+ }
7320
+
7321
+ .q1-navigation__item-description {
7322
+ color: var(--q1-color-text-secondary);
7323
+ font-size: var(--q1-font-size-label-13);
7324
+ font-weight: var(--q1-font-weight-regular);
7325
+ line-height: var(--q1-line-height-label-13);
7326
+ }
7327
+
7328
+ .q1-navigation__item-action {
7329
+ opacity: 0;
7330
+ pointer-events: none;
7331
+ }
7332
+
7333
+ .q1-navigation__item-row:hover .q1-navigation__item-action,
7334
+ .q1-navigation__item-row:focus-within .q1-navigation__item-action {
7335
+ opacity: 1;
7336
+ pointer-events: auto;
7337
+ }
7338
+
7339
+ .q1-navigation__group {
7340
+ display: grid;
7341
+ gap: var(--q1-space-1);
7342
+ }
7343
+
7344
+ .q1-navigation__group-trigger {
7345
+ display: flex;
7346
+ align-items: center;
7347
+ gap: var(--q1-space-2);
7348
+ min-height: var(--q1-navigation-row-min-height);
7349
+ border: 0;
7350
+ border-radius: var(--q1-radius-2);
7351
+ background: none;
7352
+ padding: 0 var(--q1-space-2);
7353
+ color: var(--q1-color-text-primary);
7354
+ font: inherit;
7355
+ text-align: start;
7356
+ }
7357
+
7358
+ .q1-navigation__group-label {
7359
+ flex: 1 1 auto;
7360
+ min-width: 0;
7361
+ overflow: hidden;
7362
+ text-overflow: ellipsis;
7363
+ white-space: nowrap;
7364
+ }
7365
+
7366
+ .q1-navigation__group-chevron {
7367
+ flex: none;
7368
+ transition: var(--q1-navigation-chevron-transition);
7369
+ }
7370
+
7371
+ .q1-navigation__group-trigger[aria-expanded='true'] .q1-navigation__group-chevron {
7372
+ transform: rotate(90deg);
7373
+ }
7374
+
7375
+ .q1-navigation__group-content {
7376
+ display: grid;
7377
+ gap: var(--q1-space-1);
7378
+ padding-inline-start: var(--q1-space-6);
7379
+ }
7380
+
7381
+ @media (pointer: coarse) {
7382
+ .q1-navigation {
7383
+ --q1-navigation-row-min-height: 44px;
7384
+ }
7385
+
7386
+ .q1-navigation__item-action {
7387
+ opacity: 1;
7388
+ pointer-events: auto;
7389
+ }
7390
+
7391
+ .q1-navigation__item-action > :is(a, button, [role='button']) {
7392
+ min-width: 44px;
7393
+ min-height: 44px;
7394
+ }
7395
+ }
7396
+
7397
+ @media (prefers-reduced-motion: reduce) {
7398
+ .q1-navigation__group-chevron {
7399
+ transition: none;
7400
+ }
7401
+ }
7402
+
7403
+ .q1-context-switcher {
7404
+ min-width: 0;
7405
+ }
7406
+
7407
+ .q1-context-switcher__trigger {
7408
+ display: flex;
7409
+ width: 100%;
7410
+ min-width: 0;
7411
+ min-height: 44px;
7412
+ align-items: center;
7413
+ gap: var(--q1-space-2);
7414
+ border: 1px solid var(--q1-color-border);
7415
+ border-radius: var(--q1-radius-3);
7416
+ background: var(--q1-color-bg-panel);
7417
+ padding: var(--q1-space-2) var(--q1-space-3);
7418
+ color: var(--q1-color-text-primary);
7419
+ font: inherit;
7420
+ text-align: start;
7421
+ cursor: pointer;
7422
+ }
7423
+
7424
+ .q1-context-switcher__trigger:hover,
7425
+ .q1-context-switcher__trigger[aria-expanded='true'] {
7426
+ background: var(--q1-color-bg-subtle);
7427
+ border-color: var(--q1-color-border-strong);
7428
+ }
7429
+
7430
+ .q1-context-switcher__trigger:focus-visible,
7431
+ .q1-context-switcher__popup:focus-visible,
7432
+ .q1-context-switcher__item:focus-visible,
7433
+ .q1-context-switcher__action:focus-visible {
7434
+ outline: none;
7435
+ box-shadow: var(--q1-shadow-focus);
7436
+ }
7437
+
7438
+ .q1-context-switcher__current,
7439
+ .q1-context-switcher__item-content {
7440
+ display: grid;
7441
+ flex: 1 1 auto;
7442
+ min-width: 0;
7443
+ }
7444
+
7445
+ .q1-context-switcher__current-label,
7446
+ .q1-context-switcher__item-label,
7447
+ .q1-context-switcher__description {
7448
+ overflow: hidden;
7449
+ text-overflow: ellipsis;
7450
+ white-space: nowrap;
7451
+ }
7452
+
7453
+ .q1-context-switcher__current-label,
7454
+ .q1-context-switcher__item-label {
7455
+ color: var(--q1-color-text-primary);
7456
+ font-size: var(--q1-font-size-label-14);
7457
+ font-weight: var(--q1-font-weight-medium);
7458
+ line-height: var(--q1-line-height-label-14);
7459
+ }
7460
+
7461
+ .q1-context-switcher__description {
7462
+ color: var(--q1-color-text-secondary);
7463
+ font-size: var(--q1-font-size-label-13);
7464
+ font-weight: var(--q1-font-weight-regular);
7465
+ line-height: var(--q1-line-height-label-13);
7466
+ }
7467
+
7468
+ .q1-context-switcher__avatar,
7469
+ .q1-context-switcher__chevron,
7470
+ .q1-context-switcher__check,
7471
+ .q1-context-switcher__pending,
7472
+ .q1-context-switcher__action-icon {
7473
+ display: inline-flex;
7474
+ flex: none;
7475
+ align-items: center;
7476
+ justify-content: center;
7477
+ }
7478
+
7479
+ .q1-context-switcher__chevron {
7480
+ color: var(--q1-color-text-muted);
7481
+ transition: transform 160ms ease;
7482
+ }
7483
+
7484
+ .q1-context-switcher__trigger[aria-expanded='true'] .q1-context-switcher__chevron {
7485
+ transform: rotate(180deg);
7486
+ }
7487
+
7488
+ .q1-context-switcher__popup {
7489
+ position: fixed;
7490
+ z-index: var(--q1-z-popover);
7491
+ display: grid;
7492
+ width: min(20rem, calc(100vw - var(--q1-space-4)));
7493
+ max-height: calc(100vh - var(--q1-space-4));
7494
+ overflow: hidden;
7495
+ border: 1px solid var(--q1-color-border-overlay);
7496
+ border-radius: var(--q1-radius-3);
7497
+ background: var(--q1-color-bg-panel);
7498
+ color: var(--q1-color-text-primary);
7499
+ box-shadow: var(--q1-shadow-popover);
7500
+ }
7501
+
7502
+ .q1-context-switcher__groups {
7503
+ min-height: 0;
7504
+ overflow-y: auto;
7505
+ overscroll-behavior: contain;
7506
+ padding: var(--q1-space-2);
7507
+ }
7508
+
7509
+ .q1-context-switcher__group + .q1-context-switcher__group {
7510
+ margin-top: var(--q1-space-2);
7511
+ padding-top: var(--q1-space-2);
7512
+ border-top: 1px solid var(--q1-color-border);
7513
+ }
7514
+
7515
+ .q1-context-switcher__group-label {
7516
+ padding: var(--q1-space-1) var(--q1-space-2);
7517
+ color: var(--q1-color-text-muted);
7518
+ font-size: var(--q1-font-size-label-13);
7519
+ font-weight: var(--q1-font-weight-semibold);
7520
+ line-height: var(--q1-line-height-label-13);
7521
+ overflow: hidden;
7522
+ text-overflow: ellipsis;
7523
+ white-space: nowrap;
7524
+ }
7525
+
7526
+ .q1-context-switcher__item,
7527
+ .q1-context-switcher__action {
7528
+ display: flex;
7529
+ width: 100%;
7530
+ min-width: 0;
7531
+ min-height: 44px;
7532
+ align-items: center;
7533
+ gap: var(--q1-space-2);
7534
+ border: 0;
7535
+ border-radius: var(--q1-radius-2);
7536
+ background: transparent;
7537
+ padding: var(--q1-space-2);
7538
+ color: var(--q1-color-text-primary);
7539
+ font: inherit;
7540
+ text-align: start;
7541
+ }
7542
+
7543
+ .q1-context-switcher__item:not([aria-disabled='true']),
7544
+ .q1-context-switcher__action:not(:disabled) {
7545
+ cursor: pointer;
7546
+ }
7547
+
7548
+ .q1-context-switcher__item:hover:not([aria-disabled='true']),
7549
+ .q1-context-switcher__action:hover:not(:disabled),
7550
+ .q1-context-switcher__item:focus-visible,
7551
+ .q1-context-switcher__action:focus-visible {
7552
+ background: var(--q1-color-bg-subtle);
7553
+ }
7554
+
7555
+ .q1-context-switcher__item[aria-disabled='true'],
7556
+ .q1-context-switcher__action:disabled {
7557
+ color: var(--q1-color-text-muted);
7558
+ cursor: not-allowed;
7559
+ opacity: 0.64;
7560
+ }
7561
+
7562
+ .q1-context-switcher__item[aria-checked='true'] .q1-context-switcher__item-label,
7563
+ .q1-context-switcher__check {
7564
+ color: var(--q1-color-action-primary);
7565
+ }
7566
+
7567
+ .q1-context-switcher__pending {
7568
+ color: var(--q1-color-text-secondary);
7569
+ animation: q1-context-switcher-spin 800ms linear infinite;
7570
+ }
7571
+
7572
+ .q1-context-switcher__error {
7573
+ margin: 0 var(--q1-space-2) var(--q1-space-2);
7574
+ border-radius: var(--q1-radius-2);
7575
+ background: color-mix(in srgb, var(--q1-color-status-danger) 10%, transparent);
7576
+ padding: var(--q1-space-2) var(--q1-space-3);
7577
+ color: var(--q1-color-status-danger);
7578
+ font-size: var(--q1-font-size-label-13);
7579
+ line-height: var(--q1-line-height-label-13);
7580
+ }
7581
+
7582
+ .q1-context-switcher__footer {
7583
+ border-top: 1px solid var(--q1-color-border);
7584
+ padding: var(--q1-space-2);
7585
+ }
7586
+
7587
+ @keyframes q1-context-switcher-spin {
7588
+ to { transform: rotate(360deg); }
7589
+ }
7590
+
7591
+ @media (prefers-reduced-motion: reduce) {
7592
+ .q1-context-switcher__chevron {
7593
+ transition: none;
7594
+ }
7595
+
7596
+ .q1-context-switcher__pending {
7597
+ animation: none;
7598
+ }
7599
+ }
@@ -200,6 +200,7 @@
200
200
  --q1-shadow-focus: 0 0 0 3px color-mix(in srgb, var(--q1-color-primary-700) 22%, transparent);
201
201
  --q1-shadow-popover: 0 8px 28px color-mix(in srgb, var(--q1-color-shadow) 16%, transparent);
202
202
  --q1-shadow-modal: 0 16px 48px color-mix(in srgb, var(--q1-color-shadow) 32%, transparent);
203
+ --q1-z-popover: 1200;
203
204
  }
204
205
 
205
206
  :root[data-theme='dark'] {
@@ -404,4 +405,5 @@
404
405
  --q1-shadow-focus: 0 0 0 3px color-mix(in srgb, var(--q1-color-primary-700) 22%, transparent);
405
406
  --q1-shadow-popover: 0 8px 28px color-mix(in srgb, var(--q1-color-shadow) 16%, transparent);
406
407
  --q1-shadow-modal: 0 16px 48px color-mix(in srgb, var(--q1-color-shadow) 32%, transparent);
408
+ --q1-z-popover: 1200;
407
409
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q1travel/design-system",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist-pkg/design-system.js",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "files": [
23
23
  "dist-pkg",
24
- "contracts",
24
+ "contracts/*.md",
25
25
  ".agents",
26
26
  "tooling",
27
27
  "bin"
@@ -34,10 +34,11 @@
34
34
  "sync:contracts": "node scripts/sync-design-contracts.mjs",
35
35
  "build": "npm run sync:contracts && tsc -b && vite build",
36
36
  "preview": "vite preview --host 127.0.0.1",
37
- "check:shell": "npm run sync:contracts && node scripts/check-shell.mjs && node scripts/check-token-package.mjs",
37
+ "check:shell": "npm run sync:contracts && node scripts/check-shell.mjs && node scripts/check-token-package.mjs && npm run check:release-provenance",
38
38
  "check:browser:strictmode": "node scripts/check-browser.mjs --strictmode-ref",
39
39
  "check:browser": "npm run check:browser:strictmode && node scripts/check-browser.mjs",
40
40
  "check:package-api": "node scripts/check-package-api.mjs",
41
+ "check:release-provenance": "node --test scripts/check-release-provenance.test.mjs && node scripts/check-release-provenance.mjs",
41
42
  "check": "npm run build && npm run check:shell && npm run check:browser",
42
43
  "build:lib": "vite build --config vite.lib.config.ts",
43
44
  "build:style": "node scripts/build-style.mjs",