@genexus/mercury 0.9.17 → 0.10.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/dist/mercury.scss CHANGED
@@ -3958,6 +3958,9 @@
3958
3958
 
3959
3959
  @mixin chat($chat-selector: ".chat") {
3960
3960
  #{$chat-selector} {
3961
+ --button-block-size: 31px;
3962
+ --button-margin-block: 16px;
3963
+
3961
3964
  &::part(content) {
3962
3965
  gap: 6px;
3963
3966
  }
@@ -4064,6 +4067,11 @@
4064
4067
  }
4065
4068
  }
4066
4069
 
4070
+ &::part(message__processing) {
4071
+ color: var(--mer-text__on-surface);
4072
+ font-size: var(--mer-font__size--2xs);
4073
+ }
4074
+
4067
4075
  @include input(
4068
4076
  $selector: "&::part(send-input)",
4069
4077
  $add--disabled: false,
@@ -4071,14 +4079,39 @@
4071
4079
  $add--error: false
4072
4080
  );
4073
4081
 
4082
+ &::part(stop-generating-answer-button) {
4083
+ border-radius: var(--control__border-radius);
4084
+ border: 1px solid var(--mer-border-color__neutral);
4085
+ color: var(--control__border-style);
4086
+ font-size: var(--control__font-size--regular);
4087
+ inline-size: 100%;
4088
+ justify-content: center;
4089
+ line-height: var(--control__line-height);
4090
+ padding-block: var(--control__padding-block);
4091
+ padding-inline: var(--control__padding-inline);
4092
+ transform: translateY(calc(var(--button-margin-block) / 2));
4093
+ }
4094
+ &::part(stop-generating-answer-button):hover {
4095
+ border-color: var(--mer-border-color__primary--hover);
4096
+ color: var(--mer-text__primary--hover);
4097
+ }
4098
+ &::part(stop-generating-answer-button):active {
4099
+ border-color: var(--mer-border-color__primary--active);
4100
+ color: var(--mer-text__on-primary--active);
4101
+ }
4102
+
4074
4103
  &::part(send-input) {
4075
4104
  background-color: var(--mer-color__neutral-gray--900);
4076
4105
  border-color: var(--mer-color__neutral-gray--900);
4077
4106
  --control__padding-block: 10px;
4107
+
4108
+ background-color: var(--mer-surface__elevation--01) !important;
4078
4109
  }
4079
4110
 
4080
4111
  &::part(send-input-wrapper) {
4081
- margin-block-start: 14px;
4112
+ margin-block-start: calc(
4113
+ var(--button-block-size) + var(--button-margin-block)
4114
+ );
4082
4115
  }
4083
4116
  }
4084
4117
  }
@@ -5428,45 +5461,183 @@
5428
5461
  }
5429
5462
 
