@domicile-desktop/manganese 0.0.0-alpha-e42226f4af44 → 0.0.0-alpha-cd02e0ec1fbc

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/package.json CHANGED
@@ -1,30 +1,30 @@
1
1
  {
2
2
  "dependencies": {
3
- "@domicile-desktop/component-library": "0.0.0-alpha-e42226f4af44",
4
- "@domicile-desktop/manganese-bar": "0.0.0-alpha-e42226f4af44",
5
- "@domicile-desktop/manganese-bar-module-battery": "0.0.0-alpha-e42226f4af44",
6
- "@domicile-desktop/manganese-bar-module-bluetooth": "0.0.0-alpha-e42226f4af44",
7
- "@domicile-desktop/manganese-bar-module-brightness": "0.0.0-alpha-e42226f4af44",
8
- "@domicile-desktop/manganese-bar-module-clock": "0.0.0-alpha-e42226f4af44",
9
- "@domicile-desktop/manganese-bar-module-gmail": "0.0.0-alpha-e42226f4af44",
10
- "@domicile-desktop/manganese-bar-module-google-messages": "0.0.0-alpha-e42226f4af44",
11
- "@domicile-desktop/manganese-bar-module-idle-inhibitor": "0.0.0-alpha-e42226f4af44",
12
- "@domicile-desktop/manganese-bar-module-launcher-button": "0.0.0-alpha-e42226f4af44",
13
- "@domicile-desktop/manganese-bar-module-network": "0.0.0-alpha-e42226f4af44",
14
- "@domicile-desktop/manganese-bar-module-notifications": "0.0.0-alpha-e42226f4af44",
15
- "@domicile-desktop/manganese-bar-module-sharing": "0.0.0-alpha-e42226f4af44",
16
- "@domicile-desktop/manganese-bar-module-theme-switch": "0.0.0-alpha-e42226f4af44",
17
- "@domicile-desktop/manganese-bar-module-tray": "0.0.0-alpha-e42226f4af44",
18
- "@domicile-desktop/manganese-bar-module-volume": "0.0.0-alpha-e42226f4af44",
19
- "@domicile-desktop/manganese-bar-module-workspace-switcher": "0.0.0-alpha-e42226f4af44",
20
- "@domicile-desktop/manganese-clipboard": "0.0.0-alpha-e42226f4af44",
21
- "@domicile-desktop/manganese-host": "0.0.0-alpha-e42226f4af44",
22
- "@domicile-desktop/manganese-launcher": "0.0.0-alpha-e42226f4af44",
23
- "@domicile-desktop/manganese-lock": "0.0.0-alpha-e42226f4af44",
24
- "@domicile-desktop/manganese-notifications": "0.0.0-alpha-e42226f4af44",
25
- "@domicile-desktop/manganese-wallpaper": "0.0.0-alpha-e42226f4af44",
26
- "@domicile-desktop/manganese-window-management": "0.0.0-alpha-e42226f4af44",
27
- "@domicile-desktop/sdk": "0.0.0-alpha-e42226f4af44",
3
+ "@domicile-desktop/component-library": "0.0.0-alpha-cd02e0ec1fbc",
4
+ "@domicile-desktop/manganese-bar": "0.0.0-alpha-cd02e0ec1fbc",
5
+ "@domicile-desktop/manganese-bar-module-battery": "0.0.0-alpha-cd02e0ec1fbc",
6
+ "@domicile-desktop/manganese-bar-module-bluetooth": "0.0.0-alpha-cd02e0ec1fbc",
7
+ "@domicile-desktop/manganese-bar-module-brightness": "0.0.0-alpha-cd02e0ec1fbc",
8
+ "@domicile-desktop/manganese-bar-module-clock": "0.0.0-alpha-cd02e0ec1fbc",
9
+ "@domicile-desktop/manganese-bar-module-gmail": "0.0.0-alpha-cd02e0ec1fbc",
10
+ "@domicile-desktop/manganese-bar-module-google-messages": "0.0.0-alpha-cd02e0ec1fbc",
11
+ "@domicile-desktop/manganese-bar-module-idle-inhibitor": "0.0.0-alpha-cd02e0ec1fbc",
12
+ "@domicile-desktop/manganese-bar-module-launcher-button": "0.0.0-alpha-cd02e0ec1fbc",
13
+ "@domicile-desktop/manganese-bar-module-network": "0.0.0-alpha-cd02e0ec1fbc",
14
+ "@domicile-desktop/manganese-bar-module-notifications": "0.0.0-alpha-cd02e0ec1fbc",
15
+ "@domicile-desktop/manganese-bar-module-sharing": "0.0.0-alpha-cd02e0ec1fbc",
16
+ "@domicile-desktop/manganese-bar-module-theme-switch": "0.0.0-alpha-cd02e0ec1fbc",
17
+ "@domicile-desktop/manganese-bar-module-tray": "0.0.0-alpha-cd02e0ec1fbc",
18
+ "@domicile-desktop/manganese-bar-module-volume": "0.0.0-alpha-cd02e0ec1fbc",
19
+ "@domicile-desktop/manganese-bar-module-workspace-switcher": "0.0.0-alpha-cd02e0ec1fbc",
20
+ "@domicile-desktop/manganese-clipboard": "0.0.0-alpha-cd02e0ec1fbc",
21
+ "@domicile-desktop/manganese-host": "0.0.0-alpha-cd02e0ec1fbc",
22
+ "@domicile-desktop/manganese-launcher": "0.0.0-alpha-cd02e0ec1fbc",
23
+ "@domicile-desktop/manganese-lock": "0.0.0-alpha-cd02e0ec1fbc",
24
+ "@domicile-desktop/manganese-notifications": "0.0.0-alpha-cd02e0ec1fbc",
25
+ "@domicile-desktop/manganese-wallpaper": "0.0.0-alpha-cd02e0ec1fbc",
26
+ "@domicile-desktop/manganese-window-management": "0.0.0-alpha-cd02e0ec1fbc",
27
+ "@domicile-desktop/sdk": "0.0.0-alpha-cd02e0ec1fbc",
28
28
  "@pandacss/dev": "^1.12.1",
29
29
  "@phosphor-icons/react": "^2.1.10",
30
30
  "react": "^19.2.8",
@@ -95,5 +95,5 @@
95
95
  "test:unit": "bun test"
96
96
  },
97
97
  "type": "module",
98
- "version": "0.0.0-alpha-e42226f4af44"
98
+ "version": "0.0.0-alpha-cd02e0ec1fbc"
99
99
  }
