@object-ui/components 17.6.0 → 18.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.
- package/CHANGELOG.md +9618 -0
- package/README.md +27 -3
- package/dist/custom/RecordTitleChip.d.ts +4 -3
- package/dist/custom/button-group.d.ts +1 -1
- package/dist/custom/combobox.d.ts +2 -4
- package/dist/custom/dialog-viewport-gutter.d.ts +37 -0
- package/dist/custom/empty-state-link.d.ts +63 -0
- package/dist/custom/empty.d.ts +16 -4
- package/dist/custom/field.d.ts +1 -1
- package/dist/custom/filter-builder.d.ts +225 -77
- package/dist/custom/grouping-editor.d.ts +4 -0
- package/dist/custom/horizontal-overflow.d.ts +18 -0
- package/dist/custom/index.d.ts +4 -1
- package/dist/custom/item.d.ts +1 -1
- package/dist/custom/kbd.d.ts +1 -1
- package/dist/custom/mobile-dialog-content.d.ts +22 -1
- package/dist/custom/navigation-overlay.d.ts +105 -0
- package/dist/custom/refresh-indicator.d.ts +8 -2
- package/dist/custom/sort-builder.d.ts +8 -0
- package/dist/custom/use-horizontal-overflow.d.ts +36 -0
- package/dist/custom/view-states.d.ts +74 -1
- package/dist/hooks/related-count-store.d.ts +81 -28
- package/dist/index.css +345 -361
- package/dist/index.d.ts +11 -3
- package/dist/index.js +8480 -6628
- package/dist/index.umd.cjs +11 -15
- package/dist/lib/close-label.d.ts +1 -2
- package/dist/lib/date-fns-locale.d.ts +41 -0
- package/dist/lib/inline-markdown.d.ts +64 -0
- package/dist/lib/lazy-icon.d.ts +32 -1
- package/dist/lib/lucide-record-icon-names.d.ts +30 -0
- package/dist/lib/utils.d.ts +113 -0
- package/dist/renderers/action/action-bar.d.ts +8 -36
- package/dist/renderers/action/action-button.d.ts +15 -4
- package/dist/renderers/action/action-group.d.ts +5 -4
- package/dist/renderers/action/action-icon.d.ts +12 -2
- package/dist/renderers/action/action-menu.d.ts +5 -2
- package/dist/renderers/action/auto-trigger.d.ts +19 -4
- package/dist/renderers/action/disabled-reason.d.ts +49 -0
- package/dist/renderers/action/resolve-icon.d.ts +27 -2
- package/dist/renderers/action/static-params.d.ts +71 -0
- package/dist/renderers/action/visibility-gate.d.ts +11 -3
- package/dist/renderers/basic/data-list.d.ts +2 -1
- package/dist/renderers/basic/elements.d.ts +2 -0
- package/dist/renderers/basic/html-elements.d.ts +7 -3
- package/dist/renderers/basic/readProps.d.ts +60 -0
- package/dist/renderers/basic/record-picker.d.ts +3 -2
- package/dist/renderers/complex/data-table.d.ts +31 -14
- package/dist/renderers/complex/dataTableBindDiagnostic.d.ts +187 -0
- package/dist/renderers/layout/box.d.ts +8 -0
- package/dist/renderers/layout/containers.d.ts +28 -23
- package/dist/renderers/layout/page-block-grid.d.ts +29 -0
- package/dist/renderers/layout/page-block-span.d.ts +50 -0
- package/dist/renderers/layout/page-description-context.d.ts +14 -0
- package/dist/renderers/layout/page-print.d.ts +14 -0
- package/dist/renderers/layout/page-region-posture.d.ts +82 -0
- package/dist/renderers/layout/react-page.d.ts +4 -0
- package/dist/renderers/navigation/sidebar.d.ts +31 -0
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/button.d.ts +1 -1
- package/dist/ui/calendar.d.ts +2 -1
- package/dist/ui/command.d.ts +7 -7
- package/dist/ui/index.d.ts +0 -1
- package/dist/ui/input-otp.d.ts +2 -2
- package/dist/ui/sheet.d.ts +1 -1
- package/dist/ui/sidebar.d.ts +2 -1
- package/package.json +14 -15
- package/dist/SchemaRenderer.d.ts +0 -4
- package/dist/custom/export-progress-dialog.d.ts +0 -43
- package/dist/hooks/use-export-job.d.ts +0 -34
- package/dist/ui/chart.d.ts +0 -56
- package/dist/ui/toast.d.ts +0 -22
|
@@ -31,8 +31,7 @@
|
|
|
31
31
|
* The no-provider path must stay English. A large number of existing unit
|
|
32
32
|
* tests and e2e specs address dialogs and drawers by their English accessible
|
|
33
33
|
* name with no `I18nProvider` mounted (e.g.
|
|
34
|
-
* `packages/plugin-form/src/discardGuard.test.tsx
|
|
35
|
-
* `packages/plugin-detail/src/__tests__/InlineCreateRelated.closeButtonName.test.tsx`),
|
|
34
|
+
* `packages/plugin-form/src/discardGuard.test.tsx`),
|
|
36
35
|
* and a primitive that rendered a raw `common.close` key there would break all
|
|
37
36
|
* of them. `createSafeTranslation` probes its test key and falls back to the
|
|
38
37
|
* defaults map below when translations are not configured, so "no provider"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Locale } from 'date-fns';
|
|
2
|
+
/** Every locale code this module can answer with: the loaders' keys, and `en-US`. */
|
|
3
|
+
export declare const DATE_LOCALE_KEYS: readonly string[];
|
|
4
|
+
/**
|
|
5
|
+
* The date-fns locale code a BCP-47 tag reads, by the chain in the header:
|
|
6
|
+
* the tag as given, its language with the region, then with the script, that
|
|
7
|
+
* `maximize()` gives it, then its bare language, then `en-US`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function dateLocaleKeyFor(tag: string): string;
|
|
10
|
+
/** The locale for `key` if it has been loaded, without loading it. */
|
|
11
|
+
export declare function loadedDateLocale(key: string): Locale | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Load the locale for `key`. Memoised: a loaded locale is returned without a
|
|
14
|
+
* second import, and concurrent callers share one promise. ⛔ A rejected load
|
|
15
|
+
* is not memoised, so a chunk that failed to download can be fetched again.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadDateLocale(key: string): Promise<Locale>;
|
|
18
|
+
/**
|
|
19
|
+
* `Calendar`'s input that names its locale as a BCP-47 TAG (objectui#10747).
|
|
20
|
+
*
|
|
21
|
+
* Declared here, beside the resolver it feeds, so the patch that adds it to the
|
|
22
|
+
* No-Touch `ui/calendar.tsx` stays a one-line reference.
|
|
23
|
+
*/
|
|
24
|
+
export interface CalendarLocaleTagProps {
|
|
25
|
+
/**
|
|
26
|
+
* The BCP-47 tag this calendar's caption, weekday heads and week start read,
|
|
27
|
+
* in place of the session's display locale: the tag a host already formats
|
|
28
|
+
* its own dates with, such as `CalendarView`'s `effectiveLocale`. It is
|
|
29
|
+
* resolved by the chain in this module's header, so `de-CH` reads date-fns
|
|
30
|
+
* `de`, and a tag date-fns has no locale for, or a malformed one, reads
|
|
31
|
+
* `enUS`. Absent, the calendar reads the display locale. A date-fns `locale`
|
|
32
|
+
* object passed to `Calendar` still wins over both.
|
|
33
|
+
*/
|
|
34
|
+
localeTag?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The date-fns `Locale` for `tag`, or for the session's display locale when no
|
|
38
|
+
* tag is given (objectui#10747): an explicit tag wins. It reads `enUS` until
|
|
39
|
+
* that locale has loaded, then re-renders its caller with it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function useDisplayDateLocale(tag?: string): Locale;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*
|
|
8
|
+
* The one inline Markdown renderer (objectui#12778): `**bold**`, `*italic*`,
|
|
9
|
+
* `` `code` `` and `[text](url)`, drawn as React elements, never as an HTML
|
|
10
|
+
* string. Two surfaces read it: `element:text`, whose spec declares its
|
|
11
|
+
* `content` as "Text or Markdown content", and the console's marketplace
|
|
12
|
+
* README renderer (`MarkdownText` in `@object-ui/app-shell`), which owns the
|
|
13
|
+
* block half (headings, lists, fences) and hands each block's text here.
|
|
14
|
+
*
|
|
15
|
+
* Raw HTML (objectui#12146) is recognised by CommonMark's "Raw HTML" grammar
|
|
16
|
+
* and skipped: neither rendered nor printed. The grammar pieces are exported
|
|
17
|
+
* because `MarkdownText`'s "HTML blocks" rules are spelled from the same open
|
|
18
|
+
* and closing tag.
|
|
19
|
+
*
|
|
20
|
+
* A link keeps its `href` only for `http:`, `https:`, `mailto:` and `tel:`, or
|
|
21
|
+
* for a scheme-less reference (a path, a query, a fragment). Anything else —
|
|
22
|
+
* `javascript:`, `data:`, `vbscript:`, in any case — prints its text with no
|
|
23
|
+
* anchor. React 19 blocks `javascript:` URLs itself; this package's peer range
|
|
24
|
+
* admits React 18, which does not. An `href` carrying whitespace or a control
|
|
25
|
+
* character is refused outright, because browsers strip those before reading
|
|
26
|
+
* the scheme (`java\tscript:` runs as `javascript:`).
|
|
27
|
+
*
|
|
28
|
+
* Emphasis follows CommonMark's flanking rule in its simplest form: the
|
|
29
|
+
* delimiter run may not sit against whitespace on its inner side, so a lone
|
|
30
|
+
* `*` or `2 * 3 * 4` prints as typed. A code span is a single backtick pair;
|
|
31
|
+
* a run of two or more backticks (a fence typed into inline text) prints as
|
|
32
|
+
* typed.
|
|
33
|
+
*/
|
|
34
|
+
import * as React from 'react';
|
|
35
|
+
/** CommonMark "open tag", as a RegExp source. */
|
|
36
|
+
export declare const RAW_HTML_OPEN_TAG = "<[A-Za-z][A-Za-z0-9-]*(?:\\s+[A-Za-z_:][A-Za-z0-9_.:-]*(?:\\s*=\\s*(?:[^\"'=<>`\\s]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>";
|
|
37
|
+
/** CommonMark "closing tag", as a RegExp source. */
|
|
38
|
+
export declare const RAW_HTML_CLOSING_TAG = "<\\/[A-Za-z][A-Za-z0-9-]*\\s*>";
|
|
39
|
+
/**
|
|
40
|
+
* The `href` a Markdown link may carry, or `null` when it may not carry one.
|
|
41
|
+
* Allow-list, not deny-list: a scheme this does not name is refused.
|
|
42
|
+
*/
|
|
43
|
+
export declare function safeLinkHref(raw: string): string | null;
|
|
44
|
+
export interface InlineMarkdownOptions {
|
|
45
|
+
/** Classes for the drawn elements; each defaults to none. */
|
|
46
|
+
classNames?: {
|
|
47
|
+
code?: string;
|
|
48
|
+
strong?: string;
|
|
49
|
+
em?: string;
|
|
50
|
+
link?: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Which links open in a new tab (`target="_blank" rel="noopener noreferrer"`):
|
|
54
|
+
* `'all'`, or `'external'` — `http:` / `https:` and protocol-relative URLs,
|
|
55
|
+
* leaving a same-site path, `mailto:` and `tel:` in the same tab.
|
|
56
|
+
*/
|
|
57
|
+
newTab?: 'all' | 'external';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Renders one run of text through the inline subset. Every pattern is tried
|
|
61
|
+
* at each step and the earliest match wins, so the order below only breaks
|
|
62
|
+
* ties at the same position.
|
|
63
|
+
*/
|
|
64
|
+
export declare function renderInlineMarkdown(input: string, options?: InlineMarkdownOptions): React.ReactNode;
|
package/dist/lib/lazy-icon.d.ts
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Convert PascalCase / camelCase / mixed names to kebab-case for DynamicIcon.
|
|
4
|
+
*
|
|
5
|
+
* The transform is the INVERSE of lucide's own `toPascalCase`, which is what
|
|
6
|
+
* builds every exported component name out of a canonical icon name: it drops
|
|
7
|
+
* each hyphen and upper-cases the character that followed it. So the job here
|
|
8
|
+
* is to put a boundary back wherever `toPascalCase` removed one, and nowhere
|
|
9
|
+
* else. Three rules do it, and each one answers a different shape of boundary:
|
|
10
|
+
*
|
|
11
|
+
* 1. `lower-or-digit -> Upper` — the ordinary word boundary (`ChevronRight`).
|
|
12
|
+
* 2. `acronym-run -> Word` — a run of capitals followed by a word
|
|
13
|
+
* (`SVGIcon`), where rule 1 would swallow the last capital.
|
|
14
|
+
* 3. `letter -> digit` — the boundary a digit-suffixed name carries
|
|
15
|
+
* (`Building2` -> `building-2`). ⚠️ It is NOT unconditional: the negative
|
|
16
|
+
* lookbehind holds the rule off when the letter is itself preceded by a
|
|
17
|
+
* digit, because that is lucide's grid spelling — `Grid2x2` is the Pascal
|
|
18
|
+
* form of `grid-2x2`, where the `x` sits INSIDE a segment rather than
|
|
19
|
+
* starting one. Splitting there produces `grid-2x-2`, which is not a name.
|
|
20
|
+
*
|
|
21
|
+
* ⛔ Rule 3 is the boundary the seam went without until objectui#9414, and the
|
|
22
|
+
* cost was not visible anywhere: `Building2` — the spelling `lucide-react`
|
|
23
|
+
* exports and lucide's own site shows — tokenised to `building2`, matched no
|
|
24
|
+
* canonical name, and `getLazyIcon` degraded it to the `Database` glyph with no
|
|
25
|
+
* error, no warning and no log. The author saw *an* icon and no signal that it
|
|
26
|
+
* was not theirs.
|
|
27
|
+
*
|
|
28
|
+
* ⛔ Do not write down how many names rule 3 recovers. The property that matters
|
|
29
|
+
* is re-derived from the installed lucide on every run by
|
|
30
|
+
* `__tests__/lazy-icon-digit-boundary-9414.test.ts`: every canonical icon name
|
|
31
|
+
* is reachable from its own exported PascalCase spelling, and every name the
|
|
32
|
+
* pre-#9414 tokeniser resolved still resolves to the byte-identical result.
|
|
33
|
+
*/
|
|
3
34
|
export declare function toKebabIconName(name: string): string;
|
|
4
35
|
/**
|
|
5
36
|
* Whether `name` (kebab-case or PascalCase) resolves to a real Lucide icon.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* GENERATED FILE — do not edit by hand.
|
|
10
|
+
*
|
|
11
|
+
* Regenerate: node scripts/regenerate-lucide-record-icon-names.mjs
|
|
12
|
+
* Verified by: scripts/check-lucide-icon-record-names.mjs (part 4), which also
|
|
13
|
+
* proves this list is the same vocabulary as lucide's runtime
|
|
14
|
+
* `icons` record.
|
|
15
|
+
*
|
|
16
|
+
* The legal icon-name set for `renderers/action/resolve-icon.ts`, as read out
|
|
17
|
+
* of lucide's own export manifest at generation time.
|
|
18
|
+
*
|
|
19
|
+
* Each entry is `PascalCaseKey:kebab-module-name`. The first is what the seam
|
|
20
|
+
* looks a tokenised author-supplied name up by; the second is what
|
|
21
|
+
* `DynamicIcon` loads. ⛔ The second is NOT derivable from the first by a
|
|
22
|
+
* regex — many of these keys carry digits or leading initials that lucide
|
|
23
|
+
* splits and a conversion does not (`ArrowDown01` is `arrow-down-0-1`,
|
|
24
|
+
* `Axis3d` is `axis-3d`).
|
|
25
|
+
*
|
|
26
|
+
* ⛔ This list is deliberately NOT `Object.keys(icons)`. That derivation is the
|
|
27
|
+
* eager record written a second way: indexing the record pulls every icon
|
|
28
|
+
* module into the eager closure, which is the payload objectui#9251 removed.
|
|
29
|
+
*/
|
|
30
|
+
export declare const LUCIDE_RECORD_ICON_NAME_TABLE = "AArrowDown:a-arrow-down,AArrowUp:a-arrow-up,ALargeSmall:a-large-small,Accessibility:accessibility,Activity:activity,Ad:ad,AirVent:air-vent,Airplay:airplay,AlarmClock:alarm-clock,AlarmClockCheck:alarm-clock-check,AlarmClockMinus:alarm-clock-minus,AlarmClockOff:alarm-clock-off,AlarmClockPlus:alarm-clock-plus,AlarmSmoke:alarm-smoke,Album:album,AlignCenterHorizontal:align-center-horizontal,AlignCenterVertical:align-center-vertical,AlignEndHorizontal:align-end-horizontal,AlignEndVertical:align-end-vertical,AlignHorizontalDistributeCenter:align-horizontal-distribute-center,AlignHorizontalDistributeEnd:align-horizontal-distribute-end,AlignHorizontalDistributeStart:align-horizontal-distribute-start,AlignHorizontalJustifyCenter:align-horizontal-justify-center,AlignHorizontalJustifyEnd:align-horizontal-justify-end,AlignHorizontalJustifyStart:align-horizontal-justify-start,AlignHorizontalSpaceAround:align-horizontal-space-around,AlignHorizontalSpaceBetween:align-horizontal-space-between,AlignStartHorizontal:align-start-horizontal,AlignStartVertical:align-start-vertical,AlignVerticalDistributeCenter:align-vertical-distribute-center,AlignVerticalDistributeEnd:align-vertical-distribute-end,AlignVerticalDistributeStart:align-vertical-distribute-start,AlignVerticalJustifyCenter:align-vertical-justify-center,AlignVerticalJustifyEnd:align-vertical-justify-end,AlignVerticalJustifyStart:align-vertical-justify-start,AlignVerticalSpaceAround:align-vertical-space-around,AlignVerticalSpaceBetween:align-vertical-space-between,Ambulance:ambulance,Ampersand:ampersand,Ampersands:ampersands,Amphora:amphora,Anchor:anchor,Angle:angle,Antenna:antenna,Anvil:anvil,Aperture:aperture,AppWindow:app-window,AppWindowMac:app-window-mac,Apple:apple,Archive:archive,ArchiveRestore:archive-restore,ArchiveX:archive-x,Armchair:armchair,ArrowBigDown:arrow-big-down,ArrowBigDownDash:arrow-big-down-dash,ArrowBigLeft:arrow-big-left,ArrowBigLeftDash:arrow-big-left-dash,ArrowBigRight:arrow-big-right,ArrowBigRightDash:arrow-big-right-dash,ArrowBigUp:arrow-big-up,ArrowBigUpDash:arrow-big-up-dash,ArrowDown:arrow-down,ArrowDown01:arrow-down-0-1,ArrowDown10:arrow-down-1-0,ArrowDownAZ:arrow-down-a-z,ArrowDownFromLine:arrow-down-from-line,ArrowDownLeft:arrow-down-left,ArrowDownNarrowWide:arrow-down-narrow-wide,ArrowDownRight:arrow-down-right,ArrowDownToDot:arrow-down-to-dot,ArrowDownToLine:arrow-down-to-line,ArrowDownUp:arrow-down-up,ArrowDownWideNarrow:arrow-down-wide-narrow,ArrowDownZA:arrow-down-z-a,ArrowLeft:arrow-left,ArrowLeftFromLine:arrow-left-from-line,ArrowLeftRight:arrow-left-right,ArrowLeftToLine:arrow-left-to-line,ArrowRight:arrow-right,ArrowRightFromLine:arrow-right-from-line,ArrowRightLeft:arrow-right-left,ArrowRightToLine:arrow-right-to-line,ArrowUp:arrow-up,ArrowUp01:arrow-up-0-1,ArrowUp10:arrow-up-1-0,ArrowUpAZ:arrow-up-a-z,ArrowUpDown:arrow-up-down,ArrowUpFromDot:arrow-up-from-dot,ArrowUpFromLine:arrow-up-from-line,ArrowUpLeft:arrow-up-left,ArrowUpNarrowWide:arrow-up-narrow-wide,ArrowUpRight:arrow-up-right,ArrowUpToLine:arrow-up-to-line,ArrowUpWideNarrow:arrow-up-wide-narrow,ArrowUpZA:arrow-up-z-a,ArrowsUpFromLine:arrows-up-from-line,Asterisk:asterisk,Astroid:astroid,AtSign:at-sign,Atom:atom,AudioLines:audio-lines,AudioLinesOff:audio-lines-off,AudioLinesX:audio-lines-x,AudioWaveform:audio-waveform,Award:award,Axe:axe,Axis3d:axis-3d,Baby:baby,Backpack:backpack,Badge:badge,BadgeAlert:badge-alert,BadgeCent:badge-cent,BadgeCheck:badge-check,BadgeDollarSign:badge-dollar-sign,BadgeEuro:badge-euro,BadgeIndianRupee:badge-indian-rupee,BadgeInfo:badge-info,BadgeJapaneseYen:badge-japanese-yen,BadgeMinus:badge-minus,BadgePercent:badge-percent,BadgePlus:badge-plus,BadgePoundSterling:badge-pound-sterling,BadgeQuestionMark:badge-question-mark,BadgeRussianRuble:badge-russian-ruble,BadgeSwissFranc:badge-swiss-franc,BadgeTurkishLira:badge-turkish-lira,BadgeX:badge-x,BaggageClaim:baggage-claim,Balloon:balloon,Ban:ban,Banana:banana,Bandage:bandage,Banknote:banknote,BanknoteArrowDown:banknote-arrow-down,BanknoteArrowUp:banknote-arrow-up,BanknoteCheck:banknote-check,BanknoteX:banknote-x,Barcode:barcode,Barrel:barrel,Baseline:baseline,Bath:bath,Battery:battery,BatteryCharging:battery-charging,BatteryFull:battery-full,BatteryLow:battery-low,BatteryMedium:battery-medium,BatteryPlus:battery-plus,BatteryWarning:battery-warning,Beaker:beaker,Bean:bean,BeanOff:bean-off,Bed:bed,BedDouble:bed-double,BedSingle:bed-single,Beef:beef,BeefOff:beef-off,Beer:beer,BeerOff:beer-off,Bell:bell,BellCheck:bell-check,BellDot:bell-dot,BellElectric:bell-electric,BellMinus:bell-minus,BellOff:bell-off,BellPlus:bell-plus,BellRing:bell-ring,BetweenHorizontalEnd:between-horizontal-end,BetweenHorizontalStart:between-horizontal-start,BetweenVerticalEnd:between-vertical-end,BetweenVerticalStart:between-vertical-start,BicepsFlexed:biceps-flexed,Bike:bike,Binary:binary,Binoculars:binoculars,Biohazard:biohazard,Bird:bird,Birdhouse:birdhouse,Bitcoin:bitcoin,Blend:blend,Blender:blender,Blinds:blinds,Blocks:blocks,Bluetooth:bluetooth,BluetoothConnected:bluetooth-connected,BluetoothOff:bluetooth-off,BluetoothSearching:bluetooth-searching,Bold:bold,Bolt:bolt,Bomb:bomb,Bone:bone,BoneFracture:bone-fracture,Book:book,BookA:book-a,BookAlert:book-alert,BookAudio:book-audio,BookCheck:book-check,BookCopy:book-copy,BookDashed:book-dashed,BookDown:book-down,BookHeadphones:book-headphones,BookHeart:book-heart,BookImage:book-image,BookKey:book-key,BookLock:book-lock,BookMarked:book-marked,BookMinus:book-minus,BookOpen:book-open,BookOpenCheck:book-open-check,BookOpenText:book-open-text,BookPlus:book-plus,BookSearch:book-search,BookText:book-text,BookType:book-type,BookUp:book-up,BookUp2:book-up-2,BookUser:book-user,BookX:book-x,Bookmark:bookmark,BookmarkCheck:bookmark-check,BookmarkMinus:bookmark-minus,BookmarkOff:bookmark-off,BookmarkPlus:bookmark-plus,BookmarkX:bookmark-x,BoomBox:boom-box,Bot:bot,BotMessageSquare:bot-message-square,BotOff:bot-off,BottleWine:bottle-wine,BowArrow:bow-arrow,Box:box,Boxes:boxes,Braces:braces,Brackets:brackets,Brain:brain,BrainCircuit:brain-circuit,BrainCog:brain-cog,BrickWall:brick-wall,BrickWallFire:brick-wall-fire,BrickWallShield:brick-wall-shield,Bridge:bridge,Briefcase:briefcase,BriefcaseBusiness:briefcase-business,BriefcaseConveyorBelt:briefcase-conveyor-belt,BriefcaseMedical:briefcase-medical,BringToFront:bring-to-front,Broccoli:broccoli,Broom:broom,BroomSparkles:broom-sparkles,Brush:brush,BrushCleaning:brush-cleaning,Bubbles:bubbles,Bug:bug,BugOff:bug-off,BugPlay:bug-play,Building:building,Building2:building-2,Bus:bus,BusFront:bus-front,Cable:cable,CableCar:cable-car,Cake:cake,CakeSlice:cake-slice,Calculator:calculator,Calendar:calendar,Calendar1:calendar-1,CalendarArrowDown:calendar-arrow-down,CalendarArrowUp:calendar-arrow-up,CalendarCheck:calendar-check,CalendarCheck2:calendar-check-2,CalendarClock:calendar-clock,CalendarCog:calendar-cog,CalendarDays:calendar-days,CalendarFold:calendar-fold,CalendarHeart:calendar-heart,CalendarMinus:calendar-minus,CalendarMinus2:calendar-minus-2,CalendarOff:calendar-off,CalendarPlus:calendar-plus,CalendarPlus2:calendar-plus-2,CalendarRange:calendar-range,CalendarSearch:calendar-search,CalendarSync:calendar-sync,CalendarX:calendar-x,CalendarX2:calendar-x-2,Calendars:calendars,Camera:camera,CameraOff:camera-off,Can:can,CanSoda:can-soda,Candy:candy,CandyCane:candy-cane,CandyOff:candy-off,Cannabis:cannabis,CannabisOff:cannabis-off,Captions:captions,CaptionsOff:captions-off,Car:car,CarBattery:car-battery,CarFront:car-front,CarTaxiFront:car-taxi-front,Caravan:caravan,CardSim:card-sim,Carrot:carrot,Carton:carton,CartonOff:carton-off,CaseLower:case-lower,CaseSensitive:case-sensitive,CaseUpper:case-upper,CassetteTape:cassette-tape,Cast:cast,Castle:castle,Cat:cat,Cctv:cctv,CctvOff:cctv-off,ChartArea:chart-area,ChartBar:chart-bar,ChartBarBig:chart-bar-big,ChartBarDecreasing:chart-bar-decreasing,ChartBarIncreasing:chart-bar-increasing,ChartBarStacked:chart-bar-stacked,ChartCandlestick:chart-candlestick,ChartColumn:chart-column,ChartColumnBig:chart-column-big,ChartColumnDecreasing:chart-column-decreasing,ChartColumnIncreasing:chart-column-increasing,ChartColumnStacked:chart-column-stacked,ChartGantt:chart-gantt,ChartLine:chart-line,ChartNetwork:chart-network,ChartNoAxesColumn:chart-no-axes-column,ChartNoAxesColumnDecreasing:chart-no-axes-column-decreasing,ChartNoAxesColumnIncreasing:chart-no-axes-column-increasing,ChartNoAxesCombined:chart-no-axes-combined,ChartNoAxesGantt:chart-no-axes-gantt,ChartPie:chart-pie,ChartScatter:chart-scatter,ChartSpline:chart-spline,Check:check,CheckCheck:check-check,CheckLine:check-line,ChefHat:chef-hat,Cherry:cherry,ChessBishop:chess-bishop,ChessKing:chess-king,ChessKnight:chess-knight,ChessPawn:chess-pawn,ChessQueen:chess-queen,ChessRook:chess-rook,ChevronDown:chevron-down,ChevronFirst:chevron-first,ChevronLast:chevron-last,ChevronLeft:chevron-left,ChevronRight:chevron-right,ChevronUp:chevron-up,ChevronsDown:chevrons-down,ChevronsDownUp:chevrons-down-up,ChevronsLeft:chevrons-left,ChevronsLeftRight:chevrons-left-right,ChevronsLeftRightEllipsis:chevrons-left-right-ellipsis,ChevronsRight:chevrons-right,ChevronsRightLeft:chevrons-right-left,ChevronsUp:chevrons-up,ChevronsUpDown:chevrons-up-down,Church:church,Cigarette:cigarette,CigaretteOff:cigarette-off,Circle:circle,CircleAlert:circle-alert,CircleArrowDown:circle-arrow-down,CircleArrowLeft:circle-arrow-left,CircleArrowOutDownLeft:circle-arrow-out-down-left,CircleArrowOutDownRight:circle-arrow-out-down-right,CircleArrowOutUpLeft:circle-arrow-out-up-left,CircleArrowOutUpRight:circle-arrow-out-up-right,CircleArrowRight:circle-arrow-right,CircleArrowUp:circle-arrow-up,CircleCheck:circle-check,CircleCheckBig:circle-check-big,CircleChevronDown:circle-chevron-down,CircleChevronLeft:circle-chevron-left,CircleChevronRight:circle-chevron-right,CircleChevronUp:circle-chevron-up,CircleDashed:circle-dashed,CircleDashedCheck:circle-dashed-check,CircleDivide:circle-divide,CircleDollarSign:circle-dollar-sign,CircleDot:circle-dot,CircleDotDashed:circle-dot-dashed,CircleEllipsis:circle-ellipsis,CircleEqual:circle-equal,CircleEuro:circle-euro,CircleFadingArrowUp:circle-fading-arrow-up,CircleFadingPlus:circle-fading-plus,CircleGauge:circle-gauge,CircleMinus:circle-minus,CircleOff:circle-off,CircleParking:circle-parking,CircleParkingOff:circle-parking-off,CirclePause:circle-pause,CirclePercent:circle-percent,CirclePile:circle-pile,CirclePlay:circle-play,CirclePlus:circle-plus,CirclePoundSterling:circle-pound-sterling,CirclePower:circle-power,CircleQuestionMark:circle-question-mark,CircleSlash:circle-slash,CircleSlash2:circle-slash-2,CircleSmall:circle-small,CircleStar:circle-star,CircleStop:circle-stop,CircleUser:circle-user,CircleUserRound:circle-user-round,CircleX:circle-x,CircuitBoard:circuit-board,Citrus:citrus,Clapperboard:clapperboard,Clipboard:clipboard,ClipboardCheck:clipboard-check,ClipboardClock:clipboard-clock,ClipboardCopy:clipboard-copy,ClipboardList:clipboard-list,ClipboardMinus:clipboard-minus,ClipboardPaste:clipboard-paste,ClipboardPen:clipboard-pen,ClipboardPenLine:clipboard-pen-line,ClipboardPlus:clipboard-plus,ClipboardType:clipboard-type,ClipboardX:clipboard-x,Clock:clock,Clock1:clock-1,Clock10:clock-10,Clock11:clock-11,Clock12:clock-12,Clock2:clock-2,Clock3:clock-3,Clock4:clock-4,Clock5:clock-5,Clock6:clock-6,Clock7:clock-7,Clock8:clock-8,Clock9:clock-9,ClockAlert:clock-alert,ClockArrowDown:clock-arrow-down,ClockArrowLeft:clock-arrow-left,ClockArrowRight:clock-arrow-right,ClockArrowUp:clock-arrow-up,ClockCheck:clock-check,ClockFading:clock-fading,ClockPlus:clock-plus,ClosedCaption:closed-caption,Cloud:cloud,CloudAlert:cloud-alert,CloudBackup:cloud-backup,CloudCheck:cloud-check,CloudCog:cloud-cog,CloudDownload:cloud-download,CloudDrizzle:cloud-drizzle,CloudFog:cloud-fog,CloudHail:cloud-hail,CloudLightning:cloud-lightning,CloudMoon:cloud-moon,CloudMoonRain:cloud-moon-rain,CloudOff:cloud-off,CloudRain:cloud-rain,CloudRainWind:cloud-rain-wind,CloudSnow:cloud-snow,CloudSun:cloud-sun,CloudSunRain:cloud-sun-rain,CloudSync:cloud-sync,CloudUpload:cloud-upload,Cloudy:cloudy,Clover:clover,Club:club,Code:code,CodeXml:code-xml,Coffee:coffee,Cog:cog,Coins:coins,Columns2:columns-2,Columns3:columns-3,Columns3Cog:columns-3-cog,Columns4:columns-4,Combine:combine,Command:command,Compass:compass,Component:component,Computer:computer,ConciergeBell:concierge-bell,Cone:cone,Construction:construction,Contact:contact,ContactRound:contact-round,Container:container,Contrast:contrast,Cookie:cookie,CookingPot:cooking-pot,Copy:copy,CopyCheck:copy-check,CopyMinus:copy-minus,CopyPlus:copy-plus,CopySlash:copy-slash,CopyX:copy-x,Copyleft:copyleft,Copyright:copyright,CornerDownLeft:corner-down-left,CornerDownRight:corner-down-right,CornerLeftDown:corner-left-down,CornerLeftUp:corner-left-up,CornerRightDown:corner-right-down,CornerRightUp:corner-right-up,CornerUpLeft:corner-up-left,CornerUpRight:corner-up-right,Cpu:cpu,CreativeCommons:creative-commons,CreditCard:credit-card,CreditCardCheck:credit-card-check,CreditCardMinus:credit-card-minus,CreditCardPlus:credit-card-plus,CreditCardReader:credit-card-reader,CreditCardX:credit-card-x,Croissant:croissant,Crop:crop,Cross:cross,Crosshair:crosshair,Crown:crown,Cuboid:cuboid,CupSoda:cup-soda,Currency:currency,Cylinder:cylinder,Dam:dam,Database:database,DatabaseArrowDown:database-arrow-down,DatabaseArrowUp:database-arrow-up,DatabaseBackup:database-backup,DatabaseCheck:database-check,DatabaseMinus:database-minus,DatabasePlus:database-plus,DatabaseSearch:database-search,DatabaseX:database-x,DatabaseZap:database-zap,DecimalsArrowLeft:decimals-arrow-left,DecimalsArrowRight:decimals-arrow-right,Delete:delete,Dessert:dessert,Diameter:diameter,Diamond:diamond,DiamondMinus:diamond-minus,DiamondPercent:diamond-percent,DiamondPlus:diamond-plus,Dice1:dice-1,Dice2:dice-2,Dice3:dice-3,Dice4:dice-4,Dice5:dice-5,Dice6:dice-6,Dices:dices,Diff:diff,Disc:disc,Disc2:disc-2,Disc3:disc-3,DiscAlbum:disc-album,Divide:divide,Dna:dna,DnaOff:dna-off,Dock:dock,Dog:dog,DollarSign:dollar-sign,Dome:dome,Donut:donut,DoorClosed:door-closed,DoorClosedLocked:door-closed-locked,DoorOpen:door-open,DoorStairwell:door-stairwell,Dot:dot,Download:download,DraftingCompass:drafting-compass,Drama:drama,Drill:drill,Drone:drone,Droplet:droplet,DropletOff:droplet-off,Droplets:droplets,Drum:drum,Drumstick:drumstick,Dumbbell:dumbbell,Ear:ear,EarOff:ear-off,Earth:earth,EarthLock:earth-lock,Eclipse:eclipse,Egg:egg,EggFried:egg-fried,EggOff:egg-off,Eject:eject,Ellipse:ellipse,Ellipsis:ellipsis,EllipsisVertical:ellipsis-vertical,Engine:engine,Equal:equal,EqualApproximately:equal-approximately,EqualApproximatelyNot:equal-approximately-not,EqualNot:equal-not,Eraser:eraser,EthernetPort:ethernet-port,Euro:euro,EvCharger:ev-charger,Expand:expand,ExternalLink:external-link,Eye:eye,EyeClosed:eye-closed,EyeDashed:eye-dashed,EyeOff:eye-off,FaceAngry:face-angry,FaceExpressionless:face-expressionless,FaceGrinning:face-grinning,FaceNeutral:face-neutral,FaceSlightlyFrowning:face-slightly-frowning,FaceSlightlySmiling:face-slightly-smiling,FaceSlightlySmilingPlus:face-slightly-smiling-plus,Factory:factory,Fan:fan,FastForward:fast-forward,Feather:feather,Fence:fence,FerrisWheel:ferris-wheel,File:file,FileArchive:file-archive,FileAxis3d:file-axis-3d,FileBadge:file-badge,FileBox:file-box,FileBraces:file-braces,FileBracesCorner:file-braces-corner,FileChartColumn:file-chart-column,FileChartColumnIncreasing:file-chart-column-increasing,FileChartLine:file-chart-line,FileChartPie:file-chart-pie,FileCheck:file-check,FileCheckCorner:file-check-corner,FileClock:file-clock,FileCode:file-code,FileCodeCorner:file-code-corner,FileCog:file-cog,FileDiff:file-diff,FileDigit:file-digit,FileDown:file-down,FileExclamationPoint:file-exclamation-point,FileHeadphone:file-headphone,FileHeart:file-heart,FileImage:file-image,FileInput:file-input,FileKey:file-key,FileLock:file-lock,FileMinus:file-minus,FileMinusCorner:file-minus-corner,FileMusic:file-music,FileOutput:file-output,FilePen:file-pen,FilePenLine:file-pen-line,FilePlay:file-play,FilePlus:file-plus,FilePlusCorner:file-plus-corner,FileQuestionMark:file-question-mark,FileScan:file-scan,FileSearch:file-search,FileSearchCorner:file-search-corner,FileSignal:file-signal,FileSliders:file-sliders,FileSpreadsheet:file-spreadsheet,FileStack:file-stack,FileSymlink:file-symlink,FileTerminal:file-terminal,FileText:file-text,FileType:file-type,FileTypeCorner:file-type-corner,FileUp:file-up,FileUser:file-user,FileVideoCamera:file-video-camera,FileVolume:file-volume,FileX:file-x,FileXCorner:file-x-corner,Files:files,Film:film,FingerprintPattern:fingerprint-pattern,FireExtinguisher:fire-extinguisher,Fish:fish,FishOff:fish-off,FishSymbol:fish-symbol,FishingHook:fishing-hook,FishingRod:fishing-rod,Flag:flag,FlagOff:flag-off,FlagTriangleLeft:flag-triangle-left,FlagTriangleRight:flag-triangle-right,Flame:flame,FlameKindling:flame-kindling,Flashlight:flashlight,FlashlightOff:flashlight-off,FlaskConical:flask-conical,FlaskConicalOff:flask-conical-off,FlaskRound:flask-round,FlipHorizontal2:flip-horizontal-2,FlipVertical2:flip-vertical-2,Flower:flower,Flower2:flower-2,Focus:focus,FoldHorizontal:fold-horizontal,FoldVertical:fold-vertical,Folder:folder,FolderArchive:folder-archive,FolderBookmark:folder-bookmark,FolderCheck:folder-check,FolderClock:folder-clock,FolderClosed:folder-closed,FolderCode:folder-code,FolderCog:folder-cog,FolderDot:folder-dot,FolderDown:folder-down,FolderGit:folder-git,FolderGit2:folder-git-2,FolderHeart:folder-heart,FolderInput:folder-input,FolderKanban:folder-kanban,FolderKey:folder-key,FolderLock:folder-lock,FolderMinus:folder-minus,FolderOpen:folder-open,FolderOpenDot:folder-open-dot,FolderOutput:folder-output,FolderPen:folder-pen,FolderPlus:folder-plus,FolderRoot:folder-root,FolderSearch:folder-search,FolderSearch2:folder-search-2,FolderSymlink:folder-symlink,FolderSync:folder-sync,FolderTree:folder-tree,FolderUp:folder-up,FolderX:folder-x,Folders:folders,Footprints:footprints,Forklift:forklift,Form:form,Forward:forward,Frame:frame,Fuel:fuel,Fullscreen:fullscreen,Funnel:funnel,FunnelPlus:funnel-plus,FunnelX:funnel-x,Galaxy:galaxy,GalleryHorizontal:gallery-horizontal,GalleryHorizontalEnd:gallery-horizontal-end,GalleryThumbnails:gallery-thumbnails,GalleryVertical:gallery-vertical,GalleryVerticalEnd:gallery-vertical-end,Gamepad:gamepad,Gamepad2:gamepad-2,GamepadDirectional:gamepad-directional,GapHorizontal:gap-horizontal,GapVertical:gap-vertical,Gauge:gauge,Gavel:gavel,Gem:gem,GeorgianLari:georgian-lari,Germ:germ,GermOff:germ-off,Ghost:ghost,Gift:gift,GitBranch:git-branch,GitBranchMinus:git-branch-minus,GitBranchPlus:git-branch-plus,GitCommitHorizontal:git-commit-horizontal,GitCommitVertical:git-commit-vertical,GitCompare:git-compare,GitCompareArrows:git-compare-arrows,GitFork:git-fork,GitGraph:git-graph,GitMerge:git-merge,GitMergeConflict:git-merge-conflict,GitPullRequest:git-pull-request,GitPullRequestArrow:git-pull-request-arrow,GitPullRequestClosed:git-pull-request-closed,GitPullRequestCreate:git-pull-request-create,GitPullRequestCreateArrow:git-pull-request-create-arrow,GitPullRequestDraft:git-pull-request-draft,GlassWater:glass-water,Glasses:glasses,Globe:globe,GlobeCheck:globe-check,GlobeLock:globe-lock,GlobeOff:globe-off,GlobeX:globe-x,Goal:goal,Gpu:gpu,GraduationCap:graduation-cap,Grape:grape,Grid2x2:grid-2x2,Grid2x2Check:grid-2x2-check,Grid2x2Plus:grid-2x2-plus,Grid2x2X:grid-2x2-x,Grid3x2:grid-3x2,Grid3x3:grid-3x3,Grip:grip,GripHorizontal:grip-horizontal,GripVertical:grip-vertical,Group:group,Guitar:guitar,Ham:ham,Hamburger:hamburger,Hammer:hammer,Hand:hand,HandCoins:hand-coins,HandFist:hand-fist,HandGrab:hand-grab,HandHeart:hand-heart,HandHelping:hand-helping,HandMetal:hand-metal,HandPlatter:hand-platter,Handbag:handbag,Handshake:handshake,HardDrive:hard-drive,HardDriveDownload:hard-drive-download,HardDriveUpload:hard-drive-upload,HardHat:hard-hat,Hash:hash,HatGlasses:hat-glasses,Haze:haze,Hd:hd,HdmiPort:hdmi-port,Heading:heading,Heading1:heading-1,Heading2:heading-2,Heading3:heading-3,Heading4:heading-4,Heading5:heading-5,Heading6:heading-6,HeadphoneOff:headphone-off,Headphones:headphones,Headset:headset,Heart:heart,HeartCrack:heart-crack,HeartHandshake:heart-handshake,HeartMinus:heart-minus,HeartOff:heart-off,HeartPlus:heart-plus,HeartPulse:heart-pulse,HeartX:heart-x,Heater:heater,Helicopter:helicopter,Hexagon:hexagon,Highlighter:highlighter,Hop:hop,HopOff:hop-off,Hospital:hospital,Hotel:hotel,Hourglass:hourglass,House:house,HouseHeart:house-heart,HousePlug:house-plug,HousePlus:house-plus,HouseWifi:house-wifi,IceCreamBowl:ice-cream-bowl,IceCreamCone:ice-cream-cone,IdCard:id-card,IdCardLanyard:id-card-lanyard,Image:image,ImageDown:image-down,ImageMinus:image-minus,ImageOff:image-off,ImagePlay:image-play,ImagePlus:image-plus,ImageUp:image-up,ImageUpscale:image-upscale,Images:images,Import:import,Inbox:inbox,IndianRupee:indian-rupee,Infinity:infinity,Info:info,InspectionPanel:inspection-panel,Italic:italic,IterationCcw:iteration-ccw,IterationCw:iteration-cw,JapaneseYen:japanese-yen,Joystick:joystick,Kanban:kanban,Kayak:kayak,Key:key,KeyRound:key-round,KeySquare:key-square,Keyboard:keyboard,KeyboardMusic:keyboard-music,KeyboardOff:keyboard-off,Lamp:lamp,LampCeiling:lamp-ceiling,LampDesk:lamp-desk,LampFloor:lamp-floor,LampWallDown:lamp-wall-down,LampWallUp:lamp-wall-up,LandPlot:land-plot,Landmark:landmark,Languages:languages,Laptop:laptop,LaptopMinimal:laptop-minimal,LaptopMinimalCheck:laptop-minimal-check,Lasso:lasso,LassoSelect:lasso-select,LayerArrowDown:layer-arrow-down,LayerArrowUp:layer-arrow-up,Layers:layers,Layers2:layers-2,LayersArrowDown:layers-arrow-down,LayersArrowUp:layers-arrow-up,LayersMinus:layers-minus,LayersPlus:layers-plus,LayoutDashboard:layout-dashboard,LayoutFreeform:layout-freeform,LayoutGrid:layout-grid,LayoutList:layout-list,LayoutPanelLeft:layout-panel-left,LayoutPanelTop:layout-panel-top,LayoutTemplate:layout-template,Leaf:leaf,LeafyGreen:leafy-green,Lectern:lectern,LensConcave:lens-concave,LensConvex:lens-convex,Library:library,LibraryBig:library-big,LifeBuoy:life-buoy,Ligature:ligature,Lightbulb:lightbulb,LightbulbOff:lightbulb-off,Lighthouse:lighthouse,LineDotRightHorizontal:line-dot-right-horizontal,LineSquiggle:line-squiggle,LineStyle:line-style,Link:link,Link2:link-2,Link2Off:link-2-off,List:list,ListCheck:list-check,ListChecks:list-checks,ListChevronsDownUp:list-chevrons-down-up,ListChevronsUpDown:list-chevrons-up-down,ListClock:list-clock,ListCollapse:list-collapse,ListEnd:list-end,ListFilter:list-filter,ListFilterPlus:list-filter-plus,ListIndentDecrease:list-indent-decrease,ListIndentIncrease:list-indent-increase,ListMinus:list-minus,ListMusic:list-music,ListOrdered:list-ordered,ListPlus:list-plus,ListRestart:list-restart,ListSortAscending:list-sort-ascending,ListSortDescending:list-sort-descending,ListStart:list-start,ListTodo:list-todo,ListTree:list-tree,ListVideo:list-video,ListX:list-x,Loader:loader,LoaderCircle:loader-circle,LoaderPinwheel:loader-pinwheel,Locate:locate,LocateFixed:locate-fixed,LocateOff:locate-off,Lock:lock,LockKeyhole:lock-keyhole,LockKeyholeOpen:lock-keyhole-open,LockOpen:lock-open,LogIn:log-in,LogOut:log-out,Logs:logs,Lollipop:lollipop,Luggage:luggage,Magnet:magnet,Mail:mail,MailBadge:mail-badge,MailCheck:mail-check,MailClock:mail-clock,MailMinus:mail-minus,MailOpen:mail-open,MailPen:mail-pen,MailPlus:mail-plus,MailQuestionMark:mail-question-mark,MailSearch:mail-search,MailWarning:mail-warning,MailX:mail-x,Mailbox:mailbox,Mails:mails,Map:map,MapMinus:map-minus,MapPin:map-pin,MapPinCheck:map-pin-check,MapPinCheckInside:map-pin-check-inside,MapPinHouse:map-pin-house,MapPinMinus:map-pin-minus,MapPinMinusInside:map-pin-minus-inside,MapPinOff:map-pin-off,MapPinPen:map-pin-pen,MapPinPlus:map-pin-plus,MapPinPlusInside:map-pin-plus-inside,MapPinSearch:map-pin-search,MapPinX:map-pin-x,MapPinXInside:map-pin-x-inside,MapPinned:map-pinned,MapPlus:map-plus,Mars:mars,MarsStroke:mars-stroke,Martini:martini,Maximize:maximize,Maximize2:maximize-2,Medal:medal,Megaphone:megaphone,MegaphoneOff:megaphone-off,MemoryStick:memory-stick,Menu:menu,Merge:merge,MessageCircle:message-circle,MessageCircleCheck:message-circle-check,MessageCircleCode:message-circle-code,MessageCircleDashed:message-circle-dashed,MessageCircleDashedCheck:message-circle-dashed-check,MessageCircleHeart:message-circle-heart,MessageCircleMore:message-circle-more,MessageCircleOff:message-circle-off,MessageCirclePlus:message-circle-plus,MessageCircleQuestionMark:message-circle-question-mark,MessageCircleReply:message-circle-reply,MessageCircleWarning:message-circle-warning,MessageCircleX:message-circle-x,MessageSquare:message-square,MessageSquareCheck:message-square-check,MessageSquareCode:message-square-code,MessageSquareDashed:message-square-dashed,MessageSquareDiff:message-square-diff,MessageSquareDot:message-square-dot,MessageSquareHeart:message-square-heart,MessageSquareLock:message-square-lock,MessageSquareMore:message-square-more,MessageSquareOff:message-square-off,MessageSquarePlus:message-square-plus,MessageSquareQuote:message-square-quote,MessageSquareReply:message-square-reply,MessageSquareShare:message-square-share,MessageSquareText:message-square-text,MessageSquareWarning:message-square-warning,MessageSquareX:message-square-x,MessagesSquare:messages-square,Metronome:metronome,Mic:mic,MicAudioLines:mic-audio-lines,MicOff:mic-off,MicSignal:mic-signal,MicVocal:mic-vocal,Microchip:microchip,Microscope:microscope,Microwave:microwave,MidiPort:midi-port,Milestone:milestone,Milk:milk,MilkOff:milk-off,Minimize:minimize,Minimize2:minimize-2,Minus:minus,MirrorRectangular:mirror-rectangular,MirrorRound:mirror-round,Monitor:monitor,MonitorCheck:monitor-check,MonitorCloud:monitor-cloud,MonitorCog:monitor-cog,MonitorDot:monitor-dot,MonitorDown:monitor-down,MonitorOff:monitor-off,MonitorPause:monitor-pause,MonitorPlay:monitor-play,MonitorSmartphone:monitor-smartphone,MonitorSpeaker:monitor-speaker,MonitorStop:monitor-stop,MonitorUp:monitor-up,MonitorX:monitor-x,Moon:moon,MoonStar:moon-star,Mop:mop,MopSparkles:mop-sparkles,Mosque:mosque,Motorbike:motorbike,Mountain:mountain,MountainSnow:mountain-snow,Mouse:mouse,MouseLeft:mouse-left,MouseOff:mouse-off,MousePointer:mouse-pointer,MousePointer2:mouse-pointer-2,MousePointer2Off:mouse-pointer-2-off,MousePointerBan:mouse-pointer-ban,MousePointerClick:mouse-pointer-click,MouseRight:mouse-right,Move:move,Move3d:move-3d,MoveDiagonal:move-diagonal,MoveDiagonal2:move-diagonal-2,MoveDown:move-down,MoveDownLeft:move-down-left,MoveDownRight:move-down-right,MoveHorizontal:move-horizontal,MoveLeft:move-left,MoveRight:move-right,MoveUp:move-up,MoveUpLeft:move-up-left,MoveUpRight:move-up-right,MoveVertical:move-vertical,Music:music,Music2:music-2,Music3:music-3,Music4:music-4,Navigation:navigation,Navigation2:navigation-2,Navigation2Off:navigation-2-off,NavigationOff:navigation-off,Network:network,Newspaper:newspaper,Nfc:nfc,NonBinary:non-binary,Notebook:notebook,NotebookPen:notebook-pen,NotebookTabs:notebook-tabs,NotebookText:notebook-text,NotepadText:notepad-text,NotepadTextDashed:notepad-text-dashed,Nut:nut,NutOff:nut-off,Octagon:octagon,OctagonAlert:octagon-alert,OctagonMinus:octagon-minus,OctagonPause:octagon-pause,OctagonX:octagon-x,Omega:omega,Option:option,Orbit:orbit,Origami:origami,Package:package,Package2:package-2,PackageCheck:package-check,PackageMinus:package-minus,PackageOpen:package-open,PackagePlus:package-plus,PackageSearch:package-search,PackageX:package-x,PaintBucket:paint-bucket,PaintRoller:paint-roller,Paintbrush:paintbrush,PaintbrushVertical:paintbrush-vertical,Palette:palette,Panda:panda,PanelBottom:panel-bottom,PanelBottomClose:panel-bottom-close,PanelBottomDashed:panel-bottom-dashed,PanelBottomOpen:panel-bottom-open,PanelLeft:panel-left,PanelLeftClose:panel-left-close,PanelLeftDashed:panel-left-dashed,PanelLeftOpen:panel-left-open,PanelLeftRightDashed:panel-left-right-dashed,PanelRight:panel-right,PanelRightClose:panel-right-close,PanelRightDashed:panel-right-dashed,PanelRightOpen:panel-right-open,PanelTop:panel-top,PanelTopBottomDashed:panel-top-bottom-dashed,PanelTopClose:panel-top-close,PanelTopDashed:panel-top-dashed,PanelTopOpen:panel-top-open,PanelsLeftBottom:panels-left-bottom,PanelsRightBottom:panels-right-bottom,PanelsTopLeft:panels-top-left,PaperBag:paper-bag,Paperclip:paperclip,Parasol:parasol,Parentheses:parentheses,ParkingMeter:parking-meter,PartyPopper:party-popper,Pause:pause,PawPrint:paw-print,PcCase:pc-case,Pen:pen,PenLine:pen-line,PenOff:pen-off,PenTool:pen-tool,Pencil:pencil,PencilLine:pencil-line,PencilOff:pencil-off,PencilRuler:pencil-ruler,PencilSparkles:pencil-sparkles,Pentagon:pentagon,Percent:percent,PersonStanding:person-standing,Phi:phi,PhilippinePeso:philippine-peso,Phone:phone,PhoneCall:phone-call,PhoneForwarded:phone-forwarded,PhoneIncoming:phone-incoming,PhoneMissed:phone-missed,PhoneOff:phone-off,PhoneOutgoing:phone-outgoing,Pi:pi,Piano:piano,Pickaxe:pickaxe,PictureInPicture:picture-in-picture,PictureInPicture2:picture-in-picture-2,PiggyBank:piggy-bank,Pilcrow:pilcrow,PilcrowLeft:pilcrow-left,PilcrowRight:pilcrow-right,Pill:pill,PillBottle:pill-bottle,Pin:pin,PinOff:pin-off,Pipette:pipette,Pizza:pizza,Plane:plane,PlaneLanding:plane-landing,PlaneTakeoff:plane-takeoff,Play:play,PlayOff:play-off,PlayingCard:playing-card,PlayingCards:playing-cards,PlayingCardsFan:playing-cards-fan,Plug:plug,Plug2:plug-2,PlugZap:plug-zap,Plus:plus,PocketKnife:pocket-knife,Podium:podium,Pointer:pointer,PointerOff:pointer-off,Popcorn:popcorn,Popsicle:popsicle,PoundSterling:pound-sterling,Power:power,PowerOff:power-off,Presentation:presentation,Printer:printer,PrinterCheck:printer-check,PrinterX:printer-x,Projector:projector,Proportions:proportions,Puzzle:puzzle,Pyramid:pyramid,QrCode:qr-code,Quote:quote,Rabbit:rabbit,Radar:radar,Radiation:radiation,Radical:radical,Radio:radio,RadioOff:radio-off,RadioReceiver:radio-receiver,RadioTower:radio-tower,Radius:radius,Rainbow:rainbow,Rat:rat,Ratio:ratio,Receipt:receipt,ReceiptCent:receipt-cent,ReceiptEuro:receipt-euro,ReceiptIndianRupee:receipt-indian-rupee,ReceiptJapaneseYen:receipt-japanese-yen,ReceiptPoundSterling:receipt-pound-sterling,ReceiptRussianRuble:receipt-russian-ruble,ReceiptSwissFranc:receipt-swiss-franc,ReceiptText:receipt-text,ReceiptTurkishLira:receipt-turkish-lira,RectangleCircle:rectangle-circle,RectangleEllipsis:rectangle-ellipsis,RectangleGoggles:rectangle-goggles,RectangleHorizontal:rectangle-horizontal,RectangleVertical:rectangle-vertical,Recycle:recycle,Redo:redo,Redo2:redo-2,RedoDot:redo-dot,RefreshCcw:refresh-ccw,RefreshCcwDot:refresh-ccw-dot,RefreshCw:refresh-cw,RefreshCwOff:refresh-cw-off,Refrigerator:refrigerator,Regex:regex,RemoveFormatting:remove-formatting,Repeat:repeat,Repeat1:repeat-1,Repeat2:repeat-2,RepeatOff:repeat-off,Replace:replace,ReplaceAll:replace-all,Reply:reply,ReplyAll:reply-all,Rewind:rewind,Ribbon:ribbon,Road:road,RobotArm:robot-arm,RobotVacuum:robot-vacuum,Rocket:rocket,RockingChair:rocking-chair,RollerCoaster:roller-coaster,Rose:rose,Rotate3d:rotate-3d,RotateCcw:rotate-ccw,RotateCcwClock:rotate-ccw-clock,RotateCcwKey:rotate-ccw-key,RotateCcwSquare:rotate-ccw-square,RotateCw:rotate-cw,RotateCwFadingClock:rotate-cw-fading-clock,RotateCwSquare:rotate-cw-square,Route:route,RouteOff:route-off,Router:router,Rows2:rows-2,Rows3:rows-3,Rows4:rows-4,Rss:rss,Ruler:ruler,RulerDimensionLine:ruler-dimension-line,RussianRuble:russian-ruble,Sailboat:sailboat,Salad:salad,Sandwich:sandwich,Satellite:satellite,SatelliteDish:satellite-dish,SaudiRiyal:saudi-riyal,Save:save,SaveAll:save-all,SaveCheck:save-check,SaveOff:save-off,SavePen:save-pen,SavePlus:save-plus,Scale:scale,Scale3d:scale-3d,Scaling:scaling,Scan:scan,ScanBarcode:scan-barcode,ScanBox:scan-box,ScanEye:scan-eye,ScanFace:scan-face,ScanHeart:scan-heart,ScanLine:scan-line,ScanQrCode:scan-qr-code,ScanSearch:scan-search,ScanSquare:scan-square,ScanText:scan-text,School:school,Scissors:scissors,ScissorsLineDashed:scissors-line-dashed,Scooter:scooter,ScreenShare:screen-share,ScreenShareOff:screen-share-off,Scroll:scroll,ScrollText:scroll-text,Search:search,SearchAlert:search-alert,SearchCheck:search-check,SearchCode:search-code,SearchSlash:search-slash,SearchX:search-x,Section:section,Send:send,SendHorizontal:send-horizontal,SendToBack:send-to-back,SeparatorHorizontal:separator-horizontal,SeparatorVertical:separator-vertical,Server:server,ServerCog:server-cog,ServerCrash:server-crash,ServerOff:server-off,ServerPlus:server-plus,Settings:settings,Settings2:settings-2,Shapes:shapes,Share:share,Share2:share-2,Sheet:sheet,Shell:shell,ShelvingUnit:shelving-unit,Shield:shield,ShieldAlert:shield-alert,ShieldBan:shield-ban,ShieldCheck:shield-check,ShieldCog:shield-cog,ShieldCogCorner:shield-cog-corner,ShieldEllipsis:shield-ellipsis,ShieldHalf:shield-half,ShieldKeyhole:shield-keyhole,ShieldLock:shield-lock,ShieldMinus:shield-minus,ShieldOff:shield-off,ShieldPlus:shield-plus,ShieldQuestionMark:shield-question-mark,ShieldUser:shield-user,ShieldX:shield-x,Ship:ship,ShipCargo:ship-cargo,ShipWheel:ship-wheel,Shirt:shirt,ShoppingBag:shopping-bag,ShoppingBasket:shopping-basket,ShoppingCart:shopping-cart,ShoppingCartMinus:shopping-cart-minus,ShoppingCartPlus:shopping-cart-plus,Shovel:shovel,ShowerHead:shower-head,Shredder:shredder,Shrimp:shrimp,ShrimpOff:shrimp-off,Shrink:shrink,Shrub:shrub,Shuffle:shuffle,Sigma:sigma,Signal:signal,SignalHigh:signal-high,SignalLow:signal-low,SignalMedium:signal-medium,SignalZero:signal-zero,Signature:signature,Signpost:signpost,SignpostBig:signpost-big,Siren:siren,SkipBack:skip-back,SkipForward:skip-forward,Skull:skull,Slash:slash,Slice:slice,SlidersHorizontal:sliders-horizontal,SlidersVertical:sliders-vertical,Smartphone:smartphone,SmartphoneCharging:smartphone-charging,SmartphoneNfc:smartphone-nfc,Snail:snail,Snowflake:snowflake,SoapDispenserDroplet:soap-dispenser-droplet,Sofa:sofa,SolarPanel:solar-panel,Soup:soup,Space:space,Spade:spade,Sparkle:sparkle,Sparkles:sparkles,Speaker:speaker,Speech:speech,SpellCheck:spell-check,SpellCheck2:spell-check-2,Spline:spline,SplinePointer:spline-pointer,Split:split,Spool:spool,SportShoe:sport-shoe,Spotlight:spotlight,SprayCan:spray-can,Sprout:sprout,Square:square,SquareActivity:square-activity,SquareArrowDown:square-arrow-down,SquareArrowDownLeft:square-arrow-down-left,SquareArrowDownRight:square-arrow-down-right,SquareArrowLeft:square-arrow-left,SquareArrowOutDownLeft:square-arrow-out-down-left,SquareArrowOutDownRight:square-arrow-out-down-right,SquareArrowOutUpLeft:square-arrow-out-up-left,SquareArrowOutUpRight:square-arrow-out-up-right,SquareArrowRight:square-arrow-right,SquareArrowRightEnter:square-arrow-right-enter,SquareArrowRightExit:square-arrow-right-exit,SquareArrowUp:square-arrow-up,SquareArrowUpLeft:square-arrow-up-left,SquareArrowUpRight:square-arrow-up-right,SquareAsterisk:square-asterisk,SquareBottomDashedScissors:square-bottom-dashed-scissors,SquareCenterlineDashedHorizontal:square-centerline-dashed-horizontal,SquareCenterlineDashedVertical:square-centerline-dashed-vertical,SquareChartGantt:square-chart-gantt,SquareCheck:square-check,SquareCheckBig:square-check-big,SquareChevronDown:square-chevron-down,SquareChevronLeft:square-chevron-left,SquareChevronRight:square-chevron-right,SquareChevronUp:square-chevron-up,SquareCode:square-code,SquareDashed:square-dashed,SquareDashedBottom:square-dashed-bottom,SquareDashedBottomCode:square-dashed-bottom-code,SquareDashedKanban:square-dashed-kanban,SquareDashedMousePointer:square-dashed-mouse-pointer,SquareDashedText:square-dashed-text,SquareDashedTopSolid:square-dashed-top-solid,SquareDimensions:square-dimensions,SquareDivide:square-divide,SquareDot:square-dot,SquareEqual:square-equal,SquareExclamationPoint:square-exclamation-point,SquareFunction:square-function,SquareKanban:square-kanban,SquareLibrary:square-library,SquareM:square-m,SquareMenu:square-menu,SquareMinus:square-minus,SquareMousePointer:square-mouse-pointer,SquareOff:square-off,SquareParking:square-parking,SquareParkingOff:square-parking-off,SquarePause:square-pause,SquarePen:square-pen,SquarePercent:square-percent,SquarePi:square-pi,SquarePilcrow:square-pilcrow,SquarePlay:square-play,SquarePlus:square-plus,SquarePower:square-power,SquareRadical:square-radical,SquareRoundCorner:square-round-corner,SquareScissors:square-scissors,SquareSigma:square-sigma,SquareSlash:square-slash,SquareSplitHorizontal:square-split-horizontal,SquareSplitVertical:square-split-vertical,SquareSquare:square-square,SquareStack:square-stack,SquareStar:square-star,SquareStop:square-stop,SquareTerminal:square-terminal,SquareText:square-text,SquareUser:square-user,SquareUserRound:square-user-round,SquareX:square-x,SquaresExclude:squares-exclude,SquaresIntersect:squares-intersect,SquaresSubtract:squares-subtract,SquaresUnite:squares-unite,Squircle:squircle,SquircleDashed:squircle-dashed,Squirrel:squirrel,Stamp:stamp,Star:star,StarCheck:star-check,StarHalf:star-half,StarMinus:star-minus,StarOff:star-off,StarPlus:star-plus,StarX:star-x,StepBack:step-back,StepForward:step-forward,Stethoscope:stethoscope,Sticker:sticker,StickyNote:sticky-note,StickyNoteCheck:sticky-note-check,StickyNoteMinus:sticky-note-minus,StickyNoteOff:sticky-note-off,StickyNotePlus:sticky-note-plus,StickyNoteX:sticky-note-x,StickyNotes:sticky-notes,Stone:stone,Store:store,StretchHorizontal:stretch-horizontal,StretchVertical:stretch-vertical,Strikethrough:strikethrough,Subscript:subscript,Summary:summary,Sun:sun,SunDim:sun-dim,SunMedium:sun-medium,SunMoon:sun-moon,SunSnow:sun-snow,Sunrise:sunrise,Sunset:sunset,Superscript:superscript,SwatchBook:swatch-book,SwissFranc:swiss-franc,SwitchCamera:switch-camera,Sword:sword,Swords:swords,Syringe:syringe,Table:table,Table2:table-2,TableCellsMerge:table-cells-merge,TableCellsSplit:table-cells-split,TableColumnsSplit:table-columns-split,TableOfContents:table-of-contents,TableProperties:table-properties,TableRowsSplit:table-rows-split,Tablet:tablet,TabletSmartphone:tablet-smartphone,Tablets:tablets,Tag:tag,TagPlus:tag-plus,TagX:tag-x,Tags:tags,Tally1:tally-1,Tally2:tally-2,Tally3:tally-3,Tally4:tally-4,Tally5:tally-5,Tangent:tangent,Target:target,Telescope:telescope,Tent:tent,TentTree:tent-tree,Terminal:terminal,TestTube:test-tube,TestTubeDiagonal:test-tube-diagonal,TestTubes:test-tubes,TextAlignCenter:text-align-center,TextAlignEnd:text-align-end,TextAlignJustify:text-align-justify,TextAlignStart:text-align-start,TextCursor:text-cursor,TextCursorInput:text-cursor-input,TextInitial:text-initial,TextQuote:text-quote,TextSearch:text-search,TextWrap:text-wrap,Theater:theater,Thermometer:thermometer,ThermometerSnowflake:thermometer-snowflake,ThermometerSun:thermometer-sun,ThumbsDown:thumbs-down,ThumbsUp:thumbs-up,TicTacToe:tic-tac-toe,Ticket:ticket,TicketCheck:ticket-check,TicketMinus:ticket-minus,TicketPercent:ticket-percent,TicketPlus:ticket-plus,TicketSlash:ticket-slash,TicketX:ticket-x,Tickets:tickets,TicketsPlane:tickets-plane,Timeline:timeline,Timer:timer,TimerOff:timer-off,TimerReset:timer-reset,ToggleLeft:toggle-left,ToggleRight:toggle-right,Toilet:toilet,ToolCase:tool-case,Toolbox:toolbox,Tornado:tornado,Torus:torus,Touchpad:touchpad,TouchpadOff:touchpad-off,TowelRack:towel-rack,TowerControl:tower-control,ToyBrick:toy-brick,Tractor:tractor,TrafficCone:traffic-cone,Trailer:trailer,TrainFront:train-front,TrainFrontTunnel:train-front-tunnel,TrainTrack:train-track,TramFront:tram-front,Transgender:transgender,Trash:trash,TrashOff:trash-off,TreeDeciduous:tree-deciduous,TreePalm:tree-palm,TreePine:tree-pine,Trees:trees,TrendingDown:trending-down,TrendingUp:trending-up,TrendingUpDown:trending-up-down,Triangle:triangle,TriangleAlert:triangle-alert,TriangleDashed:triangle-dashed,TriangleRight:triangle-right,Trophy:trophy,Truck:truck,TruckElectric:truck-electric,TurkishLira:turkish-lira,Turntable:turntable,Turtle:turtle,Tv:tv,TvMinimal:tv-minimal,TvMinimalPlay:tv-minimal-play,Type:type,TypeOutline:type-outline,Umbrella:umbrella,UmbrellaOff:umbrella-off,Underline:underline,Undo:undo,Undo2:undo-2,UndoDot:undo-dot,UnfoldHorizontal:unfold-horizontal,UnfoldVertical:unfold-vertical,Ungroup:ungroup,University:university,Unlink:unlink,Unlink2:unlink-2,Unplug:unplug,Upload:upload,Usb:usb,UsbCPort:usb-c-port,User:user,UserCheck:user-check,UserCog:user-cog,UserGroup:user-group,UserKey:user-key,UserLock:user-lock,UserMinus:user-minus,UserPen:user-pen,UserPlus:user-plus,UserRound:user-round,UserRoundArrowLeft:user-round-arrow-left,UserRoundCheck:user-round-check,UserRoundCog:user-round-cog,UserRoundGroup:user-round-group,UserRoundKey:user-round-key,UserRoundMinus:user-round-minus,UserRoundPen:user-round-pen,UserRoundPlus:user-round-plus,UserRoundSearch:user-round-search,UserRoundX:user-round-x,UserSearch:user-search,UserShield:user-shield,UserStar:user-star,UserX:user-x,Users:users,UsersRound:users-round,Utensils:utensils,UtensilsCrossed:utensils-crossed,UtilityPole:utility-pole,Van:van,Variable:variable,Vault:vault,VectorPolygon:vector-polygon,VectorSquare:vector-square,Vegan:vegan,VenetianMask:venetian-mask,Venus:venus,VenusAndMars:venus-and-mars,Vibrate:vibrate,VibrateOff:vibrate-off,Video:video,VideoOff:video-off,Videotape:videotape,View:view,Virus:virus,VirusOff:virus-off,Voicemail:voicemail,Volleyball:volleyball,Volume:volume,Volume1:volume-1,Volume2:volume-2,VolumeOff:volume-off,VolumeX:volume-x,Vote:vote,Wallet:wallet,WalletCards:wallet-cards,WalletMinimal:wallet-minimal,Wallpaper:wallpaper,Wand:wand,WandSparkles:wand-sparkles,Warehouse:warehouse,WashingMachine:washing-machine,Watch:watch,WavesArrowDown:waves-arrow-down,WavesArrowUp:waves-arrow-up,WavesHorizontal:waves-horizontal,WavesLadder:waves-ladder,WavesVertical:waves-vertical,Waypoints:waypoints,Webcam:webcam,WebcamOff:webcam-off,Webhook:webhook,WebhookOff:webhook-off,Weight:weight,WeightTilde:weight-tilde,Wheat:wheat,WheatOff:wheat-off,Whistle:whistle,WholeWord:whole-word,Wifi:wifi,WifiCog:wifi-cog,WifiHigh:wifi-high,WifiLow:wifi-low,WifiOff:wifi-off,WifiPen:wifi-pen,WifiSync:wifi-sync,WifiZero:wifi-zero,Wind:wind,WindArrowDown:wind-arrow-down,Wine:wine,WineOff:wine-off,Workflow:workflow,Worm:worm,Wrench:wrench,WrenchOff:wrench-off,X:x,XLineTop:x-line-top,Zap:zap,ZapOff:zap-off,ZodiacAquarius:zodiac-aquarius,ZodiacAries:zodiac-aries,ZodiacCancer:zodiac-cancer,ZodiacCapricorn:zodiac-capricorn,ZodiacGemini:zodiac-gemini,ZodiacLeo:zodiac-leo,ZodiacLibra:zodiac-libra,ZodiacOphiuchus:zodiac-ophiuchus,ZodiacPisces:zodiac-pisces,ZodiacSagittarius:zodiac-sagittarius,ZodiacScorpio:zodiac-scorpio,ZodiacTaurus:zodiac-taurus,ZodiacVirgo:zodiac-virgo,ZoomIn:zoom-in,ZoomOut:zoom-out";
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,4 +1,117 @@
|
|
|
1
1
|
import { ClassValue } from 'clsx';
|
|
2
2
|
import { default as React } from 'react';
|
|
3
3
|
export declare function cn(...inputs: ClassValue[]): string;
|
|
4
|
+
/**
|
|
5
|
+
* The ONE emptiness predicate for a `SchemaNode` slot (objectui#9162).
|
|
6
|
+
*
|
|
7
|
+
* A node slot's published zod face carries a `z.number()` arm
|
|
8
|
+
* (`nodeUnionOptions`, `packages/types/src/zod/base.zod.ts`), so `children: 0`
|
|
9
|
+
* is legal authored input — and React RENDERS numbers. Truthiness is therefore
|
|
10
|
+
* the rule a node slot states: every falsy value (`0`, `-0`, `NaN`, `''`,
|
|
11
|
+
* `false`, `null`, `undefined`) means "this slot has no content", plus the
|
|
12
|
+
* empty array, which has no content either.
|
|
13
|
+
*
|
|
14
|
+
* ⛔ Not a nullish test. `0` is not "absent"; it is present and renders
|
|
15
|
+
* nothing, which is the distinction objectui#8331 kept deliberately and
|
|
16
|
+
* objectui#9033 kept again: truthiness makes the slot's answer independent of
|
|
17
|
+
* `toRenderableSchema`, and that independence is what kept the sibling slot out
|
|
18
|
+
* of the defect while the bridge was wrong.
|
|
19
|
+
*
|
|
20
|
+
* ⛔ Not a `typeof === 'object'` test either. objectui#7105 ruled that node
|
|
21
|
+
* slots RELAX the renderer rather than narrow the declaration — a bare string
|
|
22
|
+
* is a legal node and renders as its own text.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isEmptyNodeSlot(slot: unknown): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Render a `SchemaNode` slot that lives inside chrome which must disappear
|
|
27
|
+
* along with it — `<CardFooter>`, `<DialogFooter>`, a wrapping `<div>`.
|
|
28
|
+
*
|
|
29
|
+
* This exists because the obvious spelling is a trap:
|
|
30
|
+
*
|
|
31
|
+
* ```tsx
|
|
32
|
+
* {schema.footer && <CardFooter>{renderChildren(schema.footer)}</CardFooter>}
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* `&&` does not evaluate to `false` when the slot is falsy — it evaluates to
|
|
36
|
+
* the SLOT, and React paints `0`. Worse, `&&` short-circuits, so
|
|
37
|
+
* `renderChildren`'s own `if (isEmptyNodeSlot) return null` first leg is never
|
|
38
|
+
* reached and the bridge repair of objectui#8908 cannot help either. The class
|
|
39
|
+
* was patched one instance at a time three times (objectui#8331 →
|
|
40
|
+
* objectui#9033 → the eleven of objectui#9162) before it was closed here.
|
|
41
|
+
*
|
|
42
|
+
* `render` receives the slot itself, not a pre-rendered node, because some
|
|
43
|
+
* call sites render it with extra context (`<SchemaRenderer schema={…}
|
|
44
|
+
* data={data} />` in `plugin-detail`). It is invoked ONLY when the slot has
|
|
45
|
+
* content, so the chrome and the content appear and disappear together.
|
|
46
|
+
*
|
|
47
|
+
* A slot with NO chrome does not need this — call `renderChildren(slot)`
|
|
48
|
+
* directly, which is the same guard with nothing wrapped around it. The rule
|
|
49
|
+
* `object-ui/no-bare-node-slot-guard` refuses the `&&` spelling so that these
|
|
50
|
+
* two remain the only two.
|
|
51
|
+
*/
|
|
52
|
+
export declare function renderNodeSlot<T>(slot: T, render: (slot: NonNullable<T>) => React.ReactNode): React.ReactNode;
|
|
4
53
|
export declare function renderChildren(children: any): React.ReactNode;
|
|
54
|
+
/**
|
|
55
|
+
* Render a Radix primitive's `*Trigger` around an authored node slot — or
|
|
56
|
+
* render NOTHING when that slot is empty (objectui#9710; the same defect was
|
|
57
|
+
* repaired one instance at a time on objectui#9701).
|
|
58
|
+
*
|
|
59
|
+
* Two rules live here together, because a call site that reaches for one and
|
|
60
|
+
* forgets the other reintroduces a defect this seam exists to close.
|
|
61
|
+
*
|
|
62
|
+
* ## 1. The trigger is chrome, and chrome disappears with its slot
|
|
63
|
+
*
|
|
64
|
+
* `trigger` is `.optional()` on most of these keys, so a document that omits it
|
|
65
|
+
* is LEGAL. The primitive must then render nothing at all: a `*Trigger` with no
|
|
66
|
+
* content still paints its own element, and an empty `button` is an unlabeled
|
|
67
|
+
* tab stop that a keyboard user lands on with nothing to read. That is
|
|
68
|
+
* {@link renderNodeSlot}'s contract — chrome that appears and disappears with
|
|
69
|
+
* its content — and it is why the emptiness guard is INSIDE this seam rather
|
|
70
|
+
* than at each call site.
|
|
71
|
+
*
|
|
72
|
+
* ⚠️ Radix's `Slot` never objected to the empty case: read from the
|
|
73
|
+
* lockfile-pinned `@radix-ui/react-slot`, the branch that throws is guarded by
|
|
74
|
+
* `if (children || children === 0)`, so a `null` child is returned as-is. The
|
|
75
|
+
* empty arm was never broken by the defect below, and must not be broken by its
|
|
76
|
+
* repair.
|
|
77
|
+
*
|
|
78
|
+
* ## 2. `asChild` asks Radix's structural question, not a `typeof` question
|
|
79
|
+
*
|
|
80
|
+
* `asChild` resolves the primitive to that same `Slot`, which merges its props
|
|
81
|
+
* onto a SINGLE React element and throws on anything else it is actually given.
|
|
82
|
+
* A node slot admits far more: the published `SchemaNode` union names `string`,
|
|
83
|
+
* `number`, `boolean`, `null` and `undefined` beside `BaseSchema`, and the
|
|
84
|
+
* trigger keys add an ARRAY of nodes on top. So an unconditional `asChild`
|
|
85
|
+
* asserted a precondition neither published face ever promised, and the values
|
|
86
|
+
* that missed it THREW: `trigger: 'Open it'` — the most natural thing to write
|
|
87
|
+
* for something called a trigger — validated on both faces and then landed the
|
|
88
|
+
* whole node in `SchemaRenderer`'s error boundary, with no diagnostic naming
|
|
89
|
+
* the key. A multi-node array threw the same way, for the same reason.
|
|
90
|
+
*
|
|
91
|
+
* Where `Slot` cannot serve, the primitive renders its OWN element around the
|
|
92
|
+
* content, so a bare string paints as the trigger's text and stays a real
|
|
93
|
+
* trigger; where it CAN serve, the merge is unchanged.
|
|
94
|
+
*
|
|
95
|
+
* ⛔ Widens no published face. `packages/types` states the accept set and is
|
|
96
|
+
* untouched; the implementation is catching up to a declaration that already
|
|
97
|
+
* said yes — the direction objectui#7105 ruled for node slots, which RELAX the
|
|
98
|
+
* renderer rather than narrow the declaration.
|
|
99
|
+
*
|
|
100
|
+
* ```tsx
|
|
101
|
+
* {renderTriggerSlot(DialogTrigger, schema.trigger)}
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* ⚠️ A helper is only reached by an author who calls it, so it is not what
|
|
105
|
+
* keeps the next overlay key out of either defect. That is
|
|
106
|
+
* `overlay-trigger-bare-string-9710.test.tsx`, which enumerates the REGISTRY
|
|
107
|
+
* for blocks declaring a `trigger` slot rather than naming files, and reads the
|
|
108
|
+
* zod faces for which of them may legally omit one — so a ninth key is covered
|
|
109
|
+
* on the day it registers, whatever spelling it reached for. ⚠️ That pin is
|
|
110
|
+
* also the ONLY live instrument for this class: a repaired call site carries no
|
|
111
|
+
* `asChild` attribute and no `*Trigger` tag, so a source grep can no longer
|
|
112
|
+
* tell a repaired renderer from a deleted one.
|
|
113
|
+
*/
|
|
114
|
+
export declare function renderTriggerSlot(Trigger: React.ComponentType<{
|
|
115
|
+
asChild?: boolean;
|
|
116
|
+
children?: React.ReactNode;
|
|
117
|
+
}>, slot: unknown): React.ReactNode;
|
|
@@ -1,36 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* {@link maxVisible}. They share a single overflow button with any business
|
|
10
|
-
* actions that spilled past {@link maxVisible}, guaranteeing at most one
|
|
11
|
-
* "More" menu per bar.
|
|
12
|
-
*
|
|
13
|
-
* The first system action is automatically separated from business-overflow
|
|
14
|
-
* entries by a menu separator.
|
|
15
|
-
*/
|
|
16
|
-
systemActions?: UIActionSchema[];
|
|
17
|
-
/** Filter actions by this location */
|
|
18
|
-
location?: ActionLocation;
|
|
19
|
-
/** Maximum visible inline actions before overflow into "More" menu (default: 3) */
|
|
20
|
-
maxVisible?: number;
|
|
21
|
-
/** Maximum visible inline actions on mobile devices (default: 1). Desktop uses maxVisible instead. */
|
|
22
|
-
mobileMaxVisible?: number;
|
|
23
|
-
/** Visibility condition expression */
|
|
24
|
-
visible?: string;
|
|
25
|
-
/** Layout direction */
|
|
26
|
-
direction?: 'horizontal' | 'vertical';
|
|
27
|
-
/** Gap between items (Tailwind gap class, default: 'gap-2') */
|
|
28
|
-
gap?: string;
|
|
29
|
-
/** Button variant for all actions (can be overridden per-action) */
|
|
30
|
-
variant?: string;
|
|
31
|
-
/** Button size for all actions (can be overridden per-action) */
|
|
32
|
-
size?: string;
|
|
33
|
-
/** Custom CSS class */
|
|
34
|
-
className?: string;
|
|
35
|
-
[key: string]: any;
|
|
36
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
@@ -5,11 +5,14 @@ import { UIActionSchema } from '@object-ui/types';
|
|
|
5
5
|
* `bodyShape`, `locations`, `enabled`, `size` — is declared by the modern type
|
|
6
6
|
* and by no other, and the legacy `crud.ts` `ActionSchema` it used to name is
|
|
7
7
|
* `@deprecated` and requires `type: 'action'` (this renderer serves
|
|
8
|
-
* `'script' | 'url' | 'modal' | 'flow' | 'api'`).
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* `'script' | 'url' | 'modal' | 'flow' | 'api'`).
|
|
9
|
+
*
|
|
10
|
+
* `actionType` is the DECLARED input carrying the action's execution type
|
|
11
|
+
* (objectui#7415, objectstack#14490 ruling A). `type` stays on the intersection
|
|
12
|
+
* as the SDUI envelope's component discriminator — `'action:button'` on every
|
|
13
|
+
* authored path — and is no longer read as an action type by anything here.
|
|
11
14
|
*/
|
|
12
|
-
export interface
|
|
15
|
+
export interface ActionButtonRendererProps {
|
|
13
16
|
schema: UIActionSchema & {
|
|
14
17
|
type: string;
|
|
15
18
|
className?: string;
|
|
@@ -18,5 +21,13 @@ export interface ActionButtonProps {
|
|
|
18
21
|
className?: string;
|
|
19
22
|
/** Override context for this specific action */
|
|
20
23
|
context?: Record<string, any>;
|
|
24
|
+
/**
|
|
25
|
+
* The host-EVALUATED enablement verdict, declared rather than left to the
|
|
26
|
+
* index signature (objectui#9131). `SchemaRenderer` evaluates the node's
|
|
27
|
+
* `disabled` / `disabledOn` and forwards the answer under this name as
|
|
28
|
+
* `disabled: __disabled || undefined`. It is consumed by name below and
|
|
29
|
+
* therefore never reaches the DOM spread — see the destructure.
|
|
30
|
+
*/
|
|
31
|
+
disabled?: boolean;
|
|
21
32
|
[key: string]: any;
|
|
22
33
|
}
|
|
@@ -2,8 +2,6 @@ import { default as React } from 'react';
|
|
|
2
2
|
import { UIActionSchema, ActionLocation } from '@object-ui/types';
|
|
3
3
|
export interface ActionGroupSchema {
|
|
4
4
|
type: 'action:group';
|
|
5
|
-
/** Group name */
|
|
6
|
-
name?: string;
|
|
7
5
|
/** Group label */
|
|
8
6
|
label?: string;
|
|
9
7
|
/** Group icon */
|
|
@@ -14,8 +12,11 @@ export interface ActionGroupSchema {
|
|
|
14
12
|
display?: 'dropdown' | 'inline';
|
|
15
13
|
/** Filter actions by location */
|
|
16
14
|
location?: ActionLocation;
|
|
17
|
-
/** Group visibility
|
|
18
|
-
visible?: string
|
|
15
|
+
/** Group visibility predicate: a boolean, a CEL string, or a `{ dialect, source }` envelope */
|
|
16
|
+
visible?: boolean | string | {
|
|
17
|
+
dialect: string;
|
|
18
|
+
source?: string;
|
|
19
|
+
};
|
|
19
20
|
/** Button variant for inline actions */
|
|
20
21
|
variant?: string;
|
|
21
22
|
/** Button size for inline actions */
|
|
@@ -5,14 +5,24 @@ import { UIActionSchema } from '@object-ui/types';
|
|
|
5
5
|
* `locations`, `enabled` and `size` are all modern-only keys this renderer
|
|
6
6
|
* forwards, and the legacy `crud.ts` `ActionSchema` is `@deprecated` and pins
|
|
7
7
|
* `type: 'action'` where this renderer's own registry `inputs` declare
|
|
8
|
-
* `'script' | 'url' | 'modal' | 'flow' | 'api'`.
|
|
8
|
+
* `'script' | 'url' | 'modal' | 'flow' | 'api'`. `actionType` is the DECLARED
|
|
9
|
+
* input carrying that execution type (objectui#7415), for the same reason it is
|
|
10
|
+
* on `action:button`; `type` stays on the intersection as the SDUI envelope's
|
|
11
|
+
* component discriminator and is not read as an action type here.
|
|
9
12
|
*/
|
|
10
|
-
export interface
|
|
13
|
+
export interface ActionIconRendererProps {
|
|
11
14
|
schema: UIActionSchema & {
|
|
12
15
|
type: string;
|
|
13
16
|
className?: string;
|
|
17
|
+
actionType?: string;
|
|
14
18
|
};
|
|
15
19
|
className?: string;
|
|
16
20
|
context?: Record<string, any>;
|
|
21
|
+
/**
|
|
22
|
+
* The host-EVALUATED enablement verdict — see `ActionButtonRendererProps` for the
|
|
23
|
+
* mechanism (objectui#9131). Declared rather than left to the index
|
|
24
|
+
* signature, consumed by name below, never re-spread onto the DOM.
|
|
25
|
+
*/
|
|
26
|
+
disabled?: boolean;
|
|
17
27
|
[key: string]: any;
|
|
18
28
|
}
|
|
@@ -12,8 +12,11 @@ export interface ActionMenuSchema {
|
|
|
12
12
|
variant?: string;
|
|
13
13
|
/** Trigger size */
|
|
14
14
|
size?: string;
|
|
15
|
-
/** Visibility
|
|
16
|
-
visible?: string
|
|
15
|
+
/** Visibility predicate: a boolean, a CEL string, or a `{ dialect, source }` envelope */
|
|
16
|
+
visible?: boolean | string | {
|
|
17
|
+
dialect: string;
|
|
18
|
+
source?: string;
|
|
19
|
+
};
|
|
17
20
|
/** Custom CSS class */
|
|
18
21
|
className?: string;
|
|
19
22
|
[key: string]: any;
|
|
@@ -11,10 +11,25 @@
|
|
|
11
11
|
* another. Deliberately strict: only the literal `true` arms it.
|
|
12
12
|
*/
|
|
13
13
|
export declare function hasAutoTrigger(action: unknown): boolean;
|
|
14
|
+
/** The fields of an action this module reads. */
|
|
15
|
+
export interface AutoTriggerSubject {
|
|
16
|
+
autoTrigger?: unknown;
|
|
17
|
+
visible?: unknown;
|
|
18
|
+
name?: string;
|
|
19
|
+
label?: string;
|
|
20
|
+
}
|
|
14
21
|
/**
|
|
15
|
-
* Run `run` at most once, as soon as `
|
|
22
|
+
* Run `run` at most once, as soon as `action` asks to be auto-triggered — unless
|
|
23
|
+
* the action's own declared `visible` gate hides it, in which case the trigger
|
|
24
|
+
* is refused and reported instead (objectui#4191).
|
|
16
25
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
26
|
+
* @param action The action the renderer received (read: `autoTrigger`,
|
|
27
|
+
* `visible`, `name`, `label`).
|
|
28
|
+
* @param isVisible The renderer's own evaluated `visible` verdict — the same
|
|
29
|
+
* value its early return consults. Only consulted when the
|
|
30
|
+
* action DECLARES a gate, exactly like that early return.
|
|
31
|
+
* @param run The renderer's click path. It may change identity freely (it
|
|
32
|
+
* is rebuilt from `schema` on most renders); the ref is what
|
|
33
|
+
* makes this once-only, so depending on it is safe.
|
|
19
34
|
*/
|
|
20
|
-
export declare function useAutoTriggerOnce(
|
|
35
|
+
export declare function useAutoTriggerOnce(action: AutoTriggerSubject, isVisible: boolean, run: () => void | Promise<void>): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** A reason to show, with the ids the control's ARIA attributes point at. */
|
|
3
|
+
export interface DisabledReason {
|
|
4
|
+
/** The localized reason text. */
|
|
5
|
+
text: string;
|
|
6
|
+
/** Id of the element holding the reason — the control's description. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Id of a menu item's label element — the item's name when it shows a reason. */
|
|
9
|
+
labelId: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The reason for a control, or `undefined` when it gives none.
|
|
13
|
+
*
|
|
14
|
+
* `disabledByPredicate` is the caller's DECLARED-`disabled` verdict alone, never
|
|
15
|
+
* the OR it hands the control's `disabled` prop. A hook, so call it with the
|
|
16
|
+
* other hooks, ahead of any early return.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useDisabledReason(disabledByPredicate: boolean): DisabledReason | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* The control's `aria-describedby`: an id it already carries (an authored
|
|
21
|
+
* `ariaDescribedBy` reaches `action:button` and `action:icon` through their DOM
|
|
22
|
+
* pass-through) followed by the reason's, or `undefined` when there is neither.
|
|
23
|
+
*/
|
|
24
|
+
export declare function describedByWithReason(existing: unknown, reason: DisabledReason | undefined): string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Wraps a disabled button in the tooltip trigger that carries its reason, or
|
|
27
|
+
* returns the button alone when there is no reason. `heading` is shown above
|
|
28
|
+
* the reason inside the tooltip; `action:icon` passes its label there, since an
|
|
29
|
+
* icon-only control has no visible name and its own label tooltip cannot open
|
|
30
|
+
* while it is disabled.
|
|
31
|
+
*/
|
|
32
|
+
export declare function DisabledReasonTrigger({ reason, heading, children, }: {
|
|
33
|
+
reason: DisabledReason | undefined;
|
|
34
|
+
heading?: React.ReactNode;
|
|
35
|
+
children: React.ReactElement;
|
|
36
|
+
}): React.ReactElement;
|
|
37
|
+
/** The ARIA a menu item carries while it shows a reason; none otherwise. */
|
|
38
|
+
export declare function menuItemReasonAria(reason: DisabledReason | undefined): {
|
|
39
|
+
'aria-labelledby'?: string;
|
|
40
|
+
'aria-describedby'?: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* A menu item's label, with the reason as a visible second line under it when
|
|
44
|
+
* there is one. Pair it with `menuItemReasonAria` on the item.
|
|
45
|
+
*/
|
|
46
|
+
export declare function DisabledReasonMenuLabel({ reason, children, }: {
|
|
47
|
+
reason: DisabledReason | undefined;
|
|
48
|
+
children: React.ReactNode;
|
|
49
|
+
}): React.ReactElement;
|