@zitadel/components 0.1.0-alpha.9 → 1.0.0-alpha.20
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 +135 -72
- package/dist/atoms/index.d.mts +2 -2
- package/dist/atoms/index.mjs +2 -2
- package/dist/atoms-DSxjEHca.mjs +2268 -0
- package/dist/atoms-DSxjEHca.mjs.map +1 -0
- package/dist/default-Dnjq9iBt.mjs +6 -0
- package/dist/default-Dnjq9iBt.mjs.map +1 -0
- package/dist/index-BPgWdWx7.d.mts +14642 -0
- package/dist/index-BPgWdWx7.d.mts.map +1 -0
- package/dist/index-BlxTxXK8.d.mts +449 -0
- package/dist/index-BlxTxXK8.d.mts.map +1 -0
- package/dist/index-CaScNIBy.d.mts +1597 -0
- package/dist/index-CaScNIBy.d.mts.map +1 -0
- package/dist/index.d.mts +22 -8
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/jsx.d.ts +67 -0
- package/dist/manifests.d.mts.map +1 -1
- package/dist/manifests.mjs +4 -2
- package/dist/manifests.mjs.map +1 -1
- package/dist/orchestrator/index.d.mts +3 -3
- package/dist/orchestrator/index.mjs +3 -3
- package/dist/orchestrator-ixQm2RIC.mjs +4998 -0
- package/dist/orchestrator-ixQm2RIC.mjs.map +1 -0
- package/dist/standalone.mjs +9140 -5849
- package/dist/tokens/index.d.mts +1 -1
- package/dist/tokens/index.mjs +1 -1
- package/dist/tokens-T4N9VJz3.mjs +452 -0
- package/dist/tokens-T4N9VJz3.mjs.map +1 -0
- package/package.json +13 -12
- package/dist/atoms-B25wiDqb.mjs +0 -1464
- package/dist/atoms-B25wiDqb.mjs.map +0 -1
- package/dist/default-Cpl78hQN.mjs +0 -6
- package/dist/default-Cpl78hQN.mjs.map +0 -1
- package/dist/index-DB_JTtln.d.mts +0 -1000
- package/dist/index-DB_JTtln.d.mts.map +0 -1
- package/dist/index-DVDCrfkv.d.mts +0 -7396
- package/dist/index-DVDCrfkv.d.mts.map +0 -1
- package/dist/index-EJengPPu.d.mts +0 -249
- package/dist/index-EJengPPu.d.mts.map +0 -1
- package/dist/orchestrator-CW9zixuw.mjs +0 -3362
- package/dist/orchestrator-CW9zixuw.mjs.map +0 -1
- package/dist/tokens-BQ_augxi.mjs +0 -244
- package/dist/tokens-BQ_augxi.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -6,12 +6,16 @@ Zitadel auth UI.
|
|
|
6
6
|
The package exports:
|
|
7
7
|
|
|
8
8
|
- **Atoms** — `<zl-field>`, `<zl-button>`, `<zl-alert>`, `<zl-icon>`,
|
|
9
|
-
`<zl-pill>`, `<zl-card>`, `<zl-
|
|
9
|
+
`<zl-pill>`, `<zl-card>`, `<zl-checkbox>`, `<zl-select>`,
|
|
10
|
+
`<zl-page-shell>`, and `<zl-passkey>` (an invisible WebAuthn ceremony
|
|
11
|
+
handler — no rendered surface). Form-associated, accessible,
|
|
10
12
|
branding-aware Lit elements that map 1:1 to the flow API
|
|
11
13
|
field/action/error primitives and the Figma design system.
|
|
12
|
-
- **
|
|
14
|
+
- **Orchestrators** — `<zitadel-login>`, a single drop-in element that calls
|
|
13
15
|
the flow API, renders each step through a Liquid template, manages focus
|
|
14
|
-
and form submission, and applies branding/theme/locale
|
|
16
|
+
and form submission, and applies branding/theme/locale; `<zitadel-logout>`
|
|
17
|
+
for sign-out; and `<zitadel-session>`, the post-sign-in "signed in" card
|
|
18
|
+
(session read + sign-out in one element).
|
|
15
19
|
- **Tokens & manifests** — design tokens (`--zl-*` CSS custom properties), a
|
|
16
20
|
Liquid template registry, and per-atom manifests describing allowed
|
|
17
21
|
attributes/parts/events for sanitiser allowlists.
|
|
@@ -56,7 +60,9 @@ language. `<zitadel-login>` reads the global project handle from
|
|
|
56
60
|
el.lang = 'en'; // optional; defaults to <html lang> / navigator.language
|
|
57
61
|
</script>
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
<!-- variant="page" = a dedicated login route that owns the viewport.
|
|
64
|
+
Omit it to embed a content-sized widget inside your own layout. -->
|
|
65
|
+
<zitadel-login id="login" variant="page" purpose="login"></zitadel-login>
|
|
60
66
|
```
|
|
61
67
|
|
|
62
68
|
What `<zitadel-login>` handles for you:
|
|
@@ -65,9 +71,13 @@ What `<zitadel-login>` handles for you:
|
|
|
65
71
|
`redirect` / `show` honoured automatically.
|
|
66
72
|
- Native `<form>` semantics: Enter submits, password managers see the inputs,
|
|
67
73
|
`<button type="submit">` works, browser autofill works.
|
|
68
|
-
- Focus moved to the first field on every step change
|
|
74
|
+
- Focus moved to the first field on every step change (and on load in
|
|
75
|
+
`variant="page"`; an embedded widget deliberately leaves initial focus alone
|
|
76
|
+
so it can't scroll-jump the page it sits on).
|
|
69
77
|
- Branding tokens mapped to CSS variables on the shadow root.
|
|
70
|
-
- Light
|
|
78
|
+
- Light and dark theme, hot-swappable: the `theme` property, else the tenant's
|
|
79
|
+
`branding.theme.mode`, else the variant default (`page` dark, `widget`
|
|
80
|
+
follows `prefers-color-scheme`).
|
|
71
81
|
- Mandatory gates (terms, captcha) enforced before submit.
|
|
72
82
|
- Output sanitised with DOMPurify against a per-atom allowlist before injection.
|
|
73
83
|
- Stateless server: the `_zflow` HttpOnly cookie is the source of truth
|
|
@@ -115,38 +125,30 @@ fixtures:
|
|
|
115
125
|
- **Tests (`msw/node`)** — pass `setupMockHandlers()` from
|
|
116
126
|
`@zitadel/api-mock` into `setupServer(...)`.
|
|
117
127
|
`getCapturedRequests()` exposes captured request bodies for assertions.
|
|
118
|
-
- **
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
128
|
+
- **Browser (`msw/browser`)** — `setupMock(worker)` wires the handlers into a
|
|
129
|
+
`msw/browser` worker. The Storybook orchestrator stories take the equivalent
|
|
130
|
+
path through `msw-storybook-addon` (see
|
|
131
|
+
[`apps/storybook/src/orchestrator.stories.ts`](../../apps/storybook/src/orchestrator.stories.ts)).
|
|
132
|
+
`applyBranding(...)` injects a tenant branding overlay merged into every
|
|
133
|
+
response (presets include `font_url` for Inter).
|
|
122
134
|
- **Framework demos (TCP server)** — `moon run api-mock:start`
|
|
123
|
-
serves the same handlers on port
|
|
124
|
-
`font_url`) applied at boot. See
|
|
135
|
+
serves the same handlers on port 8080 (set `PORT` to override) with
|
|
136
|
+
`defaultDevBranding` (Arimo `font_url`) applied at boot. See
|
|
137
|
+
[`apps/demo-next`](../../apps/demo-next/README.md)
|
|
125
138
|
and [`apps/demo-nuxt`](../../apps/demo-nuxt/README.md).
|
|
126
139
|
|
|
127
|
-
###
|
|
140
|
+
### Preview surfaces
|
|
128
141
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
| **Lit playground** | `moon run components:dev` | [login](http://localhost:5173/?route=login) · [atoms](http://localhost:5173/?route=atoms) | Component author surface: branding presets, event log, source TS from `src/`. MSW runs in the browser — no TCP mock server. |
|
|
135
|
-
| **React console playground** | `moon run console:dev` | [http://localhost:5174](http://localhost:5174) | `@zitadel/ui-react` atom matrices in the pre-release console shell. MSW in `import.meta.env.DEV`. Compare against Lit `:5173/?route=atoms` in a second tab. |
|
|
136
|
-
| **demo-next** | `moon run api-mock:start` + `ZITADEL_URL=http://localhost:4000 moon run demo-next:dev` | [http://localhost:3002/login](http://localhost:3002/login) (mock on `:4000`) | Next.js SDK, middleware, cookies, built `dist/`. See [`apps/demo-next`](../../apps/demo-next/README.md). |
|
|
137
|
-
| **demo-nuxt** | mock on `:4000`, then `ZITADEL_URL=http://localhost:4000 moon run demo-nuxt:dev` | [http://localhost:3001/login](http://localhost:3001/login) | Nuxt SDK, middleware, cookies, built `dist/`. See [`apps/demo-nuxt`](../../apps/demo-nuxt/README.md). |
|
|
138
|
-
|
|
139
|
-
The Lit dev playground iterates on `<zl-*>` source; the React console
|
|
140
|
-
playground exercises `@zitadel/ui-react` in the internal shell.
|
|
141
|
-
When tweaking Lit visuals or shadow-DOM behaviour, use `:5173` first —
|
|
142
|
-
it round-trips faster. For React pair tweaks, use `:5174`.
|
|
142
|
+
| Surface | Moon command | What it gives you |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| **Storybook** | `moon run storybook:dev` ([:6006](http://localhost:6006)) | The workbench for the Lit atoms and the `<zitadel-login>` orchestrator (MSW via `msw-storybook-addon`, flow/branding as controls). |
|
|
145
|
+
| **demo-next** | `moon run api-mock:start` + `moon run demo-next:dev` | Next.js SDK, middleware, cookies, built `dist/` ([:3002/login](http://localhost:3002/login)). See [`apps/demo-next`](../../apps/demo-next/README.md). |
|
|
146
|
+
| **demo-nuxt** | mock on `:8080`, then `moon run demo-nuxt:dev` | Nuxt SDK, middleware, cookies, built `dist/` ([:3001/login](http://localhost:3001/login)). See [`apps/demo-nuxt`](../../apps/demo-nuxt/README.md). |
|
|
143
147
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
Console (`:5174`) will not pick up Lit-only edits until you rebuild or
|
|
149
|
-
change the paired React/CSS path.
|
|
148
|
+
Storybook consumes the built `@zitadel/components` artifact, so rebuild
|
|
149
|
+
after source changes (`moon run components:build`) or
|
|
150
|
+
keep the Storybook dev server running — its tasks depend on the relevant
|
|
151
|
+
build tasks.
|
|
150
152
|
|
|
151
153
|
### Atoms-only (bypass the orchestrator)
|
|
152
154
|
|
|
@@ -166,25 +168,87 @@ form-associated inputs.
|
|
|
166
168
|
| Tier | Surface | Use when |
|
|
167
169
|
| --- | --- | --- |
|
|
168
170
|
| SDK config | `configureZitadel({ projectId, proxyPath })` from `@zitadel/api/config` | every consumer — sets the project + proxy path the element reads |
|
|
169
|
-
| Tokens | branding payload returned from the server | tenant colour / logo / font |
|
|
170
|
-
|
|
|
171
|
+
| Tokens (server) | branding payload returned from the server | tenant colour / logo / font, managed centrally |
|
|
172
|
+
| Tokens (host page) | `zitadel-login { --zl-color-…: … }` in your own stylesheet | matching the widget to the app you embedded it in |
|
|
173
|
+
| Layout / placement | host CSS on `zitadel-login { ... }`, `variant`, `--zl-page-min-height` | sizing and positioning inside your layout |
|
|
174
|
+
| CSS hooks | `zitadel-login::part(form)`, `zitadel-login::part(field-input)` | targeted overrides of atom internals |
|
|
171
175
|
| Locale | `el.lang = 'de'` / `el.locales = { ... }` | i18n / custom copy |
|
|
172
176
|
| MSW mocks | `setupWorker` / `setupServer` from `msw` | offline / staging / fixtures |
|
|
173
|
-
| Custom template |
|
|
177
|
+
| Custom template | `zitadel branding eject` → edit Liquid → `zitadel apply`, or `branding.liquid_template` on the payload | tenant-supplied layouts |
|
|
174
178
|
| Atoms-only | hand-built form | non-standard flow shells |
|
|
175
179
|
|
|
176
180
|
For styling, start with the generated `--zl-*` variables from
|
|
177
181
|
`@zitadel/design-tokens`, then use host CSS on `zitadel-login { ... }` for page
|
|
178
182
|
placement and `::part(...)` hooks for targeted internals such as the form or
|
|
179
183
|
field input. The design-token package README is the canonical token catalogue;
|
|
180
|
-
the branding design notes explain the broader override ladder.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
the branding design notes explain the broader override ladder.
|
|
185
|
+
|
|
186
|
+
**Your stylesheet is the strongest styling authority.** A plain rule in the
|
|
187
|
+
embedding app wins:
|
|
188
|
+
|
|
189
|
+
```css
|
|
190
|
+
zitadel-login {
|
|
191
|
+
--zl-color-text-primary-white: #101828;
|
|
192
|
+
--zl-color-surface-default-primary-gray: #ffffff;
|
|
193
|
+
--zl-radius-md: 0.25rem;
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Those values reach the atoms' own shadow roots — custom properties inherit
|
|
198
|
+
across shadow boundaries — and they outrank both the design-system defaults
|
|
199
|
+
and the tenant's server-side branding, because the CSS cascade gives normal
|
|
200
|
+
declarations from the outer tree precedence over the `:host` rules the
|
|
201
|
+
orchestrator adopts internally. That ordering is deliberate: an app embedding
|
|
202
|
+
its own login should be able to match its design system without a server
|
|
203
|
+
round-trip. Leave the tokens alone and centrally-managed tenant branding
|
|
204
|
+
applies as before. `customization.browser.spec.ts` pins this.
|
|
205
|
+
|
|
206
|
+
**Sizing is a two-mode contract.** The default is `variant="widget"`:
|
|
207
|
+
content-sized, transparent through every layer, no fonts injected into your
|
|
208
|
+
document, no focus grab on load — drop it into a section, sidebar, or modal
|
|
209
|
+
and your app keeps owning the page. Dedicated login routes opt into the
|
|
210
|
+
full-page chrome:
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<zitadel-login variant="page"></zitadel-login>
|
|
214
|
+
<!-- claims the viewport, paints the surface background from tokens,
|
|
215
|
+
loads the brand font, focuses the first field -->
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Width-responsive chrome (the split designs' two-column collapse, the compact
|
|
219
|
+
brand header) keys off the **widget's own width** via container queries, so a
|
|
220
|
+
narrow embed on a desktop viewport lays out like a phone. Fine-grained height
|
|
221
|
+
control in either mode: `--zl-page-min-height` (inherits across the shadow
|
|
222
|
+
boundaries, releasing the orchestrator mount and the `zl-page-shell` atom in
|
|
223
|
+
one setting). `embedding.browser.spec.ts` pins this whole contract.
|
|
224
|
+
|
|
225
|
+
**Colour mode** ships light and dark. A `page` renders dark (the design
|
|
226
|
+
system's primary surface); a `widget` follows the visitor's
|
|
227
|
+
`prefers-color-scheme` so it doesn't force a dark card onto a light page.
|
|
228
|
+
Pin it when your app's surface is fixed:
|
|
229
|
+
|
|
230
|
+
```html
|
|
231
|
+
<zitadel-login theme="light"></zitadel-login>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Resolution runs strongest-first: this `theme` property → the tenant's
|
|
235
|
+
`branding.theme.mode` → the variant default. The resolved mode lands on
|
|
236
|
+
`data-theme` on the element, and every `--zl-*` token repaints with it.
|
|
237
|
+
|
|
238
|
+
Atom internals forward through the orchestrator as `<atom>-<part>` names —
|
|
239
|
+
`zitadel-login::part(field-input)`, `zitadel-login::part(button-root)` — for
|
|
240
|
+
every part an atom's manifest declares; bare names (`zl-field::part(input)`)
|
|
241
|
+
apply when composing atoms directly without the orchestrator
|
|
242
|
+
(`exportparts.browser.spec.ts` pins the forwarding).
|
|
184
243
|
|
|
185
244
|
Automation can use the stable host and native shadow-root hooks that the default
|
|
186
|
-
template emits
|
|
187
|
-
and `zitadel-action-submit
|
|
245
|
+
template emits. Host atoms expose hooks such as `zitadel-field-email`,
|
|
246
|
+
`zitadel-field-password`, and `zitadel-action-submit`; their native shadow
|
|
247
|
+
controls expose hooks such as `zitadel-input-email`, `zitadel-input-password`,
|
|
248
|
+
and `zitadel-action-submit-button`. Hooks are method-named even when the flow
|
|
249
|
+
engine names a credential field `x-auth-methods#<method>` — the `name`
|
|
250
|
+
attribute keeps that raw form key, only the `data-testid` hooks are normalised
|
|
251
|
+
(`hookName` in `src/internal/hook-name.ts`).
|
|
188
252
|
|
|
189
253
|
A tenant Liquid template can already be supplied through the branding
|
|
190
254
|
payload's `liquid_template` field; a dedicated declarative `template`
|
|
@@ -197,7 +261,10 @@ renders the bundled `default.liquid`. Tracked as a follow-up.
|
|
|
197
261
|
|
|
198
262
|
| Property | Type | Notes |
|
|
199
263
|
| --- | --- | --- |
|
|
264
|
+
| `variant` | `'widget' \| 'page'` | Sizing/chrome mode. `widget` (default): content-sized, transparent, no font injection, no initial focus grab. `page`: full-page chrome for dedicated login routes |
|
|
265
|
+
| `theme` | `'light' \| 'dark' \| 'auto'` | Colour mode. Unset defers to `branding.theme.mode`, then to the variant default (`dark` for `page`, `auto` for `widget`). Resolved value lands on `data-theme` |
|
|
200
266
|
| `purpose` | `'login' \| 'register' \| 'reset_password' \| string` | Which flow purpose to drive |
|
|
267
|
+
| `flowName` / `flow-name` | `string` | Run the flow definition with this `name` instead of the project default |
|
|
201
268
|
| `project` | `ZitadelProject` | SDK handle from `configureZitadel()`. Object property (not an attribute). When unset, the element falls back to the global handle from `getZitadelConfig()` |
|
|
202
269
|
| `lang` | `string` | BCP 47 tag (e.g. `"de"`, `"en-US"`). Resolves to a built-in dictionary; falls back to `<html lang>` / `navigator.language` |
|
|
203
270
|
| `locales` | `Record<string, Locale>` | Custom locale dictionaries keyed by language code; spread over the built-in dictionary so partial overrides work |
|
|
@@ -205,22 +272,24 @@ renders the bundled `default.liquid`. Tracked as a follow-up.
|
|
|
205
272
|
| `resumeFlowId` / `resume-flow-id` | `string` | Resume an existing flow handle instead of starting fresh |
|
|
206
273
|
|
|
207
274
|
Events: `zitadel-flow-input`, `zitadel-flow-step`, `zitadel-flow-complete`,
|
|
208
|
-
`zitadel-flow-error`.
|
|
209
|
-
|
|
210
|
-
|
|
275
|
+
`zitadel-flow-error`. `zitadel-flow-step` fires for every applied step
|
|
276
|
+
including the first, so a host app can drive its own chrome (progress,
|
|
277
|
+
headings, analytics) from mount onwards rather than from the first submit.
|
|
278
|
+
The orchestrator exposes `::part(form)` for tenant-side CSS hooks. Adopts
|
|
279
|
+
design tokens and `branding.font_url` into its shadow root on each update.
|
|
211
280
|
|
|
212
281
|
### `<zitadel-logout>`
|
|
213
282
|
|
|
214
|
-
Session menu / sign-out control for embedded apps. Reads the
|
|
215
|
-
`
|
|
216
|
-
(`DELETE /sessions/me`) through
|
|
217
|
-
the same token adoption as
|
|
283
|
+
Session menu / sign-out control for embedded apps. Reads the signed-in
|
|
284
|
+
identity from `getMySession` (`GET /sessions/me`) — the same source as
|
|
285
|
+
`<zitadel-session>` — calls `revokeMySession` (`DELETE /sessions/me`) through
|
|
286
|
+
the SDK handle, and clears the session. Uses the same token adoption as
|
|
287
|
+
`<zitadel-login>` (`applyBaseTokens`).
|
|
218
288
|
|
|
219
289
|
| Property | Type | Notes |
|
|
220
290
|
| --- | --- | --- |
|
|
221
291
|
| `project` | `ZitadelProject` | SDK handle from `configureZitadel()`. Object property; falls back to the global handle from `getZitadelConfig()` |
|
|
222
292
|
| `postSignOutUrl` / `post-sign-out-url` | `string` | Navigate here after sign-out |
|
|
223
|
-
| `clientId` / `client-id` | `string` | Optional OIDC client id forwarded to `getEndSessionUrl()` |
|
|
224
293
|
|
|
225
294
|
Supports a light-DOM `<template>` slot for a fully custom menu; default UI is
|
|
226
295
|
the avatar trigger + dropdown.
|
|
@@ -278,15 +347,12 @@ See [`src/atoms/`](src/atoms) for full TypeScript types and JSDoc.
|
|
|
278
347
|
|
|
279
348
|
```
|
|
280
349
|
packages/components/
|
|
281
|
-
├── dev/ Vite playground (atoms + login routes)
|
|
282
|
-
│ ├── index.html
|
|
283
|
-
│ ├── main.ts bootstraps @zitadel/api-mock + MSW worker
|
|
284
|
-
│ ├── branding-presets.ts tenant-style branding payloads
|
|
285
|
-
│ └── pages/ atom playground + <zitadel-login> demo
|
|
286
350
|
├── src/
|
|
287
351
|
│ ├── atoms/ zl-field, zl-button, zl-alert, zl-icon, zl-pill,
|
|
288
|
-
│ │ zl-card, zl-page-shell
|
|
289
|
-
│
|
|
352
|
+
│ │ zl-card, zl-checkbox, zl-select, zl-page-shell,
|
|
353
|
+
│ │ zl-passkey + tests
|
|
354
|
+
│ ├── orchestrator/ <zitadel-login>, <zitadel-logout>, <zitadel-session>,
|
|
355
|
+
│ │ api-client, liquid, branding
|
|
290
356
|
│ │ ├── locales/ bundled English fallback
|
|
291
357
|
│ │ └── templates/ default.liquid (all steps) + layout-chrome.css
|
|
292
358
|
│ ├── tokens/ re-export of @zitadel/design-tokens
|
|
@@ -294,10 +360,12 @@ packages/components/
|
|
|
294
360
|
│ ├── manifests.ts per-atom attribute / part / event manifests
|
|
295
361
|
│ └── index.ts barrel
|
|
296
362
|
├── tsdown.config.ts library build (externalises lit/liquidjs/dompurify)
|
|
297
|
-
├── vite.config.mts dev server
|
|
298
363
|
└── vitest.config.ts jsdom (unit) + chromium (browser) projects
|
|
299
364
|
```
|
|
300
365
|
|
|
366
|
+
The interactive workbench (the atoms and the `<zitadel-login>`
|
|
367
|
+
orchestrator) lives in [`apps/storybook`](../../apps/storybook/README.md).
|
|
368
|
+
|
|
301
369
|
## Develop
|
|
302
370
|
|
|
303
371
|
Use **Moon** for tasks in this monorepo (`moon run <project>:<task>`).
|
|
@@ -309,21 +377,16 @@ documented path.
|
|
|
309
377
|
# install once at the repo root
|
|
310
378
|
corepack pnpm install
|
|
311
379
|
|
|
312
|
-
# ---
|
|
313
|
-
|
|
314
|
-
# Lit: atoms + login, in-browser MSW
|
|
315
|
-
moon run components:dev
|
|
316
|
-
# → http://localhost:5173/?route=login
|
|
317
|
-
# → http://localhost:5173/?route=atoms
|
|
380
|
+
# --- Workbench ---
|
|
318
381
|
|
|
319
|
-
#
|
|
320
|
-
moon run
|
|
321
|
-
# → http://localhost:
|
|
382
|
+
# Storybook: the atoms and the <zitadel-login> orchestrator
|
|
383
|
+
moon run storybook:dev
|
|
384
|
+
# → http://localhost:6006
|
|
322
385
|
|
|
323
386
|
# Framework demos (TCP mock + SDK) — see apps/demo-*/README.md
|
|
324
|
-
# moon run api-mock:start # → http://localhost:
|
|
325
|
-
#
|
|
326
|
-
#
|
|
387
|
+
# moon run api-mock:start # → http://localhost:8080
|
|
388
|
+
# moon run demo-next:dev # → :3002 (ZITADEL_URL defaults to :8080)
|
|
389
|
+
# moon run demo-nuxt:dev # → :3001 (ZITADEL_URL defaults to :8080)
|
|
327
390
|
|
|
328
391
|
# --- Package checks ---
|
|
329
392
|
|
|
@@ -333,8 +396,8 @@ moon run components:typecheck
|
|
|
333
396
|
moon run components:build
|
|
334
397
|
```
|
|
335
398
|
|
|
336
|
-
|
|
337
|
-
|
|
399
|
+
Storybook loads the built `dist/`, so run `moon run components:build` after
|
|
400
|
+
source changes (its Storybook tasks already depend on the build).
|
|
338
401
|
|
|
339
402
|
**Framework demos** need the TCP mock plus a rebuild after orchestrator changes —
|
|
340
403
|
see [`apps/demo-next/README.md`](../../apps/demo-next/README.md) and
|
package/dist/atoms/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { IconName, ZlAlert, ZlButton, ZlCard, ZlField, ZlFieldType, ZlIcon, ZlPageShell, ZlPasskey, ZlPasskeyErrorDetail, ZlPasskeyResultDetail, ZlPill, zlAlertManifest, zlButtonManifest, zlCardManifest, zlFieldManifest, zlIconManifest, zlPageShellManifest, zlPasskeyManifest, zlPillManifest };
|
|
1
|
+
import { An as ZlAlert, Cn as ZlCheckbox, Dn as zlCardManifest, En as ZlCard, Fn as ZlIcon, In as zlIconManifest, Mn as IconName, Nn as IconSize, On as ZlButton, Pn as IconTone, Tn as zlCheckboxManifest, a as ZlPill, c as ZlPasskeyErrorDetail, d as ZlPageShell, f as zlPageShellManifest, h as zlFieldManifest, i as zlSelectManifest, jn as zlAlertManifest, kn as zlButtonManifest, l as ZlPasskeyResultDetail, m as ZlFieldType, n as ZlSelectChangeDetail, o as zlPillManifest, p as ZlField, r as ZlSelectOption, s as ZlPasskey, t as ZlSelect, u as zlPasskeyManifest, wn as ZlCheckboxChangeDetail } from "../index-BPgWdWx7.mjs";
|
|
2
|
+
export { IconName, IconSize, IconTone, ZlAlert, ZlButton, ZlCard, ZlCheckbox, ZlCheckboxChangeDetail, ZlField, ZlFieldType, ZlIcon, ZlPageShell, ZlPasskey, ZlPasskeyErrorDetail, ZlPasskeyResultDetail, ZlPill, ZlSelect, ZlSelectChangeDetail, ZlSelectOption, zlAlertManifest, zlButtonManifest, zlCardManifest, zlCheckboxManifest, zlFieldManifest, zlIconManifest, zlPageShellManifest, zlPasskeyManifest, zlPillManifest, zlSelectManifest };
|
package/dist/atoms/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { ZlAlert, ZlButton, ZlCard, ZlField, ZlIcon, ZlPageShell, ZlPasskey, ZlPill, zlAlertManifest, zlButtonManifest, zlCardManifest, zlFieldManifest, zlIconManifest, zlPageShellManifest, zlPasskeyManifest, zlPillManifest };
|
|
1
|
+
import { _ as zlButtonManifest, a as ZlPasskey, b as ZlIcon, c as zlPageShellManifest, f as ZlCheckbox, g as ZlButton, h as zlCardManifest, i as zlPillManifest, l as ZlField, m as ZlCard, n as zlSelectManifest, o as zlPasskeyManifest, p as zlCheckboxManifest, r as ZlPill, s as ZlPageShell, t as ZlSelect, u as zlFieldManifest, v as ZlAlert, x as zlIconManifest, y as zlAlertManifest } from "../atoms-DSxjEHca.mjs";
|
|
2
|
+
export { ZlAlert, ZlButton, ZlCard, ZlCheckbox, ZlField, ZlIcon, ZlPageShell, ZlPasskey, ZlPill, ZlSelect, zlAlertManifest, zlButtonManifest, zlCardManifest, zlCheckboxManifest, zlFieldManifest, zlIconManifest, zlPageShellManifest, zlPasskeyManifest, zlPillManifest, zlSelectManifest };
|