5430
5463
  %flexible-layout {
5431
- --ch-tab-close-button__background-image-size: var(--mer-icon__size--md);
5432
- --ch-tab-close-button__image-size: var(--mer-icon__box--md);
5464
+ --flexible-layout--tab-list-block__background-color: var(
5465
+ --mer-surface__elevation--01
5466
+ );
5467
+ --flexible-layout--tab-list-inline__background-color: var(
5468
+ --mer-surface__elevation--02
5469
+ );
5433
5470
 
5434
- --spacing-body-block-start: var(--mer-spacing--md);
5435
- --spacing-body-block-end: var(--mer-spacing--md);
5436
- --spacing-body-inline-start: var(--mer-spacing--md);
5437
- --spacing-body-inline-end: var(--mer-spacing--md);
5471
+ --flexible-layout--tab-list-inline__inline-size: 48px;
5438
5472
 
5439
- &-tab-caption {
5440
- background-color: color-mix(
5441
- in srgb,
5442
- var(--colors-foundation__gray--300) 20%,
5443
- transparent
5473
+ --flexible-layout--tab-button-block-start__background-color: var(
5474
+ --flexible-layout--tab-list-block__background-color
5475
+ );
5476
+ --flexible-layout--tab-button-block-end__background-color: var(
5477
+ --flexible-layout--tab-list-block__background-color
5478
+ );
5479
+
5480
+ --flexible-layout--tab-button-inline-start__background-color: var(
5481
+ --flexible-layout--tab-list-inline__background-color
5482
+ );
5483
+ --flexible-layout--tab-button-inline-end__background-color: var(
5484
+ --flexible-layout--tab-list-inline__background-color
5485
+ );
5486
+
5487
+ --flexible-layout--tab-button-block-start__background-color--selected: var(
5488
+ --mer-surface
5489
+ );
5490
+ --flexible-layout--tab-button-block-end__background-color--selected: var(
5491
+ --mer-surface
5492
+ );
5493
+
5494
+ &-tab {
5495
+ --ch-tab-close-button__background-image-size: var(--mer-icon__size--md);
5496
+ --ch-tab-close-button__image-size: 16px; // TODO: Use a token
5497
+
5498
+ --spacing-body-block-start: var(--mer-spacing--md);
5499
+ --spacing-body-block-end: var(--mer-spacing--md);
5500
+ --spacing-body-inline-start: var(--mer-spacing--md);
5501
+ --spacing-body-inline-end: var(--mer-spacing--md);
5502
+ }
5503
+
5504
+ &-tab-button-block {
5505
+ @include tab-button-colors-enabled();
5506
+ @include tab-button-font();
5507
+ @include tab-button-gap();
5508
+
5509
+ padding-inline: var(--tab-caption__padding-inline);
5510
+
5511
+ // Due to border-block-width: 1px;
5512
+ padding-block: calc(var(--tab-caption__padding-block) - 1px);
5513
+
5514
+ border-block: 1px solid transparent;
5515
+ }
5516
+
5517
+ &-tab-button-inline {
5518
+ @include tab-button-colors-enabled();
5519
+ @include tab-button-font();
5520
+ @include tab-button-gap();
5521
+
5522
+ padding-block: var(--tab-caption__padding-block);
5523
+
5524
+ // Due to border-inline-width: 1px;
5525
+ padding-inline: calc(var(--tab-caption__padding-inline) - 1px);
5526
+
5527
+ border-inline: 1px solid transparent;
5528
+ }
5529
+
5530
+ // Block Start
5531
+ &-tab-button-block-start {
5532
+ background-color: var(
5533
+ --flexible-layout--tab-button-block-start__background-color
5444
5534
  );
5535
+ }
5445
5536
 
5446
- &--selected {
5447
- background-color: color-mix(
5448
- in srgb,
5449
- var(--colors-foundation__gray--300) 50%,
5450
- transparent
5451
- );
5452
- }
5537
+ &-tab-button-block-start--hover {
5538
+ @include tab-button-colors-hover();
5539
+ }
5540
+
5541
+ &-tab-button-block-start--active {
5542
+ @include tab-button-colors-hover();
5543
+ }
5544
+
5545
+ &-tab-button-block-start--selected {
5546
+ border-block-start-color: var(--mer-accent__primary);
5547
+ background-color: var(
5548
+ --flexible-layout--tab-button-block-start__background-color--selected
5549
+ );
5550
+ }
5551
+
5552
+ // Block End
5553
+ &-tab-button-block-end {
5554
+ background-color: var(
5555
+ --flexible-layout--tab-button-block-end__background-color
5556
+ );
5557
+ }
5558
+
5559
+ &-tab-button-block-end--hover {
5560
+ @include tab-button-colors-hover();
5561
+ }
5562
+
5563
+ &-tab-button-block-end--active {
5564
+ @include tab-button-colors-hover();
5565
+ }
5566
+
5567
+ &-tab-button-block-end--selected {
5568
+ border-block-end-color: var(--mer-accent__primary);
5569
+ background-color: var(
5570
+ --flexible-layout--tab-button-block-end__background-color--selected
5571
+ );
5572
+ }
5573
+
5574
+ // Inline Start
5575
+ &-tab-button-inline-start {
5576
+ background-color: var(
5577
+ --flexible-layout--tab-button-inline-start__background-color
5578
+ );
5579
+ inline-size: var(--flexible-layout--tab-list-inline__inline-size);
5580
+ }
5581
+
5582
+ &-tab-button-inline-start--hover {
5583
+ @include tab-button-colors-hover();
5584
+ }
5585
+
5586
+ &-tab-button-inline-start--active {
5587
+ @include tab-button-colors-hover();
5588
+ }
5589
+
5590
+ &-tab-button-inline-start--selected {
5591
+ border-inline-start-color: var(--mer-accent__primary);
5592
+ color: var(--mer-accent__primary);
5593
+ }
5594
+
5595
+ // Inline End
5596
+ &-tab-button-inline-end {
5597
+ background-color: var(
5598
+ --flexible-layout--tab-button-inline-end__background-color
5599
+ );
5600
+ inline-size: var(--flexible-layout--tab-list-inline__inline-size);
5601
+ }
5602
+
5603
+ &-tab-button-inline-end--hover {
5604
+ @include tab-button-colors-hover();
5605
+ }
5606
+
5607
+ &-tab-button-inline-end--active {
5608
+ @include tab-button-colors-hover();
5609
+ }
5610
+
5611
+ &-tab-button-inline-end--selected {
5612
+ border-inline-end-color: var(--mer-accent__primary);
5613
+ color: var(--mer-accent__primary);
5614
+ }
5615
+
5616
+ // Disabled
5617
+ &-tab-button--disabled {
5618
+ @include tab-button-colors-disabled();
5453
5619
  }
5454
5620
 
5455
5621
  &-tab-list--inline {
5456
- background-color: var(--mer-color__neutral-gray--600);
5457
- inline-size: 48px;
5622
+ background-color: var(--flexible-layout--tab-list-inline__background-color);
5623
+ inline-size: var(--flexible-layout--tab-list-inline__inline-size);
5458
5624
  gap: 4px;
5459
5625
  }
5460
5626
 
5461
5627
  &-tab-list--block {
5462
- background-color: var(--mer-color__neutral-gray--650);
5628
+ background-color: var(--flexible-layout--tab-list-block__background-color);
5463
5629
  overflow: auto;
5464
5630
  }
5465
5631
 
5632
+ // Disabled
5633
+ &-tab-button--disabled {
5634
+ @include tab-button-colors-disabled();
5635
+ }
5636
+
5466
5637
  &-droppable-area {
5467
5638
  background-color: color-mix(
5468
5639
  in srgb,
5469
- var(--accents__secondary--hover) 25%,
5640
+ var(--mer-accent__primary) 25%,
5470
5641
  transparent
5471
5642
  );
5472
5643
  }
@@ -5478,48 +5649,194 @@
5478
5649
 
5479
5650
  @mixin flexible-layout(
5480
5651
  $flexible-layout-selector: ".flexible-layout",
5481
- $flexible-layout__bar-selector: ".flexible-layout::part(bar)",
5482
5652
  $tab-selector: ".flexible-layout::part(leaf)",
5483
- $tab-caption-selector: ".flexible-layout::part(button)",
5484
- $tab-caption--block-selector: ".flexible-layout::part(button block)",
5485
- $tab-caption--inline-selector: ".flexible-layout::part(button inline)",
5486
- $tab-caption--selected-selector: ".flexible-layout::part(button selected)",
5487
- $tab-caption--disabled-selector: ".flexible-layout::part(button disabled)",
5488
- $tab-caption__close-button-selector: ".flexible-layout::part(close-button)",
5653
+
5654
+ $tab-button-block-start-selector: ".flexible-layout::part(tab block-start)",
5655
+ $tab-button-block-start--selected-selector:
5656
+ ".flexible-layout::part(tab block-start selected)",
5657
+ $tab-button-block-start--disabled-selector:
5658
+ ".flexible-layout::part(tab block-start disabled)",
5659
+
5660
+ $tab-button-block-end-selector: ".flexible-layout::part(tab block-end)",
5661
+ $tab-button-block-end--selected-selector:
5662
+ ".flexible-layout::part(tab block-end selected)",
5663
+ $tab-button-block-end--disabled-selector:
5664
+ ".flexible-layout::part(tab block-end disabled)",
5665
+
5666
+ $tab-button-inline-start-selector: ".flexible-layout::part(tab inline-start)",
5667
+ $tab-button-inline-start--selected-selector:
5668
+ ".flexible-layout::part(tab inline-start selected)",
5669
+ $tab-button-inline-start--disabled-selector:
5670
+ ".flexible-layout::part(tab inline-start disabled)",
5671
+
5672
+ $tab-button-inline-end-selector: ".flexible-layout::part(tab inline-end)",
5673
+ $tab-button-inline-end--selected-selector:
5674
+ ".flexible-layout::part(tab inline-end selected)",
5675
+ $tab-button-inline-end--disabled-selector:
5676
+ ".flexible-layout::part(tab inline-end disabled)",
5677
+
5678
+ $tab-button-close-button-selector: ".flexible-layout::part(close-button)",
5679
+
5489
5680
  $tab-list--inline-selector: ".flexible-layout::part(tab-list inline)",
5490
5681
  $tab-list--block-selector: ".flexible-layout::part(tab-list block)",
5682
+
5683
+ $bar-selector: ".flexible-layout::part(bar)",
5491
5684
  $droppable-area-selector: ".flexible-layout::part(droppable-area)",
5685
+ $add--tab-button-block-start: true,
5686
+ $add--tab-button-block-end: true,
5687
+ $add--tab-button-inline-start: true,
5688
+ $add--tab-button-inline-end: true,
5492
5689
  $add--disabled: true
5493
5690
  ) {
5691
+ #{$flexible-layout-selector} {
5692
+ @extend %flexible-layout;
5693
+ }
5694
+
5494
5695
  @include tab(
5495
- $tab-selector: #{$tab-selector},
5496
- $tab-caption-selector: #{$tab-caption-selector},
5497
- $tab-caption--block-selector: #{$tab-caption--block-selector},
5498
- $tab-caption--inline-selector: #{$tab-caption--inline-selector},
5499
- $tab-caption--selected-selector: #{$tab-caption--selected-selector},
5500
- $tab-caption__close-button-selector: #{$tab-caption__close-button-selector},
5696
+ $tab-button-close-button-selector: #{$tab-button-close-button-selector},
5697
+ $add--tab-button-block-start: false,
5698
+ $add--tab-button-block-end: false,
5699
+ $add--tab-button-inline-start: false,
5700
+ $add--tab-button-inline-end: false,
5501
5701
  $add--tab: false,
5502
5702
  $add--tab-list: false,
5503
5703
  $add--disabled: $add--disabled
5504
5704
  );
5505
5705
 
5506
- #{$flexible-layout-selector} {
5507
- @extend %flexible-layout;
5706
+ #{$tab-selector} {
5707
+ @extend %flexible-layout-tab;
5508
5708
  }
5509
5709
 
5510
- #{$flexible-layout__bar-selector} {
5710
+ #{$bar-selector} {
5511
5711
  @extend %flexible-layout-bar;
5512
5712
  }
5513
5713
 
5514
5714
  // - - - - - - - - - - - - - - - - - - - -
5515
- // Tab Caption
5715
+ // Tab Button (block-start)
5716
+ // - - - - - - - - - - - - - - - - - - - -
5717
+ @if $add--tab-button-block-start {
5718
+ #{$tab-button-block-start-selector} {
5719
+ @extend %flexible-layout-tab-button-block;
5720
+ @extend %flexible-layout-tab-button-block-start;
5721
+
5722
+ &:hover {
5723
+ @extend %flexible-layout-tab-button-block-start--hover;
5724
+ }
5725
+
5726
+ &:active {
5727
+ @extend %flexible-layout-tab-button-block-start--active;
5728
+ }
5729
+
5730
+ &:focus-visible {
5731
+ @extend %tab-button--focus-visible;
5732
+ }
5733
+ }
5734
+
5735
+ #{$tab-button-block-start--selected-selector} {
5736
+ @extend %flexible-layout-tab-button-block-start--selected;
5737
+ }
5738
+
5739
+ @if $add--disabled {
5740
+ #{$tab-button-block-start--disabled-selector} {
5741
+ @extend %flexible-layout-tab-button--disabled;
5742
+ }
5743
+ }
5744
+ }
5745
+
5746
+ // - - - - - - - - - - - - - - - - - - - -
5747
+ // Tab Button (block-end)
5516
5748
  // - - - - - - - - - - - - - - - - - - - -