package/src/Desktop.tsx CHANGED
@@ -267,7 +267,6 @@ export const Desktop = ({
267
267
 
268
268
  const volumeKeys = useVolumeKeys(deskSound(domicile));
269
269
  const brightnessKeys = useBrightnessKeys(deskBacklight(domicile));
270
- // The level the last media key set, counted so each press shows it again.
271
270
  // How many bar items' panels hold the keyboard; see `useKeepsKeyboard`.
272
271
  const [heldPanels, setHeldPanels] = useState(0);
273
272
  const holdKeyboard = useCallback(() => {
@@ -277,6 +276,7 @@ export const Desktop = ({
277
276
  };
278
277
  }, []);
279
278
 
279
+ // The level the last media key set, counted so each press keeps it up.
280
280
  const [levelPress, setLevelPress] = useState<LevelPress | undefined>();
281
281
  // Once for the desk, so a portal's sign-in page opens once, not per bar.
282
282
  const portal = useCaptivePortal(domicile);
@@ -1,10 +1,10 @@
1
1
  import { useScreenRegion } from "@domicile-desktop/component-library/DisplayProvider";
2
- import { Notice } from "@domicile-desktop/component-library/Notice";
3
- import { LightbulbIcon } from "@phosphor-icons/react/dist/ssr/Lightbulb";
2
+ import { LevelToast } from "@domicile-desktop/component-library/LevelToast";
4
3
  import { MicrophoneIcon } from "@phosphor-icons/react/dist/ssr/Microphone";
5
4
  import { MicrophoneSlashIcon } from "@phosphor-icons/react/dist/ssr/MicrophoneSlash";
6
5
  import { SpeakerHighIcon } from "@phosphor-icons/react/dist/ssr/SpeakerHigh";
7
6
  import { SpeakerSlashIcon } from "@phosphor-icons/react/dist/ssr/SpeakerSlash";
7
+ import { SunIcon } from "@phosphor-icons/react/dist/ssr/Sun";
8
8
  import { css } from "../styled-system/css";
9
9
  import type { KeyLevel } from "./media-keys";
10
10
  import { LevelKind } from "./media-keys";
@@ -21,7 +21,7 @@ type Props = {
21
21
 
22
22
  /**
23
23
  * A notice at the bottom of `screen` with the level a volume, microphone or
24
- * brightness key set. Each press shows it again.
24
+ * brightness key set. Presses while it is up update it in place.
25
25
  */
26
26
  export const LevelNotice = ({ press, screen }: Props) =>
27
27
  press === undefined ? undefined : <Shown press={press} screen={screen} />;
@@ -33,16 +33,13 @@ const Shown = ({
33
33
  const region = useScreenRegion(screen);
34
34
  return (
35
35
  <div className={screenStyles} style={region}>
36
- <Notice
36
+ <LevelToast
37
+ changes={count}
37
38
  icon={<Icon level={level} />}
38
- key={count}
39
+ label={NAMES[level.kind]}
39
40
  level={level.level}
40
41
  muted={level.muted}
41
- >
42
- {level.muted
43
- ? `${NAMES[level.kind]} muted`
44
- : `${NAMES[level.kind]} ${String(Math.round(level.level * 100))}%`}
45
- </Notice>
42
+ />
46
43
  </div>
47
44
  );
48
45
  };
@@ -57,29 +54,29 @@ const Icon = ({ level: { kind, muted } }: { level: KeyLevel }) => {
57
54
  switch (kind) {
58
55
  case LevelKind.Volume:
59
56
  return muted ? (
60
- <SpeakerSlashIcon size={16} weight="bold" />
57
+ <SpeakerSlashIcon size={28} weight="fill" />
61
58
  ) : (
62
- <SpeakerHighIcon size={16} weight="bold" />
59
+ <SpeakerHighIcon size={28} weight="fill" />
63
60
  );
64
61
  case LevelKind.Microphone:
65
62
  return muted ? (
66
- <MicrophoneSlashIcon size={16} weight="bold" />
63
+ <MicrophoneSlashIcon size={28} weight="fill" />
67
64
  ) : (
68
- <MicrophoneIcon size={16} weight="bold" />
65
+ <MicrophoneIcon size={28} weight="fill" />
69
66
  );
70
67
  case LevelKind.Brightness:
71
- return <LightbulbIcon size={16} weight="bold" />;
68
+ return <SunIcon size={28} weight="fill" />;
72
69
  }
73
70
  };
74
71
 
75
72
  // The screen's box, over windows and under panels like the toasts. Ignores the
76
- // pointer so windows under it stay clickable. The notice sits centered near
73
+ // pointer so windows under it stay clickable. The toast sits centered near
77
74
  // its bottom edge.
78
75
  const screenStyles = css({
79
76
  alignItems: "flex-end",
80
77
  display: "flex",
81
78
  justifyContent: "center",
82
- paddingBlockEnd: 16,
79
+ paddingBlockEnd: 20,
83
80
  pointerEvents: "none",
84
81
  position: "fixed",
85
82
  zIndex: "toast",
@@ -645,6 +645,7 @@
645
645
  --goNNlj: 400ms;
646
646
  --bPXfWW: 500ms;
647
647
  --gXQUBH: 2s;
648
+ --gbbHhs: 2s;
648
649
  --infmmp: 1.5s;
649
650
  --YdYTw: 1.5s;
650
651
  --hmxuxv: 1s;
@@ -8758,6 +8759,46 @@
8758
8759
  transform: none;
8759
8760
  animation-timing-function: cubic-bezier(0,0,0.2,1);
8760
8761
  }
8762
+ }
8763
+
8764
+ @keyframes levelToastEnter {
8765
+ 0% {
8766
+ opacity: 0;
8767
+ transform: translateY(var(--bYDCFo)) scale(0.96);
8768
+ }
8769
+
8770
+ 100% {
8771
+ opacity: 1;
8772
+ transform: none;
8773
+ }
8774
+ }
8775
+
8776
+ @keyframes levelToastHold {
8777
+ 0% {
8778
+ opacity: 1;
8779
+ }
8780
+
8781
+ 80% {
8782
+ opacity: 1;
8783
+ }
8784
+
8785
+ 100% {
8786
+ opacity: 0;
8787
+ }
8788
+ }
8789
+
8790
+ @keyframes levelToastHoldAgain {
8791
+ 0% {
8792
+ opacity: 1;
8793
+ }
8794
+
8795
+ 80% {
8796
+ opacity: 1;
8797
+ }
8798
+
8799
+ 100% {
8800
+ opacity: 0;
8801
+ }
8761
8802
  }
8762
8803
 
8763
8804
  @keyframes noticeShown {
@@ -9336,6 +9377,18 @@
9336
9377
  border: 1px solid var(--gpZwKP);
9337
9378
  }
9338
9379
 
9380
+ .jhbvWn {
9381
+ animation: levelToastHold var(--gbbHhs) var(--hgfxJf) forwards;
9382
+ }
9383
+
9384
+ .jnvoSv {
9385
+ animation: levelToastEnter var(--cWTXGg) var(--epyuyH);
9386
+ }
9387
+
9388
+ .bHTUDa {
9389
+ border: 1px solid color-mix(in oklab, var(--cekHuD) 12%, transparent);
9390
+ }
9391
+
9339
9392
  .ehNXVq {
9340
9393
  animation: noticeShown var(--infmmp) var(--byCBno) forwards;
9341
9394
  }
@@ -9368,10 +9421,6 @@
9368
9421
  background: var(--edNtiq);
9369
9422
  }
9370
9423
 
9371
- .bHTUDa {
9372
- border: 1px solid color-mix(in oklab, var(--cekHuD) 12%, transparent);
9373
- }
9374
-
9375
9424
  .fGTDRl {
9376
9425
  grid-area: 1 / 1;
9377
9426
  }
@@ -9764,6 +9813,26 @@
9764
9813
  padding-block: 0.1em;
9765
9814
  }
9766
9815
 
9816
+ .kdFIjO {
9817
+ flex: 1 1 0%;
9818
+ }
9819
+
9820
+ .otyQb {
9821
+ border-radius: var(--eougbK);
9822
+ }
9823
+
9824
+ .fzoqgp {
9825
+ padding-block: var(--hIimNX);
9826
+ }
9827
+
9828
+ .jrIcfy {
9829
+ gap: 8px;
9830
+ }
9831
+
9832
+ .cuEhAh {
9833
+ transition: color var(--mUhz) var(--byCBno), background-color var(--mUhz) var(--byCBno);
9834
+ }
9835
+
9767
9836
  .ekHZUr {
9768
9837
  padding-block: 4vh;
9769
9838
  }
@@ -9784,10 +9853,6 @@
9784
9853
  margin-inline: auto;
9785
9854
  }
9786
9855
 
9787
- .kdFIjO {
9788
- flex: 1 1 0%;
9789
- }
9790
-
9791
9856
  .kwxavi {
9792
9857
  border-color: var(--bfwRxC);
9793
9858
  }
@@ -9844,10 +9909,6 @@
9844
9909
  padding-block: var(--kYLwfq);
9845
9910
  }
9846
9911
 
9847
- .cuEhAh {
9848
- transition: color var(--mUhz) var(--byCBno), background-color var(--mUhz) var(--byCBno);
9849
- }
9850
-
9851
9912
  .DMPvD {
9852
9913
  transition: transform var(--cWTXGg) var(--brELmP), inline-size var(--cWTXGg) var(--brELmP);
9853
9914
  }
@@ -9968,10 +10029,6 @@
9968
10029
  padding-block: var(--dkVAHH);
9969
10030
  }
