@lowdefy/docs-content 0.0.0-experimental-20260909201552 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +0 -1
  2. package/content/actions/login.md +5 -23
  3. package/content/actions/logout.md +5 -5
  4. package/content/agents/agentchat.md +1 -13
  5. package/content/concepts/ai-agent-docs.md +4 -90
  6. package/content/concepts/custom-styling.md +5 -50
  7. package/content/concepts/events-and-actions.md +2 -64
  8. package/content/concepts/i18n.md +1 -1
  9. package/content/connections/mongodb.md +3 -109
  10. package/content/container-blocks/modal.md +1 -1
  11. package/content/container-blocks/pagesidebarlayout.md +0 -1
  12. package/content/controls/reject.md +1 -3
  13. package/content/controls/throw.md +0 -1
  14. package/content/controls/try.md +2 -3
  15. package/content/display-blocks/difflist.md +1 -1
  16. package/content/display-blocks/difftimeline.md +1 -1
  17. package/content/display-blocks/s3download.md +1 -1
  18. package/content/display-blocks/search.md +0 -1
  19. package/content/input-blocks/checkboxselector.md +4 -80
  20. package/content/input-blocks/radioselector.md +3 -65
  21. package/content/input-blocks/s3uploadbutton.md +1 -1
  22. package/content/input-blocks/s3uploaddragger.md +1 -1
  23. package/content/input-blocks/s3uploadphoto.md +1 -1
  24. package/content/input-blocks/tiptapmentioninput.md +1 -1
  25. package/content/list-blocks/masonrylist.md +1 -1
  26. package/content/operators/_type.md +3 -14
  27. package/content/operators/_user.md +3 -3
  28. package/content/user-authentication/login-and-logout.md +8 -158
  29. package/content/user-authentication/users-introduction.md +0 -8
  30. package/index.json +1 -99
  31. package/package.json +1 -3
  32. package/content/actions/emailotpsend.md +0 -58
  33. package/content/actions/emailotpverify.md +0 -77
  34. package/content/actions/magiclinkverify.md +0 -113
  35. package/content/controls/while.md +0 -46
  36. package/content/input-blocks/captcha.md +0 -40
  37. package/content/input-blocks/tagmultipleselector.md +0 -101
  38. package/content/input-blocks/tagselector.md +0 -101
  39. package/content/migration/auth-upgrade.md +0 -315
  40. package/content/other/mongodbadapter.md +0 -3
  41. package/content/user-authentication/auth-steps.md +0 -111
  42. package/content/user-authentication/mcp-oauth.md +0 -289
  43. package/content/user-authentication/organizations.md +0 -134
  44. package/content/user-authentication/two-factor.md +0 -225
  45. package/content/user-authentication/user-object.md +0 -58
  46. package/hazards.json +0 -44
