@swiftbrowser/web 0.26.4 → 0.26.5

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/src/styles.css CHANGED
@@ -443,8 +443,9 @@ html[data-sb-frame="mac"]:not([data-sb-mode="device"]) {
443
443
  --device-screen-width: 1024px;
444
444
  --device-screen-height: 700px;
445
445
  --device-bezel: 0px;
446
- --device-radius: 11px;
447
- --device-safe-top: 28px;
446
+ /* macOS 26: a window with a toolbar has 26 corners, a compact one 16. */
447
+ --device-radius: 16px;
448
+ --device-safe-top: 32px;
448
449
  --device-safe-bottom: 0px;
449
450
  }
450
451
 
@@ -464,36 +465,37 @@ html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .home-indicator {
464
465
  display: none;
465
466
  }
466
467
 
467
- /* The title bar's window buttons (close, minimize, zoom): three lights 12
468
- points across, 8 apart, 8 in from the edge, over the app. The bar itself
468
+ html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .device:has(.sb-navscreen[data-sb-unified], .sb-tabview[data-sb-tabs-top]) {
469
+ --device-radius: 26px;
470
+ }
471
+
472
+ /* The title bar's window buttons (close, minimize, zoom): three lights 14
473
+ points across, 9 apart (macOS 26), over the app. The bar itself
469
474
  is the app's: a navigation screen at the top of the window draws its title
470
475
  bar there (the Mac idiom below; the engine leaves the buttons their room),
471
476
  and a window with no bar shows its content under them, as a Mac window
472
477
  with a hidden title bar does. */
473
478
  html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .status-bar {
474
479
  justify-content: flex-start;
475
- padding: 0 0 0 8px;
480
+ align-items: flex-start;
481
+ padding: 9px 0 0 9px;
476
482
  background: none;
477
483
  }
478
484
 
