@pollinations/ui 0.1.0-alpha.1 → 0.1.0-alpha.4

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 (88) hide show
  1. package/README.md +148 -36
  2. package/dist/Button-ByKwRtdw.d.cts +29 -0
  3. package/dist/Button-ByKwRtdw.d.ts +29 -0
  4. package/dist/Chip-v-ADv6cz.d.cts +18 -0
  5. package/dist/Chip-v-ADv6cz.d.ts +18 -0
  6. package/dist/Dialog-D3Nqt8cE.d.cts +66 -0
  7. package/dist/Dialog-D3Nqt8cE.d.ts +66 -0
  8. package/dist/app-user-menu/sdk.cjs +698 -242
  9. package/dist/app-user-menu/sdk.cjs.map +1 -1
  10. package/dist/app-user-menu/sdk.d.cts +22 -7
  11. package/dist/app-user-menu/sdk.d.ts +22 -7
  12. package/dist/app-user-menu/sdk.js +703 -240
  13. package/dist/app-user-menu/sdk.js.map +1 -1
  14. package/dist/app.css +12 -122
  15. package/dist/auth/index.cjs +1365 -85
  16. package/dist/auth/index.cjs.map +1 -1
  17. package/dist/auth/index.d.cts +91 -6
  18. package/dist/auth/index.d.ts +91 -6
  19. package/dist/auth/index.js +1362 -84
  20. package/dist/auth/index.js.map +1 -1
  21. package/dist/auth/sdk.cjs +244 -0
  22. package/dist/auth/sdk.cjs.map +1 -0
  23. package/dist/auth/sdk.d.cts +40 -0
  24. package/dist/auth/sdk.d.ts +40 -0
  25. package/dist/auth/sdk.js +213 -0
  26. package/dist/auth/sdk.js.map +1 -0
  27. package/dist/brand/lockup-horizontal-black.png +0 -0
  28. package/dist/brand/lockup-horizontal-black.svg +4 -0
  29. package/dist/brand/lockup-horizontal-white.png +0 -0
  30. package/dist/brand/lockup-horizontal-white.svg +4 -0
  31. package/dist/brand/lockup-horizontal.svg +4 -0
  32. package/dist/brand/lockup-stacked-black.png +0 -0
  33. package/dist/brand/lockup-stacked-black.svg +4 -0
  34. package/dist/brand/lockup-stacked-white.png +0 -0
  35. package/dist/brand/lockup-stacked-white.svg +4 -0
  36. package/dist/brand/lockup-stacked.svg +4 -0
  37. package/dist/brand/mark-black.png +0 -0
  38. package/dist/brand/mark-black.svg +1 -0
  39. package/dist/brand/mark-white.png +0 -0
  40. package/dist/brand/mark-white.svg +1 -0
  41. package/dist/brand/mark.svg +1 -0
  42. package/dist/brand/polli/polli-lockup-horizontal-black.png +0 -0
  43. package/dist/brand/polli/polli-lockup-horizontal-white.png +0 -0
  44. package/dist/brand/polli/polli-lockup-stacked-black.png +0 -0
  45. package/dist/brand/polli/polli-lockup-stacked-white.png +0 -0
  46. package/dist/brand/polli/polli.png +0 -0
  47. package/dist/brand/wordmark-black.png +0 -0
  48. package/dist/brand/wordmark-black.svg +1 -0
  49. package/dist/brand/wordmark-white.png +0 -0
  50. package/dist/brand/wordmark-white.svg +1 -0
  51. package/dist/brand/wordmark.svg +1 -0
  52. package/dist/fonts/geist-pixel-square.woff2 +0 -0
  53. package/dist/gen/index.cjs +427 -217
  54. package/dist/gen/index.cjs.map +1 -1
  55. package/dist/gen/index.d.cts +68 -19
  56. package/dist/gen/index.d.ts +68 -19
  57. package/dist/gen/index.js +421 -215
  58. package/dist/gen/index.js.map +1 -1
  59. package/dist/index.browser.min.js +2 -0
  60. package/dist/index.browser.min.js.map +1 -0
  61. package/dist/index.cjs +3711 -1590
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +548 -178
  64. package/dist/index.d.ts +548 -178
  65. package/dist/index.js +3713 -1655
  66. package/dist/index.js.map +1 -1
  67. package/dist/licenses/Geist-OFL.txt +93 -0
  68. package/dist/markdown.cjs +826 -0
  69. package/dist/markdown.cjs.map +1 -0
  70. package/dist/markdown.d.cts +16 -0
  71. package/dist/markdown.d.ts +16 -0
  72. package/dist/markdown.js +797 -0
  73. package/dist/markdown.js.map +1 -0
  74. package/dist/styles.css +1 -1
  75. package/dist/theme.css +87 -0
  76. package/dist/wallet/index.cjs +291 -64
  77. package/dist/wallet/index.cjs.map +1 -1
  78. package/dist/wallet/index.d.cts +30 -7
  79. package/dist/wallet/index.d.ts +30 -7
  80. package/dist/wallet/index.js +290 -64
  81. package/dist/wallet/index.js.map +1 -1
  82. package/package.json +106 -89
  83. package/dist/Chip-CQCq34kS.d.cts +0 -20
  84. package/dist/Chip-Cj4xG7Te.d.ts +0 -20
  85. package/dist/assets/logo-wordmark.svg +0 -1
  86. package/dist/assets/logo.svg +0 -4
  87. package/dist/theme-jRPPBmld.d.cts +0 -20
  88. package/dist/theme-jRPPBmld.d.ts +0 -20
@@ -1,5 +1,15 @@
1
1
  // src/modules/app-user-menu/AppUserMenu.tsx
2
- import { useAuthActions as useAuthActions2 } from "@pollinations/sdk/react";
2
+ import {
3
+ useAccountBalance,
4
+ useAccountKey,
5
+ useAccountProfile,
6
+ useAuthActions as useAuthActions2,
7
+ useAuthState as useAuthState2
8
+ } from "@pollinations/sdk/react";
9
+ import { useEffect } from "react";
10
+
11
+ // src/compositions/AccountIdentity.tsx
12
+ import { useId as useId2 } from "react";
3
13
 
4
14
  // src/lib/cn.ts
5
15
  import { clsx } from "clsx";
