@runwisp/ui 0.4.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 (108) hide show
  1. package/LICENSE +215 -0
  2. package/README.md +20 -0
  3. package/package.json +128 -0
  4. package/src/app.d.ts +8 -0
  5. package/src/app.html +12 -0
  6. package/src/astro/CTABand.astro +32 -0
  7. package/src/astro/Hero.astro +58 -0
  8. package/src/astro/SiteFooter.astro +47 -0
  9. package/src/astro/SiteHeader.astro +46 -0
  10. package/src/lib/actions/portal.ts +16 -0
  11. package/src/lib/assets/runwisp-logo.svg +16 -0
  12. package/src/lib/components/Accordion.svelte +20 -0
  13. package/src/lib/components/AccordionItem.svelte +74 -0
  14. package/src/lib/components/Alert.svelte +107 -0
  15. package/src/lib/components/AlertDialog.svelte +63 -0
  16. package/src/lib/components/Avatar.svelte +88 -0
  17. package/src/lib/components/Badge.svelte +131 -0
  18. package/src/lib/components/Breadcrumb.svelte +58 -0
  19. package/src/lib/components/Button.svelte +69 -0
  20. package/src/lib/components/Card.svelte +70 -0
  21. package/src/lib/components/Checkbox.svelte +90 -0
  22. package/src/lib/components/CodeBlock.svelte +66 -0
  23. package/src/lib/components/CronInput.svelte +130 -0
  24. package/src/lib/components/DataGrid.svelte +368 -0
  25. package/src/lib/components/Drawer.svelte +156 -0
  26. package/src/lib/components/Dropdown.svelte +195 -0
  27. package/src/lib/components/DurationInput.svelte +170 -0
  28. package/src/lib/components/EmptyState.svelte +46 -0
  29. package/src/lib/components/ErrorState.svelte +73 -0
  30. package/src/lib/components/FeatureCard.svelte +35 -0
  31. package/src/lib/components/FeatureGrid.svelte +37 -0
  32. package/src/lib/components/FormField.svelte +53 -0
  33. package/src/lib/components/Heading.svelte +46 -0
  34. package/src/lib/components/Input.svelte +114 -0
  35. package/src/lib/components/Kbd.svelte +31 -0
  36. package/src/lib/components/Link.svelte +56 -0
  37. package/src/lib/components/LinkButton.svelte +55 -0
  38. package/src/lib/components/LogConsole.svelte +424 -0
  39. package/src/lib/components/Logo.svelte +34 -0
  40. package/src/lib/components/Modal.svelte +138 -0
  41. package/src/lib/components/PageContainer.svelte +38 -0
  42. package/src/lib/components/Pagination.svelte +96 -0
  43. package/src/lib/components/Popover.svelte +130 -0
  44. package/src/lib/components/Progress.svelte +68 -0
  45. package/src/lib/components/Prose.svelte +43 -0
  46. package/src/lib/components/Radio.svelte +82 -0
  47. package/src/lib/components/RadioGroup.svelte +53 -0
  48. package/src/lib/components/Select.svelte +454 -0
  49. package/src/lib/components/Separator.svelte +30 -0
  50. package/src/lib/components/Skeleton.svelte +75 -0
  51. package/src/lib/components/Sparkline.svelte +58 -0
  52. package/src/lib/components/Spinner.svelte +44 -0
  53. package/src/lib/components/StatusIndicator.svelte +203 -0
  54. package/src/lib/components/Table.svelte +19 -0
  55. package/src/lib/components/TableBody.svelte +17 -0
  56. package/src/lib/components/TableCell.svelte +34 -0
  57. package/src/lib/components/TableHead.svelte +19 -0
  58. package/src/lib/components/TableRow.svelte +22 -0
  59. package/src/lib/components/Tabs.svelte +148 -0
  60. package/src/lib/components/Text.svelte +57 -0
  61. package/src/lib/components/Textarea.svelte +81 -0
  62. package/src/lib/components/ThemeToggle.svelte +47 -0
  63. package/src/lib/components/TimezoneSelect.svelte +127 -0
  64. package/src/lib/components/ToastContainer.svelte +84 -0
  65. package/src/lib/components/Toggle.svelte +84 -0
  66. package/src/lib/components/Tooltip.svelte +56 -0
  67. package/src/lib/components/button-styles.ts +51 -0
  68. package/src/lib/components/dashboard/RunDetailPanel.svelte +252 -0
  69. package/src/lib/components/dashboard/RunsList.svelte +331 -0
  70. package/src/lib/components/dashboard/run-helpers.ts +12 -0
  71. package/src/lib/components/dashboard/status-config.ts +141 -0
  72. package/src/lib/components/dashboard/types.ts +35 -0
  73. package/src/lib/index.ts +122 -0
  74. package/src/lib/log-console/LogCache.svelte.ts +93 -0
  75. package/src/lib/log-console/LogFetcher.svelte.ts +179 -0
  76. package/src/lib/log-console/types.ts +24 -0
  77. package/src/lib/theme-tokens.css +235 -0
  78. package/src/lib/theme.css +276 -0
  79. package/src/lib/utils/error.ts +18 -0
  80. package/src/lib/utils/format.ts +76 -0
  81. package/src/lib/utils/id.ts +6 -0
  82. package/src/lib/utils/toast.svelte.ts +87 -0
  83. package/src/lib/utils/toast.ts +60 -0
  84. package/src/routes/+layout.svelte +10 -0
  85. package/src/routes/+page.svelte +5 -0
  86. package/src/routes/layout.css +3 -0
  87. package/src/stories/Alert.stories.svelte +64 -0
  88. package/src/stories/Avatar.stories.svelte +76 -0
  89. package/src/stories/Badge.stories.svelte +76 -0
  90. package/src/stories/Breadcrumb.stories.svelte +64 -0
  91. package/src/stories/Button.stories.svelte +101 -0
  92. package/src/stories/Card.stories.svelte +106 -0
  93. package/src/stories/Checkbox.stories.svelte +77 -0
  94. package/src/stories/DataGrid.stories.svelte +130 -0
  95. package/src/stories/Dropdown.stories.svelte +81 -0
  96. package/src/stories/EmptyState.stories.svelte +74 -0
  97. package/src/stories/Input.stories.svelte +88 -0
  98. package/src/stories/Logo.stories.svelte +82 -0
  99. package/src/stories/Modal.stories.svelte +101 -0
  100. package/src/stories/Progress.stories.svelte +65 -0
  101. package/src/stories/Select.stories.svelte +158 -0
  102. package/src/stories/Tabs.stories.svelte +103 -0
  103. package/src/stories/Textarea.stories.svelte +45 -0
  104. package/src/stories/Toggle.stories.svelte +74 -0
  105. package/src/stories/Tooltip.stories.svelte +77 -0
  106. package/src/stories/Welcome.mdx +241 -0
  107. package/src/stories/assets/runwisp_c.svg +16 -0
  108. package/src/svelte-shims.d.ts +18 -0
