@pollinations/ui 0.0.1 → 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -16
- package/dist/{Button-DMJ2K6Gr.d.ts → Button-BvLF_Km2.d.cts} +4 -4
- package/dist/{Button-CNzpisJf.d.cts → Button-DQAZzvyQ.d.ts} +4 -4
- package/dist/{Chip-BS8ronOu.d.ts → Chip-C5impfYd.d.ts} +2 -2
- package/dist/{Chip-DyqWrq0r.d.cts → Chip-SM52sUbZ.d.cts} +2 -2
- package/dist/app.css +1 -1
- package/dist/auth/index.cjs +78 -71
- package/dist/auth/index.cjs.map +1 -1
- package/dist/auth/index.d.cts +1 -2
- package/dist/auth/index.d.ts +1 -2
- package/dist/auth/index.js +78 -71
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/sdk.cjs +7 -6
- package/dist/auth/sdk.cjs.map +1 -1
- package/dist/auth/sdk.d.cts +2 -2
- package/dist/auth/sdk.d.ts +2 -2
- package/dist/auth/sdk.js +7 -6
- package/dist/auth/sdk.js.map +1 -1
- package/dist/compositions/app-user.cjs +497 -0
- package/dist/compositions/app-user.cjs.map +1 -0
- package/dist/compositions/app-user.d.cts +18 -0
- package/dist/compositions/app-user.d.ts +18 -0
- package/dist/compositions/app-user.js +469 -0
- package/dist/compositions/app-user.js.map +1 -0
- package/dist/index.cjs +1151 -312
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +146 -13
- package/dist/index.d.ts +146 -13
- package/dist/index.js +1109 -295
- package/dist/index.js.map +1 -1
- package/dist/modality/index.cjs +27 -56
- package/dist/modality/index.cjs.map +1 -1
- package/dist/modality/index.d.cts +13 -32
- package/dist/modality/index.d.ts +13 -32
- package/dist/modality/index.js +27 -55
- package/dist/modality/index.js.map +1 -1
- package/dist/models/index.cjs +508 -0
- package/dist/models/index.cjs.map +1 -0
- package/dist/models/index.d.cts +22 -0
- package/dist/models/index.d.ts +22 -0
- package/dist/models/index.js +486 -0
- package/dist/models/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/theme-VMRlhqST.d.cts +9 -0
- package/dist/theme-VMRlhqST.d.ts +9 -0
- package/dist/wallet/index.cjs +17 -5
- package/dist/wallet/index.cjs.map +1 -1
- package/dist/wallet/index.d.cts +2 -2
- package/dist/wallet/index.d.ts +2 -2
- package/dist/wallet/index.js +17 -5
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/sdk.cjs +6 -3
- package/dist/wallet/sdk.cjs.map +1 -1
- package/dist/wallet/sdk.js +6 -3
- package/dist/wallet/sdk.js.map +1 -1
- package/package.json +17 -10
- package/dist/showcase/index.cjs +0 -2851
- package/dist/showcase/index.cjs.map +0 -1
- package/dist/showcase/index.d.cts +0 -19
- package/dist/showcase/index.d.ts +0 -19
- package/dist/showcase/index.js +0 -2839
- package/dist/showcase/index.js.map +0 -1
- package/dist/theme-DfHMjWB7.d.cts +0 -16
- package/dist/theme-DfHMjWB7.d.ts +0 -16
- package/dist/wallet.css +0 -73
package/README.md
CHANGED
|
@@ -6,8 +6,15 @@ core primitives and display recipes stay SDK-free.
|
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
+
> [!WARNING]
|
|
10
|
+
> **The `alpha` line (`0.1.0-alpha.x`) is unstable and breakage-prone.** It ships the in-progress design-system rebuild (new `--polli-color-*` token system, new primitives, renamed size props `sm|md|lg`) and its API may change between alpha versions without notice. The stable `latest` line is `0.0.2`. Opt into the alpha deliberately, and pin an exact version.
|
|
11
|
+
|
|
9
12
|
```bash
|
|
13
|
+
# stable (recommended)
|
|
10
14
|
npm install @pollinations/ui
|
|
15
|
+
|
|
16
|
+
# alpha (in-progress rebuild — pin exactly)
|
|
17
|
+
npm install @pollinations/ui@alpha
|
|
11
18
|
```
|
|
12
19
|
|
|
13
20
|
Install `@pollinations/sdk` too when using `@pollinations/ui/*/sdk`
|
|
@@ -87,11 +94,8 @@ The SVG sources use `currentColor`. Apps control the rendered color by inlining
|
|
|
87
94
|
them or using them as masks. Root-level favicon, PWA icon, and SEO files stay
|
|
88
95
|
app-owned.
|
|
89
96
|
|
|
90
|
-
Wallet
|
|
91
|
-
|
|
92
|
-
```css
|
|
93
|
-
@import "@pollinations/ui/wallet.css";
|
|
94
|
-
```
|
|
97
|
+
Wallet colors and utilities are bundled into the main stylesheet
|
|
98
|
+
(`@pollinations/ui/styles.css`) — no separate import needed.
|
|
95
99
|
|
|
96
100
|
## What's exported
|
|
97
101
|
|
|
@@ -109,22 +113,21 @@ Wallet-specific colors and utilities live in a separate stylesheet:
|
|
|
109
113
|
These are intentionally bare wrappers around `useAuth*` hooks. They render
|
|
110
114
|
the data and nothing else — no default copy, no default theme, no default
|
|
111
115
|
intent. The app composes layout, copy, and color.
|
|
112
|
-
- `@pollinations/ui/showcase` exports `DesignShowcase`, a package-owned
|
|
113
|
-
internal preview surface for rendering primitives and tokens together.
|
|
114
116
|
- `@pollinations/ui/wallet` exports SDK-free wallet-specific display helpers
|
|
115
117
|
and recipes: `formatPollen`, `PaidChip`, `TierChip`, `WalletDot`,
|
|
116
118
|
`WalletBalanceCard`, `PAID_BALANCE_CHART_COLOR`, and
|
|
117
119
|
`TIER_BALANCE_CHART_COLOR`.
|
|
118
120
|
- `@pollinations/ui/wallet/sdk` exports SDK-backed wallet components:
|
|
119
121
|
`Balance`, `KeyBudget`, `KeyExpiry`, `KeyModels`, and `KeyPrefix`.
|
|
120
|
-
- `@pollinations/ui/modality` exports model-modality color recipes
|
|
121
|
-
`ModalityButton`.
|
|
122
|
+
- `@pollinations/ui/modality` exports model-modality color recipes.
|
|
122
123
|
- `@pollinations/ui/assets/*` exports canonical Pollinations source SVGs:
|
|
123
124
|
`logo.svg` and `logo-wordmark.svg`.
|
|
124
|
-
- **Design primitives** — `Button`, `
|
|
125
|
-
`CopyButton`, `Dialog`, `Dropdown`, `ExternalLinkButton`,
|
|
126
|
-
`InfoTip`, `Input`, `MultiSelect`, `PeriodPicker`,
|
|
127
|
-
`
|
|
125
|
+
- **Design primitives** — `Alert`, `Button`, `ButtonGroup`, `Chip`, `ChevronIcon`,
|
|
126
|
+
`Collapsible`, `CopyButton`, `Dialog`, `Dropdown`, `ExternalLinkButton`,
|
|
127
|
+
`IconButton`, `InfoTip`, `Input`, `MultiSelect`, `PeriodPicker`,
|
|
128
|
+
`ScrollArea`, `Section`, `Slider`, `StatCard`, `Surface`, `Switch`,
|
|
129
|
+
`Table`, `TableBody`, `TableCell`, `TableHead`, `TableHeaderCell`,
|
|
130
|
+
`TableRow`, `TabButton`, `Tooltip`.
|
|
128
131
|
- **Helpers** — `cn`, `useScrollLock`, `currentPeriod`,
|
|
129
132
|
`getPeriodBucketKeys`, `periodBucketKeyToDate`.
|
|
130
133
|
- **Theme** — `themes` (runtime array of theme names), `ThemeName` (type).
|
|
@@ -140,8 +143,8 @@ from `@pollinations/sdk/react` (`useAccountKeyUsage`, `useAccountKey`,
|
|
|
140
143
|
such as auth, wallet, and modality.
|
|
141
144
|
- Public subpath exports (`@pollinations/ui/auth`,
|
|
142
145
|
`@pollinations/ui/auth/sdk`, `@pollinations/ui/wallet`,
|
|
143
|
-
`@pollinations/ui/wallet/sdk`, `@pollinations/ui/modality
|
|
144
|
-
|
|
146
|
+
`@pollinations/ui/wallet/sdk`, `@pollinations/ui/modality`) are built
|
|
147
|
+
directly from those modules.
|
|
145
148
|
|
|
146
149
|
## Theming
|
|
147
150
|
|
|
@@ -186,7 +189,7 @@ with host app tokens.
|
|
|
186
189
|
| `--polli-text-base` | Base text size. |
|
|
187
190
|
| `--polli-color-surface-white` | Translucent white surface. |
|
|
188
191
|
|
|
189
|
-
Wallet tokens are public
|
|
192
|
+
Wallet tokens are public (bundled into `@pollinations/ui/styles.css`):
|
|
190
193
|
|
|
191
194
|
| Token | Purpose |
|
|
192
195
|
| ----------------------------- | --------------------------------------------- |
|
|
@@ -204,6 +207,12 @@ Wallet tokens are public when `@pollinations/ui/wallet.css` is imported:
|
|
|
204
207
|
| `--polli-color-danger-bg-light` | Error surface background. |
|
|
205
208
|
| `--polli-color-danger-text` | Error text foreground. |
|
|
206
209
|
| `--polli-color-danger-border` | Error border. |
|
|
210
|
+
| `--polli-color-success-bg-light` | Success surface background. |
|
|
211
|
+
| `--polli-color-success-text` | Success text foreground. |
|
|
212
|
+
| `--polli-color-success-border` | Success border. |
|
|
213
|
+
| `--polli-color-warning-bg-light` | Warning surface background. |
|
|
214
|
+
| `--polli-color-warning-text` | Warning text foreground. |
|
|
215
|
+
| `--polli-color-warning-border` | Warning border. |
|
|
207
216
|
|
|
208
217
|
**Example:**
|
|
209
218
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
|
-
import { T as ThemeName } from './theme-
|
|
3
|
+
import { T as ThemeName } from './theme-VMRlhqST.cjs';
|
|
4
4
|
|
|
5
5
|
/** Button only supports `danger`. Label/status color recipes live on Chip. */
|
|
6
6
|
type ButtonIntent = "danger";
|
|
7
7
|
declare const sizes: {
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
8
|
+
readonly sm: "polli:px-2 polli:pt-0.5 polli:pb-1";
|
|
9
|
+
readonly md: "polli:px-4 polli:pt-1.5 polli:pb-2";
|
|
10
|
+
readonly lg: "polli:px-6 polli:py-3";
|
|
11
11
|
};
|
|
12
12
|
type BaseButtonProps = {
|
|
13
13
|
/** Override the cascade theme for this button's subtree. Ignored when `intent` is set. */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
|
-
import { T as ThemeName } from './theme-
|
|
3
|
+
import { T as ThemeName } from './theme-VMRlhqST.js';
|
|
4
4
|
|
|
5
5
|
/** Button only supports `danger`. Label/status color recipes live on Chip. */
|
|
6
6
|
type ButtonIntent = "danger";
|
|
7
7
|
declare const sizes: {
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
8
|
+
readonly sm: "polli:px-2 polli:pt-0.5 polli:pb-1";
|
|
9
|
+
readonly md: "polli:px-4 polli:pt-1.5 polli:pb-2";
|
|
10
|
+
readonly lg: "polli:px-6 polli:py-3";
|
|
11
11
|
};
|
|
12
12
|
type BaseButtonProps = {
|
|
13
13
|
/** Override the cascade theme for this button's subtree. Ignored when `intent` is set. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FC, ComponentPropsWithoutRef } from 'react';
|
|
2
|
-
import { T as ThemeName } from './theme-
|
|
2
|
+
import { T as ThemeName } from './theme-VMRlhqST.js';
|
|
3
3
|
|
|
4
4
|
/** Semantic chip labels for status and metadata badges. */
|
|
5
|
-
type ChipIntent = "news" | "alpha" | "neutral";
|
|
5
|
+
type ChipIntent = "news" | "alpha" | "neutral" | "success" | "warning" | "danger";
|
|
6
6
|
declare const chipSizes: {
|
|
7
7
|
readonly sm: "polli:px-2 polli:py-0.5 polli:text-xs";
|
|
8
8
|
readonly md: "polli:px-2.5 polli:py-0.5 polli:text-sm";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FC, ComponentPropsWithoutRef } from 'react';
|
|
2
|
-
import { T as ThemeName } from './theme-
|
|
2
|
+
import { T as ThemeName } from './theme-VMRlhqST.cjs';
|
|
3
3
|
|
|
4
4
|
/** Semantic chip labels for status and metadata badges. */
|
|
5
|
-
type ChipIntent = "news" | "alpha" | "neutral";
|
|
5
|
+
type ChipIntent = "news" | "alpha" | "neutral" | "success" | "warning" | "danger";
|
|
6
6
|
declare const chipSizes: {
|
|
7
7
|
readonly sm: "polli:px-2 polli:py-0.5 polli:text-xs";
|
|
8
8
|
readonly md: "polli:px-2.5 polli:py-0.5 polli:text-sm";
|
package/dist/app.css
CHANGED
package/dist/auth/index.cjs
CHANGED
|
@@ -34,6 +34,7 @@ var logo_default = 'data:image/svg+xml,<?xml version="1.0" encoding="utf-8"?>%0A
|
|
|
34
34
|
// src/primitives/Dialog.tsx
|
|
35
35
|
var import_dialog = require("@ark-ui/react/dialog");
|
|
36
36
|
var import_portal = require("@ark-ui/react/portal");
|
|
37
|
+
var import_react = require("react");
|
|
37
38
|
|
|
38
39
|
// src/lib/cn.ts
|
|
39
40
|
var import_clsx = require("clsx");
|
|
@@ -67,76 +68,89 @@ var Dialog = ({
|
|
|
67
68
|
positionerClassName,
|
|
68
69
|
contentClassName,
|
|
69
70
|
children
|
|
70
|
-
}) =>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
children: trigger
|
|
82
|
-
}
|
|
83
|
-
),
|
|
84
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_portal.Portal, { children: [
|
|
85
|
-
showBackdrop && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
86
|
-
import_dialog.Dialog.Backdrop,
|
|
71
|
+
}) => {
|
|
72
|
+
const contentRef = (0, import_react.useRef)(null);
|
|
73
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
74
|
+
import_dialog.Dialog.Root,
|
|
75
|
+
{
|
|
76
|
+
open,
|
|
77
|
+
initialFocusEl: () => contentRef.current,
|
|
78
|
+
onOpenChange: (details) => onOpenChange?.(details.open),
|
|
79
|
+
children: [
|
|
80
|
+
trigger && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
81
|
+
import_dialog.Dialog.Trigger,
|
|
87
82
|
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
83
|
+
asChild: triggerAsChild,
|
|
84
|
+
className: triggerClassName,
|
|
85
|
+
children: trigger
|
|
92
86
|
}
|
|
93
87
|
),
|
|
94
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_portal.Portal, { children: [
|
|
89
|
+
showBackdrop && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
90
|
+
import_dialog.Dialog.Backdrop,
|
|
91
|
+
{
|
|
92
|
+
className: cn(
|
|
93
|
+
"polli:fixed polli:inset-0 polli:z-[100] polli:bg-gray-950/50",
|
|
94
|
+
backdropClassName
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
99
|
+
import_dialog.Dialog.Positioner,
|
|
100
|
+
{
|
|
101
|
+
"data-theme": theme,
|
|
102
|
+
className: cn(
|
|
103
|
+
"polli:fixed polli:inset-0 polli:z-[110] polli:flex polli:h-dvh polli:items-start polli:justify-center polli:overflow-hidden polli:p-4",
|
|
104
|
+
positionerClassName
|
|
105
|
+
),
|
|
106
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
107
|
+
import_dialog.Dialog.Content,
|
|
108
|
+
{
|
|
109
|
+
ref: contentRef,
|
|
110
|
+
"data-theme": theme,
|
|
111
|
+
"aria-label": ariaLabel,
|
|
112
|
+
"aria-labelledby": labelledBy,
|
|
113
|
+
className: cn(
|
|
114
|
+
"polli:my-auto polli:w-full polli:overflow-hidden polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-white polli:shadow-lg polli:outline-none polli:focus:outline-none polli:focus-visible:outline-none",
|
|
115
|
+
sizeClasses[size],
|
|
116
|
+
contentClassName
|
|
122
117
|
),
|
|
123
|
-
children
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
118
|
+
children: [
|
|
119
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
120
|
+
DialogTitle,
|
|
121
|
+
{
|
|
122
|
+
className: cn(
|
|
123
|
+
"polli:px-6 polli:pt-6 polli:font-subheading polli:text-xl polli:text-theme-text-strong",
|
|
124
|
+
titleClassName
|
|
125
|
+
),
|
|
126
|
+
children: title
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
children
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
] })
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
};
|
|
133
140
|
var DialogTitle = import_dialog.Dialog.Title;
|
|
134
141
|
|
|
135
142
|
// src/modules/auth/AuthModal.tsx
|
|
136
143
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
144
|
+
var authLogoMaskUrl = `url('${logo_default}')`;
|
|
137
145
|
var authLogoMask = {
|
|
138
|
-
|
|
139
|
-
|
|
146
|
+
WebkitMaskImage: authLogoMaskUrl,
|
|
147
|
+
WebkitMaskPosition: "center",
|
|
148
|
+
WebkitMaskRepeat: "no-repeat",
|
|
149
|
+
WebkitMaskSize: "contain",
|
|
150
|
+
maskImage: authLogoMaskUrl,
|
|
151
|
+
maskPosition: "center",
|
|
152
|
+
maskRepeat: "no-repeat",
|
|
153
|
+
maskSize: "contain"
|
|
140
154
|
};
|
|
141
155
|
function AuthModal({
|
|
142
156
|
children,
|
|
@@ -165,7 +179,8 @@ function AuthModalHeader({ children }) {
|
|
|
165
179
|
href: "https://pollinations.ai",
|
|
166
180
|
target: "_blank",
|
|
167
181
|
rel: "noopener noreferrer",
|
|
168
|
-
|
|
182
|
+
tabIndex: -1,
|
|
183
|
+
className: "polli:block polli:shrink-0 polli:text-theme-text-strong polli:focus:outline-none",
|
|
169
184
|
"aria-label": "pollinations.ai",
|
|
170
185
|
children: [
|
|
171
186
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "polli:sr-only", children: "pollinations.ai" }),
|
|
@@ -199,18 +214,10 @@ function ErrorBanner({ children }) {
|
|
|
199
214
|
}
|
|
200
215
|
function AuthInfoCard({
|
|
201
216
|
title = "Authorize",
|
|
202
|
-
titleId,
|
|
203
217
|
children
|
|
204
218
|
}) {
|
|
205
219
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-theme-bg-pale polli:p-4", children: [
|
|
206
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
207
|
-
"p",
|
|
208
|
-
{
|
|
209
|
-
id: titleId,
|
|
210
|
-
className: "polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft",
|
|
211
|
-
children: title
|
|
212
|
-
}
|
|
213
|
-
),
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft", children: title }),
|
|
214
221
|
children
|
|
215
222
|
] });
|
|
216
223
|
}
|
package/dist/auth/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/auth/index.ts","../../src/primitives/Dialog.tsx","../../src/lib/cn.ts","../../src/modules/auth/AuthModal.tsx"],"sourcesContent":["export {\n AuthInfoCard,\n type AuthInfoCardProps,\n AuthModal,\n AuthModalHeader,\n type AuthModalHeaderProps,\n AuthModalLoading,\n type AuthModalProps,\n ErrorBanner,\n} from \"./AuthModal.tsx\";\n","import { Dialog as ArkDialog } from \"@ark-ui/react/dialog\";\nimport { Portal } from \"@ark-ui/react/portal\";\nimport type { FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport type { ThemeName } from \"../theme.ts\";\n\nconst sizeClasses = {\n sm: \"polli:max-w-md\",\n md: \"polli:max-w-xl\",\n lg: \"polli:max-w-2xl\",\n} as const;\n\nexport type DialogProps = {\n open: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n triggerAsChild?: boolean;\n triggerClassName?: string;\n title?: ReactNode;\n titleClassName?: string;\n ariaLabel?: string;\n labelledBy?: string;\n theme?: ThemeName;\n size?: keyof typeof sizeClasses;\n showBackdrop?: boolean;\n backdropClassName?: string;\n positionerClassName?: string;\n contentClassName?: string;\n children: ReactNode;\n};\n\nexport const Dialog: FC<DialogProps> = ({\n open,\n onOpenChange,\n trigger,\n triggerAsChild = false,\n triggerClassName,\n title,\n titleClassName,\n ariaLabel,\n labelledBy,\n theme = \"blue\",\n size = \"md\",\n showBackdrop = true,\n backdropClassName,\n positionerClassName,\n contentClassName,\n children,\n}) => (\n <ArkDialog.Root\n open={open}\n onOpenChange={(details) => onOpenChange?.(details.open)}\n >\n {trigger && (\n <ArkDialog.Trigger\n asChild={triggerAsChild}\n className={triggerClassName}\n >\n {trigger}\n </ArkDialog.Trigger>\n )}\n <Portal>\n {showBackdrop && (\n <ArkDialog.Backdrop\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[100] polli:bg-gray-950/50\",\n backdropClassName,\n )}\n />\n )}\n <ArkDialog.Positioner\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[110] polli:flex polli:h-dvh polli:items-start polli:justify-center polli:overflow-hidden polli:p-4\",\n positionerClassName,\n )}\n >\n <ArkDialog.Content\n data-theme={theme}\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n className={cn(\n \"polli:my-auto polli:w-full polli:overflow-hidden polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-white polli:shadow-lg\",\n sizeClasses[size],\n contentClassName,\n )}\n >\n {title && (\n <DialogTitle\n className={cn(\n \"polli:px-6 polli:pt-6 polli:font-subheading polli:text-xl polli:text-theme-text-strong\",\n titleClassName,\n )}\n >\n {title}\n </DialogTitle>\n )}\n {children}\n </ArkDialog.Content>\n </ArkDialog.Positioner>\n </Portal>\n </ArkDialog.Root>\n);\n\nexport const DialogTitle = ArkDialog.Title;\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({ prefix: \"polli\" });\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport logoUrl from \"../../assets/logo.svg\";\nimport { Dialog } from \"../../primitives/Dialog.tsx\";\n\nconst authLogoMask: CSSProperties = {\n WebkitMask: `url(${logoUrl}) center / contain no-repeat`,\n mask: `url(${logoUrl}) center / contain no-repeat`,\n};\n\nexport type AuthModalProps = {\n children: ReactNode;\n dialog?: {\n label?: string;\n labelledBy?: string;\n };\n tone?: \"default\" | \"error\";\n};\n\nexport function AuthModal({\n children,\n dialog,\n tone = \"default\",\n}: AuthModalProps) {\n const borderClass =\n tone === \"error\"\n ? \"polli:border-intent-danger-border\"\n : \"polli:border-theme-border\";\n return (\n <Dialog\n open\n theme=\"amber\"\n showBackdrop={false}\n ariaLabel={dialog?.label}\n labelledBy={dialog?.labelledBy}\n positionerClassName=\"polli:items-start polli:overflow-y-auto polli:bg-theme-bg-pale\"\n contentClassName={`polli:bg-surface-white polli:border-2 ${borderClass} polli:rounded-lg polli:shadow-lg polli:max-w-xl polli:w-full polli:my-auto`}\n >\n {children}\n </Dialog>\n );\n}\n\nexport type AuthModalHeaderProps = {\n children?: ReactNode;\n};\n\nexport function AuthModalHeader({ children }: AuthModalHeaderProps) {\n const logo = (\n <a\n href=\"https://pollinations.ai\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"polli:block polli:shrink-0 polli:text-theme-text-strong\"\n aria-label=\"pollinations.ai\"\n >\n <span className=\"polli:sr-only\">pollinations.ai</span>\n <span\n aria-hidden=\"true\"\n className=\"polli:block polli:h-8 polli:w-8 polli:bg-current\"\n style={authLogoMask}\n />\n </a>\n );\n if (!children) {\n return (\n <div className=\"polli:flex polli:justify-start polli:px-6 polli:pt-6\">\n {logo}\n </div>\n );\n }\n return (\n <div className=\"polli:px-6 polli:pt-6 polli:pb-2\">\n <div className=\"polli:flex polli:items-center polli:justify-between polli:gap-3\">\n {logo}\n {children}\n </div>\n </div>\n );\n}\n\nexport function AuthModalLoading() {\n return (\n <AuthModal>\n <AuthModalHeader />\n <div className=\"polli:px-8 polli:pt-2 polli:pb-8 polli:text-center\">\n <p className=\"polli:text-theme-text-strong\">Loading...</p>\n </div>\n </AuthModal>\n );\n}\n\nexport function ErrorBanner({ children }: { children: ReactNode }) {\n return (\n <div className=\"polli:rounded-lg polli:border-2 polli:border-intent-danger-border polli:bg-intent-danger-bg-light polli:p-4\">\n <p className=\"polli:text-sm polli:text-intent-danger-text\">\n {children}\n </p>\n </div>\n );\n}\n\nexport type AuthInfoCardProps = {\n title?: string;\n titleId?: string;\n children: ReactNode;\n};\n\nexport function AuthInfoCard({\n title = \"Authorize\",\n titleId,\n children,\n}: AuthInfoCardProps) {\n return (\n <div className=\"polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-theme-bg-pale polli:p-4\">\n <p\n id={titleId}\n className=\"polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft\"\n >\n {title}\n </p>\n {children}\n </div>\n );\n}\n"],"mappings":"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","names":["ArkDialog","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../src/modules/auth/index.ts","../../src/primitives/Dialog.tsx","../../src/lib/cn.ts","../../src/modules/auth/AuthModal.tsx"],"sourcesContent":["export {\n AuthInfoCard,\n type AuthInfoCardProps,\n AuthModal,\n AuthModalHeader,\n type AuthModalHeaderProps,\n AuthModalLoading,\n type AuthModalProps,\n ErrorBanner,\n} from \"./AuthModal.tsx\";\n","import { Dialog as ArkDialog } from \"@ark-ui/react/dialog\";\nimport { Portal } from \"@ark-ui/react/portal\";\nimport type { FC, ReactNode } from \"react\";\nimport { useRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport type { ThemeName } from \"../theme.ts\";\n\nconst sizeClasses = {\n sm: \"polli:max-w-md\",\n md: \"polli:max-w-xl\",\n lg: \"polli:max-w-2xl\",\n} as const;\n\nexport type DialogProps = {\n open: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n triggerAsChild?: boolean;\n triggerClassName?: string;\n title?: ReactNode;\n titleClassName?: string;\n ariaLabel?: string;\n labelledBy?: string;\n theme?: ThemeName;\n size?: keyof typeof sizeClasses;\n showBackdrop?: boolean;\n backdropClassName?: string;\n positionerClassName?: string;\n contentClassName?: string;\n children: ReactNode;\n};\n\nexport const Dialog: FC<DialogProps> = ({\n open,\n onOpenChange,\n trigger,\n triggerAsChild = false,\n triggerClassName,\n title,\n titleClassName,\n ariaLabel,\n labelledBy,\n theme = \"blue\",\n size = \"md\",\n showBackdrop = true,\n backdropClassName,\n positionerClassName,\n contentClassName,\n children,\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n\n return (\n <ArkDialog.Root\n open={open}\n initialFocusEl={() => contentRef.current}\n onOpenChange={(details) => onOpenChange?.(details.open)}\n >\n {trigger && (\n <ArkDialog.Trigger\n asChild={triggerAsChild}\n className={triggerClassName}\n >\n {trigger}\n </ArkDialog.Trigger>\n )}\n <Portal>\n {showBackdrop && (\n <ArkDialog.Backdrop\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[100] polli:bg-gray-950/50\",\n backdropClassName,\n )}\n />\n )}\n <ArkDialog.Positioner\n data-theme={theme}\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[110] polli:flex polli:h-dvh polli:items-start polli:justify-center polli:overflow-hidden polli:p-4\",\n positionerClassName,\n )}\n >\n <ArkDialog.Content\n ref={contentRef}\n data-theme={theme}\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n className={cn(\n \"polli:my-auto polli:w-full polli:overflow-hidden polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-white polli:shadow-lg polli:outline-none polli:focus:outline-none polli:focus-visible:outline-none\",\n sizeClasses[size],\n contentClassName,\n )}\n >\n {title && (\n <DialogTitle\n className={cn(\n \"polli:px-6 polli:pt-6 polli:font-subheading polli:text-xl polli:text-theme-text-strong\",\n titleClassName,\n )}\n >\n {title}\n </DialogTitle>\n )}\n {children}\n </ArkDialog.Content>\n </ArkDialog.Positioner>\n </Portal>\n </ArkDialog.Root>\n );\n};\n\nexport const DialogTitle = ArkDialog.Title;\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({ prefix: \"polli\" });\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport logoUrl from \"../../assets/logo.svg\";\nimport { Dialog } from \"../../primitives/Dialog.tsx\";\n\nconst authLogoMaskUrl = `url('${logoUrl}')`;\n\nconst authLogoMask: CSSProperties = {\n WebkitMaskImage: authLogoMaskUrl,\n WebkitMaskPosition: \"center\",\n WebkitMaskRepeat: \"no-repeat\",\n WebkitMaskSize: \"contain\",\n maskImage: authLogoMaskUrl,\n maskPosition: \"center\",\n maskRepeat: \"no-repeat\",\n maskSize: \"contain\",\n};\n\nexport type AuthModalProps = {\n children: ReactNode;\n dialog?: {\n label?: string;\n labelledBy?: string;\n };\n tone?: \"default\" | \"error\";\n};\n\nexport function AuthModal({\n children,\n dialog,\n tone = \"default\",\n}: AuthModalProps) {\n const borderClass =\n tone === \"error\"\n ? \"polli:border-intent-danger-border\"\n : \"polli:border-theme-border\";\n return (\n <Dialog\n open\n theme=\"amber\"\n showBackdrop={false}\n ariaLabel={dialog?.label}\n labelledBy={dialog?.labelledBy}\n positionerClassName=\"polli:items-start polli:overflow-y-auto polli:bg-theme-bg-pale\"\n contentClassName={`polli:bg-surface-white polli:border-2 ${borderClass} polli:rounded-lg polli:shadow-lg polli:max-w-xl polli:w-full polli:my-auto`}\n >\n {children}\n </Dialog>\n );\n}\n\nexport type AuthModalHeaderProps = {\n children?: ReactNode;\n};\n\nexport function AuthModalHeader({ children }: AuthModalHeaderProps) {\n const logo = (\n <a\n href=\"https://pollinations.ai\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n tabIndex={-1}\n className=\"polli:block polli:shrink-0 polli:text-theme-text-strong polli:focus:outline-none\"\n aria-label=\"pollinations.ai\"\n >\n <span className=\"polli:sr-only\">pollinations.ai</span>\n <span\n aria-hidden=\"true\"\n className=\"polli:block polli:h-8 polli:w-8 polli:bg-current\"\n style={authLogoMask}\n />\n </a>\n );\n if (!children) {\n return (\n <div className=\"polli:flex polli:justify-start polli:px-6 polli:pt-6\">\n {logo}\n </div>\n );\n }\n return (\n <div className=\"polli:px-6 polli:pt-6 polli:pb-2\">\n <div className=\"polli:flex polli:items-center polli:justify-between polli:gap-3\">\n {logo}\n {children}\n </div>\n </div>\n );\n}\n\nexport function AuthModalLoading() {\n return (\n <AuthModal>\n <AuthModalHeader />\n <div className=\"polli:px-8 polli:pt-2 polli:pb-8 polli:text-center\">\n <p className=\"polli:text-theme-text-strong\">Loading...</p>\n </div>\n </AuthModal>\n );\n}\n\nexport function ErrorBanner({ children }: { children: ReactNode }) {\n return (\n <div className=\"polli:rounded-lg polli:border-2 polli:border-intent-danger-border polli:bg-intent-danger-bg-light polli:p-4\">\n <p className=\"polli:text-sm polli:text-intent-danger-text\">\n {children}\n </p>\n </div>\n );\n}\n\nexport type AuthInfoCardProps = {\n title?: string;\n children: ReactNode;\n};\n\nexport function AuthInfoCard({\n title = \"Authorize\",\n children,\n}: AuthInfoCardProps) {\n return (\n <div className=\"polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-theme-bg-pale polli:p-4\">\n <p className=\"polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft\">\n {title}\n </p>\n {children}\n </div>\n );\n}\n"],"mappings":"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","names":["ArkDialog","import_jsx_runtime"]}
|
package/dist/auth/index.d.cts
CHANGED
|
@@ -20,9 +20,8 @@ declare function ErrorBanner({ children }: {
|
|
|
20
20
|
}): react_jsx_runtime.JSX.Element;
|
|
21
21
|
type AuthInfoCardProps = {
|
|
22
22
|
title?: string;
|
|
23
|
-
titleId?: string;
|
|
24
23
|
children: ReactNode;
|
|
25
24
|
};
|
|
26
|
-
declare function AuthInfoCard({ title,
|
|
25
|
+
declare function AuthInfoCard({ title, children, }: AuthInfoCardProps): react_jsx_runtime.JSX.Element;
|
|
27
26
|
|
|
28
27
|
export { AuthInfoCard, type AuthInfoCardProps, AuthModal, AuthModalHeader, type AuthModalHeaderProps, AuthModalLoading, type AuthModalProps, ErrorBanner };
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -20,9 +20,8 @@ declare function ErrorBanner({ children }: {
|
|
|
20
20
|
}): react_jsx_runtime.JSX.Element;
|
|
21
21
|
type AuthInfoCardProps = {
|
|
22
22
|
title?: string;
|
|
23
|
-
titleId?: string;
|
|
24
23
|
children: ReactNode;
|
|
25
24
|
};
|
|
26
|
-
declare function AuthInfoCard({ title,
|
|
25
|
+
declare function AuthInfoCard({ title, children, }: AuthInfoCardProps): react_jsx_runtime.JSX.Element;
|
|
27
26
|
|
|
28
27
|
export { AuthInfoCard, type AuthInfoCardProps, AuthModal, AuthModalHeader, type AuthModalHeaderProps, AuthModalLoading, type AuthModalProps, ErrorBanner };
|
package/dist/auth/index.js
CHANGED
|
@@ -4,6 +4,7 @@ var logo_default = 'data:image/svg+xml,<?xml version="1.0" encoding="utf-8"?>%0A
|
|
|
4
4
|
// src/primitives/Dialog.tsx
|
|
5
5
|
import { Dialog as ArkDialog } from "@ark-ui/react/dialog";
|
|
6
6
|
import { Portal } from "@ark-ui/react/portal";
|
|
7
|
+
import { useRef } from "react";
|
|
7
8
|
|
|
8
9
|
// src/lib/cn.ts
|
|
9
10
|
import { clsx } from "clsx";
|
|
@@ -37,76 +38,89 @@ var Dialog = ({
|
|
|
37
38
|
positionerClassName,
|
|
38
39
|
contentClassName,
|
|
39
40
|
children
|
|
40
|
-
}) =>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
children: trigger
|
|
52
|
-
}
|
|
53
|
-
),
|
|
54
|
-
/* @__PURE__ */ jsxs(Portal, { children: [
|
|
55
|
-
showBackdrop && /* @__PURE__ */ jsx(
|
|
56
|
-
ArkDialog.Backdrop,
|
|
41
|
+
}) => {
|
|
42
|
+
const contentRef = useRef(null);
|
|
43
|
+
return /* @__PURE__ */ jsxs(
|
|
44
|
+
ArkDialog.Root,
|
|
45
|
+
{
|
|
46
|
+
open,
|
|
47
|
+
initialFocusEl: () => contentRef.current,
|
|
48
|
+
onOpenChange: (details) => onOpenChange?.(details.open),
|
|
49
|
+
children: [
|
|
50
|
+
trigger && /* @__PURE__ */ jsx(
|
|
51
|
+
ArkDialog.Trigger,
|
|
57
52
|
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
53
|
+
asChild: triggerAsChild,
|
|
54
|
+
className: triggerClassName,
|
|
55
|
+
children: trigger
|
|
62
56
|
}
|
|
63
57
|
),
|
|
64
|
-
/* @__PURE__ */
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
58
|
+
/* @__PURE__ */ jsxs(Portal, { children: [
|
|
59
|
+
showBackdrop && /* @__PURE__ */ jsx(
|
|
60
|
+
ArkDialog.Backdrop,
|
|
61
|
+
{
|
|
62
|
+
className: cn(
|
|
63
|
+
"polli:fixed polli:inset-0 polli:z-[100] polli:bg-gray-950/50",
|
|
64
|
+
backdropClassName
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ jsx(
|
|
69
|
+
ArkDialog.Positioner,
|
|
70
|
+
{
|
|
71
|
+
"data-theme": theme,
|
|
72
|
+
className: cn(
|
|
73
|
+
"polli:fixed polli:inset-0 polli:z-[110] polli:flex polli:h-dvh polli:items-start polli:justify-center polli:overflow-hidden polli:p-4",
|
|
74
|
+
positionerClassName
|
|
75
|
+
),
|
|
76
|
+
children: /* @__PURE__ */ jsxs(
|
|
77
|
+
ArkDialog.Content,
|
|
78
|
+
{
|
|
79
|
+
ref: contentRef,
|
|
80
|
+
"data-theme": theme,
|
|
81
|
+
"aria-label": ariaLabel,
|
|
82
|
+
"aria-labelledby": labelledBy,
|
|
83
|
+
className: cn(
|
|
84
|
+
"polli:my-auto polli:w-full polli:overflow-hidden polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-white polli:shadow-lg polli:outline-none polli:focus:outline-none polli:focus-visible:outline-none",
|
|
85
|
+
sizeClasses[size],
|
|
86
|
+
contentClassName
|
|
92
87
|
),
|
|
93
|
-
children
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
88
|
+
children: [
|
|
89
|
+
title && /* @__PURE__ */ jsx(
|
|
90
|
+
DialogTitle,
|
|
91
|
+
{
|
|
92
|
+
className: cn(
|
|
93
|
+
"polli:px-6 polli:pt-6 polli:font-subheading polli:text-xl polli:text-theme-text-strong",
|
|
94
|
+
titleClassName
|
|
95
|
+
),
|
|
96
|
+
children: title
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
children
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
] })
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
};
|
|
103
110
|
var DialogTitle = ArkDialog.Title;
|
|
104
111
|
|
|
105
112
|
// src/modules/auth/AuthModal.tsx
|
|
106
113
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
114
|
+
var authLogoMaskUrl = `url('${logo_default}')`;
|
|
107
115
|
var authLogoMask = {
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
WebkitMaskImage: authLogoMaskUrl,
|
|
117
|
+
WebkitMaskPosition: "center",
|
|
118
|
+
WebkitMaskRepeat: "no-repeat",
|
|
119
|
+
WebkitMaskSize: "contain",
|
|
120
|
+
maskImage: authLogoMaskUrl,
|
|
121
|
+
maskPosition: "center",
|
|
122
|
+
maskRepeat: "no-repeat",
|
|
123
|
+
maskSize: "contain"
|
|
110
124
|
};
|
|
111
125
|
function AuthModal({
|
|
112
126
|
children,
|
|
@@ -135,7 +149,8 @@ function AuthModalHeader({ children }) {
|
|
|
135
149
|
href: "https://pollinations.ai",
|
|
136
150
|
target: "_blank",
|
|
137
151
|
rel: "noopener noreferrer",
|
|
138
|
-
|
|
152
|
+
tabIndex: -1,
|
|
153
|
+
className: "polli:block polli:shrink-0 polli:text-theme-text-strong polli:focus:outline-none",
|
|
139
154
|
"aria-label": "pollinations.ai",
|
|
140
155
|
children: [
|
|
141
156
|
/* @__PURE__ */ jsx2("span", { className: "polli:sr-only", children: "pollinations.ai" }),
|
|
@@ -169,18 +184,10 @@ function ErrorBanner({ children }) {
|
|
|
169
184
|
}
|
|
170
185
|
function AuthInfoCard({
|
|
171
186
|
title = "Authorize",
|
|
172
|
-
titleId,
|
|
173
187
|
children
|
|
174
188
|
}) {
|
|
175
189
|
return /* @__PURE__ */ jsxs2("div", { className: "polli:rounded-lg polli:border-2 polli:border-theme-border polli:bg-theme-bg-pale polli:p-4", children: [
|
|
176
|
-
/* @__PURE__ */ jsx2(
|
|
177
|
-
"p",
|
|
178
|
-
{
|
|
179
|
-
id: titleId,
|
|
180
|
-
className: "polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft",
|
|
181
|
-
children: title
|
|
182
|
-
}
|
|
183
|
-
),
|
|
190
|
+
/* @__PURE__ */ jsx2("p", { className: "polli:mb-2 polli:font-body polli:text-xs polli:font-semibold polli:tracking-wide polli:text-theme-text-soft", children: title }),
|
|
184
191
|
children
|
|
185
192
|
] });
|
|
186
193
|
}
|