@@ -40,18 +50,21 @@ var ChevronIcon = ({ expanded, className }) => /* @__PURE__ */ jsx(
40
50
  // src/primitives/Dropdown.tsx
41
51
  import { Popover } from "@ark-ui/react/popover";
42
52
  import { Portal } from "@ark-ui/react/portal";
43
- import { useState } from "react";
53
+ import { useId, useState } from "react";
44
54
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
45
- var DEFAULT_PANEL = "polli:rounded-lg polli:border polli:border-theme-border polli:bg-theme-bg-pale polli:shadow-lg";
55
+ var DEFAULT_PANEL = "polli:rounded-lg polli:bg-surface-menu polli:shadow-lg";
46
56
  var Dropdown = ({
47
- theme,
48
57
  trigger,
49
58
  children,
50
59
  align = "start",
60
+ side = "bottom",
51
61
  open: openProp,
62
+ portalled = true,
52
63
  onOpenChange,
53
- className
64
+ className,
65
+ panelStyle
54
66
  }) => {
67
+ const triggerId = useId();
55
68
  const [internalOpen, setInternalOpen] = useState(false);
56
69
  const isControlled = openProp !== void 0;
57
70
  const open = isControlled ? openProp : internalOpen;
@@ -62,19 +75,23 @@ var Dropdown = ({
62
75
  return /* @__PURE__ */ jsxs(
63
76
  Popover.Root,
64
77
  {
78
+ ids: { trigger: triggerId },
65
79
  open,
80
+ portalled,
66
81
  onOpenChange: (details) => setOpen(details.open),
67
82
  positioning: {
68
- placement: align === "end" ? "bottom-end" : "bottom-start"
83
+ placement: `${side}-${align}`,
84
+ strategy: portalled ? "absolute" : "fixed"
69
85
  },
70
86
  children: [
71
87
  /* @__PURE__ */ jsx2(Popover.Trigger, { asChild: true, children: trigger(open) }),
72
- /* @__PURE__ */ jsx2(Portal, { children: /* @__PURE__ */ jsx2(Popover.Positioner, { children: /* @__PURE__ */ jsx2(
88
+ /* @__PURE__ */ jsx2(Portal, { disabled: !portalled, children: /* @__PURE__ */ jsx2(Popover.Positioner, { children: /* @__PURE__ */ jsx2(
73
89
  Popover.Content,
74
90
  {
75
- "data-theme": theme,
91
+ "aria-labelledby": triggerId,
92
+ style: panelStyle,
76
93
  className: cn(
77
- "polli:z-50 polli:overflow-hidden polli:focus:outline-none",
94
+ "polli:z-[120] polli:overflow-hidden polli:focus:outline-none",
78
95
  DEFAULT_PANEL,
79
96
  className
80
97
  ),
@@ -86,8 +103,236 @@ var Dropdown = ({
86
103
  );
87
104
  };
88
105
 
106
+ // src/primitives/icons/index.tsx
107
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
108
+ var strokeProps = {
109
+ fill: "none",
110
+ stroke: "currentColor",
111
+ strokeWidth: 2,
112
+ strokeLinecap: "round",
113
+ strokeLinejoin: "round"
114
+ };
115
+ function ExternalLinkIcon(props) {
116
+ return /* @__PURE__ */ jsx3("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: /* @__PURE__ */ jsx3("path", { d: "M7 17 17 7M9 7h8v8" }) });
117
+ }
118
+ function WalletIcon(props) {
119
+ return /* @__PURE__ */ jsxs2("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: [
120
+ /* @__PURE__ */ jsx3("path", { d: "M3 7a2 2 0 0 1 2-2h13a2 2 0 0 1 2 2v2H5a2 2 0 0 0-2 2V7Z" }),
121
+ /* @__PURE__ */ jsx3("path", { d: "M3 11a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-6Z" }),
122
+ /* @__PURE__ */ jsx3("circle", { cx: "17", cy: "14", r: "1.25", fill: "currentColor" })
123
+ ] });
124
+ }
125
+ function PowerIcon(props) {
126
+ return /* @__PURE__ */ jsxs2("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: [
127
+ /* @__PURE__ */ jsx3("path", { d: "M12 2v10" }),
128
+ /* @__PURE__ */ jsx3("path", { d: "M18.4 6.6a9 9 0 1 1-12.77.04" })
129
+ ] });
130
+ }
131
+ function CardIcon(props) {
132
+ return /* @__PURE__ */ jsxs2("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: [
133
+ /* @__PURE__ */ jsx3("rect", { x: "2", y: "5", width: "20", height: "14", rx: "2" }),
134
+ /* @__PURE__ */ jsx3("path", { d: "M2 10h20" })
135
+ ] });
136
+ }
137
+ function SproutIcon(props) {
138
+ return /* @__PURE__ */ jsxs2("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: [
139
+ /* @__PURE__ */ jsx3("path", { d: "M7 20h10" }),
140
+ /* @__PURE__ */ jsx3("path", { d: "M10 20c5.5-2.5.8-6.4 3-10" }),
141
+ /* @__PURE__ */ jsx3("path", { d: "M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z" }),
142
+ /* @__PURE__ */ jsx3("path", { d: "M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z" })
143
+ ] });
144
+ }
145
+ function KeyIcon(props) {
146
+ return /* @__PURE__ */ jsxs2("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", ...strokeProps, ...props, children: [
147
+ /* @__PURE__ */ jsx3("circle", { cx: "7.5", cy: "15.5", r: "5.5" }),
148
+ /* @__PURE__ */ jsx3("path", { d: "m21 2-9.6 9.6" }),
149
+ /* @__PURE__ */ jsx3("path", { d: "m15.5 7.5 3 3L22 7l-3-3" })
150
+ ] });
151
+ }
152
+
153
+ // src/compositions/AccountIdentity.tsx
154
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
155
+ function initials(name) {
156
+ const parts = name.trim().split(/\s+/).filter(Boolean);
157
+ if (parts.length === 0) return "?";
158
+ if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();
159
+ return `${parts[0][0] ?? ""}${parts.at(-1)?.[0] ?? ""}`.toUpperCase();
160
+ }
161
+ function AccountAvatar({
162
+ name,
163
+ avatarUrl,
164
+ secondaryContent,
165
+ dashboardHref,
166
+ inline = false
167
+ }) {
168
+ const size = inline ? "polli:h-6 polli:w-6" : secondaryContent != null ? "polli:h-11 polli:w-11" : "polli:h-8 polli:w-8";
169
+ const className = cn(
170
+ size,
171
+ inline && "polli:transition-transform polli:group-hover:scale-110 polli:group-hover:brightness-110 polli:motion-reduce:transition-none polli:motion-reduce:group-hover:scale-100"
172
+ );
173
+ const avatar = avatarUrl ? /* @__PURE__ */ jsx4(
174
+ "img",
175
+ {
176
+ src: avatarUrl,
177
+ alt: "",
178
+ className: cn(
179
+ className,
180
+ "polli:shrink-0 polli:rounded-full polli:object-cover"
181
+ )
182
+ }
183
+ ) : /* @__PURE__ */ jsx4(
184
+ "span",
185
+ {
186
+ role: "img",
187
+ "aria-label": `${name} avatar`,
188
+ className: cn(
189
+ className,
190
+ "polli:flex polli:shrink-0 polli:items-center polli:justify-center polli:rounded-full polli:bg-theme-bg-pale polli:text-xs polli:font-semibold polli:text-theme-text-strong"
191
+ ),
192
+ children: initials(name)
193
+ }
194
+ );
195
+ return dashboardHref ? /* @__PURE__ */ jsx4(
196
+ "a",
197
+ {
198
+ href: dashboardHref,
199
+ target: "_blank",
200
+ rel: "noopener noreferrer",
201
+ "aria-label": "Open dashboard",
202
+ title: "Open dashboard",
203
+ className: "polli:shrink-0 polli:rounded-full polli:cursor-pointer polli:transition-transform polli:hover:scale-105 polli:hover:brightness-110 polli:focus-visible:outline-2 polli:focus-visible:outline-offset-2 polli:focus-visible:outline-current polli:motion-reduce:transition-none polli:motion-reduce:hover:scale-100",
204
+ children: avatar
205
+ }
206
+ ) : avatar;
207
+ }
208
+ function AccountDetails({
209
+ name,
210
+ secondaryContent,
211
+ secondaryId
212
+ }) {
213
+ return /* @__PURE__ */ jsxs3("span", { className: "polli:flex polli:min-w-0 polli:flex-col polli:items-start polli:text-left", children: [
214
+ /* @__PURE__ */ jsx4(
215
+ "span",
216
+ {
217
+ title: name,
218
+ className: "polli:max-w-full polli:truncate polli:text-sm polli:font-medium polli:leading-5 polli:text-theme-text-strong",
219
+ children: name
220
+ }
221
+ ),
222
+ secondaryContent != null && /* @__PURE__ */ jsx4(
223
+ "span",
224
+ {
225
+ id: secondaryId,
226
+ className: "polli:inline-flex polli:min-h-5 polli:items-center polli:whitespace-nowrap polli:text-xs polli:leading-4 polli:text-theme-text-base",
227
+ children: secondaryContent
228
+ }
229
+ )
230
+ ] });
231
+ }
232
+ function AccountMenu({
233
+ name,
234
+ avatarUrl,
235
+ dashboardHref,
236
+ secondaryContent,
237
+ children,
238
+ className,
239
+ menuClassName,
240
+ side = "bottom",
241
+ menuLabel = `Account menu for ${name}`
242
+ }) {
243
+ const statusId = useId2();
244
+ const avatar = /* @__PURE__ */ jsx4(
245
+ AccountAvatar,
246
+ {
247
+ name,
248
+ avatarUrl,
249
+ dashboardHref,
250
+ secondaryContent
251
+ }
252
+ );
253
+ return /* @__PURE__ */ jsxs3(
254
+ "div",
255
+ {
256
+ "data-theme": "accent",
257
+ className: cn(
258
+ "polli:flex polli:min-w-0 polli:items-center polli:gap-2 polli:rounded-full polli:bg-theme-bg-active polli:p-1 polli:pr-3 polli:text-theme-text-strong polli:transition-colors polli:hover:bg-theme-bg-hover",
259
+ className
260
+ ),
261
+ children: [
262
+ dashboardHref && avatar,
263
+ /* @__PURE__ */ jsx4(
264
+ Dropdown,
265
+ {
266
+ align: "end",
267
+ side,
268
+ className: cn(
269
+ "polli:w-max polli:min-w-[var(--reference-width)] polli:p-1",
270
+ menuClassName
271
+ ),
272
+ trigger: (open) => /* @__PURE__ */ jsxs3(
273
+ "button",
274
+ {
275
+ type: "button",
276
+ "aria-label": menuLabel,
277
+ "aria-describedby": secondaryContent != null ? statusId : void 0,
278
+ className: "polli-control polli:flex polli:min-w-0 polli:flex-1 polli:items-center polli:gap-2 polli:self-stretch polli:rounded-full polli:text-theme-text-strong",
279
+ children: [
280
+ !dashboardHref && avatar,
281
+ /* @__PURE__ */ jsx4(
282
+ AccountDetails,
283
+ {
284
+ name,
285
+ secondaryContent,
286
+ secondaryId: statusId
287
+ }
288
+ ),
289
+ /* @__PURE__ */ jsx4(
290
+ ChevronIcon,
291
+ {
292
+ expanded: open,
293
+ className: "polli:ml-auto polli:h-4 polli:w-4 polli:text-theme-text-strong"
294
+ }
295
+ )
296
+ ]
297
+ }
298
+ ),
299
+ children
300
+ }
301
+ )
302
+ ]
303
+ }
304
+ );
305
+ }
306
+
307
+ // src/brand/lockup-horizontal.svg
308
+ var lockup_horizontal_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 858.891 105.6" fill="currentColor">%0A <g transform="translate(-13.81 -16.241) scale(0.921)"><path fill-rule="evenodd" d="M73.832 19.293a1893.685 1893.685 0 0 0-7.742 9.047c-1.93 2.273-3.274 3.898-4.266 5.156-.988 1.258-1.62 2.149-2.117 2.957-.5.805-.86 1.531-1.309 2.453-.14.285-.277.563-.402.813-.121.254-.238.48-.332.676a20.107 20.107 0 0 1-.34.652c-.008.008-.062 0-.156-.02s-.227-.047-.383-.09c-.16-.039-.351-.09-.558-.148-.207-.059-.43-.121-.668-.191-1.079-.32-1.895-.559-2.684-.743-.79-.18-1.55-.3-2.516-.382-.96-.082-2.129-.121-3.734-.145-1.602-.02-3.64-.023-6.348-.023H35.31l-2.485-.004H30.34v20.574l-.527.059-.524.058-1.055.117c-.59.067-1.203.157-1.84.274-.636.113-1.292.25-1.968.414-.676.16-1.371.348-2.086.555-.715.21-1.445.441-2.195.695-.47.16-1.024.36-1.594.574a64.38 64.38 0 0 0-1.684.649c-.523.207-.992.398-1.328.546-.336.149-.539.246-.539.274 0 .039.07.234.191.535.118.297.29.7.485 1.156.195.453.418.961.644 1.473.227.508.461 1.02.676 1.484a52.041 52.041 0 0 0 9.54 13.926 47.507 47.507 0 0 0 6.14 5.41c2.164 1.59 4.426 2.953 6.75 4.047a51.197 51.197 0 0 0 3.414 1.461c1.129.43 2.242.805 3.36 1.125 1.112.324 2.226.59 3.343.809a39.04 39.04 0 0 0 3.375.504c.84.085 1.781.136 2.777.156a51.632 51.632 0 0 0 6.203-.266 34.786 34.786 0 0 0 2.836-.394 59.177 59.177 0 0 1 2.633-.442c.149-.02.235-.023.246-.015.043.043-.02.195-.152.414a9.01 9.01 0 0 1-.582.812c-.242.313-.527.645-.813.965-.289.316-.582.617-.851.86-.57.519-1.168.968-1.809 1.355-.64.383-1.324.703-2.07.969-.746.261-1.555.464-2.441.617-.891.156-1.856.258-2.926.316-1.36.07-2.582.207-3.703.422-1.118.211-2.13.496-3.07.871-.938.375-1.801.84-2.618 1.403a15.82 15.82 0 0 0-2.351 2 14.205 14.205 0 0 0-1.489 1.765 13.256 13.256 0 0 0-1.148 1.945 15.518 15.518 0 0 0-.856 2.207 20.834 20.834 0 0 0-.59 2.543c-.058.348-.105.61-.156.817-.05.207-.105.36-.183.484a1.184 1.184 0 0 1-.325.332c-.144.106-.332.211-.578.356a9.157 9.157 0 0 0-2.543 2.183 8.797 8.797 0 0 0-1.52 2.813 8.33 8.33 0 0 0-.382 3.113 7.995 7.995 0 0 0 .852 3.098 7.95 7.95 0 0 0 1.574 2.117 9.294 9.294 0 0 0 2.168 1.566c.789.418 1.629.715 2.469.868.84.152 1.68.167 2.472.007a7.941 7.941 0 0 0 1.188-.336c.406-.144.82-.32 1.222-.515.399-.2.79-.418 1.149-.653.36-.234.691-.476.976-.73a6.93 6.93 0 0 0 1.473-1.86c.39-.71.68-1.492.855-2.308.176-.82.243-1.676.188-2.527a8.74 8.74 0 0 0-.531-2.516 5.919 5.919 0 0 0-.68-1.281c-.289-.43-.64-.856-1.031-1.258a10.34 10.34 0 0 0-1.262-1.11 8.299 8.299 0 0 0-1.379-.847c-.414-.2-.722-.352-.95-.492-.226-.137-.366-.27-.44-.43-.075-.16-.083-.352-.043-.613.039-.266.125-.598.242-1.043.226-.871.566-1.695 1.004-2.465a10.426 10.426 0 0 1 3.672-3.754c.77-.46 1.605-.836 2.492-1.102.152-.046.386-.093.675-.144a30.829 30.829 0 0 1 2.246-.273c.43-.043.876-.075 1.317-.102a41.754 41.754 0 0 0 2.773-.25 19.813 19.813 0 0 0 2.243-.406 13.283 13.283 0 0 0 1.918-.621c.609-.246 1.199-.536 1.804-.88a20.824 20.824 0 0 0 1.774-1.116c.539-.383 1.031-.786 1.511-1.227.48-.445.942-.934 1.415-1.488.468-.559.953-1.18 1.468-1.899l.309-.426.308-.43.313-.429.309-.426v19.633l-.399.262-.402.265-.797.532a11.66 11.66 0 0 0-1.567 1.21c-.44.41-.808.837-1.113 1.305-.305.465-.55.97-.746 1.535-.2.567-.351 1.192-.473 1.903a7.401 7.401 0 0 0 .024 2.574 8.502 8.502 0 0 0 2.441 4.543 7.787 7.787 0 0 0 2.157 1.496c.804.367 1.632.61 2.46.715.829.105 1.66.082 2.47-.07a7.963 7.963 0 0 0 2.343-.828 8.831 8.831 0 0 0 2.094-1.567c.406-.402.738-.789 1.011-1.18.27-.394.48-.796.641-1.234.156-.441.266-.918.336-1.473.07-.55.102-1.171.105-1.894 0-.524 0-.93-.011-1.266a6.504 6.504 0 0 0-.074-.836 3.967 3.967 0 0 0-.192-.683c-.09-.23-.207-.485-.355-.805a7.845 7.845 0 0 0-1.594-2.262 8.117 8.117 0 0 0-1.07-.879 9.342 9.342 0 0 0-1.254-.718l-.348-.164-.348-.16-.343-.165-.348-.164v-4.957l-.004-2.476v-2.48c0-1.36.004-2.657.012-3.833.008-1.176.02-2.23.035-3.11.016-.882.035-1.589.055-2.07.02-.48.043-.734.066-.707.02.028.074.102.156.208l.301.421c.121.168.258.364.406.575.145.207.305.433.461.664.38.543.735 1.027 1.09 1.468.352.438.703.832 1.063 1.2.363.367.742.707 1.148 1.039.406.328.844.652 1.332.98.777.528 1.5.965 2.223 1.328.718.364 1.437.657 2.203.89.765.235 1.582.411 2.496.544.914.137 1.93.23 3.094.3.433.024.867.055 1.289.087a40.742 40.742 0 0 1 2.148.215c.27.035.477.07.602.101.965.234 1.898.64 2.761 1.168a11.119 11.119 0 0 1 2.34 1.93 10.355 10.355 0 0 1 1.688 2.437c.43.867.707 1.781.805 2.695l.03.313.032.309.035.316.031.309-.27.14-.538.274-.274.136c-.828.426-1.558.922-2.183 1.493a7.954 7.954 0 0 0-1.54 1.91 7.731 7.731 0 0 0-.87 2.273 9.264 9.264 0 0 0-.172 2.594c.066.96.285 1.871.64 2.703a7.903 7.903 0 0 0 1.446 2.258 8.316 8.316 0 0 0 2.14 1.683c.817.45 1.727.782 2.715.98 1.309.255 2.617.126 3.836-.3a8.813 8.813 0 0 0 3.266-2.05 8.893 8.893 0 0 0 2.117-3.239c.453-1.21.613-2.527.387-3.848a9.06 9.06 0 0 0-1.504-3.644 9.344 9.344 0 0 0-1.301-1.477 8.97 8.97 0 0 0-1.61-1.16c-.18-.097-.347-.2-.507-.293-.16-.097-.305-.183-.434-.265-.125-.082-.23-.153-.312-.211a.573.573 0 0 1-.137-.121.813.813 0 0 1-.063-.184c-.027-.094-.058-.223-.097-.375a11.147 11.147 0 0 1-.11-.512c-.039-.187-.082-.39-.12-.594-.098-.5-.227-1.023-.383-1.554a19.7 19.7 0 0 0-.551-1.594c-.207-.527-.43-1.039-.668-1.512a12.868 12.868 0 0 0-.735-1.3 12.93 12.93 0 0 0-1.582-1.954 15.064 15.064 0 0 0-1.98-1.691 15.833 15.833 0 0 0-2.27-1.355 14.35 14.35 0 0 0-2.449-.934 9.33 9.33 0 0 0-.836-.188 25.72 25.72 0 0 0-1.094-.18 40.224 40.224 0 0 0-2.605-.269 51.614 51.614 0 0 1-1.281-.11 47.27 47.27 0 0 1-1.242-.128 37.65 37.65 0 0 1-1.067-.14 12.643 12.643 0 0 1-.746-.133 11.48 11.48 0 0 1-1.508-.458c-.5-.187-.996-.414-1.472-.668a12.371 12.371 0 0 1-2.606-1.847 16.117 16.117 0 0 1-1.676-1.836 5.604 5.604 0 0 1-.465-.707c-.097-.192-.125-.324-.074-.375.016-.016.117-.012.285.004.168.015.407.047.696.09.293.039.633.093 1.008.156.37.062.78.137 1.207.215a60.65 60.65 0 0 0 1.789.304c.527.079 1.011.133 1.535.172.523.04 1.09.063 1.777.078.692.016 1.504.02 2.527.024 1.22 0 2.204-.008 3.06-.031a27.474 27.474 0 0 0 2.257-.153 20.662 20.662 0 0 0 2.047-.336 48.885 48.885 0 0 0 2.426-.59 44.634 44.634 0 0 0 5.347-1.761 42.256 42.256 0 0 0 4.98-2.387 43.059 43.059 0 0 0 4.633-3.031 46.976 46.976 0 0 0 4.329-3.692 55.822 55.822 0 0 0 3.312-3.468 49.244 49.244 0 0 0 2.879-3.63 50.142 50.142 0 0 0 2.516-3.886 57.29 57.29 0 0 0 2.23-4.258c.375-.793.691-1.48.95-2.066.257-.59.46-1.078.613-1.473.144-.398.242-.7.285-.918.047-.219.039-.351-.016-.402-.078-.07-.41-.23-.902-.442a57.272 57.272 0 0 0-1.828-.73c-.692-.262-1.434-.535-2.121-.777a36.517 36.517 0 0 0-1.778-.586 54.289 54.289 0 0 0-3.531-.879 48.341 48.341 0 0 0-1.715-.332 23.874 23.874 0 0 0-1.465-.215l-.633-.07-.312-.04-.316-.035V39.301l-2.461.004h-2.461l-2.457.004h-2.461c-2.645.004-4.664.007-6.266.03-1.605.024-2.797.067-3.789.141-.992.079-1.789.192-2.598.356-.812.164-1.64.383-2.703.668a23.531 23.531 0 0 1-1.203.3c-.16.036-.289.06-.383.075-.093.016-.148.02-.156.008a29.962 29.962 0 0 1-.355-.672c-.102-.2-.22-.434-.348-.692a79.19 79.19 0 0 1-.418-.828c-.45-.902-.785-1.578-1.168-2.234-.379-.66-.805-1.297-1.422-2.117-.617-.817-1.433-1.82-2.594-3.203-1.16-1.387-2.671-3.153-4.68-5.508-1.398-1.64-2.53-2.961-3.44-4.02a272.265 272.265 0 0 0-2.122-2.441c-.523-.59-.875-.973-1.11-1.211-.237-.234-.355-.324-.402-.32-.015 0-.07.047-.156.132-.086.086-.199.207-.34.356-.136.148-.296.328-.472.523-.172.2-.364.414-.555.641m7.059 11.504a151.52 151.52 0 0 1 3.582 4.336 58.05 58.05 0 0 1 2.488 3.336c.66.965 1.16 1.793 1.516 2.515.355.72.57 1.332.66 1.868.023.14.039.25.031.347a.526.526 0 0 1-.09.262 1.205 1.205 0 0 1-.266.262c-.12.093-.285.199-.492.332-.332.21-.773.554-1.265.976-.493.426-1.043.934-1.594 1.473a43.455 43.455 0 0 0-1.625 1.672 25.487 25.487 0 0 0-1.348 1.574c-.398.512-.812 1.09-1.222 1.703a39.76 39.76 0 0 0-1.204 1.91 39.73 39.73 0 0 0-1.085 1.946c-.329.636-.622 1.25-.86 1.812-.34.809-.672 1.727-.976 2.688-.305.96-.582 1.964-.817 2.945-.234.984-.43 1.945-.562 2.816-.137.871-.215 1.653-.215 2.282-.004.609-.024 1.054-.055 1.332-.035.277-.086.386-.152.328-.067-.055-.149-.278-.246-.664a26.572 26.572 0 0 1-.336-1.66 76.29 76.29 0 0 0-.54-2.758 81.86 81.86 0 0 0-.624-2.66c-.211-.844-.43-1.637-.645-2.34a22.878 22.878 0 0 0-.617-1.801 24.472 24.472 0 0 0-.742-1.66 48.94 48.94 0 0 0-2.047-3.746c-.36-.59-.707-1.13-1.027-1.582a21.393 21.393 0 0 0-1.153-1.446 44.776 44.776 0 0 0-1.558-1.71 47.283 47.283 0 0 0-1.657-1.657c-.539-.512-1.043-.96-1.468-1.3-.172-.141-.34-.278-.489-.41a8.144 8.144 0 0 1-.402-.376 3.846 3.846 0 0 1-.27-.293c-.066-.082-.101-.144-.101-.176 0-.105.098-.378.262-.753.16-.372.386-.848.644-1.356.258-.508.547-1.05.828-1.562a24.735 24.735 0 0 1 1.582-2.508c.262-.371.543-.746.871-1.16.329-.418.7-.871 1.149-1.407.45-.535.973-1.144 1.601-1.87.235-.27.536-.614.875-1.005.336-.394.715-.832 1.114-1.293.394-.46.808-.937 1.215-1.41.402-.472.8-.933 1.168-1.363l.668-.777.668-.774.667-.777.665-.778.117.118.113.12.117.118.113.117a110.75 110.75 0 0 1 1.668 1.914l1.555 1.809c.57.664 1.184 1.383 1.813 2.12M51.227 44.149c.425.09.867.2 1.304.317.434.117.864.242 1.254.37.395.13.754.259 1.055.38.297.12.535.234.687.332.051.035.09.094.11.191.02.098.023.239.011.442-.015.199-.046.457-.097.793-.055.336-.125.75-.215 1.257-.094.524-.172.989-.23 1.446-.06.457-.106.91-.137 1.41a32.68 32.68 0 0 0-.067 1.7c-.011.648-.015 1.401-.015 2.312 0 .98.004 1.761.015 2.414.012.648.035 1.172.07 1.644.04.473.09.89.165 1.336.07.446.164.918.285 1.488.074.348.156.72.242 1.094.082.375.168.754.254 1.11.086.359.168.695.242.992.074.3.14.554.195.75.055.195.102.383.149.554.043.172.082.329.113.461.031.13.059.239.07.317.016.078.02.125.012.133a.942.942 0 0 1-.183-.079 35.955 35.955 0 0 1-1.148-.629c-.255-.144-.532-.304-.821-.472a95.651 95.651 0 0 0-2.031-1.152 44.616 44.616 0 0 0-1.723-.899 34 34 0 0 0-1.633-.75 44.224 44.224 0 0 0-1.762-.715 50.86 50.86 0 0 0-2.855-1.004 45.68 45.68 0 0 0-2.8-.793 39.106 39.106 0 0 0-2.653-.562 26.924 26.924 0 0 0-2.406-.309l-.426-.03-.426-.036-.426-.031-.426-.035V43.758h7.215c1.578.004 2.832.008 3.852.015 1.02.012 1.8.028 2.437.055a20.37 20.37 0 0 1 1.547.117c.43.051.797.117 1.196.203m64.886 7.493c0 1.23-.008 2.34-.015 3.312-.008.977-.02 1.817-.04 2.504-.015.691-.038 1.23-.062 1.602-.023.367-.05.57-.082.59a1.259 1.259 0 0 1-.281.07c-.153.031-.367.062-.617.101-.254.035-.547.078-.868.117-.32.043-.664.083-1.02.122-.765.086-1.538.199-2.323.343-.79.141-1.59.313-2.407.516-.816.203-1.652.434-2.503.7-.856.26-1.73.558-2.625.882-.735.266-1.305.477-1.801.672-.496.195-.918.375-1.348.578-.43.203-.867.43-1.398.723-.528.289-1.149.644-1.946 1.101a34.54 34.54 0 0 1-1.644.895 9.035 9.035 0 0 1-.528.242c-.128.055-.21.074-.226.059-.016-.016-.02-.082-.012-.184a5.49 5.49 0 0 1 .055-.422c.031-.172.066-.371.113-.59.043-.219.098-.457.156-.699.258-1.082.454-1.906.602-2.613.152-.703.258-1.282.332-1.867.078-.583.125-1.172.156-1.895.035-.723.059-1.578.086-2.695.024-.98.04-1.77.043-2.434.004-.66-.004-1.2-.027-1.684a17.76 17.76 0 0 0-.113-1.355 29.95 29.95 0 0 0-.223-1.445c-.152-.887-.27-1.543-.336-2.035-.066-.493-.086-.825-.04-1.059a.664.664 0 0 1 .333-.492c.18-.117.437-.207.781-.336.692-.266 1.29-.469 1.926-.63.637-.16 1.309-.276 2.152-.358.84-.082 1.852-.133 3.164-.16 1.309-.032 2.922-.044 4.965-.047l3.813-.008h1.902l1.906-.004v7.883m-25.05-2.368c.195 1.02.343 1.977.437 2.91.098.934.14 1.837.133 2.75a25.621 25.621 0 0 1-.18 2.797c-.11.961-.273 1.961-.488 3.036a39.395 39.395 0 0 1-.746 3.12 31.161 31.161 0 0 1-.946 2.829c-.355.906-.75 1.781-1.187 2.64a30.9 30.9 0 0 1-1.473 2.555c-.215.34-.597.86-1.074 1.469a76.18 76.18 0 0 1-1.625 2.012 79.82 79.82 0 0 1-1.73 2.011 30.987 30.987 0 0 1-1.387 1.489l-.258.25-.262.254-.257.253-.262.254.02-1.62.023-1.622.02-1.617.019-1.621c.02-1.414.035-2.543.058-3.465.02-.922.047-1.637.082-2.227.036-.59.082-1.054.141-1.472.059-.422.133-.797.227-1.211a38.117 38.117 0 0 1 1.086-3.91c.418-1.235.89-2.403 1.433-3.524a28.68 28.68 0 0 1 1.82-3.222 31.184 31.184 0 0 1 2.258-3.012 18.08 18.08 0 0 1 1.012-1.086c.367-.363.746-.715 1.106-1.023.355-.31.69-.575.964-.762.27-.188.48-.297.59-.297.035 0 .07.031.11.086.039.05.078.129.12.226a4.214 4.214 0 0 1 .216.75m-28.895.91c.914.915 1.738 1.86 2.488 2.86a25.52 25.52 0 0 1 2.028 3.187 30.027 30.027 0 0 1 1.636 3.645 42.64 42.64 0 0 1 1.32 4.23c.122.485.22.872.294 1.274.074.406.125.832.164 1.387.043.554.07 1.242.09 2.171.023.934.039 2.11.058 3.645.02 1.441.035 2.566.04 3.438.003.87 0 1.488-.016 1.921-.016.434-.043.68-.086.813-.04.129-.094.14-.16.101-.106-.058-.376-.324-.743-.722-.367-.399-.84-.926-1.34-1.512a82.643 82.643 0 0 1-1.539-1.832 48.185 48.185 0 0 1-1.34-1.695c-.34-.45-.722-1.031-1.117-1.688a40.534 40.534 0 0 1-1.183-2.125 43.623 43.623 0 0 1-1.075-2.207 21.82 21.82 0 0 1-.773-1.933c-.07-.215-.152-.477-.238-.762-.082-.29-.172-.602-.258-.922a49.961 49.961 0 0 1-.461-1.844c-.187-.86-.316-2.113-.395-3.508a62.606 62.606 0 0 1-.066-4.378c.027-1.434.106-2.762.227-3.735.12-.969.285-1.578.492-1.578.023 0 .097.05.21.14.11.09.259.22.438.38a44.358 44.358 0 0 1 1.305 1.25m53.23 15.39a24.897 24.897 0 0 1-.965 4.492 26.72 26.72 0 0 1-.824 2.25 33.11 33.11 0 0 1-1.058 2.305c-.344.676-.66 1.262-.98 1.805-.321.543-.641 1.035-.997 1.523-.351.485-.734.961-1.18 1.473-.445.508-.953 1.05-1.542 1.66a35.204 35.204 0 0 1-1.579 1.54c-.496.448-.976.847-1.468 1.21-.493.367-1 .703-1.551 1.031-.55.328-1.145.649-1.817.989-.84.421-1.624.761-2.445 1.03a15.58 15.58 0 0 1-2.683.626c-1.004.152-2.145.25-3.532.308-1.382.063-3.011.082-4.98.082H82.18l.03-.113.036-.113.031-.113.035-.114c.055-.199.243-.582.516-1.074.274-.496.633-1.101 1.027-1.746.399-.645.836-1.324 1.266-1.969.43-.644.852-1.25 1.219-1.746a44.604 44.604 0 0 1 5.883-6.445 41.569 41.569 0 0 1 6.812-4.977 38.048 38.048 0 0 1 7.477-3.36 34.711 34.711 0 0 1 7.886-1.585c.11-.008.22-.02.325-.027.105-.008.203-.02.293-.028.09-.008.164-.02.226-.023.063-.008.106-.016.13-.02.023-.004.038.024.05.078a.934.934 0 0 1 .023.239c.004.101 0 .226-.007.363-.008.137-.02.29-.04.45M30.934 66.89c.242 1.234.562 2.488.945 3.738a41.182 41.182 0 0 0 1.32 3.68 37.438 37.438 0 0 0 1.61 3.425 27.185 27.185 0 0 0 1.816 2.961c.45.633.992 1.313 1.594 2.004a38.232 38.232 0 0 0 1.949 2.074c.687.68 1.395 1.34 2.098 1.942.699.597 1.39 1.144 2.03 1.597.298.208.575.407.825.59.25.184.469.352.649.496.18.141.32.258.41.344.09.082.129.133.105.14-.066.028-.328-.038-.71-.167-.384-.13-.891-.324-1.458-.555a48.612 48.612 0 0 1-1.812-.777 38.066 38.066 0 0 1-7.352-4.297 42.01 42.01 0 0 1-5.043-4.422 44.733 44.733 0 0 1-4.37-5.254 45.026 45.026 0 0 1-3.575-5.941c-.125-.258-.25-.504-.356-.735-.109-.226-.207-.433-.285-.609-.078-.176-.14-.32-.18-.422-.042-.101-.058-.164-.05-.172.008-.008.062-.031.148-.066.09-.035.211-.082.36-.137.144-.05.32-.113.507-.18l.614-.21c.433-.145.988-.297 1.593-.446a39.578 39.578 0 0 1 3.805-.73c.574-.078 1.07-.125 1.434-.133l.23-.004.235-.004.23-.004.234-.004.114.57.109.57.113.567.114.57m8.199-1.87c1.383.238 2.8.59 4.226 1.039 1.426.449 2.856 1 4.27 1.636a42.064 42.064 0 0 1 4.16 2.164c1.348.801 2.648 1.68 3.879 2.621.41.317.95.778 1.547 1.32a69.069 69.069 0 0 1 1.914 1.805c.652.641 1.3 1.293 1.871 1.899a31.34 31.34 0 0 1 1.422 1.586 46.416 46.416 0 0 1 1.726 2.27c.57.796 1.125 1.613 1.622 2.39.5.781.94 1.52 1.285 2.152.343.637.593 1.172.71 1.543l.032.114.035.113.04.113.03.113h-5.511c-1.918 0-3.48-.02-4.801-.078-1.324-.058-2.41-.156-3.371-.312a15.68 15.68 0 0 1-2.63-.653c-.831-.289-1.651-.652-2.581-1.109a20.527 20.527 0 0 1-3.137-1.926 24.776 24.776 0 0 1-2.902-2.523 26.07 26.07 0 0 1-2.528-2.988 24.005 24.005 0 0 1-2.011-3.305 35.404 35.404 0 0 1-1.192-2.649 38.321 38.321 0 0 1-.968-2.66 25.394 25.394 0 0 1-.645-2.39c-.156-.72-.238-1.348-.238-1.832 0-.211 0-.371.011-.489.012-.12.032-.203.079-.257.043-.055.105-.082.203-.098.093-.016.222-.016.39-.016.094 0 .25.012.453.032.204.023.454.05.73.09.278.035.583.078.903.128.32.047.653.102.977.157m84.953.085c.336.06.809.168 1.336.297.523.13 1.101.282 1.64.434.543.152 1.051.305 1.43.43.387.125.649.222.7.273.027.023-.028.184-.149.45-.121.265-.3.632-.527 1.062-.223.433-.493.93-.79 1.457a56.9 56.9 0 0 1-.937 1.633 44.31 44.31 0 0 1-3.473 5.027 46.345 46.345 0 0 1-4.12 4.531 43.203 43.203 0 0 1-4.571 3.848 34.726 34.726 0 0 1-4.82 2.969 42.898 42.898 0 0 1-3.02 1.367c-.469.191-.89.351-1.207.457-.32.105-.535.156-.598.137-.027-.012.004-.055.079-.133.074-.074.195-.18.351-.309.153-.129.348-.281.563-.445.218-.164.465-.344.722-.531a31.987 31.987 0 0 0 3.067-2.473 30.025 30.025 0 0 0 4.992-5.887 32.018 32.018 0 0 0 1.953-3.441c.398-.809.75-1.57 1.059-2.309a30.121 30.121 0 0 0 1.48-4.39c.188-.758.363-1.547.52-2.391l.109-.59.113-.586.11-.59.109-.586h1.133c.156 0 .347.008.566.024.215.012.457.035.703.062a20.21 20.21 0 0 1 1.477.203m-79.191 55.711c.363.23.671.555.917.934.247.379.426.816.536 1.273.109.457.148.938.105 1.407a3.61 3.61 0 0 1-.371 1.336c-.156.304-.332.57-.539.808a3.303 3.303 0 0 1-1.512.996 4.104 4.104 0 0 1-.965.184 4.468 4.468 0 0 1-1.03-.043 3.427 3.427 0 0 1-1.719-.805 4.434 4.434 0 0 1-.696-.77 3.378 3.378 0 0 1-.555-1.284 4.203 4.203 0 0 1-.046-1.434c.066-.48.21-.945.43-1.36.214-.413.507-.78.87-1.058a3.654 3.654 0 0 1 1.059-.555c.383-.132.789-.207 1.2-.222.41-.02.82.023 1.214.12.39.102.766.259 1.102.473m64.375-.195c.175.086.37.23.574.406.199.176.402.38.586.598.187.215.36.438.492.652.133.211.226.407.266.567.019.07.035.168.042.285.012.113.02.25.024.398.004.145 0 .301-.004.457a8.875 8.875 0 0 1-.023.461 3.545 3.545 0 0 1-.774 1.953 3.866 3.866 0 0 1-3.625 1.368 3.584 3.584 0 0 1-1.883-.95 4.289 4.289 0 0 1-.55-.609 2.827 2.827 0 0 1-.352-.637 3.475 3.475 0 0 1-.188-.746 6.793 6.793 0 0 1-.054-.941c0-.352.027-.672.082-.961.05-.293.137-.555.25-.797.117-.242.265-.465.449-.676.188-.21.406-.41.668-.601.25-.188.547-.328.879-.434a4.168 4.168 0 0 1 1.05-.187c.364-.024.735 0 1.09.066.36.062.7.176 1 .328m-31.93.473c.177.125.368.328.556.57.183.242.367.531.527.824.16.293.297.598.394.88a2.5 2.5 0 0 1 .16.737c0 .258-.074.567-.206.895a5.551 5.551 0 0 1-.54.996 6 6 0 0 1-.742.906c-.265.27-.547.489-.816.63a2.93 2.93 0 0 1-1.024.3 3.709 3.709 0 0 1-1.117-.047 3.928 3.928 0 0 1-1.066-.37 3.194 3.194 0 0 1-.871-.669 4.034 4.034 0 0 1-.68-1.012 4.028 4.028 0 0 1-.355-1.12 3.802 3.802 0 0 1-.012-1.153 3.5 3.5 0 0 1 .344-1.094c.187-.363.375-.664.586-.91.21-.242.441-.43.71-.57.266-.14.57-.23.922-.282a6.496 6.496 0 0 1 1.239-.046c.254.011.472.027.664.046.195.024.363.055.515.098a2.284 2.284 0 0 1 .813.39"/></g>%0A <g transform="translate(-68.454 -154.133) scale(4.051)"><path d="M82.117 39.523c-.152.172-.191 2.747-.172 9.192l.059 8.945h4.773l.059-9.039c.039-7.113 0-9.078-.191-9.21-.438-.266-4.278-.192-4.528.112m7.621.117c-.21.4-.265 16.895-.054 17.696.093.398.187.418 2.441.418 1.969 0 2.371-.059 2.465-.305.21-.535.133-17.43-.074-17.828-.192-.324-.422-.363-2.391-.363-1.965 0-2.195.039-2.387.383m7.774-.27c-.075.078-.133.992-.133 2.024v1.867h4.793l-.055-1.965-.058-1.945-2.215-.055c-1.203-.02-2.254.02-2.332.074m50.312.152c-.156.172-.21.88-.172 1.965l.055 1.68h4.777l.055-1.793c.04-1.316-.02-1.852-.191-1.965-.133-.074-1.164-.152-2.27-.152-1.512 0-2.101.078-2.254.265m76.512-.152c-.074.078-.133.992-.133 2.024v1.867h4.793l-.055-1.965-.058-1.945-2.215-.055c-1.203-.02-2.254.02-2.332.074m-86.539 1.527c-.059.172-.117 1.145-.117 2.192v1.887h-.84c-.973 0-1.07.136-1.07 1.601 0 1.184.21 1.45 1.183 1.45h.727v2.042c0 1.145.058 2.899.132 3.907l.118 1.87h1.832l.058.895.055.918h5.54l.058-1.316c.039-.934-.02-1.375-.192-1.469-.133-.098-.781-.172-1.449-.172h-1.187l.039-3.3.058-3.278 1.336-.098 1.336-.093v-2.86l-1.336-.097-1.336-.094-.058-2.156-.055-2.133h-2.352c-1.984 0-2.386.054-2.48.304m-88.414 4.215c-.078.055-.137 4.04-.137 8.848 0 8.14.02 8.75.344 8.883.172.097 1.3.133 2.484.097l2.14-.058v-5.13h3.532c2.695 0 3.535-.058 3.555-.245.02-.117.035-.535.054-.899.02-.668.02-.668 1.032-.722l.996-.059v-8.906l-.594-.113a7.4 7.4 0 0 0-1.05-.114c-.419 0-.458-.078-.458-.86v-.858H55.38l-.059.707c-.054.726-.054.726-.953.78l-.918.06v-1.547h-1.97c-1.085 0-2.042.058-2.097.136m9.031 6.235v3.336l-2.023.058c-1.11.035-2.063.02-2.102-.02-.039-.038-.074-1.562-.074-3.394v-3.3h4.2Zm9.32-5.473c-.054.875-.074.914-.629.875a5.6 5.6 0 0 0-.992.059l-.441.078v8.941l1.012.059.996.054.054.918.059.895 4.91-.04 4.906-.054.059-.918.059-.894h2.082v-4.461c0-4.328-.02-4.485-.383-4.598-.211-.074-.668-.094-1.012-.055-.594.055-.613.036-.707-.8l-.098-.86-4.906-.058-4.91-.04Zm6.914 5.492v3.336h-4.007v-6.676h4.007Zm22.864-6.254c-.075.055-.133 2.934-.133 6.387v6.273l2.351-.058 2.329-.055.058-6.351.035-6.332h-2.25c-1.242 0-2.332.058-2.39.136m6.972 6.196.059 6.351h4.773l.059-4.824.04-4.809h4.007l.039 4.809.059 4.824h4.773l.059-5.379.039-5.379-.996-.054-1.012-.059-.055-.914-.058-.898-3.094.039-3.094.058-.059.703-.058.727h-1.89v-1.527h-3.63Zm17-4.864.055 1.489 3.785.058 3.781.035-.058.918-.059.895-3.148.097-3.153.094-.019.762v.766l-.973.054c-.824.04-.996.133-1.09.477-.152.555-.152 1.773 0 2.879l.133.879h1.832l.059.894.058.918 2.922.055 2.903.058v-1.562l.918.055c.898.058.898.058.953.761l.058.727h3.61V46.922l-.574-.133c-.305-.074-.649-.074-.743-.02-.441.29-.785-.132-.785-.953v-.84h-10.523Zm7.602 7.399v.86h-3.629v-1.716h3.629Zm18.621-8.637c-.055.133-.074 2.992-.055 6.352l.055 6.101h4.777V45.074l-2.351-.058c-1.778-.04-2.367.02-2.426.191m9.168 0a5.3 5.3 0 0 0-.133.914c-.058.668-.058.668-1.07.727l-.992.054.039 4.426.054 4.422.997.059.992.058.058.895.055.898 4.93.055 4.906.039v-1.906h2.101v-8.961h-.742c-1.207 0-1.36-.137-1.36-1.07v-.84h-4.866c-3.746 0-4.91.058-4.969.23m6.973 6.16v3.336h-4.012v-6.676h4.012Zm7.179-6.234c-.054.113-.035 8.406.059 11.894l.02.727h2.367c1.988 0 2.386-.059 2.484-.305.059-.172.113-2.347.113-4.863v-4.574l1.97.054 1.948.059.094 4.766.098 4.77h4.773V46.98l-.957-.094-.953-.098-.094-.855-.097-.86-3.094-.058-3.113-.04v1.528h-1.91v-1.527h-1.798c-.992 0-1.851.078-1.91.156m18.321.075a5 5 0 0 0-.137.914c-.055.668-.055.668-1.05.727l-1.013.054v1.891c0 1.027.059 2 .118 2.172.074.23.379.305 1.03.305h.934l.06.8.058.82 2.73.06 2.711.058v1.695h-3.57c-1.989 0-3.707.074-3.84.172-.172.094-.23.535-.191 1.469l.058 1.316h10.313l.058-.898.055-.895.996-.058.992-.059.059-1.617c.074-2.367.035-2.48-1.11-2.48h-.937l-.055-.821-.058-.8-2.77-.094-2.77-.098v-1.715l3.516-.059c1.95-.02 3.61-.113 3.723-.207.133-.117.191-.726.152-1.527l-.074-1.355h-4.95c-3.8 0-4.984.058-5.038.23m19.902 0c-.04.133-.04.8.035 1.488l.117 1.239 3.684.058 3.668.035v1.91h-6.3v1.715h-2.102v4.176l1.011.059.992.054.06.918.054.914 2.906-.058 2.902-.055.059-.726c.055-.707.074-.707.894-.707.825 0 .844 0 .899.707l.059.726 1.87.055 1.852.058V52.32c0-4.215-.055-5.433-.226-5.453-.137-.02-.594-.039-1.012-.058-.766-.02-.766-.02-.863-.875l-.094-.86-5.176-.058c-4.05-.04-5.215 0-5.289.191m7.504 8.637v.879l-1.758-.059-1.773-.055-.059-.535c-.113-1.011 0-1.086 1.871-1.086h1.719Zm7.449-2.477v6.387h4.719l.113-2.156a67 67 0 0 0 0-8.293l-.113-2.328h-4.719Zm-22.137 2.27c-.152.172-.21.894-.171 2.133l.058 1.89 2.063.055 2.062.058-.058-2.156-.055-2.152-1.836-.059c-1.414-.039-1.89.02-2.063.23m0 0"/></g>%0A</svg>%0A';
309
+
310
+ // src/brand/mark.svg
311
+ var mark_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="15 17.6409 119.9998 114.7498" fill="currentColor"><path fill-rule="evenodd" d="M73.832 19.293a1893.685 1893.685 0 0 0-7.742 9.047c-1.93 2.273-3.274 3.898-4.266 5.156-.988 1.258-1.62 2.149-2.117 2.957-.5.805-.86 1.531-1.309 2.453-.14.285-.277.563-.402.813-.121.254-.238.48-.332.676a20.107 20.107 0 0 1-.34.652c-.008.008-.062 0-.156-.02s-.227-.047-.383-.09c-.16-.039-.351-.09-.558-.148-.207-.059-.43-.121-.668-.191-1.079-.32-1.895-.559-2.684-.743-.79-.18-1.55-.3-2.516-.382-.96-.082-2.129-.121-3.734-.145-1.602-.02-3.64-.023-6.348-.023H35.31l-2.485-.004H30.34v20.574l-.527.059-.524.058-1.055.117c-.59.067-1.203.157-1.84.274-.636.113-1.292.25-1.968.414-.676.16-1.371.348-2.086.555-.715.21-1.445.441-2.195.695-.47.16-1.024.36-1.594.574a64.38 64.38 0 0 0-1.684.649c-.523.207-.992.398-1.328.546-.336.149-.539.246-.539.274 0 .039.07.234.191.535.118.297.29.7.485 1.156.195.453.418.961.644 1.473.227.508.461 1.02.676 1.484a52.041 52.041 0 0 0 9.54 13.926 47.507 47.507 0 0 0 6.14 5.41c2.164 1.59 4.426 2.953 6.75 4.047a51.197 51.197 0 0 0 3.414 1.461c1.129.43 2.242.805 3.36 1.125 1.112.324 2.226.59 3.343.809a39.04 39.04 0 0 0 3.375.504c.84.085 1.781.136 2.777.156a51.632 51.632 0 0 0 6.203-.266 34.786 34.786 0 0 0 2.836-.394 59.177 59.177 0 0 1 2.633-.442c.149-.02.235-.023.246-.015.043.043-.02.195-.152.414a9.01 9.01 0 0 1-.582.812c-.242.313-.527.645-.813.965-.289.316-.582.617-.851.86-.57.519-1.168.968-1.809 1.355-.64.383-1.324.703-2.07.969-.746.261-1.555.464-2.441.617-.891.156-1.856.258-2.926.316-1.36.07-2.582.207-3.703.422-1.118.211-2.13.496-3.07.871-.938.375-1.801.84-2.618 1.403a15.82 15.82 0 0 0-2.351 2 14.205 14.205 0 0 0-1.489 1.765 13.256 13.256 0 0 0-1.148 1.945 15.518 15.518 0 0 0-.856 2.207 20.834 20.834 0 0 0-.59 2.543c-.058.348-.105.61-.156.817-.05.207-.105.36-.183.484a1.184 1.184 0 0 1-.325.332c-.144.106-.332.211-.578.356a9.157 9.157 0 0 0-2.543 2.183 8.797 8.797 0 0 0-1.52 2.813 8.33 8.33 0 0 0-.382 3.113 7.995 7.995 0 0 0 .852 3.098 7.95 7.95 0 0 0 1.574 2.117 9.294 9.294 0 0 0 2.168 1.566c.789.418 1.629.715 2.469.868.84.152 1.68.167 2.472.007a7.941 7.941 0 0 0 1.188-.336c.406-.144.82-.32 1.222-.515.399-.2.79-.418 1.149-.653.36-.234.691-.476.976-.73a6.93 6.93 0 0 0 1.473-1.86c.39-.71.68-1.492.855-2.308.176-.82.243-1.676.188-2.527a8.74 8.74 0 0 0-.531-2.516 5.919 5.919 0 0 0-.68-1.281c-.289-.43-.64-.856-1.031-1.258a10.34 10.34 0 0 0-1.262-1.11 8.299 8.299 0 0 0-1.379-.847c-.414-.2-.722-.352-.95-.492-.226-.137-.366-.27-.44-.43-.075-.16-.083-.352-.043-.613.039-.266.125-.598.242-1.043.226-.871.566-1.695 1.004-2.465a10.426 10.426 0 0 1 3.672-3.754c.77-.46 1.605-.836 2.492-1.102.152-.046.386-.093.675-.144a30.829 30.829 0 0 1 2.246-.273c.43-.043.876-.075 1.317-.102a41.754 41.754 0 0 0 2.773-.25 19.813 19.813 0 0 0 2.243-.406 13.283 13.283 0 0 0 1.918-.621c.609-.246 1.199-.536 1.804-.88a20.824 20.824 0 0 0 1.774-1.116c.539-.383 1.031-.786 1.511-1.227.48-.445.942-.934 1.415-1.488.468-.559.953-1.18 1.468-1.899l.309-.426.308-.43.313-.429.309-.426v19.633l-.399.262-.402.265-.797.532a11.66 11.66 0 0 0-1.567 1.21c-.44.41-.808.837-1.113 1.305-.305.465-.55.97-.746 1.535-.2.567-.351 1.192-.473 1.903a7.401 7.401 0 0 0 .024 2.574 8.502 8.502 0 0 0 2.441 4.543 7.787 7.787 0 0 0 2.157 1.496c.804.367 1.632.61 2.46.715.829.105 1.66.082 2.47-.07a7.963 7.963 0 0 0 2.343-.828 8.831 8.831 0 0 0 2.094-1.567c.406-.402.738-.789 1.011-1.18.27-.394.48-.796.641-1.234.156-.441.266-.918.336-1.473.07-.55.102-1.171.105-1.894 0-.524 0-.93-.011-1.266a6.504 6.504 0 0 0-.074-.836 3.967 3.967 0 0 0-.192-.683c-.09-.23-.207-.485-.355-.805a7.845 7.845 0 0 0-1.594-2.262 8.117 8.117 0 0 0-1.07-.879 9.342 9.342 0 0 0-1.254-.718l-.348-.164-.348-.16-.343-.165-.348-.164v-4.957l-.004-2.476v-2.48c0-1.36.004-2.657.012-3.833.008-1.176.02-2.23.035-3.11.016-.882.035-1.589.055-2.07.02-.48.043-.734.066-.707.02.028.074.102.156.208l.301.421c.121.168.258.364.406.575.145.207.305.433.461.664.38.543.735 1.027 1.09 1.468.352.438.703.832 1.063 1.2.363.367.742.707 1.148 1.039.406.328.844.652 1.332.98.777.528 1.5.965 2.223 1.328.718.364 1.437.657 2.203.89.765.235 1.582.411 2.496.544.914.137 1.93.23 3.094.3.433.024.867.055 1.289.087a40.742 40.742 0 0 1 2.148.215c.27.035.477.07.602.101.965.234 1.898.64 2.761 1.168a11.119 11.119 0 0 1 2.34 1.93 10.355 10.355 0 0 1 1.688 2.437c.43.867.707 1.781.805 2.695l.03.313.032.309.035.316.031.309-.27.14-.538.274-.274.136c-.828.426-1.558.922-2.183 1.493a7.954 7.954 0 0 0-1.54 1.91 7.731 7.731 0 0 0-.87 2.273 9.264 9.264 0 0 0-.172 2.594c.066.96.285 1.871.64 2.703a7.903 7.903 0 0 0 1.446 2.258 8.316 8.316 0 0 0 2.14 1.683c.817.45 1.727.782 2.715.98 1.309.255 2.617.126 3.836-.3a8.813 8.813 0 0 0 3.266-2.05 8.893 8.893 0 0 0 2.117-3.239c.453-1.21.613-2.527.387-3.848a9.06 9.06 0 0 0-1.504-3.644 9.344 9.344 0 0 0-1.301-1.477 8.97 8.97 0 0 0-1.61-1.16c-.18-.097-.347-.2-.507-.293-.16-.097-.305-.183-.434-.265-.125-.082-.23-.153-.312-.211a.573.573 0 0 1-.137-.121.813.813 0 0 1-.063-.184c-.027-.094-.058-.223-.097-.375a11.147 11.147 0 0 1-.11-.512c-.039-.187-.082-.39-.12-.594-.098-.5-.227-1.023-.383-1.554a19.7 19.7 0 0 0-.551-1.594c-.207-.527-.43-1.039-.668-1.512a12.868 12.868 0 0 0-.735-1.3 12.93 12.93 0 0 0-1.582-1.954 15.064 15.064 0 0 0-1.98-1.691 15.833 15.833 0 0 0-2.27-1.355 14.35 14.35 0 0 0-2.449-.934 9.33 9.33 0 0 0-.836-.188 25.72 25.72 0 0 0-1.094-.18 40.224 40.224 0 0 0-2.605-.269 51.614 51.614 0 0 1-1.281-.11 47.27 47.27 0 0 1-1.242-.128 37.65 37.65 0 0 1-1.067-.14 12.643 12.643 0 0 1-.746-.133 11.48 11.48 0 0 1-1.508-.458c-.5-.187-.996-.414-1.472-.668a12.371 12.371 0 0 1-2.606-1.847 16.117 16.117 0 0 1-1.676-1.836 5.604 5.604 0 0 1-.465-.707c-.097-.192-.125-.324-.074-.375.016-.016.117-.012.285.004.168.015.407.047.696.09.293.039.633.093 1.008.156.37.062.78.137 1.207.215a60.65 60.65 0 0 0 1.789.304c.527.079 1.011.133 1.535.172.523.04 1.09.063 1.777.078.692.016 1.504.02 2.527.024 1.22 0 2.204-.008 3.06-.031a27.474 27.474 0 0 0 2.257-.153 20.662 20.662 0 0 0 2.047-.336 48.885 48.885 0 0 0 2.426-.59 44.634 44.634 0 0 0 5.347-1.761 42.256 42.256 0 0 0 4.98-2.387 43.059 43.059 0 0 0 4.633-3.031 46.976 46.976 0 0 0 4.329-3.692 55.822 55.822 0 0 0 3.312-3.468 49.244 49.244 0 0 0 2.879-3.63 50.142 50.142 0 0 0 2.516-3.886 57.29 57.29 0 0 0 2.23-4.258c.375-.793.691-1.48.95-2.066.257-.59.46-1.078.613-1.473.144-.398.242-.7.285-.918.047-.219.039-.351-.016-.402-.078-.07-.41-.23-.902-.442a57.272 57.272 0 0 0-1.828-.73c-.692-.262-1.434-.535-2.121-.777a36.517 36.517 0 0 0-1.778-.586 54.289 54.289 0 0 0-3.531-.879 48.341 48.341 0 0 0-1.715-.332 23.874 23.874 0 0 0-1.465-.215l-.633-.07-.312-.04-.316-.035V39.301l-2.461.004h-2.461l-2.457.004h-2.461c-2.645.004-4.664.007-6.266.03-1.605.024-2.797.067-3.789.141-.992.079-1.789.192-2.598.356-.812.164-1.64.383-2.703.668a23.531 23.531 0 0 1-1.203.3c-.16.036-.289.06-.383.075-.093.016-.148.02-.156.008a29.962 29.962 0 0 1-.355-.672c-.102-.2-.22-.434-.348-.692a79.19 79.19 0 0 1-.418-.828c-.45-.902-.785-1.578-1.168-2.234-.379-.66-.805-1.297-1.422-2.117-.617-.817-1.433-1.82-2.594-3.203-1.16-1.387-2.671-3.153-4.68-5.508-1.398-1.64-2.53-2.961-3.44-4.02a272.265 272.265 0 0 0-2.122-2.441c-.523-.59-.875-.973-1.11-1.211-.237-.234-.355-.324-.402-.32-.015 0-.07.047-.156.132-.086.086-.199.207-.34.356-.136.148-.296.328-.472.523-.172.2-.364.414-.555.641m7.059 11.504a151.52 151.52 0 0 1 3.582 4.336 58.05 58.05 0 0 1 2.488 3.336c.66.965 1.16 1.793 1.516 2.515.355.72.57 1.332.66 1.868.023.14.039.25.031.347a.526.526 0 0 1-.09.262 1.205 1.205 0 0 1-.266.262c-.12.093-.285.199-.492.332-.332.21-.773.554-1.265.976-.493.426-1.043.934-1.594 1.473a43.455 43.455 0 0 0-1.625 1.672 25.487 25.487 0 0 0-1.348 1.574c-.398.512-.812 1.09-1.222 1.703a39.76 39.76 0 0 0-1.204 1.91 39.73 39.73 0 0 0-1.085 1.946c-.329.636-.622 1.25-.86 1.812-.34.809-.672 1.727-.976 2.688-.305.96-.582 1.964-.817 2.945-.234.984-.43 1.945-.562 2.816-.137.871-.215 1.653-.215 2.282-.004.609-.024 1.054-.055 1.332-.035.277-.086.386-.152.328-.067-.055-.149-.278-.246-.664a26.572 26.572 0 0 1-.336-1.66 76.29 76.29 0 0 0-.54-2.758 81.86 81.86 0 0 0-.624-2.66c-.211-.844-.43-1.637-.645-2.34a22.878 22.878 0 0 0-.617-1.801 24.472 24.472 0 0 0-.742-1.66 48.94 48.94 0 0 0-2.047-3.746c-.36-.59-.707-1.13-1.027-1.582a21.393 21.393 0 0 0-1.153-1.446 44.776 44.776 0 0 0-1.558-1.71 47.283 47.283 0 0 0-1.657-1.657c-.539-.512-1.043-.96-1.468-1.3-.172-.141-.34-.278-.489-.41a8.144 8.144 0 0 1-.402-.376 3.846 3.846 0 0 1-.27-.293c-.066-.082-.101-.144-.101-.176 0-.105.098-.378.262-.753.16-.372.386-.848.644-1.356.258-.508.547-1.05.828-1.562a24.735 24.735 0 0 1 1.582-2.508c.262-.371.543-.746.871-1.16.329-.418.7-.871 1.149-1.407.45-.535.973-1.144 1.601-1.87.235-.27.536-.614.875-1.005.336-.394.715-.832 1.114-1.293.394-.46.808-.937 1.215-1.41.402-.472.8-.933 1.168-1.363l.668-.777.668-.774.667-.777.665-.778.117.118.113.12.117.118.113.117a110.75 110.75 0 0 1 1.668 1.914l1.555 1.809c.57.664 1.184 1.383 1.813 2.12M51.227 44.149c.425.09.867.2 1.304.317.434.117.864.242 1.254.37.395.13.754.259 1.055.38.297.12.535.234.687.332.051.035.09.094.11.191.02.098.023.239.011.442-.015.199-.046.457-.097.793-.055.336-.125.75-.215 1.257-.094.524-.172.989-.23 1.446-.06.457-.106.91-.137 1.41a32.68 32.68 0 0 0-.067 1.7c-.011.648-.015 1.401-.015 2.312 0 .98.004 1.761.015 2.414.012.648.035 1.172.07 1.644.04.473.09.89.165 1.336.07.446.164.918.285 1.488.074.348.156.72.242 1.094.082.375.168.754.254 1.11.086.359.168.695.242.992.074.3.14.554.195.75.055.195.102.383.149.554.043.172.082.329.113.461.031.13.059.239.07.317.016.078.02.125.012.133a.942.942 0 0 1-.183-.079 35.955 35.955 0 0 1-1.148-.629c-.255-.144-.532-.304-.821-.472a95.651 95.651 0 0 0-2.031-1.152 44.616 44.616 0 0 0-1.723-.899 34 34 0 0 0-1.633-.75 44.224 44.224 0 0 0-1.762-.715 50.86 50.86 0 0 0-2.855-1.004 45.68 45.68 0 0 0-2.8-.793 39.106 39.106 0 0 0-2.653-.562 26.924 26.924 0 0 0-2.406-.309l-.426-.03-.426-.036-.426-.031-.426-.035V43.758h7.215c1.578.004 2.832.008 3.852.015 1.02.012 1.8.028 2.437.055a20.37 20.37 0 0 1 1.547.117c.43.051.797.117 1.196.203m64.886 7.493c0 1.23-.008 2.34-.015 3.312-.008.977-.02 1.817-.04 2.504-.015.691-.038 1.23-.062 1.602-.023.367-.05.57-.082.59a1.259 1.259 0 0 1-.281.07c-.153.031-.367.062-.617.101-.254.035-.547.078-.868.117-.32.043-.664.083-1.02.122-.765.086-1.538.199-2.323.343-.79.141-1.59.313-2.407.516-.816.203-1.652.434-2.503.7-.856.26-1.73.558-2.625.882-.735.266-1.305.477-1.801.672-.496.195-.918.375-1.348.578-.43.203-.867.43-1.398.723-.528.289-1.149.644-1.946 1.101a34.54 34.54 0 0 1-1.644.895 9.035 9.035 0 0 1-.528.242c-.128.055-.21.074-.226.059-.016-.016-.02-.082-.012-.184a5.49 5.49 0 0 1 .055-.422c.031-.172.066-.371.113-.59.043-.219.098-.457.156-.699.258-1.082.454-1.906.602-2.613.152-.703.258-1.282.332-1.867.078-.583.125-1.172.156-1.895.035-.723.059-1.578.086-2.695.024-.98.04-1.77.043-2.434.004-.66-.004-1.2-.027-1.684a17.76 17.76 0 0 0-.113-1.355 29.95 29.95 0 0 0-.223-1.445c-.152-.887-.27-1.543-.336-2.035-.066-.493-.086-.825-.04-1.059a.664.664 0 0 1 .333-.492c.18-.117.437-.207.781-.336.692-.266 1.29-.469 1.926-.63.637-.16 1.309-.276 2.152-.358.84-.082 1.852-.133 3.164-.16 1.309-.032 2.922-.044 4.965-.047l3.813-.008h1.902l1.906-.004v7.883m-25.05-2.368c.195 1.02.343 1.977.437 2.91.098.934.14 1.837.133 2.75a25.621 25.621 0 0 1-.18 2.797c-.11.961-.273 1.961-.488 3.036a39.395 39.395 0 0 1-.746 3.12 31.161 31.161 0 0 1-.946 2.829c-.355.906-.75 1.781-1.187 2.64a30.9 30.9 0 0 1-1.473 2.555c-.215.34-.597.86-1.074 1.469a76.18 76.18 0 0 1-1.625 2.012 79.82 79.82 0 0 1-1.73 2.011 30.987 30.987 0 0 1-1.387 1.489l-.258.25-.262.254-.257.253-.262.254.02-1.62.023-1.622.02-1.617.019-1.621c.02-1.414.035-2.543.058-3.465.02-.922.047-1.637.082-2.227.036-.59.082-1.054.141-1.472.059-.422.133-.797.227-1.211a38.117 38.117 0 0 1 1.086-3.91c.418-1.235.89-2.403 1.433-3.524a28.68 28.68 0 0 1 1.82-3.222 31.184 31.184 0 0 1 2.258-3.012 18.08 18.08 0 0 1 1.012-1.086c.367-.363.746-.715 1.106-1.023.355-.31.69-.575.964-.762.27-.188.48-.297.59-.297.035 0 .07.031.11.086.039.05.078.129.12.226a4.214 4.214 0 0 1 .216.75m-28.895.91c.914.915 1.738 1.86 2.488 2.86a25.52 25.52 0 0 1 2.028 3.187 30.027 30.027 0 0 1 1.636 3.645 42.64 42.64 0 0 1 1.32 4.23c.122.485.22.872.294 1.274.074.406.125.832.164 1.387.043.554.07 1.242.09 2.171.023.934.039 2.11.058 3.645.02 1.441.035 2.566.04 3.438.003.87 0 1.488-.016 1.921-.016.434-.043.68-.086.813-.04.129-.094.14-.16.101-.106-.058-.376-.324-.743-.722-.367-.399-.84-.926-1.34-1.512a82.643 82.643 0 0 1-1.539-1.832 48.185 48.185 0 0 1-1.34-1.695c-.34-.45-.722-1.031-1.117-1.688a40.534 40.534 0 0 1-1.183-2.125 43.623 43.623 0 0 1-1.075-2.207 21.82 21.82 0 0 1-.773-1.933c-.07-.215-.152-.477-.238-.762-.082-.29-.172-.602-.258-.922a49.961 49.961 0 0 1-.461-1.844c-.187-.86-.316-2.113-.395-3.508a62.606 62.606 0 0 1-.066-4.378c.027-1.434.106-2.762.227-3.735.12-.969.285-1.578.492-1.578.023 0 .097.05.21.14.11.09.259.22.438.38a44.358 44.358 0 0 1 1.305 1.25m53.23 15.39a24.897 24.897 0 0 1-.965 4.492 26.72 26.72 0 0 1-.824 2.25 33.11 33.11 0 0 1-1.058 2.305c-.344.676-.66 1.262-.98 1.805-.321.543-.641 1.035-.997 1.523-.351.485-.734.961-1.18 1.473-.445.508-.953 1.05-1.542 1.66a35.204 35.204 0 0 1-1.579 1.54c-.496.448-.976.847-1.468 1.21-.493.367-1 .703-1.551 1.031-.55.328-1.145.649-1.817.989-.84.421-1.624.761-2.445 1.03a15.58 15.58 0 0 1-2.683.626c-1.004.152-2.145.25-3.532.308-1.382.063-3.011.082-4.98.082H82.18l.03-.113.036-.113.031-.113.035-.114c.055-.199.243-.582.516-1.074.274-.496.633-1.101 1.027-1.746.399-.645.836-1.324 1.266-1.969.43-.644.852-1.25 1.219-1.746a44.604 44.604 0 0 1 5.883-6.445 41.569 41.569 0 0 1 6.812-4.977 38.048 38.048 0 0 1 7.477-3.36 34.711 34.711 0 0 1 7.886-1.585c.11-.008.22-.02.325-.027.105-.008.203-.02.293-.028.09-.008.164-.02.226-.023.063-.008.106-.016.13-.02.023-.004.038.024.05.078a.934.934 0 0 1 .023.239c.004.101 0 .226-.007.363-.008.137-.02.29-.04.45M30.934 66.89c.242 1.234.562 2.488.945 3.738a41.182 41.182 0 0 0 1.32 3.68 37.438 37.438 0 0 0 1.61 3.425 27.185 27.185 0 0 0 1.816 2.961c.45.633.992 1.313 1.594 2.004a38.232 38.232 0 0 0 1.949 2.074c.687.68 1.395 1.34 2.098 1.942.699.597 1.39 1.144 2.03 1.597.298.208.575.407.825.59.25.184.469.352.649.496.18.141.32.258.41.344.09.082.129.133.105.14-.066.028-.328-.038-.71-.167-.384-.13-.891-.324-1.458-.555a48.612 48.612 0 0 1-1.812-.777 38.066 38.066 0 0 1-7.352-4.297 42.01 42.01 0 0 1-5.043-4.422 44.733 44.733 0 0 1-4.37-5.254 45.026 45.026 0 0 1-3.575-5.941c-.125-.258-.25-.504-.356-.735-.109-.226-.207-.433-.285-.609-.078-.176-.14-.32-.18-.422-.042-.101-.058-.164-.05-.172.008-.008.062-.031.148-.066.09-.035.211-.082.36-.137.144-.05.32-.113.507-.18l.614-.21c.433-.145.988-.297 1.593-.446a39.578 39.578 0 0 1 3.805-.73c.574-.078 1.07-.125 1.434-.133l.23-.004.235-.004.23-.004.234-.004.114.57.109.57.113.567.114.57m8.199-1.87c1.383.238 2.8.59 4.226 1.039 1.426.449 2.856 1 4.27 1.636a42.064 42.064 0 0 1 4.16 2.164c1.348.801 2.648 1.68 3.879 2.621.41.317.95.778 1.547 1.32a69.069 69.069 0 0 1 1.914 1.805c.652.641 1.3 1.293 1.871 1.899a31.34 31.34 0 0 1 1.422 1.586 46.416 46.416 0 0 1 1.726 2.27c.57.796 1.125 1.613 1.622 2.39.5.781.94 1.52 1.285 2.152.343.637.593 1.172.71 1.543l.032.114.035.113.04.113.03.113h-5.511c-1.918 0-3.48-.02-4.801-.078-1.324-.058-2.41-.156-3.371-.312a15.68 15.68 0 0 1-2.63-.653c-.831-.289-1.651-.652-2.581-1.109a20.527 20.527 0 0 1-3.137-1.926 24.776 24.776 0 0 1-2.902-2.523 26.07 26.07 0 0 1-2.528-2.988 24.005 24.005 0 0 1-2.011-3.305 35.404 35.404 0 0 1-1.192-2.649 38.321 38.321 0 0 1-.968-2.66 25.394 25.394 0 0 1-.645-2.39c-.156-.72-.238-1.348-.238-1.832 0-.211 0-.371.011-.489.012-.12.032-.203.079-.257.043-.055.105-.082.203-.098.093-.016.222-.016.39-.016.094 0 .25.012.453.032.204.023.454.05.73.09.278.035.583.078.903.128.32.047.653.102.977.157m84.953.085c.336.06.809.168 1.336.297.523.13 1.101.282 1.64.434.543.152 1.051.305 1.43.43.387.125.649.222.7.273.027.023-.028.184-.149.45-.121.265-.3.632-.527 1.062-.223.433-.493.93-.79 1.457a56.9 56.9 0 0 1-.937 1.633 44.31 44.31 0 0 1-3.473 5.027 46.345 46.345 0 0 1-4.12 4.531 43.203 43.203 0 0 1-4.571 3.848 34.726 34.726 0 0 1-4.82 2.969 42.898 42.898 0 0 1-3.02 1.367c-.469.191-.89.351-1.207.457-.32.105-.535.156-.598.137-.027-.012.004-.055.079-.133.074-.074.195-.18.351-.309.153-.129.348-.281.563-.445.218-.164.465-.344.722-.531a31.987 31.987 0 0 0 3.067-2.473 30.025 30.025 0 0 0 4.992-5.887 32.018 32.018 0 0 0 1.953-3.441c.398-.809.75-1.57 1.059-2.309a30.121 30.121 0 0 0 1.48-4.39c.188-.758.363-1.547.52-2.391l.109-.59.113-.586.11-.59.109-.586h1.133c.156 0 .347.008.566.024.215.012.457.035.703.062a20.21 20.21 0 0 1 1.477.203m-79.191 55.711c.363.23.671.555.917.934.247.379.426.816.536 1.273.109.457.148.938.105 1.407a3.61 3.61 0 0 1-.371 1.336c-.156.304-.332.57-.539.808a3.303 3.303 0 0 1-1.512.996 4.104 4.104 0 0 1-.965.184 4.468 4.468 0 0 1-1.03-.043 3.427 3.427 0 0 1-1.719-.805 4.434 4.434 0 0 1-.696-.77 3.378 3.378 0 0 1-.555-1.284 4.203 4.203 0 0 1-.046-1.434c.066-.48.21-.945.43-1.36.214-.413.507-.78.87-1.058a3.654 3.654 0 0 1 1.059-.555c.383-.132.789-.207 1.2-.222.41-.02.82.023 1.214.12.39.102.766.259 1.102.473m64.375-.195c.175.086.37.23.574.406.199.176.402.38.586.598.187.215.36.438.492.652.133.211.226.407.266.567.019.07.035.168.042.285.012.113.02.25.024.398.004.145 0 .301-.004.457a8.875 8.875 0 0 1-.023.461 3.545 3.545 0 0 1-.774 1.953 3.866 3.866 0 0 1-3.625 1.368 3.584 3.584 0 0 1-1.883-.95 4.289 4.289 0 0 1-.55-.609 2.827 2.827 0 0 1-.352-.637 3.475 3.475 0 0 1-.188-.746 6.793 6.793 0 0 1-.054-.941c0-.352.027-.672.082-.961.05-.293.137-.555.25-.797.117-.242.265-.465.449-.676.188-.21.406-.41.668-.601.25-.188.547-.328.879-.434a4.168 4.168 0 0 1 1.05-.187c.364-.024.735 0 1.09.066.36.062.7.176 1 .328m-31.93.473c.177.125.368.328.556.57.183.242.367.531.527.824.16.293.297.598.394.88a2.5 2.5 0 0 1 .16.737c0 .258-.074.567-.206.895a5.551 5.551 0 0 1-.54.996 6 6 0 0 1-.742.906c-.265.27-.547.489-.816.63a2.93 2.93 0 0 1-1.024.3 3.709 3.709 0 0 1-1.117-.047 3.928 3.928 0 0 1-1.066-.37 3.194 3.194 0 0 1-.871-.669 4.034 4.034 0 0 1-.68-1.012 4.028 4.028 0 0 1-.355-1.12 3.802 3.802 0 0 1-.012-1.153 3.5 3.5 0 0 1 .344-1.094c.187-.363.375-.664.586-.91.21-.242.441-.43.71-.57.266-.14.57-.23.922-.282a6.496 6.496 0 0 1 1.239-.046c.254.011.472.027.664.046.195.024.363.055.515.098a2.284 2.284 0 0 1 .813.39"/></svg>%0A';
312
+
313
+ // src/primitives/BrandMark.tsx
314
+ import { jsx as jsx5 } from "react/jsx-runtime";
315
+ var mask = (url) => ({
316
+ WebkitMask: `url('${url}') center / contain no-repeat`,
317
+ mask: `url('${url}') center / contain no-repeat`
318
+ });
319
+ var MASKS = { mark: mask(mark_default), lockup: mask(lockup_horizontal_default) };
320
+ function BrandMark({ variant = "mark", className }) {
321
+ return /* @__PURE__ */ jsx5(
322
+ "span",
323
+ {
324
+ "aria-hidden": "true",
325
+ className: cn(
326
+ "polli:block polli:shrink-0 polli:bg-current",
327
+ className
328
+ ),
329
+ style: MASKS[variant]
330
+ }
331
+ );
332
+ }
333
+
89
334
  // src/primitives/DropdownItem.tsx
90
- import { jsx as jsx3 } from "react/jsx-runtime";
335
+ import { jsx as jsx6 } from "react/jsx-runtime";
91
336
  function DropdownItem({
92
337
  as,
93
338
  className,
@@ -95,13 +340,13 @@ function DropdownItem({
95
340
  ...rest
96
341
  }) {
97
342
  const Component = as || "button";
98
- return /* @__PURE__ */ jsx3(
343
+ return /* @__PURE__ */ jsx6(
99
344
  Component,
100
345
  {
101
346
  ...Component === "button" ? { type: "button" } : void 0,
102
347
  ...rest,
103
348
  className: cn(
104
- "polli-control polli:flex polli:w-full polli:cursor-pointer polli:items-center polli:gap-2 polli:rounded-lg polli:bg-transparent polli:px-3 polli:py-2 polli:text-left polli:text-sm polli:font-medium polli:text-theme-text-base polli:no-underline polli:transition-colors polli:hover:bg-theme-bg-hover polli:focus-visible:bg-theme-bg-hover",
349
+ "polli-control polli:flex polli:w-full polli:cursor-pointer polli:items-center polli:gap-2 polli:rounded-lg polli:bg-transparent polli:px-3 polli:py-2 polli:text-left polli:text-sm polli:font-medium polli:text-theme-text-base polli:no-underline polli:transition-colors polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:focus-visible:bg-theme-bg-hover",
105
350
  className
106
351
  ),
107
352
  children
@@ -113,173 +358,138 @@ function DropdownItem({
113
358
  import { useAuthActions, useAuthState } from "@pollinations/sdk/react";
114
359
 
115
360
  // src/primitives/Button.tsx
116
- import { jsx as jsx4 } from "react/jsx-runtime";
117
- var sizes = {
118
- sm: "polli:px-2 polli:pt-0.5 polli:pb-1",
119
- md: "polli:px-4 polli:pt-1.5 polli:pb-2",
120
- lg: "polli:px-6 polli:py-3"
361
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
362
+ var pillSizes = {
363
+ icon: "polli:h-12 polli:w-12 polli:p-0",
364
+ xs: "polli:h-5 polli:px-1.5 polli:py-0 polli:text-[11px] polli:leading-none",
365
+ sm: "polli:min-h-7 polli:px-2 polli:pt-0.5 polli:pb-1",
366
+ md: "polli:min-h-9 polli:px-4 polli:pt-1.5 polli:pb-2",
367
+ lg: "polli:min-h-12 polli:px-6 polli:py-3 polli:text-base"
368
+ };
369
+ var raisedSizes = {
370
+ icon: "polli:h-12 polli:w-12 polli:p-0",
371
+ xs: "polli:px-2 polli:py-1 polli:text-xs",
372
+ sm: "polli:px-4 polli:py-2 polli:text-sm",
373
+ md: "polli:px-7 polli:py-3.5 polli:text-base",
374
+ lg: "polli:px-8 polli:py-4 polli:text-lg"
375
+ };
376
+ var appearanceClasses = {
377
+ pill: "polli:rounded-full",
378
+ raised: "polli:rounded-xl polli:border-r-[3px] polli:border-b-[3px] polli:border-solid polli:border-theme-text-strong/20 polli:hover:border-theme-text-strong/45"
121
379
  };
122
- var themeClasses = "polli:bg-theme-bg-active polli:text-theme-text-base polli:hover:bg-theme-bg-hover polli:transition-colors";
380
+ var themeClasses = "polli:bg-theme-bg-active polli:text-theme-text-strong polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:transition-colors";
381
+ var outlined = "polli:border polli:border-theme-text-soft polli:bg-theme-bg-active/30 polli:text-theme-text-strong polli:transition-colors polli:[.dark_&]:bg-transparent";
123
382
  var intentClasses = {
124
- danger: "polli:bg-intent-danger-bg-light polli:text-intent-danger-text polli:hover:bg-intent-danger-bg-hover polli:transition-colors"
383
+ brand: `${outlined} polli:hover:bg-theme-bg-active/50 polli:[.dark_&]:hover:bg-theme-text-soft/10`,
384
+ commit: `${outlined} polli:hover:border-theme-bg-active polli:hover:bg-theme-bg-active polli:focus-visible:border-theme-bg-active polli:focus-visible:bg-theme-bg-active polli:[.dark_&]:hover:bg-theme-bg-active polli:[.dark_&]:focus-visible:bg-theme-bg-active`,
385
+ danger: "polli:border polli:border-intent-danger-text polli:bg-intent-danger-bg-light polli:text-intent-danger-text polli:hover:bg-intent-danger-bg-hover polli:focus-visible:bg-intent-danger-bg-hover polli:transition-colors polli:[.dark_&]:bg-transparent polli:[.dark_&]:hover:bg-intent-danger-bg-hover polli:[.dark_&]:focus-visible:bg-intent-danger-bg-hover",
386
+ info: "polli:bg-intent-info-bg-light polli:text-intent-info-text polli:hover:bg-intent-info-bg-hover polli:transition-colors",
387
+ // Secondary actions never take the accent: one step stronger grey on hover.
388
+ neutral: "polli:bg-theme-bg-subtle polli:text-theme-text-base polli:hover:bg-theme-text-muted/25 polli:hover:text-theme-text-strong polli:transition-colors"
125
389
  };
126
390
  var buttonClasses = ({
127
- theme: _theme,
128
391
  intent,
392
+ appearance = "pill",
129
393
  size,
130
394
  className,
131
- disabled
395
+ disabled,
396
+ busy
132
397
  }) => {
133
398
  const colorClasses = intent ? intentClasses[intent] : themeClasses;
399
+ const sizeClasses = appearance === "raised" ? raisedSizes : pillSizes;
134
400
  return cn(
135
- "polli-control polli:inline-flex polli:items-center polli:justify-center polli:rounded-full polli:self-center polli:font-medium polli:leading-normal polli:box-border",
136
- disabled ? "polli:opacity-50 polli:cursor-not-allowed" : "polli:hover:filter polli:hover:brightness-105 polli:cursor-pointer",
401
+ "polli-control polli:inline-flex polli:items-center polli:justify-center polli:self-center polli:font-body polli:text-sm polli:font-medium polli:leading-normal polli:box-border polli:border polli:border-transparent",
402
+ // A busy button is working, not unavailable: it keeps its strength.
403
+ busy ? "polli:cursor-progress" : disabled ? "polli:opacity-50 polli:cursor-not-allowed" : "polli:hover:filter polli:hover:brightness-105 polli:cursor-pointer",
137
404
  colorClasses,
138
- sizes[size || "md"],
405
+ appearanceClasses[appearance],
406
+ sizeClasses[size || "md"],
139
407
  className
140
408
  );
141
409
  };
142
410
  function Button({
143
411
  as,
144
412
  children,
145
- theme,
413
+ icon,
146
414
  intent,
415
+ appearance,
147
416
  size,
148
417
  className,
149
418
  disabled,
150
419
  ...buttonProps
151
420
  }) {
152
421
  const Component = as || "button";
153
- return /* @__PURE__ */ jsx4(
422
+ const isButton = Component === "button";
423
+ const isAnchor = Component === "a";
424
+ const buttonType = buttonProps.type;
425
+ const onClick = buttonProps.onClick;
426
+ const ariaBusy = buttonProps["aria-busy"];
427
+ const busy = ariaBusy === true || ariaBusy === "true";
428
+ const handleClick = disabled ? (event) => {
429
+ event.preventDefault();
430
+ event.stopPropagation();
431
+ } : onClick;
432
+ return /* @__PURE__ */ jsxs4(
154
433
  Component,
155
434
  {
156
- "data-theme": intent ? void 0 : theme,
435
+ ...buttonProps,
157
436
  "data-intent": intent,
437
+ ...isButton ? { type: buttonType ?? "button", disabled } : {},
438
+ ...!isButton && disabled ? { "aria-disabled": true, tabIndex: -1 } : {},
439
+ ...isAnchor && disabled ? { href: void 0 } : {},
440
+ onClick: handleClick,
158
441
  className: buttonClasses({
159
- theme,
160
442
  intent,
443
+ appearance,
161
444
  size,
162
445
  className,
163
- disabled
446
+ disabled,
447
+ busy
164
448
  }),
165
- disabled,
166
- ...buttonProps,
167
- children
449
+ children: [
450
+ icon && /* @__PURE__ */ jsx7(
451
+ "span",
452
+ {
453
+ "aria-hidden": "true",
454
+ className: "polli:mr-2 polli:flex polli:size-4 polli:shrink-0 polli:[&>svg]:size-full",
455
+ children: busy ? /* @__PURE__ */ jsx7("span", { className: "polli:block polli:size-full polli:animate-spin polli:rounded-full polli:border-2 polli:border-current polli:border-r-transparent polli:motion-reduce:animate-none" }) : icon
456
+ }
457
+ ),
458
+ children
459
+ ]
168
460
  }
169
461
  );
170
462
  }
171
463
 
172
464
  // src/modules/auth/LoginButton.tsx
173
- import { jsx as jsx5 } from "react/jsx-runtime";
465
+ import { jsx as jsx8 } from "react/jsx-runtime";
174
466
  function LoginButton({ children, ...buttonProps }) {
175
467
  const { isLoggedIn } = useAuthState();
176
468
  const { login } = useAuthActions();
177
469
  if (isLoggedIn) return null;
178
- return /* @__PURE__ */ jsx5(Button, { ...buttonProps, onClick: () => login(), children });
470
+ return /* @__PURE__ */ jsx8(Button, { ...buttonProps, onClick: () => login(), children });
179
471
  }
180
472
 
181
- // src/modules/auth/UserAvatar.tsx
182
- import { useAccountProfile, useAuthState as useAuthState2 } from "@pollinations/sdk/react";
183
- import { jsx as jsx6 } from "react/jsx-runtime";
184
- var sizeClass = {
185
- sm: "polli:w-6 polli:h-6 polli:text-xs",
186
- md: "polli:w-9 polli:h-9 polli:text-sm",
187
- lg: "polli:w-12 polli:h-12 polli:text-base"
188
- };
189
- function initials(name) {
190
- const parts = name.trim().split(/\s+/).filter(Boolean);
191
- if (parts.length === 0) return null;
192
- if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase() || null;
193
- const first = parts[0][0] ?? "";
194
- const last = parts[parts.length - 1][0] ?? "";
195
- return (first + last).toUpperCase() || null;
196
- }
197
- function UserAvatar({ size = "md", className }) {
198
- const { isLoggedIn } = useAuthState2();
199
- const { data: profile } = useAccountProfile({ enabled: isLoggedIn });
200
- if (!isLoggedIn) return null;
201
- const base = cn(
202
- "polli:inline-flex polli:items-center polli:justify-center polli:rounded-full polli:overflow-hidden polli:bg-theme-bg-pale polli:text-theme-text-strong polli:font-semibold polli:select-none",
203
- sizeClass[size],
204
- className
205
- );
206
- if (profile?.image) {
207
- return /* @__PURE__ */ jsx6(
208
- "img",
209
- {
210
- "data-polli": "user-avatar",
211
- src: profile.image,
212
- alt: profile.name ?? "",
213
- className: base
214
- }
215
- );
216
- }
217
- const label = profile?.name ? initials(profile.name) : null;
218
- if (!label) return null;
219
- return /* @__PURE__ */ jsx6(
220
- "div",
221
- {
222
- "data-polli": "user-avatar",
223
- role: "img",
224
- "aria-label": profile?.name ?? void 0,
225
- className: base,
226
- children: label
227
- }
228
- );
229
- }
230
-
231
- // src/modules/auth/UserName.tsx
232
- import { useAccountProfile as useAccountProfile2, useAuthState as useAuthState3 } from "@pollinations/sdk/react";
233
- import { jsx as jsx7 } from "react/jsx-runtime";
234
- function UserName({ className }) {
235
- const { isLoggedIn } = useAuthState3();
236
- const { data: profile } = useAccountProfile2({ enabled: isLoggedIn });
237
- if (!isLoggedIn || !profile) return null;
238
- const display = profile.name || profile.githubUsername;
239
- if (!display) return null;
240
- return /* @__PURE__ */ jsx7("span", { "data-polli": "user-name", className, children: display });
241
- }
242
-
243
- // src/modules/auth/WhenLoggedIn.tsx
244
- import { useAuthState as useAuthState4 } from "@pollinations/sdk/react";
245
- import { Fragment } from "react";
246
- import { jsx as jsx8 } from "react/jsx-runtime";
247
- function WhenLoggedIn({ children }) {
248
- const { isLoggedIn } = useAuthState4();
249
- if (!isLoggedIn) return null;
250
- return /* @__PURE__ */ jsx8(Fragment, { children });
251
- }
252
-
253
- // src/modules/auth/WhenLoggedOut.tsx
254
- import { useAuthState as useAuthState5 } from "@pollinations/sdk/react";
255
- import { Fragment as Fragment2 } from "react";
256
- import { jsx as jsx9 } from "react/jsx-runtime";
257
- function WhenLoggedOut({ children }) {
258
- const { isLoggedIn } = useAuthState5();
259
- if (isLoggedIn) return null;
260
- return /* @__PURE__ */ jsx9(Fragment2, { children });
261
- }
262
-
263
- // src/modules/wallet/Balance.tsx
264
- import { useAccountBalance, useAuthState as useAuthState6 } from "@pollinations/sdk/react";
265
-
266
473
  // src/primitives/Chip.tsx
267
- import { jsx as jsx10 } from "react/jsx-runtime";
474
+ import { jsx as jsx9 } from "react/jsx-runtime";
268
475
  var chipSizes = {
269
- sm: "polli:px-2 polli:py-0.5 polli:text-xs",
270
- md: "polli:px-2.5 polli:py-0.5 polli:text-sm",
271
- lg: "polli:px-3 polli:py-1 polli:text-sm"
476
+ icon: "polli:h-5 polli:w-5 polli:p-0 polli:text-xs",
477
+ sm: "polli:h-5 polli:px-2 polli:text-xs",
478
+ md: "polli:h-6 polli:px-2.5 polli:text-sm",
479
+ lg: "polli:h-7 polli:px-3 polli:text-sm"
272
480
  };
273
481
  var intentClasses2 = {
274
482
  news: "polli:bg-intent-news-bg-light polli:text-intent-news-text",
483
+ new: "polli:bg-intent-new-bg-light polli:text-intent-new-text",
484
+ free: "polli:bg-intent-free-bg-light polli:text-intent-free-text",
275
485
  alpha: "polli:bg-intent-alpha-bg-light polli:text-intent-alpha-text",
276
486
  neutral: "polli:bg-ink-100/80 polli:text-ink-900",
277
- success: "polli:bg-intent-success-bg-light polli:text-intent-success-text",
487
+ success: "polli:bg-intent-success-bg-bright/15 polli:text-intent-success-text",
278
488
  warning: "polli:bg-intent-warning-bg-light polli:text-intent-warning-text",
489
+ info: "polli:bg-intent-info-bg-light polli:text-intent-info-text",
279
490
  danger: "polli:bg-intent-danger-bg-light polli:text-intent-danger-text"
280
491
  };
281
492
  var Chip = ({
282
- theme,
283
493
  intent,
284
494
  size = "md",
285
495
  className,
@@ -287,13 +497,12 @@ var Chip = ({
287
497
  ...rest
288
498
  }) => {
289
499
  const intentClass = intent ? intentClasses2[intent] : "polli:bg-theme-bg-active polli:text-theme-text-strong";
290
- return /* @__PURE__ */ jsx10(
500
+ return /* @__PURE__ */ jsx9(
291
501
  "span",
292
502
  {
293
503
  ...rest,
294
- "data-theme": theme,
295
504
  className: cn(
296
- "polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-normal",
505
+ "polli:inline-flex polli:shrink-0 polli:items-center polli:justify-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-none",
297
506
  chipSizes[size],
298
507
  intentClass,
299
508
  className
@@ -303,6 +512,55 @@ var Chip = ({
303
512
  );
304
513
  };
305
514
 
515
+ // src/lib/link.ts
516
+ function isExternalHref(href, origin = globalThis.location?.origin) {
517
+ if (typeof href !== "string" || !/^(https?:)?\/\//i.test(href))
518
+ return false;
519
+ if (!origin) return true;
520
+ try {
521
+ return new URL(href, origin).origin !== origin;
522
+ } catch {
523
+ return false;
524
+ }
525
+ }
526
+
527
+ // src/primitives/InlineLink.tsx
528
+ import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
529
+ function InlineLink({
530
+ as,
531
+ external,
532
+ showIcon = true,
533
+ size = "inherit",
534
+ tone = "accent",
535
+ className,
536
+ children,
537
+ ...linkProps
538
+ }) {
539
+ const Component = as || "a";
540
+ const isExternal = external ?? isExternalHref(linkProps.href);
541
+ return /* @__PURE__ */ jsxs5(
542
+ Component,
543
+ {
544
+ target: isExternal && as !== "button" ? "_blank" : void 0,
545
+ rel: isExternal && as !== "button" ? "noopener noreferrer" : void 0,
546
+ className: ["polli-link", className].filter(Boolean).join(" "),
547
+ "data-size": size,
548
+ "data-tone": tone,
549
+ ...linkProps,
550
+ children: [
551
+ children,
552
+ showIcon && isExternal && /* @__PURE__ */ jsx10(
553
+ ExternalLinkIcon,
554
+ {
555
+ "aria-hidden": "true",
556
+ className: "polli-link-external-icon"
557
+ }
558
+ )
559
+ ]
560
+ }
561
+ );
562
+ }
563
+
306
564
  // src/modules/wallet/format-pollen.ts
307
565
  var BUDGET = 5;
308
566
  var MAX_DECIMALS = 4;
@@ -332,138 +590,343 @@ function formatPollen(value) {
332
590
  return Number(floored.toFixed(decimals)).toString();
333
591
  }
334
592
 
335
- // src/modules/wallet/Balance.tsx
336
- import { jsxs as jsxs2 } from "react/jsx-runtime";
337
- function Balance({ className } = {}) {
338
- const { isLoggedIn } = useAuthState6();
339
- const { data: balance } = useAccountBalance({ enabled: isLoggedIn });
340
- if (!isLoggedIn || balance == null) return null;
341
- return /* @__PURE__ */ jsxs2(
593
+ // src/modules/wallet/wallet-display.tsx
594
+ import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
595
+ var walletTextClasses = {
596
+ paid: "polli-wallet-text-paid",
597
+ tier: "polli-wallet-text-tier"
598
+ };
599
+ var walletKindIcons = {
600
+ paid: CardIcon,
601
+ tier: SproutIcon
602
+ };
603
+ var WalletKindIcon = ({
604
+ kind,
605
+ className
606
+ }) => {
607
+ const Icon = walletKindIcons[kind];
608
+ return /* @__PURE__ */ jsx11(
609
+ Icon,
610
+ {
611
+ "aria-hidden": "true",
612
+ className: cn(
613
+ "polli:h-3.5 polli:w-3.5 polli:shrink-0",
614
+ walletTextClasses[kind],
615
+ className
616
+ )
617
+ }
618
+ );
619
+ };
620
+
621
+ // src/modules/wallet/AccountPollen.tsx
622
+ import { Fragment, jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
623
+ function isEmpty(amount) {
624
+ return amount != null && amount <= 0;
625
+ }
626
+ var labels = {
627
+ "limit-reached": "Limit reached",
628
+ "no-pollen": "No Pollen",
629
+ unlimited: "Unlimited"
630
+ };
631
+ function PollenStatusBadge({
632
+ state,
633
+ topUpHref
634
+ }) {
635
+ const Icon = state === "no-pollen" ? WalletIcon : KeyIcon;
636
+ const label = labels[state];
637
+ return /* @__PURE__ */ jsxs7(
342
638
  Chip,
343
639
  {
344
- "data-polli": "balance",
345
- className: cn("polli:tabular-nums", className),
640
+ size: "sm",
641
+ intent: state === "unlimited" ? "info" : "danger",
642
+ "aria-label": label,
346
643
  children: [
347
- formatPollen(balance.balance),
348
- " pollen"
644
+ /* @__PURE__ */ jsx12(
645
+ Icon,
646
+ {
647
+ "aria-hidden": "true",
648
+ className: "polli:h-3.5 polli:w-3.5 polli:shrink-0"
649
+ }
650
+ ),
651
+ label,
652
+ state === "no-pollen" && topUpHref && /* @__PURE__ */ jsxs7(Fragment, { children: [
653
+ /* @__PURE__ */ jsx12("span", { "aria-hidden": "true", children: "\xB7" }),
654
+ /* @__PURE__ */ jsx12(
655
+ InlineLink,
656
+ {
657
+ href: topUpHref,
658
+ "aria-label": `${label}. Top up`,
659
+ children: "Top up"
660
+ }
661
+ )
662
+ ] })
349
663
  ]
350
664
  }
351
665
  );
352
666
  }
667
+ function AccountPollen({
668
+ source,
669
+ topUpHref
670
+ }) {
671
+ if (source.type === "budget") {
672
+ if (source.generationEnabled === false) return null;
673
+ const unlimited = source.remaining === null;
674
+ if (!unlimited && source.remaining === void 0) return null;
675
+ if (unlimited) return /* @__PURE__ */ jsx12(PollenStatusBadge, { state: "unlimited" });
676
+ const remaining = source.remaining;
677
+ if (isEmpty(remaining))
678
+ return /* @__PURE__ */ jsx12(PollenStatusBadge, { state: "limit-reached" });
679
+ return /* @__PURE__ */ jsxs7(
680
+ "span",
681
+ {
682
+ title: "App budget left",
683
+ className: "polli:inline-flex polli:items-center polli:gap-1 polli:tabular-nums",
684
+ children: [
685
+ /* @__PURE__ */ jsx12(
686
+ KeyIcon,
687
+ {
688
+ "aria-hidden": "true",
689
+ className: "polli:h-3.5 polli:w-3.5 polli:shrink-0"
690
+ }
691
+ ),
692
+ /* @__PURE__ */ jsx12("span", { className: "polli:sr-only", children: "App budget: " }),
693
+ formatPollen(remaining),
694
+ " pollen"
695
+ ]
696
+ }
697
+ );
698
+ }
699
+ const { balances } = source;
700
+ if (!balances) return null;
701
+ if (isEmpty(balances.paid) && isEmpty(balances.quest))
702
+ return /* @__PURE__ */ jsx12(PollenStatusBadge, { state: "no-pollen", topUpHref });
703
+ return /* @__PURE__ */ jsx12("span", { className: "polli:inline-flex polli:items-center polli:gap-2 polli:tabular-nums", children: ["quest", "paid"].map((kind) => {
704
+ const amount = balances[kind];
705
+ return /* @__PURE__ */ jsxs7(
706
+ "span",
707
+ {
708
+ className: "polli:inline-flex polli:items-center polli:gap-1",
709
+ children: [
710
+ /* @__PURE__ */ jsx12(
711
+ WalletKindIcon,
712
+ {
713
+ kind: kind === "paid" ? "paid" : "tier"
714
+ }
715
+ ),
716
+ /* @__PURE__ */ jsxs7("span", { className: "polli:sr-only", children: [
717
+ kind === "paid" ? "Paid" : "Quest",
718
+ " Pollen:",
719
+ " "
720
+ ] }),
721
+ formatPollen(Math.max(0, amount))
722
+ ]
723
+ },
724
+ kind
725
+ );
726
+ }) });
727
+ }
353
728
 
354
729
  // src/modules/app-user-menu/AppUserMenu.tsx
355
- import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
730
+ import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
356
731
  var defaultLabels = {
357
- authorize: "Authorize app",
732
+ authorize: "Pollinations Connect",
358
733
  appUserMenu: "App user menu",
359
- topUpAccount: "Top up account",
360
- logout: "Log out from this app"
734
+ permissions: "Permissions",
735
+ buyPollen: "Buy Pollen",
736
+ logout: "Disconnect"
361
737
  };
362
- function isEmbeddedContext(embedQueryParam = "embed") {
363
- if (typeof window === "undefined") return false;
364
- const search = new URLSearchParams(window.location.search);
365
- if (search.get(embedQueryParam) === "1") return true;
366
- try {
367
- return window.self !== window.top;
368
- } catch {
369
- return true;
738
+ var CONNECT_SIZES = {
739
+ md: {
740
+ button: "polli:h-10",
741
+ cell: "polli:w-10",
742
+ mark: "polli:h-6 polli:w-6",
743
+ label: "polli:px-3"
744
+ },
745
+ lg: {
746
+ button: "polli:h-12 polli:text-base",
747
+ cell: "polli:w-12",
748
+ mark: "polli:h-7 polli:w-7",
749
+ label: "polli:px-4"
370
750
  }
371
- }
751
+ };
372
752
  function AppUserMenu({
373
753
  dashboardHref,
374
- labels: labelOverrides,
375
- hiddenWhenEmbedded = false,
376
- embedQueryParam = "embed"
754
+ connectSize = "md",
755
+ labels: labelOverrides
377
756
  }) {
378
- if (hiddenWhenEmbedded && isEmbeddedContext(embedQueryParam)) return null;
379
- return /* @__PURE__ */ jsx11(
380
- AppUserMenuContent,
757
+ const labels2 = { ...defaultLabels, ...labelOverrides };
758
+ const size = CONNECT_SIZES[connectSize];
759
+ const { logout, enterUrl } = useAuthActions2();
760
+ const { isLoggedIn } = useAuthState2();
761
+ const profile = useAccountProfile({ enabled: isLoggedIn });
762
+ const key = useAccountKey({ enabled: isLoggedIn });
763
+ const canReadWallet = key.data?.pollenBudget === null && (key.data.permissions?.account?.includes("usage") ?? false);
764
+ const balance = useAccountBalance({
765
+ enabled: isLoggedIn && canReadWallet
766
+ });
767
+ const wallet = balance.data?.accountBalance;
768
+ useEffect(() => {
769
+ if (!isLoggedIn) return;
770
+ const onVisible = () => {
771
+ if (document.visibilityState !== "visible") return;
772
+ void key.refresh();
773
+ void balance.refresh();
774
+ };
775
+ document.addEventListener("visibilitychange", onVisible);
776
+ return () => document.removeEventListener("visibilitychange", onVisible);
777
+ }, [isLoggedIn, key.refresh, balance.refresh]);
778
+ const returnUrl = typeof window === "undefined" ? void 0 : window.location.href;
779
+ const topUpUrl = new URL("/top-up", enterUrl);
780
+ if (returnUrl) topUpUrl.searchParams.set("redirect", returnUrl);
781
+ const keyId = key.data?.id;
782
+ let editKeyUrl;
783
+ if (keyId) {
784
+ editKeyUrl = new URL("/edit-key", enterUrl);
785
+ editKeyUrl.searchParams.set("id", keyId);
786
+ if (returnUrl) editKeyUrl.searchParams.set("redirect", returnUrl);
787
+ }
788
+ let pollenSource;
789
+ if (key.data && key.data.pollenBudget !== null) {
790
+ pollenSource = {
791
+ type: "budget",
792
+ remaining: key.data.pollenBudget,
793
+ generationEnabled: key.data.permissions?.models?.length !== 0
794
+ };
795
+ } else if (wallet) {
796
+ pollenSource = {
797
+ type: "wallet",
798
+ balances: { paid: wallet.paid, quest: wallet.tier }
799
+ };
800
+ } else if (key.data && !canReadWallet) {
801
+ pollenSource = { type: "budget", remaining: null };
802
+ }
803
+ return /* @__PURE__ */ jsx13(
804
+ "div",
381
805
  {
382
- dashboardHref,
383
- labels: labelOverrides
806
+ "data-theme": "accent",
807
+ className: "polli:flex polli:shrink-0 polli:justify-end",
808
+ children: !isLoggedIn ? /* @__PURE__ */ jsxs8(
809
+ LoginButton,
810
+ {
811
+ className: cn(
812
+ "polli:gap-0 polli:overflow-hidden polli:border polli:border-theme-bg-active polli:bg-surface-white polli:p-0 polli:text-theme-text-strong polli:whitespace-nowrap polli:hover:bg-surface-white polli:[.dark_&]:bg-transparent polli:[.dark_&]:hover:bg-transparent",
813
+ size.button
814
+ ),
815
+ children: [
816
+ /* @__PURE__ */ jsx13(
817
+ "span",
818
+ {
819
+ "aria-hidden": "true",
820
+ className: cn(
821
+ "polli:flex polli:h-full polli:shrink-0 polli:items-center polli:justify-center polli:bg-theme-bg-active",
822
+ size.cell
823
+ ),
824
+ children: /* @__PURE__ */ jsx13(
825
+ BrandMark,
826
+ {
827
+ className: cn(
828
+ "polli:relative polli:-top-px polli:left-px",
829
+ size.mark
830
+ )
831
+ }
832
+ )
833
+ }
834
+ ),
835
+ /* @__PURE__ */ jsx13("span", { className: size.label, children: labels2.authorize })
836
+ ]
837
+ }
838
+ ) : /* @__PURE__ */ jsx13(
839
+ AccountMenu,
840
+ {
841
+ name: profile.data?.name || profile.data?.githubUsername || "Connected user",
842
+ avatarUrl: profile.data?.image,
843
+ dashboardHref: dashboardHref ?? new URL("/pollen", enterUrl).href,
844
+ menuLabel: labels2.appUserMenu,
845
+ className: "polli:max-w-80",
846
+ secondaryContent: pollenSource ? /* @__PURE__ */ jsx13(AccountPollen, { source: pollenSource }) : void 0,
847
+ children: (close) => /* @__PURE__ */ jsxs8(Fragment2, { children: [
848
+ editKeyUrl && /* @__PURE__ */ jsxs8(
849
+ DropdownItem,
850
+ {
851
+ as: "a",
852
+ href: editKeyUrl.href,
853
+ target: "_blank",
854
+ rel: "noopener noreferrer",
855
+ onClick: close,
856
+ children: [
857
+ /* @__PURE__ */ jsx13(
858
+ KeyIcon,
859
+ {
860
+ className: "polli:h-4 polli:w-4 polli:shrink-0",
861
+ "aria-hidden": "true"
862
+ }
863
+ ),
864
+ labels2.permissions,
865
+ /* @__PURE__ */ jsx13(
866
+ ExternalLinkIcon,
867
+ {
868
+ className: "polli:ml-auto polli:h-3.5 polli:w-3.5 polli:shrink-0",
869
+ "aria-hidden": "true"
870
+ }
871
+ )
872
+ ]
873
+ }
874
+ ),
875
+ /* @__PURE__ */ jsxs8(
876
+ DropdownItem,
877
+ {
878
+ as: "a",
879
+ href: topUpUrl.href,
880
+ target: "_blank",
881
+ rel: "noopener noreferrer",
882
+ onClick: close,
883
+ children: [
884
+ /* @__PURE__ */ jsx13(
885
+ WalletIcon,
886
+ {
887
+ className: "polli:h-4 polli:w-4 polli:shrink-0",
888
+ "aria-hidden": "true"
889
+ }
890
+ ),
891
+ labels2.buyPollen,
892
+ /* @__PURE__ */ jsx13(
893
+ ExternalLinkIcon,
894
+ {
895
+ className: "polli:ml-auto polli:h-3.5 polli:w-3.5 polli:shrink-0",
896
+ "aria-hidden": "true"
897
+ }
898
+ )
899
+ ]
900
+ }
901
+ ),
902
+ /* @__PURE__ */ jsxs8(
903
+ DropdownItem,
904
+ {
905
+ type: "button",
906
+ className: "polli:justify-start polli:text-left",
907
+ onClick: () => {
908
+ close();
909
+ logout();
910
+ },
911
+ children: [
912
+ /* @__PURE__ */ jsx13(
913
+ PowerIcon,
914
+ {
915
+ className: "polli:h-4 polli:w-4 polli:shrink-0",
916
+ "aria-hidden": "true"
917
+ }
918
+ ),
919
+ labels2.logout
920
+ ]
921
+ }
922
+ )
923
+ ] })
924
+ }
925
+ )
384
926
  }
385
927
  );
386
928
  }
387
- function AppUserMenuContent({
388
- dashboardHref,
389
- labels: labelOverrides
390
- }) {
391
- const labels = { ...defaultLabels, ...labelOverrides };
392
- const { logout } = useAuthActions2();
393
- return /* @__PURE__ */ jsxs3("div", { "data-theme": "amber", className: "polli:flex polli:justify-end", children: [
394
- /* @__PURE__ */ jsx11(WhenLoggedOut, { children: /* @__PURE__ */ jsx11(LoginButton, { theme: "amber", children: labels.authorize }) }),
395
- /* @__PURE__ */ jsx11(WhenLoggedIn, { children: /* @__PURE__ */ jsx11(
396
- Dropdown,
397
- {
398
- theme: "amber",
399
- align: "end",
400
- className: "polli:w-64 polli:p-1",
401
- trigger: (open) => /* @__PURE__ */ jsxs3(
402
- "button",
403
- {
404
- type: "button",
405
- "data-theme": "amber",
406
- "aria-label": labels.appUserMenu,
407
- className: "polli-control polli:flex polli:min-w-0 polli:items-center polli:gap-2 polli:rounded-full polli:bg-theme-bg-active polli:py-1 polli:pl-1 polli:pr-3 polli:text-theme-text-base polli:shadow-sm polli:transition-colors polli:hover:bg-theme-bg-hover",
408
- children: [
409
- /* @__PURE__ */ jsx11(
410
- UserAvatar,
411
- {
412
- size: "md",
413
- className: "polli:h-8 polli:w-8"
414
- }
415
- ),
416
- /* @__PURE__ */ jsxs3("span", { className: "polli:flex polli:min-w-0 polli:flex-col polli:items-start polli:leading-tight", children: [
417
- /* @__PURE__ */ jsx11(UserName, { className: "polli:max-w-32 polli:truncate polli:text-sm polli:font-semibold" }),
418
- /* @__PURE__ */ jsx11(Balance, { className: "polli:bg-transparent polli:px-0 polli:py-0 polli:text-xs polli:text-theme-text-base" })
419
- ] }),
420
- /* @__PURE__ */ jsx11(
421
- ChevronIcon,
422
- {
423
- expanded: open,
424
- className: "polli:h-4 polli:w-4 polli:text-theme-text-base"
425
- }
426
- )
427
- ]
428
- }
429
- ),
430
- children: (close) => /* @__PURE__ */ jsxs3(
431
- "div",
432
- {
433
- "data-theme": "amber",
434
- className: "polli:flex polli:flex-col",
435
- children: [
436
- /* @__PURE__ */ jsx11(
437
- DropdownItem,
438
- {
439
- as: "a",
440
- href: dashboardHref,
441
- target: "_blank",
442
- rel: "noopener noreferrer",
443
- onClick: close,
444
- children: labels.topUpAccount
445
- }
446
- ),
447
- /* @__PURE__ */ jsx11(
448
- DropdownItem,
449
- {
450
- type: "button",
451
- onClick: () => {
452
- close();
453
- logout();
454
- },
455
- children: labels.logout
456
- }
457
- )
458
- ]
459
- }
460
- )
461
- }
462
- ) })
463
- ] });
464
- }
465
929
  export {
466
- AppUserMenu,
467
- isEmbeddedContext
930
+ AppUserMenu
468
931
  };
469
932
  //# sourceMappingURL=sdk.js.map