5517
- #{$tab-caption-selector} {
5518
- @extend %flexible-layout-tab-caption;
5749
+ @if $add--tab-button-block-end {
5750
+ #{$tab-button-block-end-selector} {
5751
+ @extend %flexible-layout-tab-button-block;
5752
+ @extend %flexible-layout-tab-button-block-end;
5753
+
5754
+ &:hover {
5755
+ @extend %flexible-layout-tab-button-block-end--hover;
5756
+ }
5757
+
5758
+ &:active {
5759
+ @extend %flexible-layout-tab-button-block-end--active;
5760
+ }
5761
+
5762
+ &:focus-visible {
5763
+ @extend %tab-button--focus-visible;
5764
+ }
5765
+ }
5766
+
5767
+ #{$tab-button-block-end--selected-selector} {
5768
+ @extend %flexible-layout-tab-button-block-end--selected;
5769
+ }
5770
+
5771
+ @if $add--disabled {
5772
+ #{$tab-button-block-end--disabled-selector} {
5773
+ @extend %flexible-layout-tab-button--disabled;
5774
+ }
5775
+ }
5519
5776
  }
5520
5777
 
5521
- #{$tab-caption--selected-selector} {
5522
- @extend %flexible-layout-tab-caption--selected;
5778
+ // - - - - - - - - - - - - - - - - - - - -
5779
+ // Tab Button (inline-start)
5780
+ // - - - - - - - - - - - - - - - - - - - -
5781
+ @if $add--tab-button-inline-start {
5782
+ #{$tab-button-inline-start-selector} {
5783
+ @extend %flexible-layout-tab-button-inline;
5784
+ @extend %flexible-layout-tab-button-inline-start;
5785
+
5786
+ &:hover {
5787
+ @extend %flexible-layout-tab-button-inline-start--hover;
5788
+ }
5789
+
5790
+ &:active {
5791
+ @extend %flexible-layout-tab-button-inline-start--active;
5792
+ }
5793
+
5794
+ &:focus-visible {
5795
+ @extend %tab-button--focus-visible;
5796
+ }
5797
+ }
5798
+
5799
+ #{$tab-button-inline-start--selected-selector} {
5800
+ @extend %flexible-layout-tab-button-inline-start--selected;
5801
+ }
5802
+
5803
+ @if $add--disabled {
5804
+ #{$tab-button-inline-start--disabled-selector} {
5805
+ @extend %flexible-layout-tab-button--disabled;
5806
+ }
5807
+ }
5808
+ }
5809
+
5810
+ // - - - - - - - - - - - - - - - - - - - -
5811
+ // Tab Button (inline-end)
5812
+ // - - - - - - - - - - - - - - - - - - - -
5813
+ @if $add--tab-button-inline-end {
5814
+ #{$tab-button-inline-end-selector} {
5815
+ @extend %flexible-layout-tab-button-inline;
5816
+ @extend %flexible-layout-tab-button-inline-end;
5817
+
5818
+ &:hover {
5819
+ @extend %flexible-layout-tab-button-inline-end--hover;
5820
+ }
5821
+
5822
+ &:active {
5823
+ @extend %flexible-layout-tab-button-inline-end--active;
5824
+ }
5825
+
5826
+ &:focus-visible {
5827
+ @extend %tab-button--focus-visible;
5828
+ }
5829
+ }
5830
+
5831
+ #{$tab-button-inline-end--selected-selector} {
5832
+ @extend %flexible-layout-tab-button-inline-end--selected;
5833
+ }
5834
+
5835
+ @if $add--disabled {
5836
+ #{$tab-button-inline-end--disabled-selector} {
5837
+ @extend %flexible-layout-tab-button--disabled;
5838
+ }
5839
+ }
5523
5840
  }
