@k2b/cloud 0.33.0 → 0.34.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/package.json +3 -3
- package/src/_internal/app-presentation.ts +40 -11
- package/src/_internal/define-app.ts +1 -0
- package/src/_internal/registry.ts +10 -1
- package/src/_internal/widget-declarations.ts +16 -3
- package/src/_internal/widget-settings.ts +93 -0
- package/src/ai/capabilities.ts +8 -5
- package/src/ai/resource-refs.ts +35 -3
- package/src/ai/system-prompt.ts +3 -2
- package/src/api/index.ts +2 -0
- package/src/api/mcp.ts +48 -17
- package/src/api/pwa.ts +7 -2
- package/src/api/resource-links.ts +43 -0
- package/src/api/widgets.ts +163 -82
- package/src/browser/CloudResourceSearch.tsx +6 -6
- package/src/browser/command-shortcuts.ts +2 -11
- package/src/browser/resource-picker.tsx +1 -0
- package/src/browser/resource-search.ts +7 -2
- package/src/browser/widgets.ts +23 -5
- package/src/capabilities/testing.ts +13 -1
- package/src/cli/capabilities.ts +61 -17
- package/src/cli/index.ts +2 -0
- package/src/cli/resource-links.ts +13 -0
- package/src/contracts/app.ts +7 -1
- package/src/contracts/capabilities.ts +25 -5
- package/src/contracts/registry.ts +3 -1
- package/src/contracts/resource-href.ts +7 -0
- package/src/contracts/widgets.ts +80 -6
- package/src/desktop/index.ts +3 -2
- package/src/desktop/solid.tsx +7 -5
- package/src/server/widget-request.ts +34 -5
- package/src/services/app-approval.ts +4 -2
- package/src/services/approvals/index.ts +40 -11
- package/src/services/approvals/list.ts +1 -0
- package/src/services/approvals/migrate.ts +10 -0
- package/src/services/pdf/markdown.ts +11 -7
- package/src/services/pwa-devices.ts +68 -15
- package/src/shared/app-presentation.ts +49 -1
- package/src/shared/index.ts +1 -0
- package/src/shared/markdown/callout-sanitizer.ts +37 -0
- package/src/shared/markdown/index.ts +8 -2
- package/src/ssr/Layout.tsx +3 -15
- package/src/ssr/LayoutHelp.browser-harness.tsx +43 -0
- package/src/ssr/LayoutHelp.tsx +319 -183
- package/src/ssr/LayoutHelpTrigger.tsx +1 -3
- package/src/ssr/LayoutPreferences.tsx +15 -5
- package/src/ssr/MinimalLayoutPreferences.island.tsx +3 -9
- package/src/ssr/MobileProfileActions.tsx +3 -8
- package/src/ssr/ProfilePreferences.tsx +8 -10
- package/src/ssr/ShellRuntime.island.tsx +1 -5
- package/src/ssr/ThemeCycleButton.tsx +46 -0
- package/src/ssr/app-appearance.ts +6 -1
- package/src/ssr/layout-help-url.ts +39 -0
- package/src/ssr/platform-messages.ts +0 -8
- package/src/ssr/preference-controller.ts +53 -19
- package/src/ssr/profile-actions.ts +12 -16
- package/src/ssr/profile-preferences-messages.ts +4 -2
- package/src/ssr/rail-navigation.ts +3 -0
- package/src/ssr/shell-data.tsx +2 -2
- package/src/styles/effects.css +13 -3
- package/src/styles/global.css +27 -1
- package/src/styles/input.css +0 -8
- package/src/styles/tokens.css +0 -2
- package/src/styles/utilities-navigation.css +10 -13
- package/src/ssr/GlobalSearchHelpDialog.tsx +0 -104
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { prompts, ScrollArea, useLocale } from "@k2b/ui";
|
|
2
|
-
import { createMemo, For, Show } from "solid-js";
|
|
3
|
-
import { platformMessages } from "./platform-messages";
|
|
4
|
-
|
|
5
|
-
export type GlobalSearchHelpApp = {
|
|
6
|
-
appId: string;
|
|
7
|
-
appName: string;
|
|
8
|
-
appIcon: string;
|
|
9
|
-
tags: string[];
|
|
10
|
-
help?: string;
|
|
11
|
-
tagHelp?: Array<{ tag: string; help: string }>;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
type GlobalSearchHelpDialogProps = { apps: GlobalSearchHelpApp[] };
|
|
15
|
-
|
|
16
|
-
export default function GlobalSearchHelpDialog(props: GlobalSearchHelpDialogProps) {
|
|
17
|
-
const locale = useLocale();
|
|
18
|
-
const t = () => platformMessages.resolve([locale()]).t;
|
|
19
|
-
const apps = createMemo(() =>
|
|
20
|
-
props.apps
|
|
21
|
-
.filter((app) => app.tags.length > 0)
|
|
22
|
-
.map((app) => ({
|
|
23
|
-
...app,
|
|
24
|
-
help: app.help?.trim() || undefined,
|
|
25
|
-
tags: [...new Set(app.tags.map((tag) => tag.toLowerCase()))].sort(),
|
|
26
|
-
tagHelp: [...new Map((app.tagHelp ?? []).map((entry) => [entry.tag.trim().toLowerCase(), entry.help.trim()])).entries()]
|
|
27
|
-
.filter(([tag, help]) => tag.length > 0 && help.length > 0)
|
|
28
|
-
.map(([tag, help]) => ({ tag, help })),
|
|
29
|
-
}))
|
|
30
|
-
.sort((a, b) => a.appName.localeCompare(b.appName)),
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div class="flex max-h-[min(42rem,var(--ui-dialog-available-height))] min-h-0 flex-col gap-4 text-zinc-900 dark:text-zinc-100">
|
|
35
|
-
<div class="flex items-start justify-between gap-3">
|
|
36
|
-
<div>
|
|
37
|
-
<p class="text-sm text-dimmed">{t().searchTagsDescription({ tag: "#tag" })}</p>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
|
|
41
|
-
<ScrollArea class="min-h-0 flex-1 pr-1">
|
|
42
|
-
<div class="flex flex-col gap-2">
|
|
43
|
-
<For each={apps()}>
|
|
44
|
-
{(app) => (
|
|
45
|
-
<section class="rounded-lg ring-1 ring-inset ring-zinc-200 dark:ring-zinc-800 p-3 bg-zinc-50/50 dark:bg-zinc-900/35">
|
|
46
|
-
<header class="flex items-center gap-2 text-sm">
|
|
47
|
-
<i class={app.appIcon} />
|
|
48
|
-
<span>{app.appName}</span>
|
|
49
|
-
</header>
|
|
50
|
-
<Show when={app.help}>
|
|
51
|
-
<p class="mt-1 text-xs text-dimmed">{app.help}</p>
|
|
52
|
-
</Show>
|
|
53
|
-
<Show
|
|
54
|
-
when={(app.tagHelp?.length ?? 0) > 0}
|
|
55
|
-
fallback={
|
|
56
|
-
<p class="mt-1 text-xs text-dimmed">
|
|
57
|
-
{t().tags}:{" "}
|
|
58
|
-
<For each={app.tags}>
|
|
59
|
-
{(tag, index) => (
|
|
60
|
-
<>
|
|
61
|
-
<code>#{tag}</code>
|
|
62
|
-
<Show when={index() < app.tags.length - 1}>, </Show>
|
|
63
|
-
</>
|
|
64
|
-
)}
|
|
65
|
-
</For>
|
|
66
|
-
</p>
|
|
67
|
-
}
|
|
68
|
-
>
|
|
69
|
-
<div class="mt-2 space-y-1 text-xs">
|
|
70
|
-
<For each={app.tagHelp}>
|
|
71
|
-
{(entry) => (
|
|
72
|
-
<div class="grid grid-cols-[6rem_minmax(0,1fr)] gap-2">
|
|
73
|
-
<code>#{entry.tag}</code>
|
|
74
|
-
<span class="text-dimmed">{entry.help}</span>
|
|
75
|
-
</div>
|
|
76
|
-
)}
|
|
77
|
-
</For>
|
|
78
|
-
</div>
|
|
79
|
-
</Show>
|
|
80
|
-
</section>
|
|
81
|
-
)}
|
|
82
|
-
</For>
|
|
83
|
-
<Show when={apps().length === 0}>
|
|
84
|
-
<div class="rounded-lg ring-1 ring-inset ring-zinc-200 dark:ring-zinc-800 p-3 text-xs text-dimmed bg-zinc-50/50 dark:bg-zinc-900/35">
|
|
85
|
-
{t().noAppSearchTags}
|
|
86
|
-
</div>
|
|
87
|
-
</Show>
|
|
88
|
-
</div>
|
|
89
|
-
</ScrollArea>
|
|
90
|
-
</div>
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export const openGlobalSearchHelpDialog = (
|
|
95
|
-
apps: GlobalSearchHelpApp[],
|
|
96
|
-
locale = typeof document === "undefined" ? "en" : document.documentElement.lang || "en",
|
|
97
|
-
) => {
|
|
98
|
-
const t = platformMessages.resolve([locale]).t;
|
|
99
|
-
void prompts.dialog<void>(() => <GlobalSearchHelpDialog apps={apps} />, {
|
|
100
|
-
title: t.searchTags,
|
|
101
|
-
icon: "ti ti-help-circle",
|
|
102
|
-
size: "large",
|
|
103
|
-
});
|
|
104
|
-
};
|