9970
10031
 
9971
- .jrIcfy {
9972
- gap: 8px;
9973
- }
9974
-
9975
10032
  .kKYCuT {
9976
10033
  flex: 1 1 0;
9977
10034
  }
@@ -10773,6 +10830,31 @@
10773
10830
  font-size: 0.8em;
10774
10831
  }
10775
10832
 
10833
+ .gNzjdF {
10834
+ background-color: color-mix(in oklab, var(--cekHuD) 14%, transparent);
10835
+ }
10836
+
10837
+ .jXZkta {
10838
+ block-size: var(--gsUKim);
10839
+ }
10840
+
10841
+ .huLuch {
10842
+ -webkit-backdrop-filter: blur(var(--hIimNX)) saturate(160%);
10843
+ backdrop-filter: blur(var(--hIimNX)) saturate(160%);
10844
+ }
10845
+
10846
+ .kSxudW {
10847
+ background-color: color-mix(in oklab, var(--gMwXUQ) 85%, transparent);
10848
+ }
10849
+
10850
+ .btULPw {
10851
+ inline-size: var(--qOWrk);
10852
+ }
10853
+
10854
+ .hfxbWY {
10855
+ background-color: color-mix(in oklab, var(--bfwRxC) 18%, transparent);
10856
+ }
10857
+
10776
10858
  .hdAwi {
10777
10859
  position: fixed;
10778
10860
  }