479
- /* The lights sit (bar height − 12) / 2 from the corner: 8 in a plain 28
480
- bar, 20 in a unified 52 one, 13 in a tab view's 38 toolbar. */
481
- html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .device:has(.sb-navscreen[data-sb-unified]) .status-bar::before {
482
- transform: translate(12px, 12px);
483
- }
484
-
485
- html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .device:has(.sb-tabview[data-sb-tabs-top]) .status-bar::before {
486
- transform: translate(5px, 5px);
485
+ /* The lights sit (bar height − 14) / 2 from the corner: 9 in a compact 32
486
+ bar, 19 in a 52 toolbar. */
487
+ html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .device:has(.sb-navscreen[data-sb-unified], .sb-tabview[data-sb-tabs-top]) .status-bar::before {
488
+ transform: translate(10px, 10px);
487
489
  }
488
490
 
489
491
  html[data-sb-frame="mac"]:not([data-sb-mode="device"]) .status-bar::before {
490
492
  content: "";
491
- width: 52px;
492
- height: 12px;
493
+ width: 60px;
494
+ height: 14px;
493
495
  background:
494
- radial-gradient(circle at 6px 6px, #ff5f57 0 5.5px, transparent 6px),
495
- radial-gradient(circle at 26px 6px, #febc2e 0 5.5px, transparent 6px),
496
- radial-gradient(circle at 46px 6px, #28c840 0 5.5px, transparent 6px);
496
+ radial-gradient(circle at 7px 7px, #ff5f57 0 6.5px, transparent 7px),
497
+ radial-gradient(circle at 30px 7px, #febc2e 0 6.5px, transparent 7px),
498
+ radial-gradient(circle at 53px 7px, #28c840 0 6.5px, transparent 7px);
497
499
  }
498
500
 
499
501
  html[data-sb-frame="none"]:not([data-sb-mode="device"]) .device:not(.sb-island) {
@@ -4667,10 +4669,25 @@ html[data-sb-platform="macos"] .device[data-theme="light"] {
4667
4669
  inset 0 -1px 0 0 rgba(0, 0, 0, 0.27);
4668
4670
  --sb-mac-segment-track: #ededed;
4669
4671
  --sb-mac-segment: #ffffff;
4670
- --sb-mac-tab-selected: #f2f2f2;
4672
+ --sb-mac-tab-selected: #d9d9d9;
4673
+ --sb-mac-tab-rule: #e5e5e5;
4671
4674
  --sb-mac-sheet: #ececec;
4672
- /* The window background, under content; a list's background and its rows. */
4673
- --sb-color-system-background: #f6f6f6;
4675
+ --sb-mac-sheet-bar: #ffffff;
4676
+ --sb-mac-sheet-rule: #d4d4d4;
4677
+ /* macOS 26: the toolbar's Liquid Glass (a 36 capsule, its rim lighter
4678
+ than its fill), its glyphs, and the window title's color. */
4679
+ --sb-glass-background: #f2f2f2;
4680
+ --sb-glass-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.03), 0 2px 10px rgba(0, 0, 0, 0.07);
4681
+ --sb-glass-rim: linear-gradient(#fcfcfc, #fcfcfc);
4682
+ --sb-mac-glyph: #494949;
4683
+ --sb-mac-title: #4d4d4d;
4684
+ --sb-mac-rim: #fcfcfc;
4685
+ --sb-mac-sidebar-selection: #dcdcdc;
4686
+ --sb-mac-card: #f7f7f7;
4687
+ --sb-mac-card-separator: #ebebeb;
4688
+ --sb-mac-push: rgba(0, 0, 0, 0.075);
4689
+ /* The window background, under content (white on macOS 26); a list's background and its rows. */
4690
+ --sb-color-system-background: #ffffff;
4674
4691
  --sb-color-grouped-background: #ffffff;
4675
4692
  --sb-color-grouped-cell: #ffffff;
4676
4693
  --sb-color-row-separator: rgba(0, 0, 0, 0.1);
@@ -4690,61 +4707,101 @@ html[data-sb-platform="macos"] .device[data-theme="dark"] {
4690
4707
  inset 0 -1px 0 0 rgba(255, 255, 255, 0.2);
4691
4708
  --sb-mac-segment-track: #333333;
4692
4709
  --sb-mac-segment: #666666;
4693
- --sb-mac-tab-selected: #292929;
4694
- --sb-mac-sheet: #2b2b2b;
4695
- --sb-color-system-background: #282828;
4710
+ --sb-mac-tab-selected: #373737;
4711
+ --sb-mac-tab-rule: #282828;
4712
+ --sb-mac-sheet: #1e1e1e;
4713
+ --sb-mac-sheet-bar: #1e1e1e;
4714
+ --sb-mac-sheet-rule: #343434;
4715
+ --sb-glass-background: #141414;
4716
+ --sb-glass-shadow: 0 0 0 0.5px rgba(0, 0, 0, 0.3), 0 2px 10px rgba(0, 0, 0, 0.3);
4717
+ --sb-glass-rim: linear-gradient(#2a2a2a, #2a2a2a);
4718
+ --sb-mac-glyph: #e7e7e7;
4719
+ --sb-mac-title: #e8e8e8;
4720
+ --sb-mac-rim: #2a2a2a;
4721
+ --sb-mac-sidebar-selection: #464646;
4722
+ --sb-mac-card: #252525;
4723
+ --sb-mac-card-separator: #2f2f2f;
4724
+ --sb-mac-push: rgba(255, 255, 255, 0.075);
4725
+ --sb-color-system-background: #1e1e1e;
4696
4726
  --sb-color-grouped-background: #1e1e1e;
4697
4727
  --sb-color-grouped-cell: #1e1e1e;
4698
4728
  --sb-color-row-separator: rgba(255, 255, 255, 0.1);
4699
4729
  --sb-color-secondary: rgba(255, 255, 255, 0.55);
4700
4730
  }
4701
4731
 
4702
- /* The title bar in place of the navigation bar: opaque, the window's chrome
4703
- color, a hairline under it; no scroll-edge gradient and no glass capsules
4704
- (the items sit on the bar). */
4732
+ /* The title bar in place of the navigation bar (macOS 26): no color or
4733
+ rule of its own, the window's content color under it; no scroll-edge
4734
+ gradient. Its items are on Liquid Glass capsules (the engine's
4735
+ `leadingGlass0` …, `trailingGlass0` …: 36 tall, the Mac's colors above). */
4705
4736
  html[data-sb-platform="macos"] .sb-navbar {
4706
- background: var(--sb-mac-bar);
4737
+ /* Over the capsules (the back button is drawn on the leading one). */
4738
+ z-index: 3;
4739
+ background: none;
4707
4740
  }
4708
4741
 
4709
- /* The rule under the title bar is the row below it (the content's first). */
4710
- html[data-sb-platform="macos"] .sb-navbar::after {
4711
- content: "";
4712
- position: absolute;
4713
- left: 0;
4714
- right: 0;
4715
- bottom: -1px;
4716
- height: 1px;
4717
- background: var(--sb-mac-separator);
4718
- pointer-events: none;
4742
+ html[data-sb-platform="macos"] .sb-navbar::before {
4743
+ display: none;
4719
4744
  }
4720
4745
 
4721
- html[data-sb-platform="macos"] .sb-navbar::before,
4722
4746
  html[data-sb-platform="macos"] .sb-bar-glass {
4723
- display: none;
4747
+ backdrop-filter: none;
4748
+ -webkit-backdrop-filter: none;
4724
4749
  }
4725
4750
 
4726
- /* The back button, the More button and the sidebar toggle: bare 28
4727
- buttons (the engine's `back`, `more`, `toggle` rects), not glass circles;
4728
- the back chevron is a secondary-colored glyph (measured in the Mac app). */
4751
+ /* The back button is the first slot of the leading capsule (the engine's
4752
+ `back` rect inside `leadingGlass0`), the More button a glass circle of its
4753
+ own; their glyphs, as the items', the toolbar's dark gray. The sidebar
4754
+ toggle is bare (the split view's styles below). */
4729
4755
  html[data-sb-platform="macos"] .sb-navbar-back,
4730
4756
  html[data-sb-platform="macos"] .sb-navbar-more,
4731
4757
  html[data-sb-platform="macos"] .sb-navsplit-toggle {
4732
- width: 28px;
4733
- height: 28px;
4734
- border-radius: 6px;
4758
+ width: 36px;
4759
+ height: 36px;
4760
+ border-radius: 18px;
4761
+ font-size: 13px;
4762
+ color: var(--sb-mac-glyph);
4763
+ --sb-press-scale: 1;
4764
+ }
4765
+
4766
+ html[data-sb-platform="macos"] .sb-navbar-back,
4767
+ html[data-sb-platform="macos"] .sb-navsplit-toggle {
4735
4768
  background: none;
4736
4769
  box-shadow: none;
4737
4770
  backdrop-filter: none;
4738
4771
  -webkit-backdrop-filter: none;
4739
- font-size: 13px;
4740
- --sb-press-scale: 1;
4772
+ }
4773
+
4774
+ html[data-sb-platform="macos"] .sb-navbar-back::after,
4775
+ html[data-sb-platform="macos"] .sb-navsplit-toggle::after {
4776
+ display: none;
4777
+ }
4778
+
4779
+ /* Over the leading capsule it is the first slot of. */
4780
+ html[data-sb-platform="macos"] .sb-navbar-back {
4781
+ z-index: 3;
4741
4782
  }
4742
4783
 
4743
4784
  html[data-sb-platform="macos"] .sb-navbar-back > svg {
4744
- width: 14px;
4745
- height: 14px;
4785
+ width: 15px;
4786
+ height: 15px;
4746
4787
  margin-left: -1px;
4747
- color: var(--sb-color-secondary);
4788
+ color: var(--sb-mac-glyph);
4789
+ }
4790
+
4791
+ /* A toolbar item is drawn in the toolbar's colors whatever its `.tint`
4792
+ (SwiftUI on macOS 26, as the native renderer shows it): a bottom-bar item
4793
+ is one too, at the toolbar's trailing end (the engine's `barPlacement`). */
4794
+ html[data-sb-platform="macos"] .sb-toolbar:is([data-sb-placement="leading"], [data-sb-placement="trailing"], [data-sb-placement="bottom"]) :is(.sb-button, .sb-menu):not([data-sb-role="destructive"]) {
4795
+ --sb-tint: var(--sb-mac-glyph) !important;
4796
+ }
4797
+
4798
+ html[data-sb-platform="macos"] .sb-toolbar[data-sb-placement="bottom"] .sb-image > svg {
4799
+ stroke-width: 1.85;
4800
+ }
4801
+
4802
+ /* A toolbar item's glyph and label: the toolbar's dark gray, not the accent. */
4803
+ html[data-sb-platform="macos"] .sb-navbar .sb-button:not([data-sb-role="destructive"]) {
4804
+ color: var(--sb-button-color, var(--sb-mac-glyph));
4748
4805
  }
4749
4806
 
4750
4807
  /* A bar's text button is a bordered 28 button at its slot (the engine's
@@ -4765,6 +4822,8 @@ html[data-sb-platform="macos"] .sb-navbar-more:active {
4765
4822
  the leading items, 15 semibold (the engine's `title` rect and font). */
4766
4823
  html[data-sb-platform="macos"] .sb-navbar-title {
4767
4824
  font-size: var(--sb-ts-headline-size, 13px);
4825
+ text-align: start;
4826
+ color: var(--sb-mac-title);
4768
4827
  }
4769
4828
 
4770
4829
  html[data-sb-platform="macos"] .sb-navscreen[data-sb-unified] > .sb-navbar > .sb-navbar-title {
@@ -4855,20 +4914,86 @@ html[data-sb-platform="macos"] .sb-list[data-sb-form-columns] .sb-picker[data-sb
4855
4914
  justify-content: space-between;
4856
4915
  }
4857
4916
 
4858
- /* The tab bar: a segmented control at the top of the content (the engine's
4859
- Mac tab view), each tab a segment with its title alone, the selected one
4860
- raised; no icons, no glass. */
4917
+ /* A grouped form (`.formStyle(.grouped)`, the engine's `grouped` plan):
4918
+ each section a rounded card (11), its rows separated by a point 10 in
4919
+ from either side; headers the label color, no rules. */
4920
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section-rows {
4921
+ border-radius: 11px;
4922
+ background: var(--sb-mac-card);
4923
+ }
4924
+
4925
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section-rows > [data-sb-id]::after {
4926
+ content: "";
4927
+ display: block;
4928
+ position: absolute;
4929
+ left: 10px;
4930
+ right: 10px;
4931
+ bottom: -1px;
4932
+ height: 1px;
4933
+ background: var(--sb-mac-card-separator);
4934
+ pointer-events: none;
4935
+ }
4936
+
4937
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section-rows > [data-sb-id]:last-child::after,
4938
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section-header::after,
4939
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section .sb-section-footer::after {
4940
+ display: none;
4941
+ }
4942
+
4943
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-picker-value {
4944
+ color: var(--sb-color-primary);
4945
+ }
4946
+
4947
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-section-header {
4948
+ color: var(--sb-color-primary);
4949
+ }
4950
+
4951
+ /* A text field's title leads its row (chrome `formLabel<i>`), its value at
4952
+ the trailing end; a Label's icon the label color; a link's small chevron. */
4953
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-form-label {
4954
+ position: absolute;
4955
+ white-space: pre;
4956
+ color: var(--sb-color-primary);
4957
+ }
4958
+
4959
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] input.sb-textfield {
4960
+ text-align: right;
4961
+ }
4962
+
4963
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] input.sb-textfield::placeholder {
4964
+ color: transparent;
4965
+ }
4966
+
4967
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] [data-sb-label-icon] {
4968
+ color: var(--sb-button-color, var(--sb-color-primary));
4969
+ }
4970
+
4971
+ /* A switch (36 × 18): the accent while on, white with a hairline while off; a white knob. */
4972
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-toggle:not([data-sb-checkbox]) > .sb-switch {
4973
+ border-radius: 9px;
4974
+ background: var(--sb-mac-control);
4975
+ box-shadow: inset 0 0 0 0.5px rgba(0, 0, 0, 0.15);
4976
+ }
4977
+
4978
+ html[data-sb-platform="macos"] .sb-list[data-sb-form-grouped] .sb-toggle:not([data-sb-checkbox]) > .sb-switch[aria-checked="true"] {
4979
+ background: var(--sb-tint, var(--sb-color-accent));
4980
+ box-shadow: none;
4981
+ }
4982
+
4983
+ /* The tab bar (macOS 26): a glass capsule in the toolbar (the engine's Mac
4984
+ tab view), each tab an equal segment with its title alone, the selected
4985
+ one a gray pill, a short rule between two unselected ones; no icons. */
4861
4986
  html[data-sb-platform="macos"] .sb-tabbar {
4862
4987
  z-index: 2;
4863
- border-radius: 6px;
4864
- background: none;
4865
- box-shadow: inset 0 0 0 1px var(--sb-color-row-separator);
4988
+ border-radius: 9999px;
4989
+ background: var(--sb-glass-background);
4990
+ box-shadow: inset 0 0 0 1px var(--sb-mac-rim), var(--sb-glass-shadow);
4866
4991
  backdrop-filter: none;
4867
4992
  -webkit-backdrop-filter: none;
4868
4993
  }
4869
4994
 
4870
4995
  html[data-sb-platform="macos"] .sb-tabbar-item {
4871
- border-radius: 5px;
4996
+ border-radius: 9999px;
4872
4997
  color: var(--sb-color-primary);
4873
4998
  }
4874
4999
 
@@ -4878,6 +5003,16 @@ html[data-sb-platform="macos"] .sb-tabbar-item[aria-selected="true"] {
4878
5003
  box-shadow: none;
4879
5004
  }
4880
5005
 
5006
+ html[data-sb-platform="macos"] .sb-tabbar-item:not([aria-selected="true"]) + .sb-tabbar-item:not([aria-selected="true"])::before {
5007
+ content: '';
5008
+ position: absolute;
5009
+ left: -0.5px;
5010
+ top: 2px;
5011
+ bottom: 2px;
5012
+ width: 1px;
5013
+ background: var(--sb-mac-tab-rule);
5014
+ }
5015
+
4881
5016
  html[data-sb-platform="macos"] .sb-tabbar-icon,
4882
5017
  html[data-sb-platform="macos"] .sb-tabbar-badge {
4883
5018
  display: none;
@@ -4892,15 +5027,14 @@ html[data-sb-platform="macos"] .sb-tabbar-title {
4892
5027
 
4893
5028
  /* Buttons: a bordered button, and an automatic one the engine bordered
4894
5029
  (`data-sb-bordered`: outside a list row and a bar), is the Mac's push
4895
- button, 22 tall with a 6 radius, the control color with a hairline and a
4896
- shadow, its label the primary color; a prominent one the accent with
4897
- white text. */
5030
+ button (macOS 26): a capsule of translucent gray, no rim or shadow, its
5031
+ label the primary color; a prominent one the accent with white text. */
4898
5032
  html[data-sb-platform="macos"] .sb-button[data-sb-style="bordered"],
4899
5033
  html[data-sb-platform="macos"] .sb-button[data-sb-style="automatic"][data-sb-bordered],
4900
5034
  html[data-sb-platform="macos"] .sb-button[data-sb-style="borderedProminent"] {
4901
- border-radius: 6px;
4902
- background: var(--sb-mac-control);
4903
- box-shadow: var(--sb-mac-control-shadow);
5035
+ border-radius: 9999px;
5036
+ background: var(--sb-mac-push);
5037
+ box-shadow: none;
4904
5038
  color: var(--sb-button-color, var(--sb-color-primary));
4905
5039
  }
4906
5040
 
@@ -4926,14 +5060,14 @@ html[data-sb-platform="macos"] .sb-button[data-sb-style="plain"] {
4926
5060
  color: var(--sb-button-color, var(--sb-color-secondary));
4927
5061
  }
4928
5062
 
4929
- /* A segmented control (measured in the Mac app): 22 tall with a 5 radius,
4930
- a gray track under a hairline, 13-point regular labels, the selected
4931
- segment white (dark: lighter gray) with a shadow, 1 in; its label (the
4932
- engine's `label`) before it in the row's font. */
5063
+ /* A segmented control (macOS 26): a 24 capsule of translucent gray, its
5064
+ 13-point regular labels in equal segments, the selected one an accent
5065
+ capsule with white text; its label (the engine's `label`) before it in
5066
+ the row's font. */
4933
5067
  html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-sb-bar]) > .sb-segment-track {
4934
- border-radius: 5px;
4935
- background: var(--sb-mac-segment-track);
4936
- box-shadow: inset 0 0 0 0.5px var(--sb-mac-separator);
5068
+ border-radius: 9999px;
5069
+ background: var(--sb-mac-push);
5070
+ box-shadow: none;
4937
5071
  }
4938
5072
 
4939
5073
  html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-sb-bar]) > .sb-segment {
@@ -4942,13 +5076,17 @@ html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-s
4942
5076
  }
4943
5077
 
4944
5078
  html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-sb-bar]) > .sb-segment::before {
4945
- inset: 1px;
4946
- border-radius: 4px;
5079
+ inset: 0;
5080
+ border-radius: 9999px;
4947
5081
  }
4948
5082
 
4949
5083
  html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-sb-bar]) > .sb-segment[aria-checked="true"]::before {
4950
- background: var(--sb-mac-segment);
4951
- box-shadow: var(--sb-mac-control-shadow);
5084
+ background: var(--sb-tint, var(--sb-color-accent));
5085
+ box-shadow: none;
5086
+ }
5087
+
5088
+ html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"]:not([data-sb-bar]) > .sb-segment[aria-checked="true"] {
5089
+ color: #ffffff;
4952
5090
  }
4953
5091
 
4954
5092
  html[data-sb-platform="macos"] .sb-picker[data-sb-style="segmented"] > .sb-picker-label {
@@ -4997,80 +5135,115 @@ html[data-sb-platform="macos"] .sb-list .sb-toggle:not([data-sb-checkbox]):not([
4997
5135
  transform: translateX(11px);
4998
5136
  }
4999
5137
 
5000
- /* A menu picker outside a list row is a pop-up button: its value and the
5001
- chevrons in a bordered button (the engine's `popup` rect), the chevrons
5002
- on an accent square at its trailing end. */
5138
+ /* A menu picker outside a list row is a pop-up button (macOS 26): its value
5139
+ and the chevrons on a translucent gray rounded rect (the engine's `popup`
5140
+ rect, as wide as the widest option), the value 13 in, the chevrons a
5141
+ small glyph 9 from the end. */
5003
5142
  html[data-sb-platform="macos"] .sb-picker[data-sb-popup] > .sb-picker-value {
5004
5143
  box-sizing: border-box;
5005
- padding: 0 3px 0 8px;
5144
+ justify-content: space-between;
5145
+ padding: 0 7px 0 13px;
5006
5146
  gap: 6px;
5007
- border-radius: 5px;
5008
- background: var(--sb-mac-control);
5009
- box-shadow: var(--sb-mac-control-shadow);
5147
+ border-radius: 6px;
5148
+ background: var(--sb-mac-push);
5149
+ box-shadow: none;
5010
5150
  color: var(--sb-color-primary);
5011
5151
  }
5012
5152
 
5013
5153
  html[data-sb-platform="macos"] .sb-picker[data-sb-popup] > .sb-picker-value > svg {
5014
- box-sizing: border-box;
5015
- width: 16px;
5016
- height: 16px;
5017
- padding: 3px;
5018
- border-radius: 4px;
5019
- background: var(--sb-tint, var(--sb-color-accent));
5020
- color: #ffffff;
5021
- stroke-width: 3;
5154
+ width: 12px;
5155
+ height: 12px;
5156
+ color: var(--sb-color-primary);
5157
+ stroke-width: 2.5;
5022
5158
  }
5023
5159
 
5024
- /* Lists: no cards (the rows run the list's width on its white), a separator
5025
- under every row from its first text to 16 before the edge, a rule across
5026
- the list 8 under a header and 5 under a footer; a selected row is the
5027
- accent with white text (the sidebar's, when the window is key). The
5028
- engine draws no chevrons. */
5160
+ /* Lists (SwiftUI's inset style, as the native renderer draws it on macOS
5161
+ 26): no cards; the rows inset 16 from the list's edges on its white, a
5162
+ separator under each row from its first text to the row's trailing edge,
5163
+ except under the last row of the list (a footer or another section after
5164
+ it brings one back); a rule across the rows at a section's first row's
5165
+ top under its header, and 5 under a footer another section follows; a
5166
+ selected row is the accent with white text (the sidebar's, when the
5167
+ window is key). The engine draws no chevrons. */
5029
5168
  html[data-sb-platform="macos"] .sb-section-rows,
5030
5169
  html[data-sb-platform="macos"] .sb-list-content > :not(.sb-section) {
5031
5170
  border-radius: 0;
5032
5171
  background: none;
5033
5172
  }
5034
5173
 
5174
+ /* No card to clip to: a row's symbol may overhang the inset rows' edge. */
5175
+ html[data-sb-platform="macos"] .sb-list:not([data-sb-form-grouped]) .sb-section-rows {
5176
+ overflow: visible;
5177
+ }
5178
+
5179
+ /* A Label's icon in a Mac list row is the symbol at the font's point size
5180
+ (no icon column, docs/notes/macos.md); a sidebar's and a grouped form's
5181
+ keep their own sizes. */
5182
+ html[data-sb-platform="macos"] .sb-list:not([data-sb-list-style="sidebar"]):not([data-sb-list-look]):not([data-sb-form-grouped]) [data-sb-label-icon] .sb-image > svg {
5183
+ width: 1.1em;
5184
+ height: 1.1em;
5185
+ stroke-width: 1.6;
5186
+ }
5187
+
5035
5188
  html[data-sb-platform="macos"] .sb-section-rows > [data-sb-id],
5036
5189
  html[data-sb-platform="macos"] .sb-section-rows > [data-sb-ghost] {
5037
5190
  background: var(--sb-row-background, transparent);
5038
5191
  }
5039
5192
 
5040
- html[data-sb-platform="macos"] .sb-section-rows > :last-child::after,
5041
- html[data-sb-platform="macos"] .sb-list-content > :not(.sb-section):last-child::after,
5193
+ html[data-sb-platform="macos"] .sb-section-rows > :not(:last-child)::after,
5194
+ html[data-sb-platform="macos"] .sb-list-content > :not(.sb-section):not(:last-child):not(:has(+ .sb-section))::after {
5195
+ left: var(--sb-separator-leading, 0px);
5196
+ right: 0;
5197
+ }
5198
+
5199
+ html[data-sb-platform="macos"] .sb-section-rows > :is(input, textarea):not(:last-child),
5200
+ html[data-sb-platform="macos"] .sb-list-content > :is(input, textarea):not(:last-child):not(:has(+ .sb-section)) {
5201
+ background-position: var(--sb-separator-leading, 0px) 100%;
5202
+ background-size: calc(100% - var(--sb-separator-leading, 0px)) 1px;
5203
+ }
5204
+
5205
+ html[data-sb-platform="macos"] .sb-section:not(:last-child) > .sb-section-rows > :last-child::after,
5206
+ html[data-sb-platform="macos"] .sb-section:has(> .sb-section-footer:not([hidden])) > .sb-section-rows > :last-child::after,
5042
5207
  html[data-sb-platform="macos"] .sb-list-content > :not(.sb-section):has(+ .sb-section)::after {
5043
5208
  content: "";
5044
5209
  position: absolute;
5045
- left: var(--sb-separator-leading, 16px);
5046
- right: 16px;
5210
+ left: var(--sb-separator-leading, 0px);
5211
+ right: 0;
5047
5212
  bottom: 0;
5048
5213
  height: 1px;
5049
5214
  background: var(--sb-color-row-separator);
5050
5215
  pointer-events: none;
5051
5216
  }
5052
5217
 
5218
+ /* The rule under a header (a text one or a view, `.sb-sectionheader`):
5219
+ across the section's rows at the first row's top. */
5220
+ html[data-sb-platform="macos"] .sb-list:not([data-sb-form-grouped]):not([data-sb-form-columns]):not([data-sb-list-style="sidebar"]):not([data-sb-list-look]) .sb-section:has(> .sb-section-header:not([hidden]), > .sb-sectionheader) > .sb-section-rows::before {
5221
+ content: "";
5222
+ position: absolute;
5223
+ top: 0;
5224
+ left: 0;
5225
+ right: 0;
5226
+ height: 1px;
5227
+ background: var(--sb-color-row-separator);
5228
+ pointer-events: none;
5229
+ z-index: 1;
5230
+ }
5231
+
5053
5232
  html[data-sb-platform="macos"] .sb-section-header,
5054
5233
  html[data-sb-platform="macos"] .sb-section-footer {
5055
5234
  color: var(--sb-color-secondary);
5056
5235
  }
5057
5236
 
5058
- html[data-sb-platform="macos"] .sb-section-header::after,
5059
5237
  html[data-sb-platform="macos"] .sb-section-footer::after {
5060
5238
  content: "";
5061
5239
  position: absolute;
5062
5240
  left: -16px;
5063
5241
  right: -16px;
5064
- bottom: -9px;
5242
+ bottom: -6px;
5065
5243
  height: 1px;
5066
- background: var(--sb-mac-separator);
5244
+ background: var(--sb-color-row-separator);
5067
5245
  pointer-events: none;
5068
- }
5069
-
5070
- html[data-sb-platform="macos"] .sb-section-footer::after {
5071
5246
  display: none;
5072
- bottom: -6px;
5073
- background: var(--sb-color-row-separator);
5074
5247
  }
5075
5248
 
5076
5249
  /* The rule under a footer only where another section follows (a columns form has none). */
@@ -5098,9 +5271,8 @@ html[data-sb-platform="macos"] .sb-button[data-sb-style][data-sb-bordered="inset
5098
5271
  top: var(--sb-bordered-top);
5099
5272
  width: var(--sb-bordered-width);
5100
5273
  height: var(--sb-bordered-height);
5101
- border-radius: 6px;
5102
- background: var(--sb-mac-control);
5103
- box-shadow: var(--sb-mac-control-shadow);
5274
+ border-radius: 9999px;
5275
+ background: var(--sb-mac-push);
5104
5276
  pointer-events: none;
5105
5277
  }
5106
5278
 
@@ -5163,16 +5335,33 @@ html[data-sb-platform="macos"] .sb-searchfield > .sb-searchfield-input::placehol
5163
5335
  color: var(--sb-color-tertiary-label);
5164
5336
  }
5165
5337
 
5166
- /* A sheet is a window-modal panel hanging from the title bar (the engine's
5167
- form sheet on a Mac): square at the top, rounded below, a shadow; it
5168
- drops in from above rather than sliding up. */
5169
- /* A sheet (measured in the Mac app): a panel centered in the window with a
5170
- 10 radius and a shadow, its content on the window color under the white
5171
- title bar (the stack's bar: its title leading, 13 bold); its actions in a
5172
- 60 bar at the bottom under a rule (the engine's `actions`). */
5338
+ /* In the toolbar (macOS 26) the field is a glass capsule like the bar's
5339
+ items: the magnifier 11 in, the text 10 after it. */
5340
+ html[data-sb-platform="macos"] .sb-navscreen[data-sb-search-bar] .sb-searchfield {
5341
+ gap: 8px;
5342
+ padding: 0 12px 0 11px;
5343
+ border-radius: 9999px;
5344
+ background: var(--sb-glass-background);
5345
+ box-shadow: inset 0 0 0 1px var(--sb-mac-rim), var(--sb-glass-shadow);
5346
+ }
5347
+
5348
+ html[data-sb-platform="macos"] .sb-navscreen[data-sb-search-bar] .sb-searchfield > svg {
5349
+ width: 14px;
5350
+ height: 14px;
5351
+ }
5352
+
5353
+ html[data-sb-platform="macos"] .sb-navscreen[data-sb-search-bar] .sb-searchfield > .sb-searchfield-input::placeholder {
5354
+ color: var(--sb-color-secondary);
5355
+ }
5356
+
5357
+ /* A sheet (measured in the Mac app, macOS 26): a panel centered in the
5358
+ window with a 26 radius and a shadow, its content on the sheet's gray
5359
+ under the white title bar (the stack's bar: its title leading, 13 bold,
5360
+ over a rule); its actions in a 60 bar at the bottom under a rule (the
5361
+ engine's `actions`). It drops in from above rather than sliding up. */
5173
5362
  html[data-sb-platform="macos"] .sb-sheet[data-sb-form] > .sb-sheet-card {
5174
5363
  --sb-sheet-offscreen: -100vh;
5175
- border-radius: 10px;
5364
+ border-radius: 26px;
5176
5365
  background: var(--sb-mac-sheet);
5177
5366
  box-shadow:
5178
5367
  0 0 0 0.5px rgba(0, 0, 0, 0.25),
@@ -5190,6 +5379,15 @@ html[data-sb-platform="macos"] .sb-sheet[data-sb-form][data-sb-actions] > .sb-sh
5190
5379
  pointer-events: none;
5191
5380
  }
5192
5381
 
5382
+ html[data-sb-platform="macos"] .sb-navscreen[data-sb-sheet-bar] {
5383
+ background: transparent;
5384
+ }
5385
+
5386
+ html[data-sb-platform="macos"] .sb-navscreen[data-sb-sheet-bar] > .sb-navbar {
5387
+ background: var(--sb-mac-sheet-bar);
5388
+ box-shadow: 0 1px 0 var(--sb-mac-sheet-rule);
5389
+ }
5390
+
5193
5391
  html[data-sb-platform="macos"] .sb-navscreen[data-sb-sheet-bar] > .sb-navbar > .sb-navbar-title {
5194
5392
  text-align: start;
5195
5393
  font-size: 13px;
@@ -5264,44 +5462,31 @@ html[data-sb-platform="macos"] .sb-stepper[data-sb-arrows] > .sb-stepper-control
5264
5462
  display: none;
5265
5463
  }
5266
5464
 
5267
- /* An alert is a panel (the engine's `panel` rect, 260 wide): the window
5268
- color with a 10 radius and a shadow, no glass, its title and message
5269
- centered; its buttons are push buttons, the default one (the last that is
5270
- not a cancel) the accent. */
5465
+ /* An alert is a panel (the engine's `panel` rect, 260 wide; macOS 26): the
5466
+ glass fill with a rim, an 18 radius and a shadow, its title and message
5467
+ leading-aligned; its buttons capsules of translucent gray, a destructive
5468
+ one red on a red tint, the default one (the last that is not a cancel)
5469
+ the accent. */
5271
5470
  html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-card {
5272
- border-radius: 10px;
5273
- background: var(--sb-mac-bar);
5471
+ border-radius: 18px;
5472
+ background: var(--sb-glass-background);
5274
5473
  box-shadow:
5275
- 0 0 0 0.5px rgba(0, 0, 0, 0.2),
5276
- 0 12px 40px rgba(0, 0, 0, 0.3);
5474
+ inset 0 0 0 1px var(--sb-mac-rim),
5475
+ 0 0 0 0.5px rgba(0, 0, 0, 0.12),
5476
+ 0 12px 40px rgba(0, 0, 0, 0.25);
5277
5477
  backdrop-filter: none;
5278
5478
  -webkit-backdrop-filter: none;
5279
5479
  }
5280
5480
 
5281
- /* The app's icon, 54 at the top of the panel (a generic one: the page has none). */
5282
- html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-card::before {
5283
- content: "";
5284
- position: absolute;
5285
- top: 25px;
5286
- left: 50%;
5287
- width: 54px;
5288
- height: 54px;
5289
- margin-left: -27px;
5290
- border-radius: 12px;
5291
- background:
5292
- linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0)),
5293
- repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.08) 0 1px, transparent 1px 9px),
5294
- repeating-linear-gradient(90deg, rgba(0, 0, 0, 0.08) 0 1px, transparent 1px 9px),
5295
- #d3e0e5;
5296
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
5481
+ /* The Mac's message is the primary color, as its title. */
5482
+ html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-message {
5483
+ color: var(--sb-color-primary);
5297
5484
  }
