@krizaka/sovkora-design-system 0.0.0-stage → 4.0.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +234 -0
  2. package/LICENSE +202 -0
  3. package/README.md +82 -2
  4. package/package.json +112 -3
  5. package/registry/badge.json +97 -0
  6. package/registry/button.json +140 -0
  7. package/registry/chat-showcase.json +113 -0
  8. package/registry/clip-player.json +120 -0
  9. package/registry/command-palette.json +116 -0
  10. package/registry/examples/badge/model-state.tsx +16 -0
  11. package/registry/examples/button/send.tsx +18 -0
  12. package/registry/examples/chat-showcase/french.tsx +20 -0
  13. package/registry/examples/chat-showcase/sovereign-answer.tsx +20 -0
  14. package/registry/examples/clip-player/tea-pour.tsx +27 -0
  15. package/registry/examples/command-palette/workspace.tsx +30 -0
  16. package/registry/examples/icon/engine.tsx +26 -0
  17. package/registry/examples/icon/in-a-button.tsx +12 -0
  18. package/registry/examples/run-facts/clip-run.tsx +15 -0
  19. package/registry/examples/sentinel-mini/sidebar.tsx +11 -0
  20. package/registry/examples/skeleton/answer-loading.tsx +11 -0
  21. package/registry/examples/video-result/assistant.tsx +36 -0
  22. package/registry/examples/video-result/tea-pour.tsx +40 -0
  23. package/registry/foundations.json +2067 -0
  24. package/registry/icon.json +109 -0
  25. package/registry/index.json +242 -0
  26. package/registry/run-facts.json +75 -0
  27. package/registry/sentinel-mini.json +81 -0
  28. package/registry/skeleton.json +116 -0
  29. package/registry/video-result.json +167 -0
  30. package/src/components/Badge.tsx +36 -0
  31. package/src/components/Button.tsx +26 -0
  32. package/src/components/ChatShowcase.tsx +248 -0
  33. package/src/components/ClipPlayer.tsx +223 -0
  34. package/src/components/CommandPalette.tsx +104 -0
  35. package/src/components/CommandPalette.types.ts +33 -0
  36. package/src/components/Input.tsx +14 -0
  37. package/src/components/RunFacts.tsx +36 -0
  38. package/src/components/SentinelMini.tsx +61 -0
  39. package/src/components/Skeleton.tsx +50 -0
  40. package/src/components/VideoResult.tsx +123 -0
  41. package/src/components/badge.meta.ts +34 -0
  42. package/src/components/button.meta.ts +35 -0
  43. package/src/components/chat-showcase.css.ts +19 -0
  44. package/src/components/chat-showcase.meta.ts +50 -0
  45. package/src/components/clip-player.meta.ts +48 -0
  46. package/src/components/command-palette.meta.ts +47 -0
  47. package/src/components/icon.meta.ts +45 -0
  48. package/src/components/run-facts.meta.ts +32 -0
  49. package/src/components/sentinel-mini.meta.ts +39 -0
  50. package/src/components/skeleton.meta.ts +42 -0
  51. package/src/components/video-result.meta.ts +53 -0
  52. package/src/icon.registry.tsx +737 -0
  53. package/src/icon.tsx +74 -0
  54. package/src/index.ts +43 -0
  55. package/src/meta.ts +76 -0
  56. package/src/theme.css +859 -0