@@ -11991,10 +12073,6 @@
11991
12073
  border-block-start-width: 0;
11992
12074
  }
11993
12075
 
11994
- .btULPw {
11995
- inline-size: var(--qOWrk);
11996
- }
11997
-
11998
12076
  .fdPsHT {
11999
12077
  inset-inline-start: 50%;
12000
12078
  }
@@ -12251,8 +12329,8 @@
12251
12329
  padding-inline-start: calc(var(--eDRUVY) + var(--cqwGG));
12252
12330
  }
12253
12331
 
12254
- .jHGhKk {
12255
- padding-block-end: var(--mYCWo);
12332
+ .jShSSF {
12333
+ padding-block-end: var(--jgejxp);
12256
12334
  }
12257
12335
 
12258
12336
  .BENyO {
@@ -12513,14 +12591,22 @@
12513
12591
  gap: var(--cqwGG);
12514
12592
  }
12515
12593
 
12516
- .jWwyOj[data-surface=glass] {
12517
- border-color: color-mix(in oklab, var(--cekHuD) 16%, transparent);
12518
- }
12519
-
12520
12594
  .hkQQDF::after {
12521
12595
  border-radius: var(--kkkBVq);
12522
12596
  }
12523
12597
 
12598
+ .iAkYQD::after {
12599
+ inset-block: var(--fcTUxn);
12600
+ }
12601
+
12602
+ .kWNXtX::after {
12603
+ transition: inline-size var(--mUhz) var(--byCBno), background-color var(--mUhz) var(--byCBno);
12604
+ }
12605
+
12606
+ .jWwyOj[data-surface=glass] {
12607
+ border-color: color-mix(in oklab, var(--cekHuD) 16%, transparent);
12608
+ }
12609
+
12524
12610
  .jJeVzO[data-flush] {
12525
12611
  overflow: hidden;
12526
12612
  }
@@ -12821,6 +12907,42 @@
12821
12907
  font-weight: var(--hmvyHR);
12822
12908
  }