5524
5841
 
5525
5842
  // - - - - - - - - - - - - - - - - - - - -
@@ -8379,7 +8696,7 @@
8379
8696
 
8380
8697
  %tab {
8381
8698
  --ch-tab-close-button__background-image-size: var(--mer-icon__size--md);
8382
- --ch-tab-close-button__image-size: var(--mer-icon__box--md);
8699
+ --ch-tab-close-button__image-size: 16px; // TODO: Use a token
8383
8700
 
8384
8701
  --spacing-body-block-start: var(--mer-spacing--md);
8385
8702
  --spacing-body-block-end: var(--mer-spacing--md);
@@ -8390,76 +8707,176 @@
8390
8707
  @include items-container-colors();
8391
8708
  }
8392
8709
 
8393
- %tab-caption {
8710
+ %tab-button-block {
8394
8711
  @include tab-button-colors-enabled();
8395
8712
  @include tab-button-font();
8396
8713
  @include tab-button-gap();
8397
8714
 
8398
- &--hover {
8399
- @include tab-button-colors-hover();
8400
- }
8715
+ @include tab-button-padding-inline();
8716
+ border-block: var(--tab-caption__border-width)
8717
+ var(--tab-caption__border-style) transparent;
8401
8718
 
8402
- &--focus-visible {
8403
- @include focus-outline();
8404
- }
8719
+ // TODO: Remove this mixin
8720
+ // @include tab-button-border-block-end();
8721
+ }
8405
8722
 
8406
- &--block {
8407
- @include tab-button-padding-inline();
8408
- @include tab-button-border-block-end();
8409
- }
8723
+ %tab-button-inline {
8724
+ @include tab-button-colors-enabled();
8725
+ @include tab-button-font();
8726
+ @include tab-button-gap();
8410
8727
 
8411
- &--inline {
8412
- @include tab-button-padding-stack();
8413
- @include tab-button-border-block();
8414
- }
8728
+ @include tab-button-padding-stack();
8729
+ border-inline: var(--tab-caption__border-width)
8730
+ var(--tab-caption__border-style) transparent;
8415
8731
 
8416
- &--selected {
8417
- &-inline {
8418
- @include tab-button-colors-selected-stack();
8419
- }
8420
- &-block {
8421
- @include tab-button-colors-selected-inline();
8422
- }
8423
- }
8732
+ // TODO: Remove this mixin
8733
+ // @include tab-button-border-block();
8734
+ }
8424
8735
 
8425
- &--disabled {
8426
- @include tab-button-colors-disabled();
8427
- --tab-caption__border-width: 0;
8736
+ // Block Start
8737
+ %tab-button-block-start--hover {
8738
+ @include tab-button-colors-hover();
8739
+ }
8740
+
8741
+ %tab-button-block-start--active {
8742
+ // TODO
8743
+ @include tab-button-colors-hover();
8744
+ }
8745
+
8746
+ %tab-button-block-start--selected {
8747
+ @include tab-button-colors-selected-inline();
8748
+ border-block-end-color: var(--tab-caption__border-color);
8749
+ }
8750
+
8751
+ // Block End
8752
+ %tab-button-block-end--hover {
8753
+ @include tab-button-colors-hover();
8754
+ }
8755
+
8756
+ %tab-button-block-end--active {
8757
+ // TODO
8758
+ @include tab-button-colors-hover();
8759
+ }
8760
+
8761
+ %tab-button-block-end--selected {
8762
+ @include tab-button-colors-selected-inline();
8763
+ border-block-start-color: var(--tab-caption__border-color);
8764
+ }
8765
+
8766
+ // Inline Start
8767
+ %tab-button-inline-start--hover {
8768
+ @include tab-button-colors-hover();
8769
+ }
8770
+
8771
+ %tab-button-inline-start--active {
8772
+ // TODO
8773
+ @include tab-button-colors-hover();
8774
+ }
8775
+
8776
+ %tab-button-inline-start--selected {
8777
+ @include tab-button-colors-selected-stack();
8778
+ border-inline-end-color: var(--tab-caption__border-color);
8779
+ }
8780
+
8781
+ // Inline End
8782
+ %tab-button-inline-end--hover {
8783
+ @include tab-button-colors-hover();
8784
+ }
8785
+
8786
+ %tab-button-inline-end--active {
8787
+ // TODO
8788
+ @include tab-button-colors-hover();
8789
+ }
8790
+
8791
+ %tab-button-inline-end--selected {
8792
+ @include tab-button-colors-selected-stack();
8793
+ border-inline-start-color: var(--tab-caption__border-color);
8794
+ }
8795
+
8796
+ // Focus
8797
+ %tab-button--focus-visible {
8798
+ @include focus-outline();
8799
+ }
8800
+
8801
+ // Disabled
8802
+ %tab-button--disabled {
8803
+ @include tab-button-colors-disabled();
8804
+ --tab-button__border-width: 0;
8805
+ }
8806
+
8807
+ %tab-button-close-button {
8808
+ margin-inline-start: 4px;
8809
+ border-radius: 4px;
8810
+
8811
+ &--hover {
8812
+ background-color: var(--mer-color__tinted-primary--20);
8428
8813
  }
8429
8814
 
8430
- &__close-button {
8431
- &--focus {
8432
- @include focus-outline();
8433
- }
8815
+ &--focus-visible {
8816
+ @include focus-outline();
8434
8817
  }
8435
8818
  }
8436
8819
 
8437
8820
  %tab-list {
8438
- &--block {
8821
+ &--block-start {
8439
8822
  border-block-end: var(--items-container__border-width)
8440
8823
  var(--items-container__border-style) var(--items-container__border-color);
8441
8824
  }
8442
8825
 
8443
- &--inline {
8826
+ &--block-end {
8827
+ border-block-start: var(--items-container__border-width)
8828
+ var(--items-container__border-style) var(--items-container__border-color);
8829
+ }
8830
+
8831
+ &--inline-start {
8444
8832
  border-inline-end: var(--items-container__border-width)
8445
8833
  var(--items-container__border-style) var(--items-container__border-color);
8446
8834
  }
8835
+
8836
+ &--inline-end {
8837
+ border-inline-start: var(--items-container__border-width)
8838
+ var(--items-container__border-style) var(--items-container__border-color);
8839
+ }
8447
8840
  }
8448
8841
 
8449
8842
  @mixin tab(
8450
8843
  $tab-selector: ".tab",
8451
- $tab-caption-selector: ".tab::part(button)",
8452
- $tab-caption--block-selector: ".tab::part(button block)",
8453
- $tab-caption--inline-selector: ".tab::part(button inline)",
8454
- $tab-caption--selected-selector: ".tab::part(button selected)",
8455
- $tab-caption--selected-inline-selector: ".tab::part(button inline selected)",
8456
- $tab-caption--selected-block-selector: ".tab::part(button block selected)",
8457
- $tab-caption--disabled-selector: ".tab::part(button disabled)",
8458
- $tab-caption__close-button-selector: ".tab::part(close-button)",
8459
- $tab-list-selector: ".tab::part(tab-list)",
8460
- $tab-list--block-selector: ".tab::part(tab-list block)",
8461
- $tab-list--inline-selector: ".tab::part(tab-list inline)",
8844
+
8845
+ $tab-button-block-start-selector: ".tab::part(tab block-start)",
8846
+ $tab-button-block-start--selected-selector:
8847
+ ".tab::part(tab block-start selected)",
8848
+ $tab-button-block-start--disabled-selector:
8849
+ ".tab::part(tab block-start disabled)",
8850
+
8851
+ $tab-button-block-end-selector: ".tab::part(tab block-end)",
8852
+ $tab-button-block-end--selected-selector: ".tab::part(tab block-end selected)",
8853
+ $tab-button-block-end--disabled-selector: ".tab::part(tab block-end disabled)",
8854
+
8855
+ $tab-button-inline-start-selector: ".tab::part(tab inline-start)",
8856
+ $tab-button-inline-start--selected-selector:
8857
+ ".tab::part(tab inline-start selected)",
8858
+ $tab-button-inline-start--disabled-selector:
8859
+ ".tab::part(tab inline-start disabled)",
8860
+
8861
+ $tab-button-inline-end-selector: ".tab::part(tab inline-end)",
8862
+ $tab-button-inline-end--selected-selector:
8863
+ ".tab::part(tab inline-end selected)",
8864
+ $tab-button-inline-end--disabled-selector:
8865
+ ".tab::part(tab inline-end disabled)",
8866
+
8867
+ $tab-button--disabled-selector: ".tab::part(tab disabled)",
8868
+ $tab-button-close-button-selector: ".tab::part(close-button)",
8869
+
8870
+ $tab-list--block-start-selector: ".tab::part(tab-list block-start)",
8871
+ $tab-list--block-end-selector: ".tab::part(tab-list block-end)",
8872
+ $tab-list--inline-start-selector: ".tab::part(tab-list inline-start)",
8873
+ $tab-list--inline-end-selector: ".tab::part(tab-list inline-end)",
8874
+
8462
8875
  $add--tab: true,
8876
+ $add--tab-button-block-start: true,
8877
+ $add--tab-button-block-end: true,
8878
+ $add--tab-button-inline-start: true,
8879
+ $add--tab-button-inline-end: true,
8463
8880
  $add--tab-list: true,
8464
8881
  $add--disabled: true
8465
8882
  ) {
@@ -8469,62 +8886,165 @@
8469
8886
  }
8470
8887
  }
8471
8888
 
8472
- #{$tab-caption-selector} {
8473
- // @extend %tab-text;
8474
- @extend %tab-caption;
8889
+ // - - - - - - - - - - - - - - - - - - - -
8890
+ // Tab Button (block-start)
8891
+ // - - - - - - - - - - - - - - - - - - - -
8892
+ @if ($add--tab-button-block-start) {
8893
+ #{$tab-button-block-start-selector} {
8894
+ @extend %tab-button-block;
8475
8895
 
8476
- &:hover {
8477
- @extend %tab-caption--hover;
8896
+ &:hover {
8897
+ @extend %tab-button-block-start--hover;
8898
+ }
8899
+
8900
+ &:active {
8901
+ @extend %tab-button-block-start--active;
8902
+ }
8903
+
8904
+ &:focus-visible {
8905
+ @extend %tab-button--focus-visible;
8906
+ }
8478
8907
  }
8479
8908
 
8480
- &:focus-visible {
8481
- @extend %tab-caption--focus-visible;
8909
+ #{$tab-button-block-start--selected-selector} {
8910
+ @extend %tab-button-block-start--selected;
8482
8911
  }
8483
- }
8484
8912
 
8485
- #{$tab-caption--block-selector} {
8486
- @extend %tab-caption--block;
8913
+ @if $add--disabled {
8914
+ #{$tab-button-block-start--disabled-selector} {
8915
+ @extend %tab-button--disabled;
8916
+ }
8917
+ }
8487
8918
  }
8488
8919
 
8489
- #{$tab-caption--inline-selector} {
8490
- @extend %tab-caption--inline;
8920
+ // - - - - - - - - - - - - - - - - - - - -
8921
+ // Tab Button (block-end)
8922
+ // - - - - - - - - - - - - - - - - - - - -
8923
+ @if ($add--tab-button-block-end) {
8924
+ #{$tab-button-block-end-selector} {
8925
+ @extend %tab-button-block;
8926
+
8927
+ &:hover {
8928
+ @extend %tab-button-block-end--hover;
8929
+ }
8930
+
8931
+ &:active {
8932
+ @extend %tab-button-block-end--active;
8933
+ }
8934
+
8935
+ &:focus-visible {
8936
+ @extend %tab-button--focus-visible;
8937
+ }
8938
+ }
8939
+
8940
+ #{$tab-button-block-end--selected-selector} {
8941
+ @extend %tab-button-block-end--selected;
8942
+ }
8943
+
8944
+ @if $add--disabled {
8945
+ #{$tab-button-block-end--disabled-selector} {
8946
+ @extend %tab-button--disabled;
8947
+ }
8948
+ }
8491
8949
  }