package/index.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.5.1",
2
+ "version": "5.4.0",
3
3
  "docs": [
4
4
  {
5
5
  "slug": "other/introduction",
@@ -283,48 +283,12 @@
283
283
  "section": "User Authentication",
284
284
  "path": "content/user-authentication/login-and-logout.md"
285
285
  },
286
- {
287
- "slug": "user-authentication/two-factor",
288
- "title": "Two-Factor Authentication",
289
- "section": "User Authentication",
290
- "path": "content/user-authentication/two-factor.md"
291
- },
292
- {
293
- "slug": "user-authentication/organizations",
294
- "title": "Organizations & Multi-Tenancy",
295
- "section": "User Authentication",
296
- "path": "content/user-authentication/organizations.md"
297
- },
298
- {
299
- "slug": "user-authentication/auth-steps",
300
- "title": "Auth Steps",
301
- "section": "User Authentication",
302
- "path": "content/user-authentication/auth-steps.md"
303
- },
304
- {
305
- "slug": "user-authentication/mcp-oauth",
306
- "title": "MCP Server & OAuth",
307
- "section": "User Authentication",
308
- "path": "content/user-authentication/mcp-oauth.md"
309
- },
310
- {
311
- "slug": "user-authentication/user-object",
312
- "title": "User Object",
313
- "section": "User Authentication",
314
- "path": "content/user-authentication/user-object.md"
315
- },
316
286
  {
317
287
  "slug": "other/next-auth-providers",
318
288
  "title": "next-auth-providers",
319
289
  "section": "Other",
320
290
  "path": "content/other/next-auth-providers.md"
321
291
  },
322
- {
323
- "slug": "other/mongodbadapter",
324
- "title": "MongoDBAdapter",
325
- "section": "Other",
326
- "path": "content/other/mongodbadapter.md"
327
- },
328
292
  {
329
293
  "slug": "testing/e2e-introduction",
330
294
  "title": "E2E Testing",
@@ -385,14 +349,6 @@
385
349
  "kind": "block",
386
350
  "typeName": "ButtonSelector"
387
351
  },
388
- {
389
- "slug": "input-blocks/captcha",
390
- "title": "Captcha",
391
- "section": "Input Blocks",
392
- "path": "content/input-blocks/captcha.md",
393
- "kind": "block",
394
- "typeName": "Captcha"
395
- },
396
352
  {
397
353
  "slug": "input-blocks/checkboxselector",
398
354
  "title": "CheckboxSelector",
@@ -585,22 +541,6 @@
585
541
  "kind": "block",
586
542
  "typeName": "Switch"
587
543
  },
588
- {
589
- "slug": "input-blocks/tagmultipleselector",
590
- "title": "TagMultipleSelector",
591
- "section": "Input Blocks",
592
- "path": "content/input-blocks/tagmultipleselector.md",
593
- "kind": "block",
594
- "typeName": "TagMultipleSelector"
595
- },
596
- {
597
- "slug": "input-blocks/tagselector",
598
- "title": "TagSelector",
599
- "section": "Input Blocks",
600
- "path": "content/input-blocks/tagselector.md",
601
- "kind": "block",
602
- "typeName": "TagSelector"
603
- },
604
544
  {
605
545
  "slug": "input-blocks/textarea",
606
546
  "title": "TextArea",
@@ -1521,22 +1461,6 @@
1521
1461
  "kind": "action",
1522
1462
  "typeName": "DownloadCsv"
1523
1463
  },
1524
- {
1525
- "slug": "actions/emailotpsend",
1526
- "title": "EmailOtpSend",
1527
- "section": "Actions",
1528
- "path": "content/actions/emailotpsend.md",
1529
- "kind": "action",
1530
- "typeName": "EmailOtpSend"
1531
- },
1532
- {
1533
- "slug": "actions/emailotpverify",
1534
- "title": "EmailOtpVerify",
1535
- "section": "Actions",
1536
- "path": "content/actions/emailotpverify.md",
1537
- "kind": "action",
1538
- "typeName": "EmailOtpVerify"
1539
- },
1540
1464
  {
1541
1465
  "slug": "actions/fetch",
1542
1466
  "title": "Fetch",
@@ -1577,14 +1501,6 @@
1577
1501
  "kind": "action",
1578
1502
  "typeName": "Logout"
1579
1503
  },
1580
- {
1581
- "slug": "actions/magiclinkverify",
1582
- "title": "MagicLinkVerify",
1583
- "section": "Actions",
1584
- "path": "content/actions/magiclinkverify.md",
1585
- "kind": "action",
1586
- "typeName": "MagicLinkVerify"
1587
- },
1588
1504
  {
1589
1505
  "slug": "actions/pdfmake",
1590
1506
  "title": "PdfMake",
@@ -2343,26 +2259,12 @@
2343
2259
  "kind": "block",
2344
2260
  "typeName": ":try"
2345
2261
  },
2346
- {
2347
- "slug": "controls/while",
2348
- "title": ":while",
2349
- "section": "Controls",
2350
- "path": "content/controls/while.md",
2351
- "kind": "block",
2352
- "typeName": ":while"
2353
- },
2354
2262
  {
2355
2263
  "slug": "migration/upgrade-guide",
2356
2264
  "title": "Upgrade Guide",
2357
2265
  "section": "Migration",
2358
2266
  "path": "content/migration/upgrade-guide.md"
2359
2267
  },
2360
- {
2361
- "slug": "migration/auth-upgrade",
2362
- "title": "Auth Upgrade (BetterAuth)",
2363
- "section": "Migration",
2364
- "path": "content/migration/auth-upgrade.md"
2365
- },
2366
2268
  {
2367
2269
  "slug": "migration/v5-to-v6",
2368
2270
  "title": "Version 5 to Version 6",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowdefy/docs-content",
3
- "version": "0.0.0-experimental-20260909201552",
3
+ "version": "6.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Lowdefy documentation extracted as markdown for AI coding agents.",
6
6
  "homepage": "https://lowdefy.com",
@@ -20,13 +20,11 @@
20
20
  "type": "module",
21
21
  "exports": {
22
22
  "./index.json": "./index.json",
23
- "./hazards.json": "./hazards.json",
24
23
  "./scripts/extractAgentDocs.js": "./scripts/extractAgentDocs.js",
25
24
  "./content/*": "./content/*"
26
25
  },
27
26
  "files": [
28
27
  "content/**",
29
- "hazards.json",
30
28
  "index.json",
31
29
  "scripts/*"
32
30
  ],
@@ -1,58 +0,0 @@
1
- # EmailOtpSend
2
-
3
- ```
4
- (params: {
5
- email: string
6
- captchaToken?: string
7
- }): void
8
- ```
9
-
10
- The `EmailOtpSend` action emails a one-time sign-in code to an address. It requires `auth.emailOTP` to be enabled — see [Configuration](/auth-configuration).
11
-
12
- A code is typed into the tab the person started from, so the sign-in survives corporate mail security that pre-fetches links (which consumes a single-use magic link before the person clicks it), and it works when the email is read on another device.
13
-
14
- Use [`EmailOtpVerify`](/EmailOtpVerify) to complete the sign-in with the code.
15
-
16
- When `auth.magicLink` is enabled alongside `auth.emailOTP`, the magic-link email already carries the code: the [`Login`](/Login) action with `magicLink: true` sends one email that serves both paths, and `EmailOtpSend` is then only needed for a code-only page that offers no link at all.
17
-
18
- Under an invite-only signup policy an address that is not admitted gets no email, and the action still resolves successfully — the response is identical either way, so the "check your email" screen gives nothing away about who has an account.
19
-
20
- #### Parameters
21
-
22
- ###### object
23
- - `email: string`: __required__ - The email address to send the sign-in code to.
24
- - `captchaToken: string`: A captcha token minted by a `Captcha` block, sent as the `x-captcha-response` header when `auth.captcha` is enabled. Tokens are single-use, so reset the `Captcha` block in `onError` for retries.
25
-
26
- #### Examples
27
-
28
- ###### Send a sign-in code:
29
- ```yaml
30
- - id: send_code
31
- type: EmailOtpSend
32
- params:
33
- email:
34
- _state: email
35
- ```
36
-
37
- ###### Send a code and tell the user to check their inbox:
38
- ```yaml
39
- - id: send_code
40
- type: Button
41
- properties:
42
- title: Send code
43
- events:
44
- onClick:
45
- - id: validate
46
- type: Validate
47
- params:
48
- regex: ^email$
49
- - id: send
50
- type: EmailOtpSend
51
- params:
52
- email:
53
- _state: email
54
- - id: sent
55
- type: DisplayMessage
56
- params:
57
- content: Check your email for the sign-in code.
58
- ```
@@ -1,77 +0,0 @@
1
- # EmailOtpVerify
2
-
3
- ```
4
- (params: {
5
- email: string
6
- otp: string
7
- callbackUrl?: {
8
- home?: boolean
9
- pageId?: string
10
- url?: string
11
- urlQuery?: object
12
- } | false
13
- }): void
14
- ```
15
-
16
- The `EmailOtpVerify` action signs a user in with the one-time code emailed to them by [`EmailOtpSend`](/EmailOtpSend), or carried on the magic-link email when `auth.magicLink` and `auth.emailOTP` are both enabled. It requires `auth.emailOTP` to be enabled — see [Configuration](/auth-configuration).
17
-
18
- On success the session cookie is set — creating the account on first sign-in, unless `emailOTP.disableSignUp` is `true` — and the browser lands on the resolved `callbackUrl`. Three sources are consulted, in order:
19
-
20
- 1. The `callbackUrl` param, if given.
21
- 2. The `?callbackUrl=` query parameter, which Lowdefy sets when it redirects an unauthenticated user to the sign-in page.
22
- 3. The app's home page.
23
-
24
- To sign in without navigating, set `callbackUrl: false` — valid here, unlike on the magic-link and social paths, because this is a plain JSON sign-in with no redirect hop.
25
-
26
- If the user has two-factor authentication enrolled, the code mints a challenge rather than a session: the action navigates to `authPages.twoFactor` carrying the resolved destination as `?callbackUrl=`, where [`TwoFactorVerify`](/two-factor) finishes the sign-in, and the event chain stops.
27
-
28
- An expired, mistyped or already-used code is the auth server rejecting the attempt, not an app fault. The action throws a `UserError`: `catch` actions still run and the message still displays, but it is logged to the browser console only and is never reported to the server.
29
-
30
- #### Parameters
31
-
32
- ###### object
33
- - `email: string`: __required__ - The email address the code was sent to.
34
- - `otp: string`: __required__ - The one-time code from the email.
35
- - `callbackUrl: object | false`: Set to `false` to sign in without navigating. As an object:
36
- - `home: boolean`: Land on the app's home page.
37
- - `pageId: string`: The pageId to land on.
38
- - `url: string`: The URL to land on. An absolute URL is not `basePath`-prefixed, so it can be an external landing page.
39
- - `urlQuery: object`: The urlQuery to set on the destination.
40
-
41
- #### Examples
42
-
43
- ###### Sign in with the code and land on the home page (or the page the user was bounced from):
44
- ```yaml
45
- - id: verify_code
46
- type: EmailOtpVerify
47
- params:
48
- email:
49
- _state: email
50
- otp:
51
- _state: otp
52
- ```
53
-
54
- ###### Sign in and land on a specific page:
55
- ```yaml
56
- - id: verify_code
57
- type: EmailOtpVerify
58
- params:
59
- email:
60
- _state: email
61
- otp:
62
- _state: otp
63
- callbackUrl:
64
- pageId: dashboard
65
- ```
66
-
67
- ###### Sign in inside a modal, without navigating:
68
- ```yaml
69
- - id: verify_code
70
- type: EmailOtpVerify
71
- params:
72
- email:
73
- _state: email
74
- otp:
75
- _state: otp
76
- callbackUrl: false
77
- ```
@@ -1,113 +0,0 @@
1
- # MagicLinkVerify
2
-
3
- ```
4
- (params?: {
5
- callbackUrl?: {
6
- home?: boolean
7
- pageId?: string
8
- url?: string
9
- urlQuery?: object
10
- }
11
- errorCallbackUrl?: {
12
- home?: boolean
13
- pageId?: string
14
- url?: string
15
- urlQuery?: object
16
- }
17
- newUserCallbackUrl?: {
18
- home?: boolean
19
- pageId?: string
20
- url?: string
21
- urlQuery?: object
22
- }
23
- token?: string
24
- }): void
25
- ```
26
-
27
- The `MagicLinkVerify` action completes a magic-link sign-in from the landing page the sign-in email points at. It navigates the browser to the auth server's verify endpoint, which sets the session cookie and redirects the user on to their destination.
28
-
29
- ## Why a landing page
30
-
31
- A magic-link token is single-use, and the verify endpoint consumes it on the **first** `GET` of the URL. Corporate mail security — Microsoft Defender Safe Links, Proofpoint URL Defense, Mimecast — fetches every link in a message as it is delivered. When the email links straight at the verify endpoint the scanner spends the token minutes before the person clicks, and the person lands on the auth error page with `INVALID_TOKEN`.
32
-
33
- Setting [`auth.authPages.magicLink`](/auth-configuration#the-magic-link-landing-page) to a page in your app moves the email's link to that page, carrying the token and callback destinations on the URL query. Fetching a Lowdefy page has no side effect, so the token stays unspent until a person clicks a button that runs `MagicLinkVerify`.
34
-
35
- This action **must** be bound to a click. Do not run it in `onMount` and do not auto-redirect from the landing page: scanning sandboxes that execute JavaScript would consume the token anyway, and you would be no better off than linking at the verify endpoint directly.
36
-
37
- ## Defaults come from the URL query
38
-
39
- Every parameter is optional. The auth server minted the landing URL with the verify query on it, so the action reads its defaults from the page's own URL:
40
-
41
- | Parameter | Default |
42
- | --------- | ------- |
43
- | `token` | the `?token=` query parameter |
44
- | `callbackUrl` | the `?callbackURL=` query parameter, else the auth server's default |
45
- | `newUserCallbackUrl` | the `?newUserCallbackURL=` query parameter, else `callbackUrl` |
46
- | `errorCallbackUrl` | the `?errorCallbackURL=` query parameter, else `auth.authPages.error` |
47
-
48
- Pass a parameter only to override what the email carried. The action throws if there is no token in either place, because there is nothing to verify.
49
-
50
- `callbackUrl: false` is not valid here. Verification redirects through a hop the app does not control, so there is no staying put.
51
-
52
- The event chain ends after this action, like every other action that navigates the browser away — a step after it would race the page being replaced.
53
-
54
- #### Parameters
55
-
56
- ###### object
57
- - `token: string`: The single-use magic-link token. Defaults to the `?token=` URL query parameter of the landing page.
58
- - `callbackUrl: object`: Where a successful sign-in lands. Defaults to the `?callbackURL=` URL query parameter.
59
- - `home: boolean`: Land on the app's home page.
60
- - `pageId: string`: The pageId to land on.
61
- - `url: string`: The URL to land on. An absolute URL is not `basePath`-prefixed, so it can be an external landing page.
62
- - `urlQuery: object`: The urlQuery to set on the destination.
63
- - `newUserCallbackUrl: object`: Where a sign-in that creates a new account lands, for a first-run or onboarding page. Defaults to the `?newUserCallbackURL=` URL query parameter. Same fields as `callbackUrl`.
64
- - `errorCallbackUrl: object`: Where a failed verification lands, with the reason in `?error=`. Defaults to the `?errorCallbackURL=` URL query parameter, then to `auth.authPages.error`. Same fields as `callbackUrl`.
65
-
66
- #### Examples
67
-
68
- ###### The landing page, with everything taken from the URL query:
69
- ```yaml
70
- id: magic-link
71
- type: PageHeaderMenu
72
- blocks:
73
- - id: content
74
- type: Box
75
- blocks:
76
- - id: title
77
- type: Title
78
- properties:
79
- content: Sign in
80
- level: 3
81
- - id: description
82
- type: Paragraph
83
- properties:
84
- content: Click the button below to finish signing in.
85
- - id: verify_button
86
- type: Button
87
- properties:
88
- title: Sign in
89
- events:
90
- onClick:
91
- - id: verify
92
- type: MagicLinkVerify
93
- ```
94
-
95
- ###### Send a new user to an onboarding page instead:
96
- ```yaml
97
- - id: verify
98
- type: MagicLinkVerify
99
- params:
100
- newUserCallbackUrl:
101
- pageId: welcome
102
- ```
103
-
104
- ###### Override where a successful sign-in lands:
105
- ```yaml
106
- - id: verify
107
- type: MagicLinkVerify
108
- params:
109
- callbackUrl:
110
- pageId: dashboard
111
- urlQuery:
112
- source: magic-link
113
- ```
@@ -1,46 +0,0 @@
1
- # :while
2
-
3
- ```
4
- ({:while: boolean, :do: routine}): void
5
- ```
6
-
7
- The `:while` control implements a while loop within a routine. The routine defined in the `:do` key will be repeated as long as the test defined using the `:while` key is true.
8
-
9
- #### Keys
10
-
11
- - `:while: boolean`: __Required__ - The test that will determine whether or not the defined routine should execute again.
12
- - `:do: routine`: __Required__ - The routine to run while the test condition holds.
13
-
14
- The `:while` condition is evaluated fresh before every iteration, against the routine's current `state` and `steps`. This is how the loop terminates - the routine in `:do` changes the state or step results that the condition reads.
15
-
16
- Unlike `:for`, a `:while` loop does not index the step results of its body. A `:while` has no item to index by, so each iteration overwrites the previous iteration's step results, and `_step: my_step` inside or after the loop reads the value from the latest iteration.
17
-
18
- There is no iteration cap and no timeout. A condition that the routine in `:do` never falsifies loops forever, exactly as it would in JavaScript.
19
-
20
- #### Examples
21
-
22
- ###### Simple Example
23
- ```
24
- - :set_state:
25
- count: 0
26
- - :while:
27
- _lt:
28
- - _state: count
29
- - 5
30
- :do:
31
- - :log:
32
- _state: count
33
- - :set_state:
34
- count:
35
- _sum:
36
- - _state: count
37
- - 1
38
- ```
39
- Logs:
40
- ```
41
- 0
42
- 1
43
- 2
44
- 3
45
- 4
46
- ```
@@ -1,40 +0,0 @@
1
- # Captcha
2
-
3
- Renders a captcha widget (Cloudflare Turnstile) and writes the minted token into state under its blockId. Configure `provider` and `siteKey` from the `_build.authConfig` projection when `auth.captcha` is enabled. The `reset` method clears the value and mints a fresh token; expiry clears the value automatically.
4
-
5
- > The widget script loads from the provider's CDN at render - apps behind a strict CSP should allowlist challenges.cloudflare.com. Tokens are single-use and short-lived: pass the block value as the `captchaToken` param of auth actions, and call the block's `reset` method from the action's `onError` chain to mint a fresh token for retries.
6
-
7
- ```yaml
8
- - id: captcha_basic
9
- type: Captcha
10
- properties:
11
- provider: cloudflare-turnstile
12
- siteKey: 1x00000000000000000000AA
13
- ```
14
-
15
- ```yaml
16
- - id: captcha_compact
17
- type: Captcha
18
- properties:
19
- provider: cloudflare-turnstile
20
- siteKey: 1x00000000000000000000AA
21
- theme: light
22
- size: compact
23
- ```
24
-
25
- | Property | Type | Default | Description |
26
- | --- | --- | --- | --- |
27
- | `provider` | string | `"cloudflare-turnstile"` | Captcha provider to render. Normally fed from the auth config projection: { _build.authConfig: captcha.provider }. Enum: `cloudflare-turnstile`. |
28
- | `siteKey` | string | - | The provider site key - public, rendered into the page. Normally fed from the auth config projection: { _build.authConfig: captcha.siteKey }. |
29
- | `theme` | string | `"auto"` | Widget theme. Enum: `auto`, `light`, `dark`. |
30
- | `size` | string | `"normal"` | Widget size. Enum: `normal`, `compact`, `flexible`. |
31
-
32
- | Event | Event Data | Description |
33
- | --- | --- | --- |
34
- | `onSuccess` | \- | Trigger actions when the captcha challenge succeeds and a token is minted. |
35
- | `onExpire` | \- | Trigger actions when the minted token expires - the block value is cleared so a late submit fails with a clear missing-token error. |
36
- | `onError` | \- | Trigger actions when the captcha provider reports an error. |
37
-
38
- No CSS keys defined.
39
-
40
- No slots defined.
@@ -1,101 +0,0 @@
1
- # TagMultipleSelector
2
-
3
- Multi-select input rendered as a row of toggleable, colored tag pills.
4
-
5
- ```yaml
6
- - id: basic_strings
7
- type: TagMultipleSelector
8
- properties:
9
- title: Domains
10
- options:
11
- - Ethics
12
- - Environment
13
- - Governance
14
- - Social
15
- - Data Privacy
16
- ```
17
-
18
- ```yaml
19
- - id: label_value
20
- type: TagMultipleSelector
21
- properties:
22
- title: Status Filter
23
- options:
24
- - label: Draft
25
- value: draft
26
- - label: In Review
27
- value: in_review
28
- - label: Published
29
- value: published
30
- - label: Archived
31
- value: archived
32
- disabled: true
33
- ```
34
-
35
- ```yaml
36
- - id: explicit_colors
37
- type: TagMultipleSelector
38
- properties:
39
- title: Priorities
40
- options:
41
- - label: Low
42
- value: low
43
- color: "#59A14F"
44
- - label: Medium
45
- value: medium
46
- color: "#EDC948"
47
- - label: High
48
- value: high
49
- color: "#E15759"
50
- - id: single_accent
51
- type: TagMultipleSelector
52
- properties:
53
- title: Interests
54
- colored: false
55
- options:
56
- - Design
57
- - Engineering
58
- - Product
59
- - Research
60
- ```
61
-
62
- | Property | Type | Default | Description |
63
- | --- | --- | --- | --- |
64
- | `options` | array | - | Options to select from. Primitives, or { label, value, color, disabled } - an explicit color overrides the stable palette color. |
65
- | `options.$.label` | string | - | Tag label. Defaults to the value. |
66
- | `options.$.value` | - | - | Option value written into the selection array. |
67
- | `options.$.color` | string | - | Explicit tag color (hex or CSS color). Overrides the stable palette color. |
68
- | `options.$.disabled` | boolean | `false` | Disable this tag. |
69
- | `colored` | boolean | `true` | Give each option a stable color (hash of its value over a fixed palette). false = single primary accent. |
70
- | `disabled` | boolean | `false` | Disable the block if true. |
71
- | `size` | string | `"default"` | Size of the block. Enum: `small`, `default`, `large`. |
72
- | `label` | object | - | Label properties. |
73
- | `label.align` | string | `"left"` | Align label left or right when inline. Enum: `left`, `right`. |
74
- | `label.colon` | boolean | `true` | Append label with colon. |
75
- | `label.extra` | string | - | Extra text to display beneath the content - supports html. |
76
- | `label.title` | string | - | Label title - supports html. |
77
- | `label.tooltip` | string \| object | - | Help tooltip shown via an icon beside the label. A string sets the tooltip text (supports html), or an object to also customize the icon and color. Use the block's onTooltipClick event to respond to clicks on the icon. |
78
- | `label.tooltip.title` | string | - | Tooltip text shown on hover - supports html. |
79
- | `label.tooltip.icon` | string | `"AiOutlineQuestionCircle"` | Name of the icon to show beside the label. |
80
- | `label.tooltip.color` | string | - | Color of the tooltip icon. |
81
- | `label.span` | number | - | Label inline span. |
82
- | `label.disabled` | boolean | `false` | Hide input label. |
83
- | `label.hasFeedback` | boolean | `true` | Display feedback extra from validation, this does not disable validation. |
84
- | `label.inline` | boolean | `false` | Render input and label inline. |
85
- | `title` | string | - | Title to describe the input component, if no title is specified the block id is displayed - supports html. |
86
-
87
- | Event | Event Data | Description |
88
- | --- | --- | --- |
89
- | `onChange` | `{ value }` | Trigger actions when the selection is changed. |
90
- | `onTooltipClick` | \- | Trigger actions when the tooltip icon is clicked. |
91
-
92
- | Key | Target |
93
- | --- | --- |
94
- | `/block` | Outer block wrapper (always available). |
95
- | `/element` | The TagMultipleSelector tag row. |
96
- | `/tag` | Each tag pill. |
97
- | `/label` | The TagMultipleSelector label. |
98
- | `/extra` | The TagMultipleSelector extra content. |
99
- | `/feedback` | The TagMultipleSelector validation feedback. |
100
-
101
- No slots defined.