12823
12909
 
12910
+ .bLxDOh[data-again] {
12911
+ animation-name: levelToastHoldAgain;
12912
+ }
12913
+
12914
+ .gWXEbD::after {
12915
+ background-color: var(--bfwRxC);
12916
+ }
12917
+
12918
+ .dMOWAL::after {
12919
+ content: "";
12920
+ }
12921
+
12922
+ .ewKbQx::after {
12923
+ inline-size: calc(var(--level-toast-level) * 100%);
12924
+ }
12925
+
12926
+ .jPTAfR::after {
12927
+ inset-inline-start: var(--fcTUxn);
12928
+ }
12929
+
12930
+ .khtefB::after {
12931
+ position: absolute;
12932
+ }
12933
+
12934
+ .fOpHBO[data-muted]::after {
12935
+ background-color: var(--dIlxIZ);
12936
+ }
12937
+
12938
+ [data-muted] .UjswK {
12939
+ background-color: color-mix(in oklab, var(--cekHuD) 10%, transparent);
12940
+ }
12941
+
12942
+ [data-muted] .eCzaXt {
12943
+ color: var(--dIlxIZ);
12944
+ }
12945
+
12824
12946
  .grRles[data-ending-style] {
12825
12947
  transform: translateY(var(--ebuyxV)) scale(0.98);
12826
12948
  }
@@ -12854,18 +12976,6 @@
12854
12976
  background-color: color-mix(in oklab, var(--jEjhje) 45%, transparent);
12855
12977
  }
12856
12978
 