5298
5485
 
5299
- /* Measured in the Mac app: the buttons gray (the control color darkened),
5300
- 28 tall, 13 regular; a destructive one red; a lone OK the accent. */
5301
5486
  html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-buttons > .sb-button,
5302
5487
  html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-ok {
5303
- border-radius: 6px;
5304
- background: var(--sb-color-fill);
5488
+ border-radius: 9999px;
5489
+ background: var(--sb-mac-push);
5305
5490
  box-shadow: none;
5306
5491
  color: var(--sb-color-primary);
5307
5492
  font-size: 13px;
@@ -5313,6 +5498,7 @@ html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-ok {
5313
5498
  }
5314
5499
 
5315
5500
  html[data-sb-platform="macos"] .sb-alert[data-sb-panel] .sb-alert-buttons > .sb-button[data-sb-role="destructive"] {
5501
+ background: color-mix(in srgb, var(--sb-color-red) 24%, transparent);
5316
5502
  color: var(--sb-color-red);
5317
5503
  }
5318
5504
 
@@ -5392,3 +5578,62 @@ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] {
5392
5578
  --sb-icon-knockout: var(--sb-mac-sidebar);
5393
5579
  }
5394
5580
 
5581
+ /* macOS 26: the sidebar is a floating panel (the engine's `panel` rect,
5582
+ under the columns): the toolbar's glass fill, its top 44 the window's
5583
+ color (the window buttons and the toggle on it), rounded 22, a rim and a
5584
+ soft shadow. The sidebar column, its screens and its list are clear over
5585
+ it; its rows' icons and text are the label color, the selected row a
5586
+ gray rounded fill. */
5587
+ html[data-sb-platform="macos"] .sb-navsplit-panel {
5588
+ position: absolute;
5589
+ z-index: 0;
5590
+ border-radius: 22px;
5591
+ background: linear-gradient(var(--sb-color-system-background) 0 44px, var(--sb-glass-background) 44px);
5592
+ box-shadow: inset 0 0 0 1px var(--sb-mac-rim), var(--sb-glass-shadow);
5593
+ pointer-events: none;
5594
+ }
5595
+
5596
+ .sb-navsplit-panel[hidden],
5597
+ .sb-navsplit-panel {
5598
+ display: none;
5599
+ }
5600
+
5601
+ html[data-sb-platform="macos"] .sb-navsplit-panel:not([hidden]) {
5602
+ display: block;
5603
+ }
5604
+
5605
+ html[data-sb-platform="macos"] .sb-navsplit-columns > [data-sb-id]:first-child,
5606
+ html[data-sb-platform="macos"] .sb-navsplit-columns > [data-sb-ghost]:first-child {
5607
+ box-shadow: none;
5608
+ background: transparent;
5609
+ }
5610
+
5611
+ /* (important: a screen with a list takes the grouped background through a
5612
+ `:has()` rule more specific than these) */
5613
+ html[data-sb-platform="macos"] .sb-navsplit-columns > :first-child .sb-navscreen,
5614
+ html[data-sb-platform="macos"] .sb-navsplit-columns > :first-child .sb-list[data-sb-list-look="sidebar"] {
5615
+ background: transparent !important;
5616
+ --sb-icon-knockout: var(--sb-glass-background);
5617
+ }
5618
+
5619
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] {
5620
+ --sb-tint: var(--sb-color-primary);
5621
+ }
5622
+
5623
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] .sb-section-header::after,
5624
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] .sb-section-footer::after {
5625
+ display: none;
5626
+ }
5627
+
5628
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] .sb-navlink[data-sb-selected],
5629
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"] .sb-listrow[data-sb-selected],
5630
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"][data-sb-list-style] .sb-section-rows > .sb-navlink[data-sb-selected],
5631
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"][data-sb-list-style] .sb-section-rows > .sb-listrow[data-sb-selected],
5632
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"][data-sb-list-style] > .sb-list-content > .sb-navlink[data-sb-selected],
5633
+ html[data-sb-platform="macos"] .sb-list[data-sb-list-look="sidebar"][data-sb-list-style] > .sb-list-content > .sb-listrow[data-sb-selected] {
5634
+ border-radius: 8px;
5635
+ background: var(--sb-mac-sidebar-selection);
5636
+ color: var(--sb-color-primary);
5637
+ --sb-button-color: var(--sb-color-primary);
5638
+ }
5639
+