@q1travel/design-system 0.6.0 → 0.7.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.
@@ -6629,6 +6629,207 @@ a.q1-card:focus-visible {
6629
6629
  color: var(--q1-color-text-secondary);
6630
6630
  }
6631
6631
 
6632
+ /* Search Dialog:受控搜索弹层,输入框持有焦点并以 aria-activedescendant 导航结果。 */
6633
+ .search-dialog__trigger {
6634
+ display: inline-flex;
6635
+ }
6636
+ .search-dialog {
6637
+ position: fixed;
6638
+ inset: 0;
6639
+ z-index: 80;
6640
+ display: flex;
6641
+ align-items: flex-start;
6642
+ justify-content: center;
6643
+ padding: var(--q1-space-6) var(--q1-space-4);
6644
+ }
6645
+ .search-dialog__backdrop {
6646
+ position: absolute;
6647
+ inset: 0;
6648
+ border: 0;
6649
+ background: color-mix(in srgb, var(--q1-color-shadow) 45%, transparent);
6650
+ cursor: default;
6651
+ }
6652
+ .search-dialog__panel {
6653
+ position: relative;
6654
+ display: flex;
6655
+ flex-direction: column;
6656
+ width: min(640px, calc(100vw - 2 * var(--q1-space-4)));
6657
+ max-height: calc(100dvh - 2 * var(--q1-space-6));
6658
+ overflow: hidden;
6659
+ border: 1px solid var(--q1-color-border-overlay);
6660
+ border-radius: var(--q1-radius-4);
6661
+ background: var(--q1-color-bg-panel);
6662
+ box-shadow: var(--q1-shadow-modal);
6663
+ }
6664
+ .search-dialog__search {
6665
+ display: flex;
6666
+ flex: none;
6667
+ align-items: center;
6668
+ gap: var(--q1-space-3);
6669
+ padding: var(--q1-space-3) var(--q1-space-4);
6670
+ border-bottom: 1px solid var(--q1-color-border);
6671
+ }
6672
+ .search-dialog__field {
6673
+ display: flex;
6674
+ min-width: 0;
6675
+ min-height: 44px;
6676
+ flex: 1 1 auto;
6677
+ align-items: center;
6678
+ gap: var(--q1-space-2);
6679
+ padding-inline: var(--q1-space-3);
6680
+ border-radius: var(--q1-radius-2);
6681
+ color: var(--q1-color-text-secondary);
6682
+ }
6683
+ .search-dialog__field:has(.search-dialog__input:focus-visible) {
6684
+ box-shadow: var(--q1-shadow-focus);
6685
+ }
6686
+ .search-dialog__input {
6687
+ min-width: 0;
6688
+ min-height: 44px;
6689
+ flex: 1 1 auto;
6690
+ padding: 0;
6691
+ border: 0;
6692
+ background: transparent;
6693
+ color: var(--q1-color-text-primary);
6694
+ font: inherit;
6695
+ font-size: var(--q1-font-size-copy-16);
6696
+ }
6697
+ .search-dialog__input:focus-visible {
6698
+ outline: none;
6699
+ box-shadow: none;
6700
+ }
6701
+ .search-dialog__close {
6702
+ display: grid;
6703
+ width: 44px;
6704
+ height: 44px;
6705
+ flex: none;
6706
+ place-items: center;
6707
+ border: 0;
6708
+ border-radius: var(--q1-radius-2);
6709
+ background: transparent;
6710
+ color: var(--q1-color-text-secondary);
6711
+ cursor: pointer;
6712
+ transition: transform 120ms cubic-bezier(0.23, 1, 0.32, 1);
6713
+ }
6714
+ .search-dialog__close:hover {
6715
+ background: var(--q1-color-bg-subtle);
6716
+ color: var(--q1-color-text-primary);
6717
+ }
6718
+ .search-dialog__close:active,
6719
+ .search-dialog__clear:active {
6720
+ transform: scale(0.97);
6721
+ }
6722
+ .search-dialog__close:focus-visible,
6723
+ .search-dialog__clear:focus-visible,
6724
+ .search-dialog__option:focus-visible {
6725
+ outline: none;
6726
+ box-shadow: var(--q1-shadow-focus);
6727
+ }
6728
+ .search-dialog__body {
6729
+ min-height: 0;
6730
+ overflow-y: auto;
6731
+ overscroll-behavior: contain;
6732
+ padding: var(--q1-space-2);
6733
+ }
6734
+ .search-dialog__group + .search-dialog__group {
6735
+ margin-top: var(--q1-space-2);
6736
+ padding-top: var(--q1-space-2);
6737
+ border-top: 1px solid var(--q1-color-border);
6738
+ }
6739
+ .search-dialog__heading {
6740
+ padding: var(--q1-space-2) var(--q1-space-3);
6741
+ color: var(--q1-color-text-secondary);
6742
+ font-size: var(--q1-font-size-label-13);
6743
+ font-weight: var(--q1-font-weight-semibold);
6744
+ line-height: var(--q1-line-height-label-13);
6745
+ }
6746
+ .search-dialog__option {
6747
+ display: flex;
6748
+ width: 100%;
6749
+ min-height: 44px;
6750
+ flex-direction: column;
6751
+ justify-content: center;
6752
+ gap: 0;
6753
+ padding: var(--q1-space-1) var(--q1-space-3);
6754
+ border: 0;
6755
+ border-radius: var(--q1-radius-2);
6756
+ background: transparent;
6757
+ color: var(--q1-color-text-primary);
6758
+ font: inherit;
6759
+ text-align: left;
6760
+ cursor: pointer;
6761
+ }
6762
+ .search-dialog__option--active {
6763
+ background: var(--q1-color-bg-subtle);
6764
+ }
6765
+ @media (hover: hover) and (pointer: fine) {
6766
+ .search-dialog__option:hover {
6767
+ background: var(--q1-color-bg-subtle);
6768
+ }
6769
+ }
6770
+ .search-dialog__option--disabled {
6771
+ color: var(--q1-color-text-muted);
6772
+ cursor: not-allowed;
6773
+ opacity: 0.65;
6774
+ }
6775
+ .search-dialog__option-label {
6776
+ font-size: var(--q1-font-size-copy-14);
6777
+ font-weight: var(--q1-font-weight-medium);
6778
+ line-height: var(--q1-line-height-copy-14);
6779
+ }
6780
+ .search-dialog__option-description {
6781
+ color: var(--q1-color-text-secondary);
6782
+ font-size: var(--q1-font-size-label-13);
6783
+ line-height: var(--q1-line-height-label-13);
6784
+ }
6785
+ .search-dialog__empty {
6786
+ display: grid;
6787
+ justify-items: center;
6788
+ gap: var(--q1-space-4);
6789
+ padding: var(--q1-space-8) var(--q1-space-4);
6790
+ color: var(--q1-color-text-secondary);
6791
+ text-align: center;
6792
+ }
6793
+ .search-dialog__empty p {
6794
+ margin: 0;
6795
+ }
6796
+ .search-dialog__clear {
6797
+ min-height: 44px;
6798
+ padding: var(--q1-space-2) var(--q1-space-4);
6799
+ border: 1px solid var(--q1-color-border-strong);
6800
+ border-radius: var(--q1-radius-2);
6801
+ background: var(--q1-color-bg-panel);
6802
+ color: var(--q1-color-action-primary);
6803
+ font: inherit;
6804
+ cursor: pointer;
6805
+ transition: transform 120ms cubic-bezier(0.23, 1, 0.32, 1);
6806
+ }
6807
+ .search-dialog__clear:hover {
6808
+ background: var(--q1-color-bg-subtle);
6809
+ }
6810
+ @media (max-width: 480px) {
6811
+ .search-dialog {
6812
+ padding: var(--q1-space-4);
6813
+ }
6814
+ .search-dialog__panel {
6815
+ max-height: calc(100dvh - 2 * var(--q1-space-4));
6816
+ }
6817
+ .search-dialog__trigger-control {
6818
+ min-width: 44px;
6819
+ min-height: 44px;
6820
+ }
6821
+ }
6822
+ @media (prefers-reduced-motion: reduce) {
6823
+ .search-dialog,
6824
+ .search-dialog__panel,
6825
+ .search-dialog__close,
6826
+ .search-dialog__clear {
6827
+ animation: none;
6828
+ transition: none;
6829
+ transform: none;
6830
+ }
6831
+ }
6832
+
6632
6833
  /* Modal 模态框:阻断页面的对话框 */