@@ -0,0 +1,20 @@
1
+ import { ChatShowcase } from "@krizaka/sovkora-design-system";
2
+
3
+ // Eric, finance lead, asks about a contract: the engine answers on premises, nothing leaves.
4
+ export default function SovereignAnswer() {
5
+ return (
6
+ <ChatShowcase
7
+ labels={{
8
+ agent: "Sovkora · Finance desk",
9
+ status: "On premises · online",
10
+ model: "llama-3.1-70b",
11
+ routed: "Answered locally",
12
+ privacy: "0 bytes left your network",
13
+ placeholder: "Ask about your documents…",
14
+ }}
15
+ question="Eric here — which supplier contracts renew before March, and at what notice?"
16
+ answer="Three renew before March: Northwind (90 days' notice, by Dec 2), Calder Logistics (60 days, by Jan 4) and Ivo Print (30 days, by Feb 1). Northwind's clause also caps the increase at 3 %."
17
+ pipeline={["PII masked", "Policy checked", "Routed locally", "Cited 3 contracts"]}
18
+ />
19
+ );
20
+ }
@@ -0,0 +1,27 @@
1
+ import { ClipPlayer } from "@krizaka/sovkora-design-system";
2
+
3
+ // Eric's tea-pour shot as a loop: it plays in view, the controls show on hover, a click opens it larger.
4
+ export default function TeaPour() {
5
+ return (
6
+ <div className="max-w-xl overflow-hidden rounded-2xl border border-border-default">
7
+ <ClipPlayer
8
+ title="Mint tea pouring into an engraved glass in a Berber tent"
9
+ sources={{
10
+ mp4: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour.c4138c8ce9.mp4",
11
+ webm: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour.b33e468733.webm",
12
+ poster:
13
+ "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour-poster.8a062e63c2.webp",
14
+ }}
15
+ labels={{
16
+ badge: "Video · 5 s",
17
+ play: "Play",
18
+ pause: "Pause",
19
+ mute: "Mute",
20
+ unmute: "Sound on",
21
+ enlarge: "Open larger",
22
+ close: "Close",
23
+ }}
24
+ />
25
+ </div>
26
+ );
27
+ }
@@ -0,0 +1,30 @@
1
+ "use client";
2
+
3
+ import { CommandPalette } from "@krizaka/sovkora-design-system";
4
+
5
+ // Eric's workspace: ⌘K / Ctrl+K opens it; entries and words are props.
6
+ export default function Workspace() {
7
+ return (
8
+ <div className="flex flex-col items-start gap-2 text-sm text-fg-secondary">
9
+ <p>Press ⌘K (Ctrl+K) to open the palette.</p>
10
+ <CommandPalette
11
+ onNavigate={() => {}}
12
+ labels={{
13
+ label: "Command palette",
14
+ placeholder: "Go to…",
15
+ results: "Results",
16
+ empty: "Nothing matches.",
17
+ navigate: "move",
18
+ open: "open",
19
+ close: "close",
20
+ }}
21
+ commands={[
22
+ { id: "studios", label: "Studios", icon: "studio", href: "/studios", section: "Go to" },
23
+ { id: "chat", label: "Contracts assistant", icon: "chat", href: "/chat/contracts", section: "Go to" },
24
+ { id: "new-chat", label: "New chat", icon: "newChat", href: "/chat/new", section: "Actions" },
25
+ { id: "models", label: "Local models", icon: "model", href: "/settings/models", section: "Settings" },
26
+ ]}
27
+ />
28
+ </div>
29
+ );
30
+ }
@@ -0,0 +1,26 @@
1
+ import { Icon, type IconName } from "@krizaka/sovkora-design-system";
2
+
3
+ const CONCEPTS: { name: IconName; label: string }[] = [
4
+ { name: "router", label: "Router" },
5
+ { name: "pipeline", label: "Pipeline" },
6
+ { name: "model", label: "Model" },
7
+ { name: "rag", label: "RAG" },
8
+ { name: "memory", label: "Memory" },
9
+ { name: "mcp", label: "MCP" },
10
+ { name: "costShield", label: "Cost shield" },
11
+ { name: "shield", label: "Policies" },
12
+ ];
13
+
14
+ // The vocabulary of the engine, one picture per concept.
15
+ export default function Engine() {
16
+ return (
17
+ <ul className="grid grid-cols-4 gap-4 text-xs text-fg-secondary">
18
+ {CONCEPTS.map((c) => (
19
+ <li key={c.name} className="flex flex-col items-center gap-1.5">
20
+ <Icon name={c.name} size={22} className="text-fg" />
21
+ {c.label}
22
+ </li>
23
+ ))}
24
+ </ul>
25
+ );
26
+ }
@@ -0,0 +1,12 @@
1
+ import { Icon } from "@krizaka/sovkora-design-system";
2
+ import { Button } from "@krizaka/ui/button";
3
+
4
+ // An icon beside a label: it takes the button's text role.
5
+ export default function InAButton() {
6
+ return (
7
+ <Button variant="secondary">
8
+ <Icon name="upload" size={16} />
9
+ Add documents
10
+ </Button>
11
+ );
12
+ }
@@ -0,0 +1,15 @@
1
+ import { RunFacts } from "@krizaka/sovkora-design-system";
2
+
3
+ // What the run of Eric's tea-pour shot recorded.
4
+ export default function ClipRun() {
5
+ return (
6
+ <RunFacts
7
+ facts={[
8
+ { label: "Model", value: "Wan 2.2 A14B" },
9
+ { label: "Sovkora run", value: "25948442-7c68-4e66-94d6-39cd8b96438d" },
10
+ { label: "Seed", value: "20261011" },
11
+ { label: "Frame", value: "832×480 · 16 fps · 5 s" },
12
+ ]}
13
+ />
14
+ );
15
+ }
@@ -0,0 +1,11 @@
1
+ import { SentinelMini } from "@krizaka/sovkora-design-system";
2
+
3
+ // Beside the name of the section the governance watches.
4
+ export default function Sidebar() {
5
+ return (
6
+ <div className="flex items-center gap-2 text-sm font-semibold text-fg">
7
+ <SentinelMini size={24} />
8
+ Governance · 12 policies active
9
+ </div>
10
+ );
11
+ }
@@ -0,0 +1,11 @@
1
+ import { Skeleton, SkeletonGroup } from "@krizaka/sovkora-design-system";
2
+
3
+ // The shape of an answer while the engine prepares it.
4
+ export default function AnswerLoading() {
5
+ return (
6
+ <div aria-busy="true" aria-label="Preparing the answer" className="flex w-80 gap-3">
7
+ <Skeleton shape="circle" className="h-8 w-8 shrink-0" />
8
+ <SkeletonGroup lines={3} className="flex-1" />
9
+ </div>
10
+ );
11
+ }
@@ -0,0 +1,36 @@
1
+ import { VideoResult } from "@krizaka/sovkora-design-system";
2
+
3
+ // A clip without its command: the player, the prompt and the facts of the run, nothing else to copy.
4
+ export default function Assistant() {
5
+ return (
6
+ <VideoResult
7
+ title="A night workshop where a holographic interface of orange light unfolds blueprints"
8
+ sources={{
9
+ mp4: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/assistant.8b571af009.mp4",
10
+ webm: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/assistant.7311e0410e.webm",
11
+ poster: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/assistant-poster.fc37abd8c7.webp",
12
+ }}
13
+ prompt="A genius engineer's workshop at night, a floating holographic interface of orange light blooms in mid-air and organises blueprints of a machine."
14
+ facts={[
15
+ { label: "Model", value: "Wan 2.2 A14B" },
16
+ { label: "Seed", value: "20261011" },
17
+ { label: "Frame", value: "832×480 · 16 fps · 5 s" },
18
+ ]}
19
+ labels={{
20
+ badge: "Video · 5 s",
21
+ play: "Play",
22
+ pause: "Pause",
23
+ mute: "Mute",
24
+ unmute: "Sound on",
25
+ enlarge: "Open larger",
26
+ close: "Close",
27
+ prompt: "Prompt",
28
+ facts: "The run",
29
+ reproduce: "Reproduce it",
30
+ copy: "Copy command",
31
+ copied: "Command copied",
32
+ download: "Download the clip",
33
+ }}
34
+ />
35
+ );
36
+ }
@@ -0,0 +1,40 @@
1
+ import { VideoResult } from "@krizaka/sovkora-design-system";
2
+ // Eric's tea-pour shot: the clip, its prompt, what the run recorded, how to make it again.
3
+ export default function TeaPour() {
4
+ return (
5
+ <VideoResult
6
+ title="Mint tea pouring into an engraved glass in a Berber tent, steam in a shaft of golden light"
7
+ sources={{
8
+ mp4: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour.c4138c8ce9.mp4",
9
+ webm: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour.b33e468733.webm",
10
+ poster: "https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour-poster.8a062e63c2.webp",
11
+ }}
12
+ prompt="Extreme close-up, slow motion: a stream of amber mint tea pours from a silver teapot into a small engraved glass, steam curling through a shaft of golden-hour light inside a Berber tent."
13
+ facts={[
14
+ { label: "Model", value: "Wan 2.2 A14B" },
15
+ { label: "Run by", value: "Sovkora · run 25948442" },
16
+ { label: "Seed", value: "20261011" },
17
+ { label: "Frame", value: "832×480 · 16 fps · 5 s" },
18
+ ]}
19
+ reproduce={
20
+ 'orazaka video "Extreme close-up, slow motion: a stream of amber mint tea pours…" \\\n --model wan2-2-t2v-a14b --aspect 16:9 --seed 20261011'
21
+ }
22
+ downloadHref="https://krizaka-assets.b-cdn.net/site/products/orazaka/gallery-video/tea-pour.c4138c8ce9.mp4"
23
+ labels={{
24
+ badge: "Video · 5 s",
25
+ play: "Play",
26
+ pause: "Pause",
27
+ mute: "Mute",
28
+ unmute: "Sound on",
29
+ enlarge: "Open larger",
30
+ close: "Close",
31
+ prompt: "Prompt",
32
+ facts: "The run",
33
+ reproduce: "Reproduce it",
34
+ copy: "Copy command",
35
+ copied: "Command copied",
36
+ download: "Download the clip",
37
+ }}
38
+ />
39
+ );
40
+ }