@@ -0,0 +1,45 @@
1
+ <!-- SPDX-FileCopyrightText: PoppyCake, s.r.o. -->
2
+ <!-- SPDX-License-Identifier: Apache-2.0 -->
3
+
4
+ <script module>
5
+ import { defineMeta } from "@storybook/addon-svelte-csf";
6
+ import Textarea from "$lib/components/Textarea.svelte";
7
+
8
+ const { Story } = defineMeta({
9
+ title: "Forms/Textarea",
10
+ component: Textarea,
11
+ tags: ["autodocs"],
12
+ });
13
+ </script>
14
+
15
+ <Story name="Default" args={{ placeholder: "Enter description..." }} />
16
+
17
+ <Story
18
+ name="With Label"
19
+ args={{ label: "Task Description", placeholder: "Describe what this task does...", rows: 4 }}
20
+ />
21
+
22
+ <Story
23
+ name="With Hint"
24
+ args={{
25
+ label: "Script Content",
26
+ placeholder: "Enter your script here...",
27
+ hint: "Enter the shell script to execute.",
28
+ rows: 6,
29
+ }}
30
+ />
31
+
32
+ <Story
33
+ name="With Error"
34
+ args={{ label: "Configuration", error: "Invalid syntax on line 1", rows: 4 }}
35
+ />
36
+
37
+ <Story
38
+ name="Disabled"
39
+ args={{
40
+ label: "Read-only logs",
41
+ value: "Task completed successfully",
42
+ disabled: true,
43
+ rows: 4,
44
+ }}
45
+ />
@@ -0,0 +1,74 @@
1
+ <!-- SPDX-FileCopyrightText: PoppyCake, s.r.o. -->
2
+ <!-- SPDX-License-Identifier: Apache-2.0 -->
3
+
4
+ <script module>
5
+ import { defineMeta } from "@storybook/addon-svelte-csf";
6
+ import Toggle from "$lib/components/Toggle.svelte";
7
+
8
+ const { Story } = defineMeta({
9
+ title: "Forms/Toggle",
10
+ component: Toggle,
11
+ tags: ["autodocs"],
12
+ argTypes: {
13
+ size: {
14
+ control: "select",
15
+ options: ["sm", "md", "lg"],
16
+ },
17
+ },
18
+ });
19
+ </script>
20
+
21
+ <Story name="Default" />
22
+
23
+ <Story name="With Label" args={{ label: "Enable scheduling" }} />
24
+
25
+ <Story
26
+ name="With Description"
27
+ args={{
28
+ label: "Auto-scaling",
29
+ description: "Automatically scale workers based on queue depth",
30
+ }}
31
+ />
32
+
33
+ <Story name="Checked" args={{ label: "Active", checked: true }} />
34
+
35
+ <Story name="Sizes" asChild>
36
+ <div class="space-y-4">
37
+ <Toggle size="sm" label="Small toggle" />
38
+ <Toggle size="md" label="Medium toggle (default)" />
39
+ <Toggle size="lg" label="Large toggle" />
40
+ </div>
41
+ </Story>
42
+
43
+ <Story name="Disabled" asChild>
44
+ <div class="space-y-4">
45
+ <Toggle label="Disabled off" disabled />
46
+ <Toggle label="Disabled on" checked disabled />
47
+ </div>
48
+ </Story>
49
+
50
+ <Story name="Settings Panel" asChild>
51
+ <div class="max-w-md space-y-4 rounded-xl border border-mist-200 bg-white p-4">
52
+ <h3 class="font-semibold text-mist-900">Task Settings</h3>
53
+ <div class="space-y-4">
54
+ <Toggle
55
+ label="Enable task"
56
+ description="When disabled, the task will not run on schedule"
57
+ checked
58
+ />
59
+ <Toggle
60
+ label="Auto-retry"
61
+ description="Automatically retry failed executions up to 3 times"
62
+ checked
63
+ />
64
+ <Toggle
65
+ label="Concurrent execution"
66
+ description="Allow multiple instances to run simultaneously"
67
+ />
68
+ <Toggle
69
+ label="Debug logging"
70
+ description="Enable verbose logging for troubleshooting"
71
+ />
72
+ </div>
73
+ </div>
74
+ </Story>
@@ -0,0 +1,77 @@
1
+ <!-- SPDX-FileCopyrightText: PoppyCake, s.r.o. -->
2
+ <!-- SPDX-License-Identifier: Apache-2.0 -->
3
+
4
+ <script module>
5
+ import { defineMeta } from "@storybook/addon-svelte-csf";
6
+ import Tooltip from "$lib/components/Tooltip.svelte";
7
+ import Button from "$lib/components/Button.svelte";
8
+ import { Info, CircleQuestionMark, Settings } from "@lucide/svelte";
9
+
10
+ const { Story } = defineMeta({
11
+ title: "Core/Tooltip",
12
+ component: Tooltip,
13
+ tags: ["autodocs"],
14
+ argTypes: {
15
+ position: {
16
+ control: "select",
17
+ options: ["top", "bottom", "left", "right"],
18
+ },
19
+ },
20
+ });
21
+ </script>
22
+
23
+ <Story name="Top (Default)" asChild>
24
+ <div class="flex justify-center py-8">
25
+ <Tooltip content="This is a tooltip">
26
+ <Button variant="secondary">Hover me</Button>
27
+ </Tooltip>
28
+ </div>
29
+ </Story>
30
+
31
+ <Story name="Positions" asChild>
32
+ <div class="flex items-center justify-center gap-8 py-12">
33
+ <Tooltip content="Top tooltip" position="top">
34
+ <Button variant="secondary">Top</Button>
35
+ </Tooltip>
36
+ <Tooltip content="Bottom tooltip" position="bottom">
37
+ <Button variant="secondary">Bottom</Button>
38
+ </Tooltip>
39
+ <Tooltip content="Left tooltip" position="left">
40
+ <Button variant="secondary">Left</Button>
41
+ </Tooltip>
42
+ <Tooltip content="Right tooltip" position="right">
43
+ <Button variant="secondary">Right</Button>
44
+ </Tooltip>
45
+ </div>
46
+ </Story>
47
+
48
+ <Story name="On Icons" asChild>
49
+ <div class="flex items-center justify-center gap-6 py-8">
50
+ <Tooltip content="More information">
51
+ <button class="rounded-lg p-2 text-mist-500 hover:bg-mist-100">
52
+ <Info size={20} />
53
+ </button>
54
+ </Tooltip>
55
+ <Tooltip content="Get help">
56
+ <button class="rounded-lg p-2 text-mist-500 hover:bg-mist-100">
57
+ <CircleQuestionMark size={20} />
58
+ </button>
59
+ </Tooltip>
60
+ <Tooltip content="Settings">
61
+ <button class="rounded-lg p-2 text-mist-500 hover:bg-mist-100">
62
+ <Settings size={20} />
63
+ </button>
64
+ </Tooltip>
65
+ </div>
66
+ </Story>
67
+
68
+ <Story name="Usage Example" asChild>
69
+ <div class="flex items-center gap-2 py-8">
70
+ <span class="text-sm text-mist-700">Cron Expression</span>
71
+ <Tooltip content="Use standard cron syntax: minute hour day month weekday">
72
+ <button class="text-mist-400 hover:text-mist-600">
73
+ <CircleQuestionMark size={16} />
74
+ </button>
75
+ </Tooltip>
76
+ </div>
77
+ </Story>
@@ -0,0 +1,241 @@
1
+ import { Meta } from "@storybook/addon-docs/blocks";
2
+ import Logo from "../../static/runwisp_c.svg";
3
+
4
+ <Meta title="Welcome" />
5
+
6
+ <style>
7
+ {`
8
+ .rw-container {
9
+ font-family: 'TASA Orbiter', system-ui, -apple-system, sans-serif;
10
+ max-width: 800px;
11
+ margin: 0 auto;
12
+ }
13
+
14
+ .rw-hero {
15
+ text-align: center;
16
+ padding: 3rem 0;
17
+ margin-bottom: 2rem;
18
+ background: linear-gradient(135deg, oklch(0.97 0.02 280), oklch(0.94 0.04 280));
19
+ border-radius: 1rem;
20
+ }
21
+
22
+ .rw-logo {
23
+ width: 128px;
24
+ height: 128px;
25
+ margin: 0 auto 1.5rem;
26
+ border-radius: 1rem;
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ }
31
+
32
+ .rw-title {
33
+ font-size: 2.5rem;
34
+ font-weight: 700;
35
+ margin: 0 0 0.5rem;
36
+ background: linear-gradient(135deg, oklch(0.50 0.18 268), oklch(0.50 0.12 172));
37
+ -webkit-background-clip: text;
38
+ -webkit-text-fill-color: transparent;
39
+ background-clip: text;
40
+ }
41
+
42
+ .rw-subtitle {
43
+ font-size: 1.125rem;
44
+ color: oklch(0.55 0.012 280);
45
+ margin: 0;
46
+ }
47
+
48
+ .rw-section {
49
+ margin-bottom: 2rem;
50
+ }
51
+
52
+ .rw-section h2 {
53
+ font-size: 1.5rem;
54
+ font-weight: 600;
55
+ color: oklch(0.18 0.012 280);
56
+ margin: 0 0 1rem;
57
+ padding-bottom: 0.5rem;
58
+ border-bottom: 2px solid oklch(0.92 0.010 280);
59
+ }
60
+
61
+ .rw-section p {
62
+ color: oklch(0.45 0.012 280);
63
+ line-height: 1.7;
64
+ }
65
+
66
+ .rw-grid {
67
+ display: grid;
68
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
69
+ gap: 1rem;
70
+ margin-top: 1rem;
71
+ }
72
+
73
+ .rw-card {
74
+ padding: 1.25rem;
75
+ background: white;
76
+ border: 1px solid oklch(0.92 0.010 280);
77
+ border-radius: 0.75rem;
78
+ }
79
+
80
+ .rw-card h3 {
81
+ font-size: 1rem;
82
+ font-weight: 600;
83
+ color: oklch(0.25 0.012 280);
84
+ margin: 0 0 0.5rem;
85
+ }
86
+
87
+ .rw-card p {
88
+ font-size: 0.875rem;
89
+ color: oklch(0.55 0.012 280);
90
+ margin: 0;
91
+ }
92
+
93
+ .rw-colors {
94
+ display: flex;
95
+ flex-wrap: wrap;
96
+ gap: 0.5rem;
97
+ margin-top: 1rem;
98
+ }
99
+
100
+ .rw-color {
101
+ width: 48px;
102
+ height: 48px;
103
+ border-radius: 0.5rem;
104
+ border: 1px solid oklch(0.92 0.010 280);
105
+ }
106
+
107
+ .rw-footer {
108
+ margin-top: 3rem;
109
+ padding-top: 1.5rem;
110
+ border-top: 1px solid oklch(0.92 0.010 280);
111
+ text-align: center;
112
+ font-size: 0.875rem;
113
+ color: oklch(0.55 0.012 280);
114
+ }
115
+ `}
116
+ </style>
117
+
118
+ <div className="rw-container">
119
+ <div className="rw-hero">
120
+ <div className="rw-logo">
121
+ <img src={Logo} alt="RunWisp Logo" />
122
+ </div>
123
+ <h1 className="rw-title">RunWisp UI Components</h1>
124
+ <p className="rw-subtitle">Shared Svelte 5 components for dashboards, operators, and admin tooling</p>
125
+ </div>
126
+
127
+ <div className="rw-section">
128
+ <h2>🌟 Overview</h2>
129
+ <p>
130
+ `@runwisp/ui` is the shared component package used by the RunWisp dashboard and related
131
+ interfaces. It bundles the common primitives, data-display components, and theme tokens that
132
+ keep the product visually consistent across apps.
133
+ </p>
134
+ </div>
135
+
136
+ <div className="rw-section">
137
+ <h2>🎨 Color Palette</h2>
138
+ <p>Our color system features three main palettes:</p>
139
+
140
+ <h3 style={{ marginTop: '1rem', marginBottom: '0.5rem', fontSize: '1rem', fontWeight: 600, color: 'oklch(0.25 0.012 280)' }}>Wisp (Primary)</h3>
141
+ <div className="rw-colors">
142
+ <div className="rw-color" style={{ background: 'oklch(0.97 0.02 280)' }} title="wisp-50" />
143
+ <div className="rw-color" style={{ background: 'oklch(0.88 0.08 280)' }} title="wisp-200" />
144
+ <div className="rw-color" style={{ background: 'oklch(0.68 0.16 275)' }} title="wisp-400" />
145
+ <div className="rw-color" style={{ background: 'oklch(0.58 0.18 270)' }} title="wisp-500" />
146
+ <div className="rw-color" style={{ background: 'oklch(0.50 0.18 268)' }} title="wisp-600" />
147
+ <div className="rw-color" style={{ background: 'oklch(0.35 0.12 268)' }} title="wisp-800" />
148
+ </div>
149
+
150
+ <h3 style={{ marginTop: '1rem', marginBottom: '0.5rem', fontSize: '1rem', fontWeight: 600, color: 'oklch(0.25 0.012 280)' }}>Aurora (Accent)</h3>
151
+ <div className="rw-colors">
152
+ <div className="rw-color" style={{ background: 'oklch(0.97 0.02 180)' }} title="aurora-50" />
153
+ <div className="rw-color" style={{ background: 'oklch(0.88 0.10 178)' }} title="aurora-200" />
154
+ <div className="rw-color" style={{ background: 'oklch(0.68 0.16 174)' }} title="aurora-400" />
155
+ <div className="rw-color" style={{ background: 'oklch(0.58 0.14 172)' }} title="aurora-500" />
156
+ <div className="rw-color" style={{ background: 'oklch(0.42 0.10 172)' }} title="aurora-700" />
157
+ </div>
158
+
159
+ <h3 style={{ marginTop: '1rem', marginBottom: '0.5rem', fontSize: '1rem', fontWeight: 600, color: 'oklch(0.25 0.012 280)' }}>Mist (Neutral)</h3>
160
+ <div className="rw-colors">
161
+ <div className="rw-color" style={{ background: 'oklch(0.98 0.005 280)' }} title="mist-50" />
162
+ <div className="rw-color" style={{ background: 'oklch(0.92 0.010 280)' }} title="mist-200" />
163
+ <div className="rw-color" style={{ background: 'oklch(0.70 0.012 280)' }} title="mist-400" />
164
+ <div className="rw-color" style={{ background: 'oklch(0.55 0.012 280)' }} title="mist-500" />
165
+ <div className="rw-color" style={{ background: 'oklch(0.35 0.012 280)' }} title="mist-700" />
166
+ <div className="rw-color" style={{ background: 'oklch(0.18 0.012 280)' }} title="mist-900" />
167
+ </div>
168
+
169
+ </div>
170
+
171
+ <div className="rw-section">
172
+ <h2>📦 Components</h2>
173
+ <div className="rw-grid">
174
+ <div className="rw-card">
175
+ <h3>Core</h3>
176
+ <p>Button, Badge, Card, Alert, Modal, Tabs, Tooltip, Progress, Dropdown</p>
177
+ </div>
178
+ <div className="rw-card">
179
+ <h3>Forms</h3>
180
+ <p>Input, Select, Checkbox, Toggle, Textarea</p>
181
+ </div>
182
+ <div className="rw-card">
183
+ <h3>Layout</h3>
184
+ <p>PageContainer and shared layout primitives</p>
185
+ </div>
186
+ <div className="rw-card">
187
+ <h3>Data</h3>
188
+ <p>DataGrid, Avatar, StatusIndicator, StatCard, EmptyState</p>
189
+ </div>
190
+ <div className="rw-card">
191
+ <h3>Navigation</h3>
192
+ <p>Breadcrumb, Tabs</p>
193
+ </div>
194
+ </div>
195
+ </div>
196
+
197
+ <div className="rw-section">
198
+ <h2>🚀 Getting Started</h2>
199
+ <p>Import components from `@runwisp/ui` and include the shared theme stylesheet:</p>
200
+ <pre
201
+ style={{
202
+ background: "oklch(0.18 0.012 280)",
203
+ color: "oklch(0.92 0.010 280)",
204
+ padding: "1rem",
205
+ borderRadius: "0.5rem",
206
+ fontSize: "0.875rem",
207
+ marginTop: "1rem",
208
+ overflow: "auto",
209
+ }}
210
+ >
211
+ {`import { Button, Card, DataGrid } from "@runwisp/ui";
212
+ import "@runwisp/ui/theme.css";`}
213
+ </pre>
214
+ </div>
215
+
216
+ <div className="rw-section">
217
+ <h2>✨ Design Principles</h2>
218
+ <div className="rw-grid">
219
+ <div className="rw-card">
220
+ <h3>Ethereal</h3>
221
+ <p>Soft gradients, subtle shadows, and delicate color transitions</p>
222
+ </div>
223
+ <div className="rw-card">
224
+ <h3>Professional</h3>
225
+ <p>Clean layouts, consistent spacing, readable typography</p>
226
+ </div>
227
+ <div className="rw-card">
228
+ <h3>Accessible</h3>
229
+ <p>WCAG compliant colors, keyboard navigation, screen reader support</p>
230
+ </div>
231
+ <div className="rw-card">
232
+ <h3>Modern</h3>
233
+ <p>Contemporary patterns that stay durable as the product evolves</p>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+ <div className="rw-footer">
239
+ <p>© {new Date().getFullYear()} PoppyCake s.r.o. • RunWisp Design System</p>
240
+ </div>
241
+ </div>
@@ -0,0 +1,16 @@
1
+ <svg width="512" height="512" version="1.1" viewBox="0 0 5120 5120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <defs>
3
+ <linearGradient id="b">
4
+ <stop stop-color="#526ee3" offset="0"/>
5
+ <stop stop-color="#009371" offset="1"/>
6
+ </linearGradient>
7
+ <radialGradient id="a" cx="2375.3" cy="3240.7" r="1333.9" gradientTransform="matrix(1.01 -.012494 .026846 2.1701 -110.74 -3341.2)" gradientUnits="userSpaceOnUse" xlink:href="#b"/>
8
+ </defs>
9
+ <g id="c" fill="currentColor">
10
+ <g transform="matrix(1.1828 0 0 1.1828 -308.66 -422.68)" fill="url(#a)" stroke-width=".69118">
11
+ <path id="d" d="m1337.7 3078.1c-148.18-155.91-250.14-363.35-245.9-581.62-4.9405-143.31 33.544-285.11 105.17-408.87 53.884-96.655 144.6-165.07 216.94-247.17 183.01-186.28 363.71-375.11 552.07-555.94 29.831 190.66 135.62 362.63 276.82 491.77 29.939 18.759-21.226 37.649-30.616 56.472-195.88 199.8-397.96 393.69-588.19 598.91-152.46 182.9-237.05 424.04-218.75 662.75 5.6183 42.874 1.3956 73.556-30.679 24.283-12.387-13.436-24.662-26.974-36.862-40.58z"/>
12
+ <path id="e" d="m2283.9 4565.5c51.838-97.456 67.044-158.97 68.426-264.03 0-96.074-14.515-161.74-55.985-239.84-34.559-66.353-81.559-117.5-336.6-371.16-237.76-236.38-268.18-273.01-310.34-371.16-33.868-79.485-46.309-134.09-51.147-224.63-6.9117-134.09 20.735-260.57 84.324-386.37 108.51-213.57 334.53-427.84 532.9-504.56 138.24-53.221 255.74-54.603 351.81-4.8382l27.647 14.515-26.265 5.5294c-76.721 16.588-123.72 80.176-111.97 152.06 5.5294 33.176 40.088 79.485 72.574 96.074 69.809 37.324 169.34-8.9853 184.54-85.706 5.5294-26.265 13.132-16.588 25.574 33.176 12.441 45.618 13.824 123.72 4.1471 165.88-3.4559 15.206-4.8383 28.338-4.1471 29.721 1.3824 0.6912 17.279-13.824 35.941-33.176 116.12-120.96 142.38-281.31 70.5-428.53-18.662-39.397-55.294-79.485-305.5-331.76-246.75-249.51-288.22-293.75-315.87-342.13-100.22-172.79-121.65-355.26-63.588-539.12 46.309-145.84 134.09-274.4 273.71-398.81 58.75-51.838 163.12-129.94 174.18-129.94 2.0736 0-2.0735 8.9853-10.368 20.735-27.647 38.706-69.118 136.16-83.632 197.68-31.103 127.18-16.588 248.13 43.544 364.94 26.956 52.53 46.309 73.265 296.51 325.54 283.38 285.46 311.03 318.63 351.12 419.54 40.088 101.6 45.618 130.63 44.926 257.81 0 106.44-1.3824 124.41-18.662 186.62-24.191 89.162-87.779 217.72-147.91 297.21-94 125.79-230.85 245.37-347.66 304.12-95.382 47.691-163.12 66.353-259.19 70.5-76.721 3.4559-87.088 2.0735-137.54-14.515-64.971-22.118-98.147-43.544-151.37-99.529-66.353-69.809-92.618-145.84-85.706-248.82 2.0735-31.794 0.6911-56.676-2.0736-55.294-13.824 5.5294-71.191 80.868-93.309 123.72-59.441 113.35-56.676 246.06 7.603 358.03 11.059 17.971 135.47 149.99 293.06 308.26 150.68 152.06 283.38 290.29 295.13 307.57 86.397 127.87 129.25 300.66 112.66 449.96-10.368 92.618-29.721 157.59-72.574 244.68-66.353 134.78-161.74 243.29-314.49 357.34-40.088 29.721-74.647 53.912-77.412 53.912s11.75-31.794 32.485-71.191z"/>
13
+ <path id="f" d="m2881.7 3745.7c-31.13-173.6-122.18-331.84-246.22-455.86-14.352-19.305-55.137-38.918-18.602-57.632 207.7-210.04 420.06-415.65 622.16-631.1 146.07-182.43 225.82-418.38 206.48-652.47-4.5024-33.687-4.181-60.898 26.761-25.766 148.94 150.92 277.41 342.97 283.4 561.68 11.697 142.68-4.4537 290.19-73.137 417.9-34.008 81.467-90.87 148.51-154.3 208.53-213.07 217.42-425.06 436.12-643.78 647.84l-1.9007-3.7151z"/>
14
+ </g>
15
+ </g>
16
+ </svg>
@@ -0,0 +1,18 @@
1
+ // SPDX-FileCopyrightText: PoppyCake, s.r.o.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ declare module "*.svelte" {
5
+ import type { Component } from "svelte";
6
+ const component: Component;
7
+ export default component;
8
+ }
9
+
10
+ declare module "*.css?inline" {
11
+ const css: string;
12
+ export default css;
13
+ }
14
+
15
+ declare module "*.svg?raw" {
16
+ const svg: string;
17
+ export default svg;
18
+ }