8492
8950
 
8493
- #{$tab-caption--selected-selector} {
8494
- @extend %tab-caption--selected;
8951
+ // - - - - - - - - - - - - - - - - - - - -
8952
+ // Tab Button (inline-start)
8953
+ // - - - - - - - - - - - - - - - - - - - -
8954
+ @if ($add--tab-button-inline-start) {
8955
+ #{$tab-button-inline-start-selector} {
8956
+ @extend %tab-button-inline;
8957
+
8958
+ &:hover {
8959
+ @extend %tab-button-inline-start--hover;
8960
+ }
8961
+
8962
+ &:active {
8963
+ @extend %tab-button-inline-start--active;
8964
+ }
8965
+
8966
+ &:focus-visible {
8967
+ @extend %tab-button--focus-visible;
8968
+ }
8969
+ }
8970
+
8971
+ #{$tab-button-inline-start--selected-selector} {
8972
+ @extend %tab-button-inline-start--selected;
8973
+ }
8974
+
8975
+ @if $add--disabled {
8976
+ #{$tab-button-inline-start--disabled-selector} {
8977
+ @extend %tab-button--disabled;
8978
+ }
8979
+ }
8495
8980
  }
8496
8981
 
8497
- #{$tab-caption--selected-inline-selector} {
8498
- @extend %tab-caption--selected-inline;
8982
+ // - - - - - - - - - - - - - - - - - - - -
8983
+ // Tab Button (inline-end)
8984
+ // - - - - - - - - - - - - - - - - - - - -
8985
+ @if ($add--tab-button-inline-end) {
8986
+ #{$tab-button-inline-end-selector} {
8987
+ @extend %tab-button-inline;
8988
+
8989
+ &:hover {
8990
+ @extend %tab-button-inline-end--hover;
8991
+ }
8992
+
8993
+ &:active {
8994
+ @extend %tab-button-inline-end--active;
8995
+ }
8996
+
8997
+ &:focus-visible {
8998
+ @extend %tab-button--focus-visible;
8999
+ }
9000
+ }
9001
+
9002
+ #{$tab-button-inline-end--selected-selector} {
9003
+ @extend %tab-button-inline-end--selected;
9004
+ }
9005
+
9006
+ @if $add--disabled {
9007
+ #{$tab-button-inline-end--disabled-selector} {
9008
+ @extend %tab-button--disabled;
9009
+ }
9010
+ }
8499
9011
  }
