_common-3.20.scss
ASCII text
1* { 2// padding: 0; 3 4-GtkToolButton-icon-spacing: 0; 5-GtkTextView-error-underline-color: $error; 6 7// The size for scrollbars. The slider is 2px smaller, but we keep it 8// up so that the whole area is sensitive to button presses for the 9// slider. The stepper button is larger in both directions, the slider 10// only in the width 11 12-GtkScrolledWindow-scrollbar-spacing: 0; 13 14-GtkToolItemGroup-expander-size: 11; 15 16-GtkWidget-text-handle-width: 24; 17-GtkWidget-text-handle-height: 24; 18 19-GtkDialog-button-spacing: $container-padding / 1px; 20-GtkDialog-action-area-border: $container-padding / 1px; 21 22-gtk-secondary-caret-color: $primary; 23 24// We use the outline properties to signal the focus properties 25// to the adwaita engine: using real CSS properties is faster, 26// and we don't use any outlines for now. 27 28outline: 2px solid transparent; 29outline-offset: -4px; 30-gtk-outline-radius: $corner-radius; 31 32&:focus { 33outline-color: overlay("focus", $on-surface); 34} 35} 36 37/** 38* Base States 39*/ 40 41.background { 42background-color: $background; 43color: $on-surface; 44} 45 46/* 47These wildcard seems unavoidable, need to investigate. 48Wildcards are bad and troublesome, use them with care, 49or better, just don't. 50Everytime a wildcard is used a kitten dies, painfully. 51*/ 52 53*:disabled { 54-gtk-icon-effect: dim; 55} 56 57.gtkstyle-fallback { 58background-color: $background; 59color: $on-surface; 60 61&:hover { 62background-color: darken($background, 5%); 63} 64 65&:active { 66background-color: darken($background, 10%); 67} 68 69&:disabled { 70color: disabled($on-surface); 71} 72 73&:selected { 74background-color: $primary; 75color: $on-primary; 76} 77} 78 79.view { 80// background-color: $background; 81// color: $on-surface; 82 83&:hover { 84box-shadow: inset 0 0 0 9999px overlay("hover", $on-surface); 85} 86 87&:selected:hover { 88box-shadow: inset 0 0 0 9999px overlay("hover", $primary); 89} 90 91&:disabled { 92color: disabled($on-surface); 93} 94 95&:hover, 96&:selected { 97border-radius: $corner-radius; 98} 99 100selection, 101&:selected { 102background-color: $overlay-selected; 103} 104} 105 106textview { 107// FIXME: we need to override background-color to ensure text rendering 108text { 109background-color: $background; 110caret-color: $primary; 111} 112 113border { 114// background-color: $background; 115color: hint($on-surface); // FIXME: not working 116} 117} 118 119iconview { 120// @extend .view; 121} 122 123%iconview-desktop { 124// background-color: $scrim; 125color: $on-dark; 126text-shadow: $text-shadow; 127 128.rubberband, 129rubberband { 130border: 1px solid primary($on-dark); 131background-color: rgba(primary($on-dark), .3); 132} 133} 134 135%rubberband, 136.rubberband, 137rubberband { 138border: 1px solid $primary; 139background-color: rgba($primary, .24); 140} 141 142flowbox { 143rubberband { 144@extend %rubberband; 145} 146 147flowboxchild { 148padding: 4px; 149border-radius: $corner-radius; 150 151&:selected { 152background-color: $overlay-selected; 153} 154} 155} 156 157.content-view .tile { 158// margin: 2px; 159// padding: 0; 160// border-radius: 0; 161// background-color: black; 162 163&:selected { 164background-color: transparent; 165} 166} 167 168label { 169caret-color: $primary; // this shouldn't be needed. 170 171&.separator { 172color: hint($on-surface); 173} 174 175&.error { 176color: $error; 177} 178 179selection { 180background-color: $overlay-selected; 181} 182 183&:disabled { 184color: disabled($on-surface); 185 186headerbar &, 187menuitem &, 188tab &, 189button & { 190color: inherit; 191} 192} 193 194&.osd { 195border-radius: $corner-radius; 196background-color: $tooltip; 197color: $on-tooltip; 198} 199} 200 201.dim-label { 202color: hint($on-surface); 203} 204 205assistant { 206.sidebar { 207padding: 4px 0; 208} 209 210.sidebar label { 211min-height: $medium-size; 212margin: 0 4px; 213padding: 0 8px; 214border-radius: $corner-radius; 215color: disabled($on-surface); 216font-weight: 500; 217 218&.highlight { 219background-color: overlay("activated", $primary); 220color: $primary; 221} 222} 223} 224 225%osd, 226.osd { 227// opacity: .9; 228} 229 230/** 231* Spinner Animation 232*/ 233 234@keyframes spin { 235to { 236-gtk-icon-transform: rotate(1turn); 237} 238} 239 240spinner { 241background: none; 242opacity: 0; // non spinning spinner makes no sense 243color: $primary; 244-gtk-icon-source: -gtk-icontheme('process-working-symbolic'); 245transition: opacity $duration * 4 $ease-out; 246animation: spin 1s linear infinite; 247 248&:checked { 249opacity: 1; 250} 251 252&:disabled { 253color: disabled-hint($on-surface); 254} 255} 256 257/** 258* General Typography 259*/ 260 261@function pt($size: $font-size) { 262@return ($size * .75 / 1px) * 1pt; 263} 264 265.large-title { 266font-weight: 400; 267font-size: pt(48px); 268} 269 270.title-1 { 271font-weight: 400; 272font-size: pt(34px); 273letter-spacing: pt(.25px); 274} 275 276.title-2 { 277font-weight: 400; 278font-size: pt(24px); 279} 280 281.title-3 { 282font-weight: 500; 283font-size: pt(20px); 284letter-spacing: pt(.15px); 285} 286 287.title-4 { 288font-weight: 400; 289font-size: pt(16px); 290letter-spacing: pt(.5px); 291} 292 293.heading { 294font-weight: 500; 295font-size: 1em; 296} 297 298.body { 299font-weight: 400; 300font-size: 1em; 301} 302 303.caption-heading { 304font-weight: 500; 305font-size: pt(12px); 306letter-spacing: pt(1.5px); 307} 308 309.caption { 310font-weight: 400; 311font-size: pt(12px); 312letter-spacing: pt(.4px); 313} 314 315/** 316* Text Entries 317*/ 318 319%entry, 320entry { 321min-height: $medium-size; 322padding: 0 8px; 323border-radius: $corner-radius $corner-radius 0 0; 324 325@include entry(normal); 326 327&:focus { 328@include entry(checked); 329} 330 331&:drop(active) { 332@include entry(hover); 333} 334 335&:disabled { 336@include entry(disabled); 337} 338 339&.flat { 340min-height: 0; 341padding: 2px; 342border-radius: 0; 343background-color: transparent; 344} 345 346// icons inside the entry 347image { 348// min-height: $small-size; 349// min-width: $small-size; 350// border-radius: $circular-radius; 351// @extend %ripple; 352// @include ink-color($on-surface); 353color: hint($on-surface); 354 355&:hover, 356&:active { 357color: $on-surface; 358} 359 360&:disabled { 361color: disabled($on-surface); 362} 363 364&.left { 365margin-left: ($medium-size - 16px) / 2 - 8px; 366margin-right: 6px; 367} 368 369&.right { 370margin-left: 6px; 371margin-right: ($medium-size - 16px) / 2 - 8px; 372} 373} 374 375undershoot { 376&.left { 377// @include undershoot(left); 378} 379 380&.right { 381// @include undershoot(right); 382} 383} 384 385selection { 386background-color: $overlay-selected; 387} 388 389// entry error and warning style 390@each $class, $color in (".error": $error, ".warning": $warning) { 391&#{$class} { 392@include entry(normal, $color); 393 394&:focus { 395@include entry(checked, $color); 396} 397 398&:disabled { 399@include entry(disabled, $color); 400} 401} 402} 403 404.osd & { 405} 406 407progress { 408margin: 0 -8px -4px; 409border-bottom: 2px solid $primary; 410background-color: transparent; 411} 412 413// linked entries 414.linked:not(.vertical) > & { 415@extend %linked; 416} 417 418// Vertically linked entries 419.linked.vertical > & { 420@extend %linked-vertical; 421} 422} 423 424%entry_raised { 425border-radius: $corner-radius; 426 427@include entry(raised-normal); 428 429&:focus { 430@include entry(raised-focus); 431} 432 433&:drop(active) { 434@include entry(raised-hover); 435} 436 437&:disabled { 438@include entry(raised-disabled); 439} 440 441// entry error and warning style 442@each $class, $color in (".error": $error, ".warning": $warning) { 443&#{$class} { 444@include entry(raised-normal, $color); 445 446&:focus { 447@include entry(raised-focus, $color); 448} 449 450&:disabled { 451@include entry(raised-disabled, $color); 452} 453 454image { 455color: hint(on($color)); 456 457&:hover, 458&:active { 459color: on($color); 460} 461 462&:disabled { 463color: disabled(on($color)); 464} 465} 466} 467} 468} 469 470treeview entry { 471&, 472&.flat { 473background-color: $base; 474 475&, 476&:focus { 477border-image: none; 478box-shadow: none; 479} 480} 481} 482 483.entry-tag { 484margin: 2px; 485border-radius: $circular-radius; 486box-shadow: none; 487background-color: fill($on-surface); 488color: $on-surface; 489 490&:hover { 491background-image: image(overlay("hover", $on-surface)); 492} 493 494// side margins: compensate the entry padding with a negative margin 495// then the negative margin itself 496:dir(ltr) & { 497margin-left: 4px; 498margin-right: 0; 499padding-left: 12px; 500padding-right: 8px; 501} 502 503:dir(rtl) & { 504margin-left: 0; 505margin-right: 4px; 506padding-left: 8px; 507padding-right: 12px; 508} 509 510// seems any sizing doesn't work 511&.button { 512box-shadow: none; 513background-color: transparent; 514color: hint($on-surface); 515} 516} 517 518/** 519* Buttons 520*/ 521 522// stuff for .needs-attention 523@keyframes needs-attention { 524from { 525background-image: 526-gtk-gradient( 527radial, 528center center, 0, 529center center, .001, 530to($primary), 531to(transparent) 532); 533} 534 535to { 536background-image: 537-gtk-gradient( 538radial, 539center center, 0, 540center center, .5, 541to($primary), 542to(transparent) 543); 544} 545} 546 547%button, 548button { 549min-height: 24px; 550min-width: 16px; 551padding: ($medium-size - 24px) / 2 ($medium-size - 16px) / 2; 552border-radius: $corner-radius; 553background-color: $surface; 554color: $on-surface; 555font-weight: 500; 556 557@extend %ripple; 558@include ink-color($on-surface, $elevation: true); 559 560&:disabled { 561box-shadow: none; 562background-color: fill($on-surface); 563color: disabled($on-surface); 564} 565 566&:checked { 567background-color: overlay("activated", $primary, $background: $surface); 568color: $primary; 569@include ink-color($primary, $elevation: true); 570 571&:disabled { 572box-shadow: none; 573background-color: overlay("activated", $on-surface, $background: fill($on-surface)); 574color: disabled($on-surface); 575} 576} 577 578&.text-button { 579min-width: 64px - 16px * 2; 580padding-left: 16px; 581padding-right: 16px; 582} 583 584&.image-button { 585min-width: 24px; 586padding: ($medium-size - 24px) / 2; 587border-radius: $circular-radius; 588} 589 590// NOTE: Some image-only buttons use this as well 591&.text-button.image-button { 592min-width: 24px; 593padding: ($medium-size - 24px) / 2; 594border-radius: $corner-radius; 595 596label { 597&:first-child { 598margin-left: 16px - ($medium-size - 24px) / 2; 599} 600 601&:last-child { 602margin-right: 16px - ($medium-size - 24px) / 2; 603} 604} 605 606image:not(:only-child) { 607margin: 0 (24px - 16px) / 2; 608} 609} 610 611.linked:not(.vertical) > & { 612@extend %linked; 613 614&.image-button:not(.text-button) { 615@extend %linked-image-button; 616} 617} 618 619.linked.vertical > & { 620@extend %linked-vertical; 621 622&.image-button:not(.text-button) { 623@extend %linked-vertical-image-button; 624} 625} 626} 627 628%button-flat-basic { 629background-color: transparent; 630color: hint($on-surface); 631@include ink-color($on-surface); 632 633&:disabled { 634background-color: transparent; 635color: disabled-hint($on-surface); 636} 637} 638 639%button-flat-activatable { 640@extend %button-flat-basic; 641 642&:checked { 643background-color: overlay("activated", $on-surface); 644color: $on-surface; 645@include ink-color($on-surface); 646 647&:disabled { 648color: disabled($on-surface); 649} 650} 651} 652 653%button-flat, 654button.flat { 655@extend %button-flat-activatable; 656 657&.text-button { 658min-width: 64px - 8px * 2; 659padding-left: 8px; 660padding-right: 8px; 661} 662 663&.text-button.image-button { 664min-width: 24px; 665padding: ($medium-size - 24px) / 2; 666 667label { 668&:first-child { 669margin-left: 12px - ($medium-size - 24px) / 2; 670} 671 672&:last-child { 673margin-right: 12px - ($medium-size - 24px) / 2; 674} 675} 676} 677 678.linked:not(.vertical) > &, 679.linked.vertical > & { 680&:not(:only-child) { // specificity bump 681border-radius: $corner-radius; 682 683&.image-button:not(.text-button) { 684border-radius: $circular-radius; 685} 686} 687} 688} 689 690button { 691// big standalone buttons like in Documents pager 692&.osd { 693padding: ($large-size - 24px) / 2 ($large-size - 16px) / 2; 694 695&.image-button { 696padding: ($large-size - 24px) / 2; 697} 698 699&:disabled { 700opacity: 0; 701} 702} 703 704// overlay / OSD style 705@at-root %osd_button, 706.osd & { 707} 708 709// Suggested and Destructive Action buttons 710@each $class, $color in (".suggested-action": $primary, ".destructive-action": $error) { 711&#{$class} { 712background-color: $color; 713color: on($color); 714@include ink-color(on($color), $elevation: true); 715 716&:disabled { 717box-shadow: none; 718background-color: fill($on-surface); 719color: disabled($on-surface); 720} 721 722&:checked { 723background-color: overlay("activated", on($color), $background: $color); 724} 725 726&.flat { 727background-color: transparent; 728color: $color; 729@include ink-color($color); 730 731&:disabled { 732box-shadow: none; 733background-color: transparent; 734color: disabled-hint($on-surface); 735} 736 737&:checked { 738background-color: overlay("activated", $color); 739} 740} 741 742.osd & { 743} 744} 745} 746 747.stack-switcher > & { 748// to position the needs attention dot, padding is added to the button 749// child, a label needs just lateral padding while an icon needs vertical 750// padding added too. 751 752> label { 753margin: 0 -6px; 754padding: 0 6px; 755} 756 757> image { 758margin: -3px -6px; 759padding: 3px 6px; 760} 761 762&.needs-attention { 763> label, 764> image { 765@extend %needs-attention; 766} 767 768&:checked { 769> label, 770> image { 771animation: none; 772background-image: none; 773} 774} 775} 776} 777 778// hide separators 779&.font, 780&.file { 781separator { 782@extend %hide_separators; 783} 784} 785 786&.font { 787> box > box > label { 788// font-weight: bold; 789} 790} 791 792// inline-toolbar buttons 793.inline-toolbar & { 794// @extend %button-flat; 795 796&:not(.text-button) { 797border-radius: $circular-radius; 798} 799} 800 801.primary-toolbar & { 802-gtk-icon-shadow: none; // tango icons don't need shadows 803} 804 805&.close, 806&.circular { // The Bloody Circul Button 807border-radius: $circular-radius; 808 809label { 810// padding: 0; 811} 812} 813} 814 815%button-small { 816min-height: $small-size; 817min-width: $small-size; 818padding: 0; 819border-radius: $circular-radius; 820} 821 822%needs-attention { 823animation: needs-attention $ripple-fade-in-duration $ease-out forwards; 824background-repeat: no-repeat; 825background-position: right 3px; 826background-size: 6px 6px; 827 828&:dir(rtl) { 829background-position: left 3px; 830} 831} 832 833// all the following is for the +|- buttons on inline toolbars, that way 834// should really be deprecated... 835.inline-toolbar toolbutton > button { 836} 837 838// More inline toolbar buttons 839toolbar.inline-toolbar toolbutton { 840&:not(:first-child) > button.flat { 841// @extend %linked-not-first-child; 842} 843 844&:not(:last-child) > button.flat { 845// @extend %linked-not-last-child; 846} 847} 848 849%linked-not-first-child { 850border-top-left-radius: 0; 851border-bottom-left-radius: 0; 852} 853 854%linked-not-last-child { 855border-top-right-radius: 0; 856border-bottom-right-radius: 0; 857} 858 859%linked { 860&:not(:first-child) { 861@extend %linked-not-first-child; 862} 863 864&:not(:last-child) { 865@extend %linked-not-last-child; 866} 867} 868 869%linked-vertical-not-first-child { 870border-top-left-radius: 0; 871border-top-right-radius: 0; 872} 873 874%linked-vertical-not-last-child { 875border-bottom-left-radius: 0; 876border-bottom-right-radius: 0; 877} 878 879%linked-vertical { 880&:not(:first-child) { 881@extend %linked-vertical-not-first-child; 882} 883 884&:not(:last-child) { 885@extend %linked-vertical-not-last-child; 886} 887} 888 889%linked-image-button { 890&:first-child { 891border-top-left-radius: $corner-radius; 892border-bottom-left-radius: $corner-radius; 893} 894 895&:last-child { 896border-top-right-radius: $corner-radius; 897border-bottom-right-radius: $corner-radius; 898} 899 900&:only-child { 901border-radius: $circular-radius; 902} 903} 904 905%linked-vertical-image-button { 906&:first-child { 907border-top-left-radius: $corner-radius; 908border-top-right-radius: $corner-radius; 909} 910 911&:last-child { 912border-bottom-left-radius: $corner-radius; 913border-bottom-right-radius: $corner-radius; 914} 915 916&:only-child { 917border-radius: $circular-radius; 918} 919} 920 921/* menu buttons */ 922modelbutton.flat, 923.menuitem.button.flat { 924min-height: $menuitem-size; 925padding: 0 8px; 926border-radius: $corner-radius; 927 928@extend %ripple; 929@include ink-color($on-surface); 930 931&:selected { 932background-color: $overlay-selected; 933} 934} 935 936modelbutton.flat arrow { 937transition: color $duration $ease-out; 938color: hint($on-surface); 939 940&:disabled { 941color: disabled-hint($on-surface); 942} 943 944&.left { 945-gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); 946} 947 948&.right { 949-gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); 950} 951} 952 953button.color { 954min-height: $small-size; 955min-width: $small-size; 956padding: $container-padding; 957 958colorswatch:only-child { 959&, 960overlay { 961// border-radius: 0; 962} 963} 964} 965 966/** 967* Links 968*/ 969 970*:link { 971color: $primary; 972} 973 974*:visited { 975color: $visited; 976} 977 978button.link { 979&:link { 980color: $primary; 981@include ink-color($primary); 982} 983 984&:visited { 985color: $visited; 986@include ink-color($visited); 987} 988 989> label { 990text-decoration-line: underline; 991} 992} 993 994/** 995* GtkSpinButton 996*/ 997 998spinbutton { 999&:not(.vertical) { 1000// in this horizontal configuration, the whole spinbutton 1001// behaves as the entry, so we extend the entry styling 1002// and nuke the style on the internal entry 1003@extend %entry; 1004 1005padding: 0; 1006 1007entry { 1008min-width: $large-size - 8px * 2; 1009// reset all the other props since the spinbutton node is styled here 1010margin: 0; 1011border-image: none; 1012border-radius: 0; 1013box-shadow: none; 1014background-color: transparent; 1015} 1016 1017button { 1018@extend %button-flat-basic; 1019@extend %button-small; 1020 1021// margin: $container-padding; 1022border: solid $container-padding transparent; 1023background-clip: padding-box; 1024 1025// Remove unwanted focus indicator 1026&:focus:not(:hover):not(:active) { 1027box-shadow: inset 0 0 0 9999px transparent; 1028} 1029 1030&.up:dir(ltr), 1031&.down:dir(rtl) { 1032margin-left: -$container-padding / 2; 1033} 1034 1035&.up:dir(rtl), 1036&.down:dir(ltr) { 1037margin-right: -$container-padding / 2; 1038} 1039} 1040} 1041 1042// OSD horizontal 1043.osd &:not(.vertical) { 1044} 1045 1046// Vertical 1047&.vertical { 1048// in the vertical configuration, we treat the spinbutton 1049// as a box, and tweak the style of the entry in the middle 1050// so that it's linked 1051 1052// FIXME: this should not be set at all, but otherwise it gets the wrong 1053// color 1054caret-color: $primary; 1055 1056// FIXME: this should not be set at all, but otherwise it gets the wrong 1057// color 1058&:disabled { 1059color: disabled($on-surface); 1060} 1061 1062entry { 1063@extend %entry_raised; 1064 1065min-height: $medium-size; 1066min-width: $large-size; 1067padding: 0; 1068} 1069 1070button { 1071min-height: $medium-size; 1072min-width: $large-size; 1073padding: 0; 1074 1075@extend %button-flat-basic; 1076 1077// Remove unwanted focus indicator 1078&:focus:not(:hover):not(:active) { 1079box-shadow: inset 0 0 0 9999px transparent; 1080} 1081 1082&.up { 1083border-radius: $corner-radius $corner-radius 0 0; 1084} 1085 1086&.down { 1087border-radius: 0 0 $corner-radius $corner-radius; 1088} 1089} 1090} 1091 1092// OSD vertical 1093.osd &.vertical { 1094} 1095 1096// Misc 1097treeview &:not(.vertical) { 1098min-height: 0; 1099border-style: none; 1100border-radius: 0; 1101 1102entry { 1103min-height: 0; 1104padding: 1px 2px; 1105} 1106} 1107} 1108 1109/** 1110* ComboBoxes 1111*/ 1112 1113combobox { 1114arrow { 1115-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 1116min-height: 16px; 1117min-width: 16px; 1118} 1119 1120// workaround for menuitem selection 1121decoration { 1122transition: none; 1123} 1124 1125button.combo cellview { 1126&:dir(ltr) { 1127margin-left: 8px - ($medium-size - 16px) / 2; 1128} 1129 1130&:dir(rtl) { 1131margin-right: 8px - ($medium-size - 16px) / 2; 1132} 1133} 1134 1135menu { 1136padding: 2px 0; 1137 1138menuitem { 1139min-height: $medium-size - 2px * 2; 1140padding: 0 8px; 1141} 1142 1143// overflow arrows 1144> arrow { 1145&.top { 1146margin-top: -2px; 1147} 1148 1149&.bottom { 1150margin-top: 2px * 2; 1151margin-bottom: -2px * 3; 1152} 1153} 1154} 1155 1156&.linked { 1157button:nth-child(2) { 1158&:dir(ltr) { 1159@extend %linked-not-first-child; 1160} 1161 1162&:dir(rtl) { 1163@extend %linked-not-last-child; 1164} 1165} 1166} 1167 1168> .linked:not(.vertical) > entry:not(:only-child) { 1169border-radius: $corner-radius $corner-radius 0 0; 1170 1171&:first-child { 1172margin-right: -$medium-size; 1173padding-right: $medium-size; 1174} 1175 1176&:last-child { 1177margin-left: -$medium-size; 1178padding-left: $medium-size; 1179} 1180} 1181 1182> .linked:not(.vertical) > button:not(:only-child) { 1183@extend %button-flat-activatable; 1184// @extend %button-small; 1185 1186min-height: 16px; 1187min-width: 16px; 1188margin: ($medium-size - $small-size) / 2; 1189padding: ($small-size - 16px) / 2; 1190border-radius: $circular-radius; 1191} 1192} 1193 1194// the combo is a composite widget so the way we do button linking doesn't 1195// work, special case needed. See 1196// https://bugzilla.gnome.org/show_bug.cgi?id=733979 1197 1198.linked:not(.vertical) > combobox { 1199&:not(:first-child) > box > button.combo { 1200@extend %linked-not-first-child; 1201} 1202 1203&:not(:last-child) > box > button.combo { 1204@extend %linked-not-last-child; 1205} 1206} 1207 1208.linked.vertical > combobox { 1209&:not(:first-child) > box > button.combo { 1210@extend %linked-vertical-not-first-child; 1211} 1212 1213&:not(:last-child) > box > button.combo { 1214@extend %linked-vertical-not-last-child; 1215} 1216} 1217 1218button.combo:only-child { 1219border-radius: $corner-radius $corner-radius 0 0; 1220font-weight: normal; 1221 1222@include entry(normal); 1223 1224&:focus { 1225@include entry(focus); 1226} 1227 1228&:drop(active), 1229&:hover { 1230@include entry(hover); 1231} 1232 1233&:checked { 1234@include entry(checked); 1235} 1236 1237&:disabled { 1238@include entry(disabled); 1239} 1240 1241arrow { 1242transition: color $duration $ease-out; 1243color: hint($on-surface); 1244 1245&:disabled { 1246color: disabled-hint($on-surface); 1247} 1248} 1249} 1250 1251/** 1252* Toolbars 1253*/ 1254 1255toolbar { 1256-GtkWidget-window-dragging: true; 1257padding: 2px; 1258 1259button { 1260@extend %button-flat; 1261} 1262 1263// on OSD 1264.osd & { 1265} 1266 1267// stand-alone OSD toolbars 1268&.osd { 1269@extend %toolbar-osd; 1270 1271// positional classes for `attached` osd toolbars 1272&.left, 1273&.right, 1274&.top, 1275&.bottom { 1276border-radius: 0; 1277} 1278 1279&.bottom { 1280box-shadow: none; 1281background-color: transparent; 1282background-image: 1283linear-gradient( 1284to bottom, 1285transparent, 1286rgba(black, .1) 30%, 1287rgba(black, .2) 50%, 1288rgba(black, .4) 1289); 1290} 1291} 1292 1293// toolbar separators 1294&.horizontal > separator { 1295margin: 2px; 1296} 1297 1298&.vertical > separator { 1299margin: 2px; 1300} 1301 1302&:not(.inline-toolbar):not(.osd) { 1303scale, 1304entry, 1305spinbutton, 1306button { 1307margin: 2px; 1308} 1309 1310.linked entry, 1311.linked spinbutton, 1312.linked button { 1313&:not(:first-child) { 1314margin-left: 0; 1315} 1316 1317&:not(:last-child) { 1318margin-right: 0; 1319} 1320} 1321 1322spinbutton { 1323entry, 1324button { 1325margin: 0; 1326} 1327} 1328 1329switch { 1330margin: 2px + $container-padding 2px; 1331} 1332} 1333} 1334 1335%toolbar-osd { 1336transition: $transition-shadow; 1337padding: $container-padding; 1338border-radius: $corner-radius; 1339box-shadow: $shadow-z4, inset 0 1px highlight($surface); 1340background-color: $surface; 1341 1342&:backdrop { 1343box-shadow: $shadow-z2, inset 0 1px highlight($surface); 1344} 1345} 1346 1347// searchbar, location-bar & inline-toolbar 1348.inline-toolbar { 1349padding: $container-padding; 1350border-style: solid; 1351border-width: 0 1px 1px; 1352border-color: divider($on-surface); 1353background-color: $base; 1354background-clip: padding-box; 1355} 1356 1357searchbar > revealer > box, 1358.location-bar { 1359padding: $container-padding; 1360border-style: solid; 1361border-width: 0 0 1px; 1362border-color: divider($on-surface); 1363} 1364 1365searchbar > revealer > box { 1366// workaround: undo the GtkContainer:border-width and use CSS padding instead 1367margin: -6px; 1368padding: $container-padding; 1369} 1370 1371/** 1372* Header bars 1373*/ 1374 1375.titlebar { 1376transition: background-color $duration $ease-out, color $duration $ease-out; 1377border-radius: $corner-radius $corner-radius 0 0; 1378box-shadow: $shadow-z1, inset 0 1px highlight($titlebar); 1379background-color: $titlebar; 1380color: $on-titlebar; 1381 1382&:disabled { 1383color: disabled($on-titlebar); 1384} 1385 1386&:backdrop { 1387background-color: $titlebar-backdrop; 1388color: hint($on-titlebar); 1389 1390&:disabled { 1391color: disabled-hint($on-titlebar); 1392} 1393} 1394 1395.title { 1396padding-left: 12px; 1397padding-right: 12px; 1398font-weight: bold; 1399} 1400 1401.subtitle { 1402padding-left: 12px; 1403padding-right: 12px; 1404font-size: smaller; 1405} 1406 1407.subtitle, 1408.dim-label { 1409transition: color $duration $ease-out; 1410color: hint($on-titlebar); 1411 1412&:backdrop { 1413color: disabled($on-titlebar); 1414} 1415} 1416 1417// Don't draw titlebar above titlebar 1418.titlebar { 1419background-color: transparent; 1420box-shadow: none; 1421} 1422 1423// The separator for split headerbars 1424headerbar + separator { 1425background-color: divider($on-titlebar); 1426} 1427 1428entry { 1429box-shadow: inset 0 -1px stroke($on-titlebar); 1430background-color: entry-fill($on-titlebar); 1431color: $on-titlebar; 1432 1433&:disabled { 1434box-shadow: inset 0 -1px disabled-stroke($on-titlebar); 1435background-color: entry-fill($on-titlebar); 1436color: disabled($on-titlebar); 1437} 1438 1439image { 1440color: hint($on-titlebar); 1441 1442&:hover, 1443&:active { 1444color: $on-titlebar; 1445} 1446 1447&:disabled { 1448color: disabled($on-titlebar); 1449} 1450} 1451} 1452 1453.linked:not(.vertical) > entry:not(:only-child) { 1454border-radius: $corner-radius $corner-radius 0 0; 1455} 1456 1457@at-root %titlebar-button, & button:not(.suggested-action):not(.destructive-action) { 1458@extend %button-flat; 1459 1460border-image: 1461radial-gradient( 1462circle closest-corner at center calc(100% - 1px), 1463$titlebar-indicator 0%, 1464transparent 0% 1465) 0 0 0 / 0 0 0; 1466background-color: transparent; 1467color: hint($on-titlebar); 1468@include ink-color($on-titlebar); 1469 1470&:disabled { 1471color: disabled-hint($on-titlebar); 1472} 1473 1474@at-root %titlebar-button-checked, 1475&:checked { 1476border-image: 1477radial-gradient( 1478circle closest-corner at center calc(100% - 1px), 1479$titlebar-indicator 100%, 1480transparent 0% 1481) 0 0 2 / 0 0 2px; 1482background-color: transparent; 1483color: $on-titlebar; 1484@include ink-color($on-titlebar); 1485 1486&:disabled { 1487background-color: transparent; 1488color: disabled($on-titlebar); 1489} 1490} 1491 1492&:backdrop { 1493color: disabled($on-titlebar); 1494 1495&:disabled { 1496color: disabled-hint($on-titlebar); 1497} 1498 1499&:checked { 1500color: hint($on-titlebar); 1501 1502&:disabled { 1503color: disabled-hint($on-titlebar); 1504} 1505} 1506} 1507} 1508 1509button.suggested-action, button.destructive-action { 1510&:disabled { 1511background-color: fill($on-titlebar); 1512color: disabled($on-titlebar); 1513} 1514} 1515 1516// FIXME: Ugly overriding 1517stackswitcher button:not(.suggested-action):not(.destructive-action).text-button { 1518min-width: 120px - 8px * 2; 1519} 1520 1521// FIXME: Ugly overriding 1522.path-bar button:not(.suggested-action):not(.destructive-action).text-button { 1523min-width: 0; 1524padding-left: ($medium-size - 24px) / 2; 1525padding-right: ($medium-size - 24px) / 2; 1526} 1527 1528&.selection-mode { 1529// .1ms was a workaround for https://gitlab.gnome.org/GNOME/gtk/issues/698 1530// but let's keep it for backwards compatibility. 1531transition: background-color .1ms $ripple-fade-in-duration, color $duration $ease-out; 1532animation: ripple-on-headerbar $ripple-fade-in-duration $ease-out; 1533box-shadow: $shadow-z1, inset 0 1px highlight($primary); 1534background-color: $primary; 1535color: $on-primary; 1536 1537&:backdrop { 1538color: hint($on-primary); 1539} 1540 1541.subtitle:link { 1542color: $on-primary; 1543} 1544 1545button:not(.suggested-action):not(.destructive-action) { 1546border-image: 1547radial-gradient( 1548circle closest-corner at center calc(100% - 1px), 1549currentcolor 0%, 1550transparent 0% 1551) 0 0 0 / 0 0 0; 1552color: $on-primary; 1553 1554&:disabled { 1555color: disabled($on-primary); 1556} 1557 1558&:checked { 1559border-image: 1560radial-gradient( 1561circle closest-corner at center calc(100% - 1px), 1562currentcolor 100%, 1563transparent 0% 1564) 0 0 2 / 0 0 2px; 1565color: $on-primary; 1566 1567&:disabled { 1568color: disabled($on-primary); 1569} 1570} 1571 1572&:backdrop { 1573color: hint($on-primary); 1574 1575&:disabled { 1576color: disabled-hint($on-primary); 1577} 1578 1579&:checked { 1580color: hint($on-primary); 1581 1582&:disabled { 1583color: disabled-hint($on-primary); 1584} 1585} 1586} 1587} 1588 1589.selection-menu { 1590padding-left: 16px; 1591padding-right: 16px; 1592 1593arrow { 1594-GtkArrow-arrow-scaling: 1; 1595} 1596 1597.arrow { 1598-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 1599} 1600} 1601} 1602 1603.selection-mode { 1604box-shadow: inset 0 1px highlight($primary); // Avoid double shadows 1605background-color: $primary; 1606} 1607 1608// squared corners when the window is maximized, tiled, or fullscreen 1609.tiled &, 1610.tiled-top &, 1611.tiled-right &, 1612.tiled-bottom &, 1613.tiled-left &, 1614.maximized &, 1615.fullscreen & { 1616border-radius: 0; 1617box-shadow: $shadow-z1; 1618} 1619 1620&.default-decoration { 1621min-height: $small-size; 1622padding: $container-padding; 1623box-shadow: inset 0 1px highlight($titlebar); 1624 1625.tiled &, 1626.maximized &, 1627.fullscreen & { 1628box-shadow: none; 1629} 1630 1631button.titlebutton { 1632min-height: $small-size; 1633min-width: $small-size; 1634margin: 0; 1635padding: 0; 1636} 1637 1638// workaround for non-animatable buttons 1639.background:not(.csd) & button.titlebutton:active { 1640background-size: 1000% 1000%; 1641} 1642} 1643 1644.solid-csd & { 1645&:dir(rtl), &:dir(ltr) { // specificity bump 1646border-radius: 0; 1647box-shadow: $shadow-z1; // just remove the highlight 1648} 1649} 1650} 1651 1652headerbar { 1653// The sizing factor needs to be defined in the headerbar node for the case of split headerbars 1654min-height: $large-size; 1655padding: 0 $container-padding; 1656 1657// add vertical margins to common widget on the headerbar to avoid them spanning the whole height 1658entry, 1659spinbutton, 1660button { 1661margin-top: $container-padding; 1662margin-bottom: $container-padding; 1663} 1664 1665separator.titlebutton { 1666margin-top: $large-size / 4; 1667margin-bottom: $large-size / 4; 1668background-color: divider($on-titlebar); 1669} 1670 1671switch { 1672margin-top: ($large-size - 24px) / 2; 1673margin-bottom: ($large-size - 24px) / 2; 1674} 1675 1676// reset button margins of the spinbutton 1677spinbutton button { 1678margin-top: 0; 1679margin-bottom: 0; 1680} 1681 1682// FIXME: This is a hacky workaround. 1683.entry-tag { 1684margin-top: 5px; 1685margin-bottom: 5px; 1686} 1687} 1688 1689// Development versions of apps to use a differently styled headerbar 1690window.devel .titlebar:not(.selection-mode) { 1691} 1692 1693/** 1694* Pathbars 1695*/ 1696 1697%pathbar_button, 1698.path-bar.linked:not(.vertical) > button { 1699@extend %button-flat-basic; 1700 1701padding-left: ($medium-size - 24px) / 2; 1702padding-right: ($medium-size - 24px) / 2; 1703border-image: 1704radial-gradient( 1705circle closest-corner at center calc(100% - 1px), 1706$primary 0%, 1707transparent 0% 1708) 0 0 0 / 0 0 0; 1709border-radius: $corner-radius; 1710 1711&:checked { 1712border-image: 1713radial-gradient( 1714circle closest-corner at center calc(100% - 1px), 1715$primary 100%, 1716transparent 0% 1717) 0 0 2 / 0 0 2px; 1718color: $on-surface; 1719 1720&, 1721&:disabled { 1722background-color: transparent; 1723} 1724} 1725 1726label:not(:only-child) { 1727&:first-child { 1728margin-left: 0; 1729} 1730 1731&:last-child { 1732margin-right: 0; 1733} 1734} 1735 1736&.text-button { 1737min-width: 0; 1738} 1739 1740&.slider-button { 1741padding-left: (24px - 16px) / 2; 1742padding-right: (24px - 16px) / 2; 1743} 1744} 1745 1746/** 1747* Tree Views 1748*/ 1749 1750treeview.view { 1751@at-root * { 1752-GtkTreeView-horizontal-separator: 4; 1753-GtkTreeView-grid-line-width: 1; 1754-GtkTreeView-grid-line-pattern: ''; 1755-GtkTreeView-tree-line-width: 1; 1756-GtkTreeView-tree-line-pattern: ''; 1757-GtkTreeView-expander-size: 16; 1758} 1759 1760border-left-color: stroke($on-surface); // this is actually the tree lines color, 1761border-top-color: divider($on-surface); // while this is the grid lines color, better then nothing 1762 1763// to avoid borders being overridden by the previously set props 1764rubberband { 1765@extend %rubberband; 1766} 1767 1768&:hover, 1769&:selected { 1770border-radius: 0; 1771} 1772 1773&.separator { 1774min-height: 1px + 2px * 2; 1775color: divider($on-surface); 1776} 1777 1778&:drop(active) { 1779// FIXME: box-shadow, background-color and background-image are not available here. 1780border-style: solid none; 1781border-width: 9999px; 1782border-color: overlay("hover", $on-surface); 1783 1784&.after { 1785border-top-style: none; 1786} 1787 1788&.before { 1789border-bottom-style: none; 1790} 1791} 1792 1793&.expander { 1794-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 1795-gtk-icon-transform: rotate(-90deg); 1796 1797&:dir(rtl) { 1798-gtk-icon-transform: rotate(90deg); 1799} 1800 1801&:checked { 1802-gtk-icon-transform: unset; 1803} 1804 1805color: hint($on-surface); 1806 1807&:hover, 1808&:active { 1809color: $on-surface; 1810} 1811 1812&:disabled { 1813color: disabled-hint($on-surface); 1814} 1815} 1816 1817&.progressbar { // progress bar in treeviews 1818border-bottom: $bar-size solid $primary; 1819box-shadow: none; 1820background-color: transparent; 1821background-image: none; 1822 1823&:selected:hover { 1824box-shadow: none; 1825} 1826} 1827 1828&.trough { // progress bar trough in treeviews 1829border-bottom: $bar-size solid disabled-stroke($on-surface); 1830box-shadow: none; 1831background-color: transparent; 1832background-image: none; 1833 1834&:selected:hover { 1835box-shadow: none; 1836} 1837} 1838 1839header { 1840button { 1841padding: 2px 6px; 1842border-style: none solid solid none; 1843border-width: 1px; 1844border-color: divider($on-surface); 1845border-radius: 0; 1846background-clip: border-box; 1847color: hint($on-surface); 1848@include ink-color($on-surface); 1849@include list-item; 1850 1851&:disabled { 1852color: disabled-hint($on-surface); 1853} 1854 1855&, 1856&:disabled { 1857background-color: transparent; 1858} 1859 1860&:last-child { 1861border-right-style: none; 1862} 1863} 1864} 1865 1866button.dnd, 1867header.button.dnd { // for treeview-like derive widgets 1868padding: 2px 6px; 1869border-style: none solid solid; 1870border-width: 1px; 1871border-color: divider($on-surface); 1872border-radius: 0; 1873box-shadow: none; 1874background-clip: border-box; 1875background-color: $surface; 1876color: $primary; 1877} 1878 1879// see tests/testaccel to test 1880acceleditor > label { 1881background-color: $primary; 1882} 1883} 1884 1885/** 1886* Menus 1887*/ 1888 1889menubar, 1890.menubar { 1891-GtkWidget-window-dragging: true; 1892padding: 0; 1893// box-shadow: inset 0 -1px divider($on-surface); 1894background-color: $titlebar; 1895color: $on-titlebar; 1896 1897&:backdrop { 1898background-color: $titlebar-backdrop; 1899color: hint($on-titlebar); 1900} 1901 1902.csd & { 1903transition: $transition; 1904} 1905 1906> menuitem { 1907transition: $transition; 1908min-height: 20px; 1909padding: 4px 8px; 1910color: hint($on-titlebar); 1911 1912&:hover { // Seems like it :hover even with keyboard focus 1913transition: none; 1914background-color: overlay("activated", $on-titlebar); 1915color: $on-titlebar; 1916} 1917 1918&:disabled { 1919color: disabled-hint($on-titlebar); 1920} 1921} 1922} 1923 1924// Needed to make the border-radius of menus work 1925// otherwise the background bleeds out of the menu edges 1926.background.popup { 1927background-color: transparent; 1928} 1929 1930menu, 1931.menu, 1932.context-menu { 1933margin: 4px 0; // See https://bugzilla.gnome.org/show_bug.cgi?id=591258 1934padding: 4px 0; 1935box-shadow: inset 0 1px highlight($surface); 1936background-color: $surface; 1937border: 1px solid divider($on-surface); // adds borders in a non composited env 1938 1939.csd & { 1940border: none; // axes borders in a composited env 1941border-radius: $corner-radius; 1942} 1943 1944menuitem { 1945transition: background-color $duration $ease-out; 1946min-height: 20px; 1947min-width: 40px; 1948padding: 4px 8px; 1949color: $on-surface; 1950font: initial; 1951text-shadow: none; 1952 1953&:hover { 1954transition: none; 1955background-color: overlay("hover", $on-surface); 1956} 1957 1958&:disabled { 1959color: disabled($on-surface); 1960} 1961 1962// submenu indicators 1963arrow { 1964min-height: 16px; 1965min-width: 16px; 1966color: hint($on-surface); 1967 1968&:disabled { 1969color: disabled-hint($on-surface); 1970} 1971 1972&:dir(ltr) { 1973-gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); 1974margin-left: 8px; 1975} 1976 1977&:dir(rtl) { 1978-gtk-icon-source:-gtk-icontheme('pan-end-symbolic-rtl'); 1979margin-right: 8px; 1980} 1981} 1982 1983// avoids labels color being overridden, see 1984// https://bugzilla.gnome.org/show_bug.cgi?id=767058 1985label { 1986&:dir(rtl), 1987&:dir(ltr) { 1988// color: inherit; 1989} 1990} 1991} 1992 1993// overflow arrows 1994> arrow { 1995min-height: 16px; 1996min-width: 16px; 1997padding: 4px; 1998background-color: $surface; 1999color: hint($on-surface); 2000 2001&.top { 2002margin-top: -4px; 2003border-bottom: 1px solid divider($on-surface); 2004border-radius: $corner-radius $corner-radius 0 0; 2005-gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); 2006} 2007 2008&.bottom { 2009margin-top: 4px * 2; 2010margin-bottom: -4px * 3; 2011border-top: 1px solid divider($on-surface); 2012border-radius: 0 0 $corner-radius $corner-radius; 2013-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 2014} 2015 2016&:hover { 2017background-image: image(overlay("hover", $on-surface)); 2018} 2019 2020&:disabled { 2021border-color: transparent; 2022background-color: transparent; 2023color: transparent; 2024// color: disabled-hint($on-surface); 2025} 2026} 2027 2028separator { 2029margin: 4px 0; 2030} 2031} 2032 2033menuitem { 2034accelerator { 2035color: hint($on-surface); 2036} 2037 2038&:disabled accelerator { 2039color: disabled-hint($on-surface); 2040} 2041} 2042 2043/** 2044* Popovers 2045*/ 2046 2047popover.background { 2048transition: $transition-shadow; 2049padding: 2px; 2050box-shadow: $shadow-z4; // TODO: this should really have a highlight 2051background-color: $surface; 2052 2053&:backdrop { 2054box-shadow: $shadow-z2; 2055} 2056 2057&, .csd & { 2058border-style: solid; 2059border-width: 1px; 2060border-color: rgba(black, .1) rgba(black, .2) rgba(black, .3); 2061border-radius: $corner-radius + 1px; 2062background-clip: padding-box; 2063} 2064 2065> stack { 2066margin: -4px; // remove extra padding from menu style popovers 2067} 2068 2069> toolbar { 2070margin: -2px; 2071} 2072 2073> list, 2074> .view, 2075> toolbar { 2076border-style: none; 2077box-shadow: none; 2078background-color: transparent; 2079} 2080 2081&.touch-selection, 2082&.magnifier, 2083&.osd { 2084// @extend %osd; 2085} 2086 2087button:not(.suggested-action):not(.destructive-action) { 2088// @extend %button-flat; 2089} 2090 2091.linked:not(.vertical) > entry:not(:only-child) { 2092// border-radius: $corner-radius $corner-radius 0 0; 2093} 2094 2095&.menu button, 2096button.model { 2097@extend %button-flat; 2098 2099min-height: 32px; 2100padding: 0 8px; 2101border-radius: $corner-radius; 2102 2103&:checked { 2104// color: $primary; 2105} 2106} 2107 2108separator { 2109margin: 4px 0; 2110} 2111 2112list separator { 2113margin: 0; 2114} 2115} 2116 2117/** 2118* Notebooks 2119*/ 2120 2121notebook { 2122&:focus tab:checked { 2123box-shadow: inset 0 0 0 9999px rgba($primary, .12); 2124} 2125 2126> header { 2127border-width: 1px; 2128border-color: divider($on-surface); 2129 2130&.top { 2131border-bottom-style: solid; 2132 2133> tabs { 2134margin-bottom: -1px; 2135 2136> tab { 2137border-image: linear-gradient(to top, transparent 2px, transparent 2px) 2 / 0 0 2px; 2138 2139&:checked { 2140border-image-source: linear-gradient(to top, $primary 2px, divider($on-surface) 2px); 2141} 2142 2143&.reorderable-page { 2144border-image-width: 0 1px 2px; 2145} 2146} 2147} 2148} 2149 2150&.bottom { 2151border-top-style: solid; 2152 2153> tabs { 2154margin-top: -1px; 2155 2156> tab { 2157border-image: linear-gradient(to bottom, transparent 2px, transparent 2px) 2 / 2px 0 0; 2158 2159&:checked { 2160border-image-source: linear-gradient(to bottom, $primary 2px, divider($on-surface) 2px); 2161} 2162 2163&.reorderable-page { 2164border-image-width: 2px 1px 0; 2165} 2166} 2167} 2168} 2169 2170&.left { 2171border-right-style: solid; 2172 2173> tabs { 2174margin-right: -1px; 2175 2176> tab { 2177border-image: linear-gradient(to left, transparent 2px, transparent 2px) 2 / 0 2px 0 0; 2178 2179&:checked { 2180border-image-source: linear-gradient(to left, $primary 2px, divider($on-surface) 2px); 2181} 2182 2183&.reorderable-page { 2184border-image-width: 1px 2px 1px 0; 2185} 2186} 2187} 2188} 2189 2190&.right { 2191border-left-style: solid; 2192 2193> tabs { 2194margin-left: -1px; 2195 2196> tab { 2197border-image: linear-gradient(to right, transparent 2px, transparent 2px) 2 / 0 0 0 2px; 2198 2199&:checked { 2200border-image-source: linear-gradient(to right, $primary 2px, divider($on-surface) 2px); 2201} 2202 2203&.reorderable-page { 2204border-image-width: 1px 0 1px 2px; 2205} 2206} 2207} 2208} 2209 2210&.top > tabs > arrow { 2211@extend %notebook_vert_arrows; 2212 2213border-top-style: none; 2214} 2215 2216&.bottom > tabs > arrow { 2217@extend %notebook_vert_arrows; 2218 2219border-bottom-style: none; 2220} 2221 2222@at-root %notebook_vert_arrows { 2223padding-left: 4px; 2224padding-right: 4px; 2225 2226&.down { 2227margin-left: -8px; 2228-gtk-icon-source: -gtk-icontheme('pan-start-symbolic'); 2229} 2230 2231&.up { 2232margin-right: -8px; 2233-gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); 2234} 2235} 2236 2237&.left > tabs > arrow { 2238@extend %notebook_horz_arrows; 2239 2240border-left-style: none; 2241} 2242 2243&.right > tabs > arrow { 2244@extend %notebook_horz_arrows; 2245 2246border-right-style: none; 2247} 2248 2249@at-root %notebook_horz_arrows { 2250padding-top: 4px; 2251padding-bottom: 4px; 2252 2253&.down { 2254margin-top: -8px; 2255-gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); 2256} 2257 2258&.up { 2259margin-bottom: -8px; 2260-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 2261} 2262} 2263 2264> tabs > arrow { 2265min-height: 16px; 2266min-width: 16px; 2267border-radius: 0; 2268color: hint($on-surface); 2269@extend %ripple; 2270@include ink-color($on-surface); 2271 2272&:disabled { 2273color: disabled-hint($on-surface); 2274} 2275} 2276 2277tab { 2278transition: $transition, 2279background-size 0ms, 2280background-image 0ms; 2281min-height: $small-size; 2282min-width: $small-size; 2283padding: $container-padding 12px; 2284 2285border-width: 1px; // for reorderable tabs 2286border-color: transparent; // 2287 2288outline: none; 2289background-image: radial-gradient(circle, $primary 10%, transparent 0%); 2290background-repeat: no-repeat; 2291background-position: center; 2292background-size: 0% 0%; 2293 2294color: hint($on-surface); 2295font-weight: 500; 2296 2297&:hover { 2298background-color: overlay("hover-alt", $on-surface); 2299} 2300 2301&:disabled { 2302color: disabled-hint($on-surface); 2303} 2304 2305&:checked { 2306transition: $transition, 2307background-size $ripple-fade-in-duration $ease-out, 2308background-image $ripple-fade-in-duration + $ripple-fade-out-duration $ease-out; 2309background-color: transparent; 2310background-image: radial-gradient(circle, transparent 10%, transparent 0%); 2311background-size: 1000% 1000%; 2312background-clip: padding-box; 2313color: $on-surface; 2314 2315&:disabled { 2316color: disabled($on-surface); 2317} 2318 2319&.reorderable-page { 2320border-color: divider($on-surface); 2321background-color: $base; 2322} 2323} 2324 2325// FIXME: The tab node doesn't have :drop(active), instead its child box has it. 2326> box { 2327transition: background-color $duration $ease-out; 2328margin: -$container-padding -12px; 2329padding: $container-padding 12px; 2330 2331&:drop(active) { 2332background-color: overlay("hover", $on-surface); 2333} 2334} 2335 2336// colors the button like the label, overridden otherwise 2337button.flat { 2338@extend %button-small; 2339 2340&:last-child { 2341margin-left: $container-padding; 2342margin-right: $container-padding - 12px; 2343} 2344 2345&:first-child { 2346margin-left: $container-padding - 12px; 2347margin-right: $container-padding; 2348} 2349} 2350} 2351 2352&.top, 2353&.bottom { 2354tabs { 2355padding-left: 8px; 2356padding-right: 8px; 2357 2358&:not(:only-child) { 2359&:first-child { 2360margin-left: 0; 2361} 2362 2363&:last-child { 2364margin-right: 0; 2365} 2366} 2367 2368tab.reorderable-page { 2369border-style: none solid; 2370} 2371} 2372} 2373 2374&.left, 2375&.right { 2376tabs { 2377padding-top: 8px; 2378padding-bottom: 8px; 2379 2380&:not(:only-child) { 2381&:first-child { 2382margin-top: 0; 2383} 2384 2385&:last-child { 2386margin-bottom: 0; 2387} 2388} 2389 2390tab.reorderable-page { 2391border-style: solid none; 2392} 2393} 2394} 2395} 2396} 2397 2398/** 2399* Scrollbars 2400*/ 2401 2402scrollbar { 2403$_slider_min_length: 24px; 2404 2405// disable steppers 2406@at-root * { 2407-GtkScrollbar-has-backward-stepper: false; 2408-GtkScrollbar-has-forward-stepper: false; 2409} 2410 2411transition: $transition; 2412// background-color: $background; 2413background-clip: padding-box; 2414 2415// scrollbar border 2416&.top { border-bottom: 1px solid divider($on-surface); } 2417&.bottom { border-top: 1px solid divider($on-surface); } 2418&.left { border-right: 1px solid divider($on-surface); } 2419&.right { border-left: 1px solid divider($on-surface); } 2420 2421// slider 2422slider { 2423transition: background-color $duration $ease-out; 2424min-width: 8px; 2425min-height: 8px; 2426border: 4px solid transparent; 2427border-radius: $circular-radius; 2428background-clip: padding-box; 2429background-color: disabled($on-surface); 2430 2431&:hover { 2432background-color: hint($on-surface); 2433} 2434 2435&:active { 2436background-color: $on-surface; 2437} 2438 2439&:disabled { 2440background-color: disabled-hint($on-surface); 2441} 2442} 2443 2444&.fine-tune { 2445slider { 2446min-width: 4px; 2447min-height: 4px; 2448} 2449 2450&.horizontal slider { 2451margin: 2px 0; 2452} 2453 2454&.vertical slider { 2455margin: 0 2px; 2456} 2457} 2458 2459&.overlay-indicator { 2460&:not(.fine-tune) slider { 2461transition-property: background-color, min-height, min-width; 2462} 2463 2464&:not(.dragging):not(.hovering) { 2465border-color: transparent; 2466background-color: transparent; 2467 2468slider { 2469min-width: 4px; 2470min-height: 4px; 2471margin: 4px - 1px; 2472border: 1px solid rgba($base, .3); 2473} 2474 2475button { 2476min-width: 4px; 2477min-height: 4px; 2478margin: 4px - 1px; 2479border: 1px solid rgba($base, .3); 2480border-radius: $circular-radius; 2481background-color: disabled($on-surface); 2482background-clip: padding-box; 2483-gtk-icon-source: none; 2484 2485&:disabled { 2486background-color: disabled-hint($on-surface); 2487} 2488} 2489 2490&.horizontal { 2491slider { 2492min-width: $_slider_min_length; 2493} 2494 2495button { 2496min-width: 8px; 2497} 2498} 2499 2500&.vertical { 2501slider { 2502min-height: $_slider_min_length; 2503} 2504 2505button { 2506min-height: 8px; 2507} 2508} 2509} 2510 2511&.dragging, 2512&.hovering { 2513background-color: rgba($surface, .9); 2514} 2515} 2516 2517&.horizontal slider { 2518min-width: $_slider_min_length; 2519} 2520 2521&.vertical slider { 2522min-height: $_slider_min_length; 2523} 2524 2525// button styling 2526button { 2527@extend %button-flat-basic; 2528 2529min-width: 16px; 2530min-height: 16px; 2531padding: 0; 2532border-radius: 0; 2533} 2534 2535// button icons 2536&.vertical { 2537button { 2538&.down { 2539-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 2540} 2541 2542&.up { 2543-gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); 2544} 2545} 2546} 2547 2548&.horizontal { 2549button { 2550&.down { 2551-gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); 2552} 2553 2554&.up { 2555-gtk-icon-source: -gtk-icontheme('pan-start-symbolic'); 2556} 2557} 2558} 2559} 2560 2561 2562/** 2563* Switch 2564*/ 2565 2566switch { 2567transition: all $duration $ease-out; 2568margin: $container-padding 0; 2569padding: 0 2px; 2570border: 5px solid transparent; 2571border-radius: $circular-radius; 2572background-color: stroke($on-surface); 2573background-clip: padding-box; 2574font-size: 0; 2575 2576&:checked { 2577background-color: rgba($primary, .5); 2578} 2579 2580&:disabled { 2581opacity: .5; 2582} 2583 2584// hide on/off icons for >=3.24.5 2585image { 2586margin: -8px; 2587-gtk-icon-transform: scale(0); 2588} 2589 2590slider { 2591transition: all $duration $ease-out; 2592min-width: 20px; 2593min-height: 20px; 2594margin: -3px -2px; 2595border-radius: $circular-radius; 2596outline: none; 2597box-shadow: 0 0 0 10px transparent, $shadow-z1; 2598background-color: $switch-surface; 2599} 2600 2601&:hover slider { 2602box-shadow: 0 0 0 10px overlay("hover", $on-surface), $shadow-z1; 2603} 2604 2605&:focus slider { 2606box-shadow: 0 0 0 10px overlay("focus", $on-surface), $shadow-z1; 2607} 2608 2609&:checked slider { 2610background-color: $primary; 2611} 2612 2613&:checked:hover slider { 2614box-shadow: 0 0 0 10px overlay("hover", $primary), $shadow-z1; 2615} 2616 2617&:checked:focus slider { 2618box-shadow: 0 0 0 10px overlay("focus", $primary), $shadow-z1; 2619} 2620 2621row:selected & { 2622} 2623} 2624 2625/** 2626* Check and Radio items 2627*/ 2628 2629// draw regular check and radio items using our PNG assets 2630// all assets are rendered from assets.svg. never add pngs directly 2631 2632// selection-mode 2633.view.content-view.check:not(list), 2634.content-view:not(list) check { 2635min-height: 40px; 2636min-width: 40px; 2637margin: 0; 2638padding: 0; 2639box-shadow: none; 2640background-color: transparent; 2641background-image: none; 2642-gtk-icon-shadow: $icon-shadow-z2; 2643 2644&:hover, 2645&:active { 2646-gtk-icon-shadow: $icon-shadow-z4; 2647} 2648 2649@each $class, $suffix in ("": "-unchecked", ":checked": "-checked") { 2650&#{$class} { 2651$_url: 'assets/selectionmode-checkbox#{$suffix}#{$asset-suffix}'; 2652 2653-gtk-icon-source: -gtk-scaled(url("#{$_url}.png"), url("#{$_url}@2.png")); 2654} 2655} 2656} 2657 2658checkbutton, 2659radiobutton { 2660outline: none; 2661} 2662 2663checkbutton.text-button, 2664radiobutton.text-button { 2665// this is for a nice focus on check and radios text 2666padding: 2px; 2667 2668label:not(:only-child) { 2669margin: 0 4px; 2670} 2671} 2672 2673$check-radio-size: 40px; 2674 2675check, 2676radio { 2677min-height: 24px; 2678min-width: 24px; 2679margin: -($check-radio-size - 24px) / 2; 2680padding: ($check-radio-size - 24px) / 2; 2681border-radius: $circular-radius; 2682color: hint($on-surface); 2683@extend %ripple; 2684@include ink-color($on-surface); 2685 2686&:checked, 2687&:indeterminate { 2688color: $primary; 2689@include ink-color($primary); 2690} 2691 2692&:disabled { 2693color: disabled-hint($on-surface); 2694} 2695 2696&:only-child { 2697// margin: -12px; 2698} 2699 2700popover modelbutton.flat & { 2701&, 2702&:focus, 2703&:hover, 2704&:focus:hover, 2705&:active, 2706&:disabled { 2707transition: none; // FIXME: this is a workaround for a popover check/radio long transition issue 2708box-shadow: none; 2709background-image: none; 2710} 2711 2712&.left:dir(rtl) { 2713margin-left: -12px; 2714margin-right: -4px; 2715} 2716 2717&.right:dir(ltr) { 2718margin-left: -4px; 2719margin-right: -12px; 2720} 2721} 2722 2723menu menuitem & { 2724transition: none; 2725margin: 0; // this is a workaround for a menu check/radio size allocation issue 2726padding: 0; 2727 2728&:dir(ltr) { 2729margin-right: 8px; 2730} 2731 2732&:dir(rtl) { 2733margin-left: 8px; 2734} 2735 2736&, 2737&:hover, 2738&:disabled { 2739box-shadow: none; 2740} 2741} 2742} 2743 2744%check, 2745check { 2746-gtk-icon-source: -gtk-recolor(url("icons/checkbox-unchecked-symbolic.svg")); 2747 2748&:checked { 2749-gtk-icon-source: -gtk-recolor(url("icons/checkbox-checked-symbolic.svg")); 2750} 2751 2752&:indeterminate { 2753-gtk-icon-source: -gtk-recolor(url("icons/checkbox-mixed-symbolic.svg")); 2754} 2755} 2756 2757%radio, 2758radio { 2759-gtk-icon-source: -gtk-recolor(url("icons/radio-unchecked-symbolic.svg")); 2760 2761&:checked { 2762// -gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); 2763} 2764 2765&:indeterminate { 2766-gtk-icon-source: -gtk-recolor(url("icons/radio-mixed-symbolic.svg")); 2767} 2768 2769border-image-slice: $check-radio-size / 2px; 2770border-image-width: $check-radio-size / 2; 2771 2772$radio-indicator-size: 10px / $check-radio-size / 2; 2773 2774border-image-source: 2775-gtk-gradient( 2776radial, 2777center center, 0, 2778center center, .001, 2779to($primary), 2780to(transparent) 2781); 2782 2783&:checked:not(:indeterminate) { 2784border-image-source: 2785-gtk-gradient( 2786radial, 2787center center, 0, 2788center center, $radio-indicator-size, 2789to($primary), 2790to(transparent) 2791); 2792 2793&:disabled { 2794border-image-source: 2795-gtk-gradient( 2796radial, 2797center center, 0, 2798center center, $radio-indicator-size, 2799to(disabled-hint($on-surface)), 2800to(transparent) 2801); 2802} 2803} 2804} 2805 2806%small_check, 2807menu menuitem check { 2808min-height: 16px; 2809min-width: 16px; 2810border-radius: $corner-radius; 2811-gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-unchecked-symbolic.svg")); 2812 2813&:checked { 2814-gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-checked-symbolic.svg")); 2815} 2816 2817&:indeterminate { 2818-gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-mixed-symbolic.svg")); 2819} 2820} 2821 2822%small_radio, 2823menu menuitem radio { 2824min-height: 16px; 2825min-width: 16px; 2826border-image: none; 2827-gtk-icon-source: -gtk-recolor(url("icons/small-radio-unchecked-symbolic.svg")); 2828 2829&:checked { 2830-gtk-icon-source: -gtk-recolor(url("icons/small-radio-checked-symbolic.svg")); 2831} 2832 2833&:indeterminate { 2834-gtk-icon-source: -gtk-recolor(url("icons/small-radio-mixed-symbolic.svg")); 2835} 2836} 2837 2838// ANIMATION: 2839// this is made with those pretty convoluted transitions, since checks and radios have to animate only on state changes, 2840// the transformation is set on the active state and it get reset on the checked state. 2841radio:not(:checked):active { 2842// -gtk-icon-transform: scale(0); 2843} 2844 2845// Otherwise, treeview.view styling will be applied... 2846treeview.view check, 2847treeview.view radio { 2848padding: 0; 2849color: hint($on-surface); 2850 2851&:checked, 2852&:indeterminate { 2853color: $primary; 2854} 2855 2856&:disabled { 2857color: disabled-hint($on-surface); 2858} 2859 2860&, 2861&:hover, 2862&:selected, 2863&:selected:hover { 2864box-shadow: none; 2865background-color: transparent; 2866} 2867} 2868 2869treeview.view radio:checked { 2870-gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); 2871border-image: none; 2872} 2873 2874/** 2875* GtkScale 2876*/ 2877 2878scale { 2879// sizing 2880$_marks_length: 8px; 2881$_marks_distance: 7px; 2882 2883$trough_size: 2px; 2884$finetune_trough_size: 4px; 2885 2886$slider_size: 32px; 2887 2888$slider_margin: -($slider_size - $trough_size) / 2; 2889$finetune_slider_margin: -($slider_size - $finetune_trough_size) / 2; 2890 2891$color_slider_margin: -($slider_size) * 3 / 4; 2892$color_marks_slider_margin: -($slider_size - 16px) - $color_slider_margin; 2893 2894min-height: $trough_size; 2895min-width: $trough_size; 2896 2897&.horizontal { 2898padding: ($medium-size - $trough_size) / 2 12px; 2899} 2900 2901&.vertical { 2902padding: 12px ($medium-size - $trough_size) / 2; 2903} 2904 2905// the slider is inside the trough, so to have make it bigger there's a negative margin 2906slider { 2907min-height: $slider_size; 2908min-width: $slider_size; 2909margin: $slider_margin; 2910} 2911 2912// click-and-hold the slider to activate 2913&.fine-tune { 2914&.horizontal { 2915min-height: $finetune_trough_size; 2916padding-top: ($medium-size - $finetune_trough_size) / 2; 2917padding-bottom: ($medium-size - $finetune_trough_size) / 2; 2918} 2919 2920&.vertical { 2921min-width: $finetune_trough_size; 2922padding-left: ($medium-size - $finetune_trough_size) / 2; 2923padding-right: ($medium-size - $finetune_trough_size) / 2; 2924} 2925 2926// to make the trough grow in fine-tune mode 2927slider { 2928margin: $finetune_slider_margin; 2929} 2930} 2931 2932// the backing bit 2933trough { 2934transition: background-color $duration $ease-out; 2935outline: none; 2936background-color: stroke($on-surface); 2937 2938&:disabled { 2939background-color: disabled-stroke($on-surface); 2940} 2941} 2942 2943// the colored part of the backing bit 2944highlight { 2945transition: background-image $duration $ease-out; 2946background-image: image($primary); 2947 2948&:disabled { 2949background-color: $background; 2950background-image: image(disabled-hint($on-surface)); 2951} 2952} 2953 2954// this is another differently styled part of the backing bit, the most relevant use case is for example 2955// in media player to indicate how much video stream as been cached 2956fill { 2957transition: background-color $duration $ease-out; 2958background-color: stroke($on-surface); 2959 2960&:disabled { 2961background-color: transparent; 2962} 2963} 2964 2965slider { 2966transition: background-color $duration $ease-out, 2967background-size $ripple-fade-out-duration $ease-out, 2968background-image $ripple-fade-out-opacity-duration $ease-out; 2969background-repeat: no-repeat; 2970background-position: center; 2971background-size: auto, 1000% 1000%; 2972border-radius: 50%; 2973color: $primary; 2974 2975@each $class, $suffix in ("": "", ":disabled": "-disabled") { 2976&#{$class} { 2977$_url: 'assets/scale-slider#{$suffix}#{$asset-suffix}'; 2978 2979background-image: 2980-gtk-scaled(url('#{$_url}.png'), url('#{$_url}@2.png')), 2981radial-gradient(circle, transparent 10%, transparent 0%); 2982} 2983} 2984 2985&:hover { 2986background-color: overlay("hover", $primary); 2987} 2988 2989&:focus { 2990background-color: overlay("focus", $primary); 2991} 2992 2993&:active { 2994$_url: 'assets/scale-slider#{$asset-suffix}'; 2995 2996transition: background-color $duration $ease-out, 2997background-size 0ms, 2998background-image 0ms; 2999animation: ripple-on-slider $ripple-fade-in-duration $ease-out forwards; 3000background-image: 3001-gtk-scaled(url('#{$_url}.png'), url('#{$_url}@2.png')), 3002radial-gradient(circle, overlay("pressed", $primary) 10%, transparent 0%); 3003background-size: auto, 0% 0%; 3004} 3005} 3006 3007marks, 3008value { 3009color: hint($on-surface); 3010} 3011 3012indicator { 3013background-color: stroke($on-surface); 3014color: transparent; 3015} 3016 3017//marks margins 3018@each $scale_orient, $marks_class, $marks_pos, $marks_margin in (horizontal, top, top, bottom), 3019(horizontal, bottom, bottom, top), 3020(vertical, top, left, right), 3021(vertical, bottom, right, left) { 3022&.#{$scale_orient} marks { 3023&.#{$marks_class} { 3024margin-#{$marks_margin}: $_marks_distance; 3025margin-#{$marks_pos}: -($_marks_distance + $_marks_length); 3026} 3027} 3028 3029&.#{$scale_orient}.fine-tune marks { 3030&.#{$marks_class} { 3031margin-#{$marks_margin}: $_marks_distance - 1px; 3032margin-#{$marks_pos}: -($_marks_distance + $_marks_length - 1px); 3033} 3034} 3035} 3036 3037&.horizontal { 3038indicator { 3039min-height: $_marks_length; 3040min-width: 1px; 3041} 3042} 3043 3044&.vertical { 3045indicator { 3046min-height: 1px; 3047min-width: $_marks_length; 3048} 3049} 3050 3051// *WARNING* scale with marks madness following 3052 3053@each $dir_class, $dir_infix in (".horizontal": "-horz", ".vertical": "-vert") { 3054@each $marks_class, $marks_infix in ( 3055".marks-before:not(.marks-after)": "-marks-before", 3056".marks-after:not(.marks-before)": "-marks-after" 3057) { 3058&#{$dir_class}#{$marks_class} { 3059slider { 3060@each $state_class, $state_infix in ("": "", ":disabled": "-disabled") { 3061&#{$state_class} { 3062$_scale_asset: 'assets/scale#{$dir_infix}#{$marks_infix}-slider#{$state_infix}#{$asset-suffix}'; 3063 3064background-image: 3065-gtk-scaled(url('#{$_scale_asset}.png'), url('#{$_scale_asset}@2.png')), 3066radial-gradient(circle, transparent 10%, transparent 0%); 3067} 3068} 3069 3070&:active { 3071$_scale_asset: 'assets/scale#{$dir_infix}#{$marks_infix}-slider#{$asset-suffix}'; 3072 3073background-image: 3074-gtk-scaled(url('#{$_scale_asset}.png'), url('#{$_scale_asset}@2.png')), 3075radial-gradient(circle, overlay("pressed", $primary) 10%, transparent 0%); 3076} 3077} 3078} 3079} 3080} 3081 3082&.color { 3083min-height: 0; 3084min-width: 0; 3085 3086&.horizontal { 3087padding: 0 0 12px 0; 3088 3089slider { 3090&:dir(ltr), &:dir(rtl) { // specificity bump 3091margin-bottom: $color_slider_margin; 3092margin-top: $color_marks_slider_margin; 3093} 3094} 3095} 3096 3097&.vertical { 3098&:dir(ltr) { 3099padding: 0 0 0 12px; 3100 3101slider { 3102margin-left: $color_slider_margin; 3103margin-right: $color_marks_slider_margin; 3104} 3105} 3106 3107&:dir(rtl) { 3108padding: 0 12px 0 0; 3109 3110slider { 3111margin-right: $color_slider_margin; 3112margin-left: $color_marks_slider_margin; 3113} 3114} 3115} 3116} 3117} 3118 3119/** 3120* Progress bars 3121*/ 3122 3123progressbar { 3124// sizing 3125&.horizontal { 3126trough, 3127progress { 3128min-height: $bar-size; 3129} 3130} 3131 3132&.vertical { 3133trough, 3134progress { 3135min-width: $bar-size; 3136} 3137} 3138 3139// FIXME: insensitive state missing and some other state should be set probably 3140color: hint($on-surface); 3141font-size: smaller; 3142 3143trough { 3144background-color: disabled-stroke($on-surface); 3145} 3146 3147progress { 3148background-color: $primary; 3149} 3150 3151&.osd { // progressbar.osd used for epiphany page loading progress 3152// min-width: $bar-size; 3153// min-height: $bar-size; 3154// background-color: transparent; 3155 3156trough { 3157// background-color: transparent; 3158} 3159 3160progress { 3161// background-color: $primary; 3162} 3163} 3164 3165// makes the progress indicator disappear, when the fraction is 0 3166trough.empty progress { 3167all: unset; 3168} 3169} 3170 3171/** 3172* Level Bar 3173*/ 3174 3175levelbar { 3176&.horizontal { 3177block { 3178min-height: $bar-size; 3179} 3180 3181&.discrete block { 3182min-width: $medium-size; 3183 3184&:not(:last-child) { 3185margin-right: 2px; 3186} 3187} 3188} 3189 3190&.vertical { 3191block { 3192min-width: $bar-size; 3193} 3194 3195&.discrete block { 3196min-height: $medium-size; 3197 3198&:not(:last-child) { 3199margin-bottom: 2px; 3200} 3201} 3202} 3203 3204trough { 3205} 3206 3207block { 3208&.low { 3209background-color: $warning; 3210} 3211 3212&.high, 3213&:not(.empty) { 3214background-color: $primary; 3215} 3216 3217&.full { 3218background-color: $success; 3219} 3220 3221&.empty { 3222background-color: disabled-stroke($on-surface); 3223} 3224} 3225} 3226 3227/** 3228* Print dialog 3229*/ 3230 3231printdialog { 3232paper { 3233padding: 0; 3234border: 1px solid divider($on-surface); 3235background-clip: padding-box; 3236background-color: $base; 3237color: $on-surface; 3238} 3239 3240.dialog-action-box { 3241margin: 12px; 3242} 3243} 3244 3245/** 3246* Frames 3247*/ 3248 3249frame > border, 3250.frame { 3251margin: 0; 3252padding: 0; 3253border: 1px solid divider($on-surface); 3254border-radius: 0; 3255box-shadow: none; 3256background-clip: padding-box; 3257background-color: $base; 3258 3259&.flat { 3260border-style: none; 3261background-color: transparent; 3262} 3263} 3264 3265// for backward compatibility 3266frame.flat > border { 3267border-style: none; 3268background-color: transparent; 3269} 3270 3271actionbar > revealer > box { 3272padding: $container-padding; 3273border-top: 1px solid divider($on-surface); 3274// background-color: $base; 3275 3276button:not(.suggested-action):not(.destructive-action) { 3277@extend %button-flat; 3278} 3279 3280.linked:not(.vertical) > entry:not(:only-child) { 3281border-radius: $corner-radius $corner-radius 0 0; 3282} 3283} 3284 3285scrolledwindow { 3286viewport.frame { // avoid double borders when viewport inside scrolled window 3287border-style: none; 3288background-color: transparent; 3289} 3290 3291// This is used when content is touch-dragged past boundaries. 3292// draws a box on top of the content, the size changes programmatically. 3293@at-root overshoot { 3294&.top { @include overshoot(top); } 3295 3296&.bottom { @include overshoot(bottom); } 3297 3298&.left { @include overshoot(left); } 3299 3300&.right { @include overshoot(right); } 3301} 3302 3303// Overflow indication, works similarly to the overshoot, the size if fixed tho. 3304@at-root undershoot { 3305// &.top { @include undershoot(top); } 3306 3307// &.bottom { @include undershoot(bottom); } 3308 3309// &.left { @include undershoot(left); } 3310 3311// &.right { @include undershoot(right); } 3312} 3313 3314@at-root junction { // the small square between two scrollbars 3315border-style: solid none none solid; 3316border-width: 1px; 3317border-color: divider($on-surface); 3318// background-color: $background; 3319 3320&:dir(rtl) { 3321border-style: solid solid none none; 3322} 3323} 3324} 3325 3326// vbox and hbox separators 3327separator { 3328min-width: 1px; 3329min-height: 1px; 3330background-color: divider($on-surface); 3331} 3332 3333%hide_separators { 3334min-width: 0; 3335min-height: 0; 3336background-color: transparent; 3337} 3338 3339/** 3340* Lists 3341*/ 3342 3343list { 3344border-color: divider($on-surface); 3345// background-color: $base; 3346 3347row { 3348padding: 2px; 3349} 3350} 3351 3352row { 3353background-clip: padding-box; 3354 3355&.activatable { 3356@extend %ripple; 3357@include ink-color($on-surface); 3358@include list-item; 3359 3360// this is for indicathing which row generated a popover 3361// see https://bugzilla.gnome.org/show_bug.cgi?id=754411 3362&.has-open-popup { 3363background-color: overlay("activated", $on-surface); 3364} 3365} 3366 3367&:selected { 3368background-color: $overlay-selected; 3369 3370@include ink-color($primary); 3371 3372&.has-open-popup { 3373background-color: overlay("activated", $primary, $background: $overlay-selected); 3374} 3375} 3376} 3377 3378/** 3379* App Notifications 3380*/ 3381 3382.app-notification { 3383// @extend %osd; 3384 3385@extend %toolbar-osd; 3386 3387margin: 8px; 3388 3389button { 3390@extend %button-flat; 3391 3392&.text-button:not(:disabled) { 3393color: $primary; 3394@include ink-color($primary); 3395} 3396} 3397 3398&.frame { 3399border-style: none; 3400} 3401 3402border { 3403border-style: none; 3404background-color: transparent; 3405} 3406} 3407 3408/** 3409* Expanders 3410*/ 3411 3412expander { 3413title > arrow { 3414transition: all $duration $ease-out; 3415min-width: 16px; 3416min-height: 16px; 3417-gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); 3418-gtk-icon-transform: rotate(-90deg); 3419 3420&:dir(rtl) { 3421-gtk-icon-transform: rotate(90deg); 3422} 3423 3424&:checked { 3425-gtk-icon-transform: unset; 3426} 3427 3428color: hint($on-surface); 3429 3430&:hover, 3431&:active { 3432color: $on-surface; 3433} 3434 3435&:disabled { 3436color: disabled-hint($on-surface); 3437} 3438} 3439} 3440 3441/** 3442* Calendar 3443*/ 3444 3445calendar { 3446padding: 1px; 3447border: 1px solid divider($on-surface); 3448background-clip: padding-box; 3449background-color: $base; 3450color: $on-surface; 3451 3452&:disabled { 3453color: disabled($on-surface); 3454} 3455 3456&:selected { 3457border-radius: $corner-radius + 1px; 3458background-color: $overlay-selected; 3459} 3460 3461&.header { 3462border-style: none none solid; 3463border-color: divider($on-surface); 3464border-radius: 0; 3465} 3466 3467&.button { 3468border-radius: $corner-radius + 1px; 3469color: hint($on-surface); 3470 3471&:hover { 3472background-image: image(overlay("hover", $on-surface)); 3473} 3474 3475&:disabled { 3476color: disabled-hint($on-surface); 3477} 3478} 3479 3480&.highlight { 3481color: hint($on-surface); 3482font-weight: 500; 3483} 3484 3485&:indeterminate { 3486color: disabled-hint($on-surface); 3487} 3488} 3489 3490/** 3491* Dialogs 3492*/ 3493 3494// Message Dialog styling 3495messagedialog { 3496&.background { 3497background-color: $surface; 3498} 3499 3500.titlebar { 3501min-height: $small-size; 3502border-style: none; 3503box-shadow: inset 0 1px highlight($surface); 3504background-color: $surface; 3505color: $on-surface; 3506 3507&:backdrop { 3508background-color: $surface; 3509color: hint($on-surface); 3510} 3511} 3512 3513&.csd { // rounded bottom border styling for csd version 3514&.background { 3515// bigger radius for better antialiasing 3516border-bottom-left-radius: $corner-radius; 3517border-bottom-right-radius: $corner-radius; 3518} 3519} 3520 3521// Hint text 3522box.vertical > label + label { 3523color: hint($on-surface); 3524} 3525 3526.dialog-action-box { 3527margin-top: -$container-padding; 3528// padding: $container-padding; 3529 3530button { 3531@extend %button-flat; 3532 3533&:not(:last-child) { 3534margin-right: $container-padding; 3535} 3536 3537&:not(:disabled) { 3538color: $primary; 3539@include ink-color($primary); 3540} 3541 3542&.suggested-action:not(:disabled) { 3543background-color: transparent; 3544// color: $primary; 3545// @include ink-color($primary); 3546} 3547 3548&.destructive-action:not(:disabled) { 3549background-color: transparent; 3550color: $error; 3551@include ink-color($error); 3552} 3553} 3554} 3555} 3556 3557filechooser { 3558.dialog-action-box { 3559border-top: 1px solid divider($on-surface); 3560} 3561 3562#pathbarbox { 3563border-bottom: 1px solid divider($on-surface); 3564// background-color: $background; 3565 3566// The new folder button 3567> stack > box > button { 3568@extend %button-flat; 3569 3570border-radius: $circular-radius; 3571} 3572} 3573} 3574 3575filechooserbutton:drop(active) { 3576// box-shadow: none; 3577} 3578 3579/** 3580* Sidebar 3581*/ 3582 3583.sidebar { 3584border-style: none; 3585background-color: transparent; 3586 3587&:not(separator) { 3588@at-root %sidebar_left, 3589&:dir(ltr), 3590&.left, 3591&.left:dir(rtl) { 3592border-right: 1px solid divider($on-surface); 3593border-left-style: none; 3594} 3595 3596@at-root %sidebar_right, 3597&:dir(rtl), 3598&.right { 3599border-left: 1px solid divider($on-surface); 3600border-right-style: none; 3601} 3602} 3603 3604list { 3605// background-color: transparent; 3606} 3607 3608paned & { 3609&, 3610&.left, 3611&.right, 3612&.left:dir(rtl), 3613&:dir(rtl), 3614&:dir(ltr) { 3615border-style: none; 3616} 3617} 3618} 3619 3620stacksidebar.sidebar { 3621& { 3622&:dir(ltr), 3623&.left, 3624&.left:dir(rtl) { 3625list { 3626@extend %sidebar_left; 3627} 3628} 3629 3630&:dir(rtl), 3631&.right { 3632list { 3633@extend %sidebar_right; 3634} 3635} 3636} 3637 3638+ separator.vertical, 3639separator.horizontal { 3640@extend %hide_separators; 3641} 3642 3643list { 3644padding: 4px; 3645// background-color: $background; // This should not be necessary, but the parent stacksidebar ignores background-color. 3646} 3647 3648row { 3649min-height: 32px; 3650padding: 0 8px - 6px; 3651border-radius: $corner-radius; 3652 3653&:selected { 3654background-color: overlay("activated", $primary); 3655color: $primary; 3656font-weight: 500; 3657@include ink-color($primary); 3658} 3659 3660+ row { 3661margin-top: 4px; 3662} 3663 3664> label { 3665padding-left: 6px; 3666padding-right: 6px; 3667} 3668 3669&.needs-attention > label { 3670@extend %needs-attention; 3671} 3672} 3673} 3674 3675separator.sidebar { 3676background-color: divider($on-surface); 3677 3678&.selection-mode, 3679.selection-mode & { 3680// background-color: divider($on-primary); 3681} 3682} 3683 3684/** 3685* File chooser 3686*/ 3687 3688// dim the sidebar icons, see bug #786613 for details on this oddity 3689row image.sidebar-icon { 3690transition: color $duration $ease-out; 3691color: hint($on-surface); 3692 3693&:disabled { 3694color: disabled-hint($on-surface); 3695} 3696} 3697 3698placessidebar.sidebar { 3699> viewport.frame { 3700border-style: none; 3701background-color: transparent; 3702} 3703 3704list { 3705padding: (4px - 3px) 0 4px; 3706} 3707 3708row { 3709// Needs overriding of the GtkListBoxRow padding 3710min-height: 32px; 3711margin: -1px 4px; // Remove unwanted hard-coded vertical margins with -1px 3712padding: 0; 3713border-radius: $corner-radius; 3714 3715// Using margins/padding directly in the SidebarRow 3716// will make the animation of the new bookmark row jump 3717> revealer { 3718padding: 0 8px; 3719} 3720 3721&:selected { 3722background-color: overlay("activated", $primary); 3723color: $primary; 3724font-weight: 500; 3725@include ink-color($primary); 3726 3727image.sidebar-icon { 3728color: $primary; 3729} 3730} 3731 3732&:disabled { 3733color: disabled($on-surface); 3734} 3735 3736image.sidebar-icon { 3737&:dir(ltr) { 3738padding-right: 8px; 3739} 3740 3741&:dir(rtl) { 3742padding-left: 8px; 3743} 3744} 3745 3746label.sidebar-label { 3747&:dir(ltr) { 3748padding-right: 2px; 3749} 3750 3751&:dir(rtl) { 3752padding-left: 2px; 3753} 3754} 3755 3756@at-root button.sidebar-button { 3757@extend %button-flat-basic; 3758@extend %button-small; 3759} 3760 3761&.sidebar-placeholder-row { 3762background-color: overlay("hover", $on-surface); 3763} 3764 3765&.sidebar-new-bookmark-row { 3766color: $primary; 3767 3768image.sidebar-icon { 3769color: $primary; 3770} 3771} 3772} 3773} 3774 3775placesview { 3776.server-list-button { 3777> image { 3778-gtk-icon-transform: rotate(0turn); 3779} 3780 3781&:checked > image { 3782-gtk-icon-transform: rotate(-.5turn); 3783} 3784} 3785 3786// this selects the "connect to server" label 3787> actionbar > revealer > box > label { 3788padding-left: 8px; 3789padding-right: 8px; 3790} 3791} 3792 3793/** 3794* Paned 3795*/ 3796 3797paned { 3798> separator { 3799min-width: 1px; 3800min-height: 1px; 3801-gtk-icon-source: none; // defeats the ugly default handle decoration 3802border-style: none; // just to be sure 3803background-color: transparent; 3804// workaround, using background istead of a border since the border will get rendered twice (?) 3805background-image: image(divider($on-surface)); 3806background-size: 1px 1px; 3807background-clip: content-box; // avoids borders image being rendered twice (?) 3808 3809&.wide { 3810min-width: 6px; 3811min-height: 6px; 3812// background-color: $background; 3813background-image: image(divider($on-surface)), image(divider($on-surface)); 3814background-size: 1px 1px, 1px 1px; 3815} 3816} 3817 3818&.horizontal > separator { 3819background-repeat: repeat-y; 3820 3821&:dir(ltr) { 3822margin: 0 -8px 0 0; 3823padding: 0 8px 0 0; 3824background-position: left; 3825} 3826 3827&:dir(rtl) { 3828margin: 0 0 0 -8px; 3829padding: 0 0 0 8px; 3830background-position: right; 3831} 3832 3833&.wide { 3834margin: 0; 3835padding: 0; 3836background-repeat: repeat-y, repeat-y; 3837background-position: left, right; 3838} 3839} 3840 3841&.vertical > separator { 3842margin: 0 0 -8px 0; 3843padding: 0 0 8px 0; 3844background-repeat: repeat-x; 3845background-position: top; 3846 3847&.wide { 3848margin: 0; 3849padding: 0; 3850background-repeat: repeat-x, repeat-x; 3851background-position: bottom, top; 3852} 3853} 3854} 3855 3856/** 3857* GtkInfoBar 3858*/ 3859 3860infobar { 3861border-style: none; 3862 3863&.action:hover > revealer > box { 3864background-image: image(overlay("hover", $on-surface)); 3865} 3866 3867&.info > revealer > box, 3868&.question > revealer > box { 3869border-bottom: 1px solid divider($on-surface); 3870// background-color: $base; 3871 3872button { 3873@extend %button-flat; 3874 3875&.text-button:not(:disabled) { 3876color: $primary; 3877@include ink-color($primary); 3878} 3879} 3880} 3881 3882&.warning > revealer > box { 3883background-color: $warning; 3884color: $on-warning; 3885 3886button.flat { 3887color: $on-warning; 3888@include ink-color($on-warning); 3889} 3890 3891selection { 3892} 3893 3894*:link { 3895color: $on-warning; 3896} 3897} 3898 3899&.error > revealer > box { 3900background-color: $error; 3901color: $on-error; 3902 3903button.flat { 3904color: $on-error; 3905@include ink-color($on-error); 3906} 3907 3908selection { 3909} 3910 3911*:link { 3912color: $on-error; 3913} 3914} 3915 3916// Remove ugly hard-coded padding 3917button label { 3918margin: 0 -4px; 3919} 3920} 3921 3922/** 3923* Tooltips 3924*/ 3925 3926tooltip { 3927&.background { 3928// background-color needs to be set this way otherwise it gets drawn twice 3929// see https://bugzilla.gnome.org/show_bug.cgi?id=736155 for details. 3930background-color: $tooltip; 3931color: $on-tooltip; 3932} 3933 3934// padding: 4px; /* not working */ 3935border-radius: $corner-radius; 3936box-shadow: none; // otherwise it gets inherited by windowframe.csd 3937 3938&:not(.csd):not(.unity-csd) { 3939// border: 1px solid divider($on-surface); 3940// border-radius: $corner-radius + 1px; 3941} 3942 3943// FIXME: we need a border or tooltips vanish on black background. 3944decoration { 3945background-color: transparent; 3946} 3947 3948> box { 3949margin: -6px; // Remove hard-coded 6px margin 3950min-height: 32px - 4px * 2; 3951padding: 4px 8px; 3952} 3953 3954.dim-label { 3955color: hint($on-tooltip); 3956} 3957 3958* { 3959// workaround for Eclipse. 3960// do not include any declaration here. 3961} 3962} 3963 3964/** 3965* Color Chooser 3966*/ 3967 3968colorswatch { 3969// This widget is made of two boxes one on top of the other, the lower box is colorswatch {} the other one 3970// is colorswatch overlay {}, colorswatch has the programmatically set background, so most of the style is 3971// applied to the overlay box. 3972 3973// base color corners rounding 3974// to avoid the artifacts caused by rounded corner anti-aliasing the base color 3975// sports a bigger radius. 3976// nth-child is needed by the custom color strip. 3977 3978&.top { 3979border-top-left-radius: $corner-radius + .5px; 3980border-top-right-radius: $corner-radius + .5px; 3981 3982overlay { 3983border-top-left-radius: $corner-radius; 3984border-top-right-radius: $corner-radius; 3985} 3986} 3987 3988&.bottom { 3989border-bottom-left-radius: $corner-radius + .5px; 3990border-bottom-right-radius: $corner-radius + .5px; 3991 3992overlay { 3993border-bottom-left-radius: $corner-radius; 3994border-bottom-right-radius: $corner-radius; 3995} 3996} 3997 3998&.left, 3999&:first-child:not(.top) { 4000border-top-left-radius: $corner-radius + .5px; 4001border-bottom-left-radius: $corner-radius + .5px; 4002 4003overlay { 4004border-top-left-radius: $corner-radius; 4005border-bottom-left-radius: $corner-radius; 4006} 4007} 4008 4009&.right, 4010&:last-child:not(.bottom) { 4011border-top-right-radius: $corner-radius + .5px; 4012border-bottom-right-radius: $corner-radius + .5px; 4013 4014overlay { 4015border-top-right-radius: $corner-radius; 4016border-bottom-right-radius: $corner-radius; 4017} 4018} 4019 4020&.dark { 4021color: $on-dark; 4022} 4023 4024&.light { 4025color: $on-light; 4026} 4027 4028overlay { 4029transition: $transition-shadow; 4030box-shadow: $shadow-z1; 4031 4032&:drop(active), 4033&:hover { 4034box-shadow: $shadow-z3; 4035} 4036} 4037 4038&#add-color-button { 4039border-radius: $corner-radius $corner-radius 0 0; 4040color: $on-surface; 4041 4042&:only-child { 4043border-radius: $corner-radius; 4044} 4045 4046overlay { 4047background-color: $surface; 4048} 4049} 4050 4051&:disabled { 4052opacity: .5; 4053 4054overlay { 4055box-shadow: none; 4056} 4057} 4058 4059row:selected & { 4060} 4061 4062&#editor-color-sample { 4063border-radius: $corner-radius + .5px; 4064 4065overlay { 4066border-radius: $corner-radius; 4067 4068&:hover { 4069// box-shadow: $shadow-z1; 4070} 4071} 4072} 4073} 4074 4075// colorscale popup 4076colorchooser .popover.osd { 4077transition: $transition-shadow; 4078border-radius: $corner-radius; 4079box-shadow: $shadow-z4, inset 0 1px highlight($surface); 4080background-color: $surface; 4081 4082&:backdrop { 4083box-shadow: $shadow-z2, inset 0 1px highlight($surface); 4084} 4085} 4086 4087/** 4088* Misc 4089*/ 4090 4091// content view (grid/list) 4092.content-view { 4093// background-color: $background; 4094 4095&:hover { 4096// -gtk-icon-effect: highlight; 4097} 4098 4099rubberband, 4100.rubberband { 4101@extend %rubberband; 4102} 4103} 4104 4105.scale-popup { 4106.osd & { 4107// @extend %osd; 4108 4109// FIXME: quick hack, redo properly 4110button.flat { 4111} 4112} 4113 4114// +/- buttons on GtkVolumeButton popup 4115button { 4116} 4117} 4118 4119/** 4120* Window Decorations 4121*/ 4122 4123decoration { 4124transition: $transition-shadow; 4125border-radius: $corner-radius $corner-radius 0 0; 4126box-shadow: $shadow-z16, 0 16px (24px * .6) 2px transparent, 0 6px (30px * .6) 5px transparent; 4127 4128// FIXME rationalize shadows 4129 4130// this is used for the resize cursor area 4131margin: 8px; 4132 4133&:backdrop { 4134// the transparent shadow here is to enforce that the shadow extents don't 4135// change when we go to backdrop, to prevent jumping windows. 4136// The biggest shadow should be in the same order then in the active state 4137// or the jumping will happen during the transition. 4138box-shadow: $shadow-z4, 0 16px (24px * .6) 2px transparent, 0 6px (30px * .6) 5px transparent; 4139} 4140 4141.maximized &, 4142.fullscreen &, 4143.tiled &, 4144.tiled-top &, 4145.tiled-right &, 4146.tiled-bottom &, 4147.tiled-left & { 4148border-radius: 0; 4149} 4150 4151.popup & { 4152box-shadow: none; 4153} 4154 4155// server-side decorations as used by mutter 4156.ssd & { 4157box-shadow: 0 3px 3px rgba(black, .16); // just doing borders, wm draws actual shadows 4158} 4159 4160.csd.popup & { 4161border-radius: $corner-radius; 4162box-shadow: $shadow-z4; 4163} 4164 4165tooltip.csd & { 4166border-radius: $corner-radius; 4167box-shadow: none; 4168} 4169 4170messagedialog.csd & { 4171border-radius: $corner-radius; 4172// box-shadow: $shadow-z24, 0 24px (38px * .6) 3px transparent, 0 9px (46px * .6) 8px transparent; 4173 4174&:backdrop { 4175// box-shadow: $shadow-z4, 0 24px (38px * .6) 3px transparent, 0 9px (46px * .6) 8px transparent; 4176} 4177} 4178 4179.solid-csd & { 4180margin: 0; 4181padding: 2px; 4182border-radius: 0; 4183box-shadow: none; 4184box-shadow: inset 0 1px highlight($titlebar); 4185background-color: $titlebar; 4186 4187&:backdrop { 4188background-color: $titlebar-backdrop; 4189} 4190} 4191} 4192 4193// Window Close button 4194button.titlebutton { 4195border-radius: $circular-radius; 4196 4197.selection-mode & { 4198} 4199} 4200 4201 4202// catch all extend :) 4203 4204.monospace { 4205font-family: monospace; 4206} 4207 4208/** 4209* Touch Copy & Paste 4210*/ 4211 4212// touch selection handlebars for the Popover.osd above 4213cursor-handle { 4214color: $primary; 4215-gtk-icon-source: -gtk-recolor(url("icons/cursor-handle-symbolic.svg")); 4216 4217&.top:dir(ltr), 4218&.bottom:dir(rtl) { 4219-gtk-icon-transform: rotate(90deg); 4220} 4221 4222&.bottom:dir(ltr), 4223&.top:dir(rtl) { 4224-gtk-icon-transform: unset; 4225} 4226 4227&.insertion-cursor:dir(ltr), 4228&.insertion-cursor:dir(rtl) { 4229padding-top: 6px; 4230-gtk-icon-transform: rotate(45deg); 4231} 4232} 4233 4234// Decouple the font of context menus from their entry/textview 4235.context-menu { 4236font: initial; 4237} 4238 4239// shortcut window keys 4240.keycap { 4241min-width: 28px - 8px * 2; 4242min-height: 28px - 2px; 4243margin-top: 2px; 4244padding-bottom: 2px; 4245padding-left: 8px; 4246padding-right: 8px; 4247 4248border: solid 1px divider($on-surface); 4249border-radius: $corner-radius + 1px; 4250box-shadow: inset 0 -2px divider($on-surface); 4251background-clip: padding-box; 4252background-color: $surface; 4253color: $on-surface; 4254font-size: smaller; 4255} 4256 4257// FIXME needs to be done widget by widget, this wildcard should really die 4258:not(decoration):not(window):drop(active) { 4259// caret-color: $primary; 4260} 4261 4262// FIXME aggregate with buttons 4263stackswitcher button.text-button { 4264min-width: 100px; 4265} 4266 4267// FIXME aggregate with buttons 4268stackswitcher button.circular, 4269stackswitcher button.text-button.circular { 4270min-width: $medium-size; 4271min-height: $medium-size; 4272padding: 0; 4273} 4274 4275/** 4276* App Icons 4277*/ 4278 4279// Outline for low res icons 4280.lowres-icon { 4281// -gtk-icon-shadow: none; 4282} 4283 4284// Drapshadow for large icons 4285.icon-dropshadow { 4286// -gtk-icon-shadow: none; 4287} 4288 4289/** 4290* Emoji 4291*/ 4292 4293popover.emoji-picker { 4294padding: 0; 4295 4296entry { 4297border-bottom: 1px solid divider($on-surface); 4298border-image: none; 4299border-radius: 0; 4300box-shadow: none; 4301background-color: transparent; 4302} 4303 4304scrolledwindow { 4305border-bottom: 1px solid divider($on-surface); 4306} 4307} 4308 4309button.emoji-section { 4310margin: 4px; 4311 4312&:checked { 4313background-color: overlay("activated", $primary); 4314color: $primary; 4315@include ink-color($primary); 4316} 4317 4318&:not(:last-child) { 4319margin-right: 0; 4320} 4321} 4322 4323popover.emoji-picker .emoji { 4324min-width: 3em; 4325min-height: 3em; 4326padding: 0 8px; 4327// font-size: larger; 4328 4329widget { 4330transition: $transition; 4331border-radius: $corner-radius; 4332 4333&:hover { 4334background-color: overlay("hover", $on-surface); 4335} 4336} 4337} 4338 4339popover.emoji-completion { 4340padding: 8px 0; 4341 4342arrow { 4343border: none; 4344background: none; 4345} 4346 4347.emoji-completion-row { 4348min-height: $menuitem-size; 4349padding: 0 12px; 4350} 4351 4352.emoji:hover { 4353background-color: overlay("hover", $on-surface); 4354} 4355} 4356