6633
6834
  .modal-btn {
6634
6835
  padding: var(--q1-space-2) var(--q1-space-4);
@@ -7378,6 +7579,45 @@ a.q1-navigation__item[aria-disabled='true'] {
7378
7579
  padding-inline-start: var(--q1-space-6);
7379
7580
  }
7380
7581
 
7582
+ .q1-navigation--horizontal {
7583
+ --q1-navigation-row-min-height: 44px;
7584
+
7585
+ display: flex;
7586
+ align-items: center;
7587
+ gap: var(--q1-space-1);
7588
+ width: 100%;
7589
+ overflow-x: auto;
7590
+ overscroll-behavior-inline: contain;
7591
+ }
7592
+
7593
+ .q1-navigation--horizontal > .q1-navigation__item-row {
7594
+ flex: none;
7595
+ }
7596
+
7597
+ .q1-navigation--horizontal .q1-navigation__item {
7598
+ flex: none;
7599
+ padding-inline: var(--q1-space-2);
7600
+ color: var(--q1-color-text-secondary);
7601
+ transition:
7602
+ color 120ms cubic-bezier(0.23, 1, 0.32, 1),
7603
+ background-color 120ms cubic-bezier(0.23, 1, 0.32, 1);
7604
+ }
7605
+
7606
+ .q1-navigation--horizontal .q1-navigation__item--active {
7607
+ color: var(--q1-color-action-primary);
7608
+ }
7609
+
7610
+ @media (hover: hover) and (pointer: fine) {
7611
+ .q1-navigation--horizontal .q1-navigation__item:hover:not([aria-disabled='true']):not(:disabled) {
7612
+ color: var(--q1-color-text-primary);
7613
+ background: var(--q1-color-bg-subtle);
7614
+ }
7615
+
7616
+ .q1-navigation--horizontal .q1-navigation__item--active:hover:not([aria-disabled='true']):not(:disabled) {
7617
+ color: var(--q1-color-action-primary);
7618
+ }
7619
+ }
7620
+
7381
7621
  @media (pointer: coarse) {
7382
7622
  .q1-navigation {
7383
7623
  --q1-navigation-row-min-height: 44px;
@@ -7395,7 +7635,8 @@ a.q1-navigation__item[aria-disabled='true'] {
7395
7635
  }
7396
7636
 
7397
7637
  @media (prefers-reduced-motion: reduce) {
7398
- .q1-navigation__group-chevron {
7638
+ .q1-navigation__group-chevron,
7639
+ .q1-navigation--horizontal .q1-navigation__item {
7399
7640
  transition: none;
7400
7641
  }
7401
7642
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q1travel/design-system",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist-pkg/design-system.js",