12857
- .gWXEbD::after {
12858
- background-color: var(--bfwRxC);
12859
- }
12860
-
12861
- .dMOWAL::after {
12862
- content: "";
12863
- }
12864
-
12865
- .khtefB::after {
12866
- position: absolute;
12867
- }
12868
-
12869
12979
  .bULiuq::after {
12870
12980
  transform: scaleX(var(--notice-level));
12871
12981
  }
@@ -12874,10 +12984,6 @@
12874
12984
  transform-origin: left;
12875
12985
  }
12876
12986
 
12877
- .fOpHBO[data-muted]::after {
12878
- background-color: var(--dIlxIZ);
12879
- }
12880
-
12881
12987
  .eNpcyM[data-ending-style] {
12882
12988
  transform: scale(0.96);
12883
12989
  }
@@ -1307,6 +1307,10 @@ const tokens = {
1307
1307
  "value": "2s",
1308
1308
  "variable": "var(--gXQUBH)"
1309
1309
  },
1310
+ "durations.levelToast": {
1311
+ "value": "2s",
1312
+ "variable": "var(--gbbHhs)"
1313
+ },
1310
1314
  "durations.notice": {
1311
1315
  "value": "1.5s",
1312
1316
  "variable": "var(--infmmp)"
@@ -27,7 +27,7 @@ export type AnimationToken = "spin" | "ping" | "pulse" | "bounce"
27
27
 
28
28
  export type BorderWidthToken = "fauxBold"
29
29
 
30
- export type DurationToken = "fastest" | "faster" | "fast" | "normal" | "slow" | "slower" | "slowest" | "crossfade" | "notice" | "pulse" | "spin" | "wipe"
30
+ export type DurationToken = "fastest" | "faster" | "fast" | "normal" | "slow" | "slower" | "slowest" | "crossfade" | "levelToast" | "notice" | "pulse" | "spin" | "wipe"
31
31
 
32
32
  export type EasingToken = "default" | "linear" | "in" | "out" | "in-out" | "emphasized" | "outBack" | "outQuart"
33
33
 
@@ -169,7 +169,7 @@ export interface UtilityValues {
169
169
  transitionProperty: "common" | "colors" | "size" | "position" | "background";
170
170
  transition: "all" | "common" | "size" | "position" | "background" | "colors" | "opacity" | "shadow" | "transform";
171
171
  animation: Tokens["animations"];
172
- animationName: "ping" | "bounce" | "noticeShown" | "pulse" | "spin" | "themeSwipeFromBottom" | "themeSwipeFromTop" | "toastCountdown" | "backdropHiding" | "backdropShowing" | "windowArrivingFromEnd" | "windowArrivingFromStart" | "windowClosing" | "windowClosingTab" | "windowConcealing" | "windowDropping" | "windowHeldTiled" | "windowLeavingToEnd" | "windowLeavingToStart" | "windowOpening" | "windowOpeningTab" | "windowRestacking" | "windowRestackingAgain" | "windowRestackingDepth" | "windowRestackingDepthAgain" | "windowRevealing" | "windowSending" | "windowStowing" | "equalizer" | "lockRefused" | "lockRefusedAgain" | "chargeFlashing" | "bellRing";
172
+ animationName: "ping" | "bounce" | "levelToastEnter" | "levelToastHold" | "levelToastHoldAgain" | "noticeShown" | "pulse" | "spin" | "themeSwipeFromBottom" | "themeSwipeFromTop" | "toastCountdown" | "backdropHiding" | "backdropShowing" | "windowArrivingFromEnd" | "windowArrivingFromStart" | "windowClosing" | "windowClosingTab" | "windowConcealing" | "windowDropping" | "windowHeldTiled" | "windowLeavingToEnd" | "windowLeavingToStart" | "windowOpening" | "windowOpeningTab" | "windowRestacking" | "windowRestackingAgain" | "windowRestackingDepth" | "windowRestackingDepthAgain" | "windowRevealing" | "windowSending" | "windowStowing" | "equalizer" | "lockRefused" | "lockRefusedAgain" | "chargeFlashing" | "bellRing";
173
173
  animationTimingFunction: Tokens["easings"];
174
174
  animationDuration: Tokens["durations"];
175
175
  animationDelay: Tokens["durations"];