@stnd/launcher 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/Launcher.svelte +1 -120
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/Launcher.svelte
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Integrated with the Standard Garden OS aesthetic.
|
|
6
6
|
*/
|
|
7
7
|
import Icon from "@stnd/icon/Icon.svelte";
|
|
8
|
-
import Avatar from "@stnd/account/ui/Avatar.svelte";
|
|
9
8
|
import {
|
|
10
9
|
registry,
|
|
11
10
|
palette,
|
|
@@ -36,21 +35,6 @@
|
|
|
36
35
|
// Props exist only for backward compat or one-off overrides.
|
|
37
36
|
let { WelcomeView = null, load = null, hideLogin = false } = $props();
|
|
38
37
|
|
|
39
|
-
// Login only makes sense if an app actually wired up authentication —
|
|
40
|
-
// otherwise this is the same assumption-bleed as a hardcoded "ask AI"
|
|
41
|
-
// item: a button pointing at a "::login" view that doesn't exist for
|
|
42
|
-
// apps with no account system at all (presence-of-data = mode).
|
|
43
|
-
let hasAuthProvider = $derived(
|
|
44
|
-
has("user") ||
|
|
45
|
-
(typeof window !== "undefined" && !!window.__INITIAL_USER__),
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
// Check global window variable as fallback (set via window.__HIDE_LAUNCHER_LOGIN__)
|
|
49
|
-
let shouldHideLogin = $derived(
|
|
50
|
-
hideLogin ||
|
|
51
|
-
(typeof window !== "undefined" && window.__HIDE_LAUNCHER_LOGIN__),
|
|
52
|
-
);
|
|
53
|
-
|
|
54
38
|
// --- STATE (Synced with Engine) ---
|
|
55
39
|
let pState = $state({
|
|
56
40
|
open: false,
|
|
@@ -655,68 +639,6 @@
|
|
|
655
639
|
<div class="std-launcher-empty">Nothing came up.</div>
|
|
656
640
|
{/if}
|
|
657
641
|
</div>
|
|
658
|
-
|
|
659
|
-
<!-- Footer (shown in search / palette mode, hidden in full view mode) -->
|
|
660
|
-
{#if !ActiveViewComponent}
|
|
661
|
-
<footer class="std-launcher-footer mt-0">
|
|
662
|
-
<div>
|
|
663
|
-
{#if currentUser && currentUser.isAuthenticated}
|
|
664
|
-
<div
|
|
665
|
-
class="std-launcher-user flex items-center gap-xs"
|
|
666
|
-
role="button"
|
|
667
|
-
tabindex="0"
|
|
668
|
-
onclick={() => {
|
|
669
|
-
if (registryState.views["::account-settings"]) {
|
|
670
|
-
launcherView("::account-settings");
|
|
671
|
-
} else if (registryState.views["::settings"]) {
|
|
672
|
-
launcherView("::settings");
|
|
673
|
-
} else {
|
|
674
|
-
launcherView("::my-space");
|
|
675
|
-
}
|
|
676
|
-
}}
|
|
677
|
-
onkeydown={(e) => {
|
|
678
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
679
|
-
if (registryState.views["::account-settings"]) {
|
|
680
|
-
launcherView("::account-settings");
|
|
681
|
-
} else if (registryState.views["::settings"]) {
|
|
682
|
-
launcherView("::settings");
|
|
683
|
-
} else {
|
|
684
|
-
launcherView("::my-space");
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
}}
|
|
688
|
-
style="cursor: pointer;"
|
|
689
|
-
>
|
|
690
|
-
<Avatar
|
|
691
|
-
src={currentUser.image}
|
|
692
|
-
name={currentUser.username || currentUser.name}
|
|
693
|
-
email={currentUser.email}
|
|
694
|
-
size="18px"
|
|
695
|
-
border={false}
|
|
696
|
-
/>
|
|
697
|
-
<span class="smaller muted">
|
|
698
|
-
{currentUser.name || currentUser.username || currentUser.email}
|
|
699
|
-
</span>
|
|
700
|
-
</div>
|
|
701
|
-
{:else if hasAuthProvider && !shouldHideLogin}
|
|
702
|
-
<button
|
|
703
|
-
class="no-decoration smaller ghost text-subtle"
|
|
704
|
-
onclick={() => launcherView("::login")}
|
|
705
|
-
>
|
|
706
|
-
Login
|
|
707
|
-
</button>
|
|
708
|
-
{/if}
|
|
709
|
-
<div class="std-launcher-mode smaller inline hidden">
|
|
710
|
-
COMMAND MODE
|
|
711
|
-
</div>
|
|
712
|
-
</div>
|
|
713
|
-
|
|
714
|
-
<div class="std-launcher-hints sm:hidden hidden">
|
|
715
|
-
<span><kbd>↑</kbd> <kbd>↓</kbd> navigate</span>
|
|
716
|
-
<span><kbd>esc</kbd> close</span>
|
|
717
|
-
</div>
|
|
718
|
-
</footer>
|
|
719
|
-
{/if}
|
|
720
642
|
</div>
|
|
721
643
|
</div>
|
|
722
644
|
{/if}
|
|
@@ -920,7 +842,7 @@
|
|
|
920
842
|
Naming it is the point: views used to hardcode `var(--space)` to undo a
|
|
921
843
|
padding they could only guess, so the two drifted apart and content got
|
|
922
844
|
clipped at the frame. One name, one source of truth. */
|
|
923
|
-
--launcher-pad:
|
|
845
|
+
--launcher-pad: var(--space);
|
|
924
846
|
}
|
|
925
847
|
|
|
926
848
|
/* Full-bleed views (settings, welcome horizon) manage their own internal layout */
|
|
@@ -1062,47 +984,6 @@
|
|
|
1062
984
|
font-size: var(--scale-d2);
|
|
1063
985
|
}
|
|
1064
986
|
|
|
1065
|
-
/* Footer (Refined & Compact) */
|
|
1066
|
-
.std-launcher-footer {
|
|
1067
|
-
display: flex;
|
|
1068
|
-
justify-content: space-between;
|
|
1069
|
-
align-items: center;
|
|
1070
|
-
padding: 3px var(--space-d2, 10px);
|
|
1071
|
-
min-height: 28px;
|
|
1072
|
-
font-size: var(--size-xs);
|
|
1073
|
-
color: var(--color-muted);
|
|
1074
|
-
border-top: var(--border);
|
|
1075
|
-
background-color: var(--color-surface-high);
|
|
1076
|
-
|
|
1077
|
-
box-shadow: var(--shadow-raised);
|
|
1078
|
-
}
|
|
1079
|
-
|
|
1080
|
-
.std-launcher-user {
|
|
1081
|
-
display: flex;
|
|
1082
|
-
align-items: center;
|
|
1083
|
-
gap: var(--space-d4, 4px);
|
|
1084
|
-
color: var(--color-foreground-muted);
|
|
1085
|
-
padding: 2px 6px;
|
|
1086
|
-
border-radius: var(--radius);
|
|
1087
|
-
transition: all var(--transition-fast);
|
|
1088
|
-
}
|
|
1089
|
-
|
|
1090
|
-
.std-launcher-user:hover {
|
|
1091
|
-
background: var(--color-surface-highest);
|
|
1092
|
-
color: var(--color-foreground);
|
|
1093
|
-
}
|
|
1094
|
-
|
|
1095
|
-
.std-launcher-user span {
|
|
1096
|
-
max-width: 150px;
|
|
1097
|
-
white-space: nowrap;
|
|
1098
|
-
overflow: hidden;
|
|
1099
|
-
text-overflow: ellipsis;
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
.std-launcher-hints {
|
|
1103
|
-
display: flex;
|
|
1104
|
-
gap: 1rem;
|
|
1105
|
-
}
|
|
1106
987
|
|
|
1107
988
|
/* Mobile: Bottom Sheet */
|
|
1108
989
|
@media (max-width: 640px) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stnd/launcher",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"svelte": "5.57.0",
|
|
22
22
|
"wrangler": "^4.129.0",
|
|
23
|
+
"@stnd/account": "0.2.11",
|
|
23
24
|
"@stnd/client": "0.7.0",
|
|
24
|
-
"@stnd/log": "0.5.1",
|
|
25
25
|
"@stnd/icon": "0.2.2",
|
|
26
|
-
"@stnd/
|
|
26
|
+
"@stnd/log": "0.5.1",
|
|
27
27
|
"@stnd/store": "0.5.1",
|
|
28
28
|
"@stnd/ui": "0.6.1"
|
|
29
29
|
},
|