8500
9012
 
8501
- #{$tab-caption--selected-block-selector} {
8502
- @extend %tab-caption--selected-block;
9013
+ #{$tab-button-close-button-selector} {
9014
+ @extend %tab-button-close-button;
9015
+
9016
+ &:focus-visible {
9017
+ @extend %tab-button-close-button--focus-visible;
9018
+ }
8503
9019
  }
8504
9020
 
8505
- #{$tab-caption__close-button-selector} {
9021
+ #{$tab-button-close-button-selector} {
9022
+ @extend %tab-button-close-button;
9023
+
9024
+ &:hover {
9025
+ @extend %tab-button-close-button--hover;
9026
+ }
9027
+
8506
9028
  &:focus-visible {
8507
- @extend %tab-caption__close-button--focus;
9029
+ @extend %tab-button-close-button--focus-visible;
8508
9030
  }
8509
9031
  }
8510
9032
 
8511
9033
  @if $add--tab-list {
8512
- #{$tab-list-selector} {
8513
- @extend %tab-list;
9034
+ #{$tab-list--block-start-selector} {
9035
+ @extend %tab-list--block-start;
8514
9036
  }
8515
- }
8516
9037
 
8517
- #{$tab-list--block-selector} {
8518
- @extend %tab-list--block;
8519
- }
9038
+ #{$tab-list--block-end-selector} {
9039
+ @extend %tab-list--block-end;
9040
+ }
8520
9041
 
8521
- #{$tab-list--inline-selector} {
8522
- @extend %tab-list--inline;
8523
- }
9042
+ #{$tab-list--inline-start-selector} {
9043
+ @extend %tab-list--inline-start;
9044
+ }
8524
9045
 
8525
- @if $add--disabled {
8526
- #{$tab-caption--disabled-selector} {
8527
- @extend %tab-caption--disabled;
9046
+ #{$tab-list--inline-end-selector} {
9047
+ @extend %tab-list--inline-end;
8528
9048
  }
8529
9049
  }
8530
9050
  }