@protobase/ui 0.19.9 → 0.19.10
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/dist/app/app.js +4 -4
- package/dist/app/create/create-offered.js +9 -0
- package/dist/app/create/create-page.js +3 -3
- package/dist/app/create/create-record-form.js +26 -62
- package/dist/app/create/create-route.js +29 -0
- package/dist/app/create/form.d.ts +30 -0
- package/dist/app/create/form.js +72 -0
- package/dist/app/custom-section.js +1 -1
- package/dist/app/displays/map-display.js +1 -1
- package/dist/app/displays/record-card.js +3 -3
- package/dist/app/displays/record-link.js +1 -1
- package/dist/app/displays/use-map-records.js +2 -2
- package/dist/app/embedded-list/embedded-columns.js +2 -2
- package/dist/app/embedded-list/embedded-list.js +5 -5
- package/dist/app/embedded-list/use-embedded-rows.js +2 -2
- package/dist/app/field-editor.js +7 -7
- package/dist/app/gallery/gallery-section.js +1 -1
- package/dist/app/gallery/photo-details.js +2 -2
- package/dist/app/list-page.js +18 -17
- package/dist/app/pages/blocks/card-row.js +2 -2
- package/dist/app/pages/blocks/field.js +2 -2
- package/dist/app/pages/blocks/link.js +1 -1
- package/dist/app/pages/blocks/modal-form.js +6 -6
- package/dist/app/pages/blocks/progress.js +1 -1
- package/dist/app/pages/blocks/record-card.js +2 -2
- package/dist/app/pages/blocks/record-row.js +1 -1
- package/dist/app/pages/blocks/show.js +2 -2
- package/dist/app/pages/blocks/stat.js +3 -3
- package/dist/app/pages/blocks/table.js +1 -1
- package/dist/app/pages/field-value.js +3 -3
- package/dist/app/pages/record-actions.js +2 -2
- package/dist/app/pages/use-run-action.js +2 -2
- package/dist/app/record-page.js +8 -8
- package/dist/app/record-row/record-row-body.js +2 -2
- package/dist/app/record-row/saved-record-row.js +1 -1
- package/dist/app/related-section.js +1 -1
- package/dist/app/searches/saved-search-rows.js +1 -1
- package/dist/app/searches/saved-search-section.js +2 -2
- package/dist/app/searches/saved-searches.js +2 -2
- package/dist/app/searches/search-controls.js +1 -1
- package/dist/app/searches/search-name-dialog.js +1 -1
- package/dist/app/searches/update-search-dialog.js +2 -2
- package/dist/app/searches/use-filter-chips.js +1 -1
- package/dist/app/searches/use-save-search.js +2 -2
- package/dist/app/searches/use-saved-searches.js +1 -1
- package/dist/app/searches/use-search-row.js +1 -1
- package/dist/app/sensitive-field.js +1 -1
- package/dist/app/use-app-address.js +1 -1
- package/dist/app/value-badge.js +1 -1
- package/dist/auth/sign-in-prompt.js +1 -1
- package/dist/data-grid/cells.js +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +10 -2
- package/dist/live/columns-from-model.js +1 -1
- package/dist/live/grid-loader.js +1 -1
- package/dist/live/use-filter-config.js +1 -1
- package/dist/markdown/markdown-editor.js +1 -1
- package/dist/package.js +1 -1
- package/dist/primitives/choices.d.ts +22 -0
- package/dist/primitives/choices.js +33 -0
- package/dist/primitives/dialog.d.ts +15 -0
- package/dist/primitives/menu-select.d.ts +14 -0
- package/dist/primitives/segmented.d.ts +23 -0
- package/dist/primitives/textarea.d.ts +9 -0
- package/dist/record-view/field.d.ts +27 -0
- package/dist/record-view/section.d.ts +10 -0
- package/dist/shell/assets/app-GKl91FLS.js +69 -0
- package/dist/shell/assets/{index-d-04ZYJt.js → index-BB2BN-6s.js} +1 -1
- package/dist/shell/assets/{index-DLVcUwwG.css → index-DxV5Rp_F.css} +1 -1
- package/dist/shell/assets/{maplibre-BACAMuVa.js → maplibre-DHotMteL.js} +2 -2
- package/dist/shell/assets/{markdown-content-CHU2BTHn.js → markdown-content-C4zE1qZp.js} +1 -1
- package/dist/shell/assets/{record-map-B6USTMW8.js → record-map-BBbVY6vn.js} +1 -1
- package/dist/shell/assets/{records-map-DVwLP4Ey.js → records-map-ur6HR-I5.js} +1 -1
- package/dist/shell/assets/shared-protobase-ui-D7kkYiTL.js +1 -0
- package/dist/shell/index.html +4 -4
- package/dist/shell/protobase.shell.json +1 -1
- package/package.json +4 -4
- package/dist/shell/assets/app-CB1ojooV.js +0 -69
- package/dist/shell/assets/shared-protobase-ui-BEvX9eTO.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useAdminMeta } from "../../meta-gate.js";
|
|
2
|
-
import { RecordRowBody } from "../../record-row/record-row-body.js";
|
|
3
2
|
import { propsOf } from "./block-props.js";
|
|
4
3
|
import { CardFrame } from "./card-frame.js";
|
|
4
|
+
import { RecordRowBody } from "../../record-row/record-row-body.js";
|
|
5
5
|
import { SavedRecordRow } from "../../record-row/saved-record-row.js";
|
|
6
6
|
import { SavedSearchRows } from "../../searches/saved-search-rows.js";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useClient } from "../../../data/api-provider.js";
|
|
2
2
|
import { useAdminMeta } from "../../meta-gate.js";
|
|
3
|
-
import { countQuery } from "../use-layout-data.js";
|
|
4
|
-
import { usePathValues } from "../use-path-value.js";
|
|
5
3
|
import { useLayoutRecord } from "../record-scope.js";
|
|
4
|
+
import { countQuery } from "../use-layout-data.js";
|
|
6
5
|
import { propsOf } from "./block-props.js";
|
|
6
|
+
import { usePathValues } from "../use-path-value.js";
|
|
7
7
|
import { useMemo } from "react";
|
|
8
8
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
9
9
|
import { useQueries } from "@tanstack/react-query";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Skeleton } from "../../../primitives/skeleton.js";
|
|
2
2
|
import { useAdminMeta } from "../../meta-gate.js";
|
|
3
|
+
import { useLayoutRecord } from "../record-scope.js";
|
|
3
4
|
import { AppLink } from "../../use-app-address.js";
|
|
4
5
|
import { useCount } from "../use-layout-data.js";
|
|
5
|
-
import { FieldValue } from "../field-value.js";
|
|
6
|
-
import { usePathValue } from "../use-path-value.js";
|
|
7
|
-
import { useLayoutRecord } from "../record-scope.js";
|
|
8
6
|
import { propsOf } from "./block-props.js";
|
|
9
7
|
import { CardFrame } from "./card-frame.js";
|
|
8
|
+
import { FieldValue } from "../field-value.js";
|
|
9
|
+
import { usePathValue } from "../use-path-value.js";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
//#region src/app/pages/blocks/stat.tsx
|
|
12
12
|
const big = "text-2xl font-semibold tracking-tight tabular-nums";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useAdminMeta } from "../../meta-gate.js";
|
|
2
|
-
import { EmbeddedDisplaySwitch, EmbeddedList } from "../../embedded-list/embedded-list.js";
|
|
3
2
|
import { propsOf } from "./block-props.js";
|
|
4
3
|
import { CardFrame } from "./card-frame.js";
|
|
4
|
+
import { EmbeddedDisplaySwitch, EmbeddedList } from "../../embedded-list/embedded-list.js";
|
|
5
5
|
import { useEmbeddedDisplay } from "../../embedded-list/use-embedded-display.js";
|
|
6
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/app/pages/blocks/table.tsx
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { cn } from "../../lib/cn.js";
|
|
2
2
|
import { keys } from "../../data/query-keys.js";
|
|
3
3
|
import { useClient } from "../../data/api-provider.js";
|
|
4
|
-
import {
|
|
4
|
+
import { useAdminMeta } from "../meta-gate.js";
|
|
5
5
|
import { fileShown, shownImage } from "../../live/file-values.js";
|
|
6
6
|
import { displayValue } from "../../live/display-value.js";
|
|
7
|
-
import { useAdminMeta } from "../meta-gate.js";
|
|
8
7
|
import { AppLink } from "../use-app-address.js";
|
|
9
8
|
import { FileImage } from "../../live/file-image.js";
|
|
9
|
+
import { fetchLabels } from "../../live/relation-labels.js";
|
|
10
10
|
import { useShownWidget } from "../field-types/shown-widget.js";
|
|
11
11
|
import { WidgetPart } from "../field-types/widget-part.js";
|
|
12
|
-
import { Markdown } from "../../markdown/markdown.js";
|
|
13
12
|
import { isMarkdown } from "../../markdown/markdown-hint.js";
|
|
14
13
|
import { ValueBadge } from "../value-badge.js";
|
|
14
|
+
import { Markdown } from "../../markdown/markdown.js";
|
|
15
15
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
16
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
17
17
|
//#region src/app/pages/field-value.tsx
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AppLink, useAppAddress } from "../use-app-address.js";
|
|
2
|
-
import { ActionRail } from "../../record-view/action-rail.js";
|
|
3
1
|
import { ConfirmAction } from "./confirm-action.js";
|
|
2
|
+
import { AppLink, useAppAddress } from "../use-app-address.js";
|
|
4
3
|
import { useActionRunner } from "./use-run-action.js";
|
|
4
|
+
import { ActionRail } from "../../record-view/action-rail.js";
|
|
5
5
|
import { actionIcon } from "../action-icon.js";
|
|
6
6
|
import { useState } from "react";
|
|
7
7
|
import { Pencil, Trash2 } from "lucide-react";
|
|
@@ -2,10 +2,10 @@ import { useClient, useResourceClient } from "../../data/api-provider.js";
|
|
|
2
2
|
import { useToast } from "../../toasts/toast-provider.js";
|
|
3
3
|
import { useProjectUi } from "./project-ui.js";
|
|
4
4
|
import { useAdminMeta, usePermissions } from "../meta-gate.js";
|
|
5
|
-
import { useAppAddress } from "../use-app-address.js";
|
|
6
5
|
import { can } from "../permissions.js";
|
|
7
|
-
import {
|
|
6
|
+
import { useAppAddress } from "../use-app-address.js";
|
|
8
7
|
import { actionFor, linkTarget, openLink } from "./action-href.js";
|
|
8
|
+
import { useRefreshResource } from "./use-layout-data.js";
|
|
9
9
|
import { useState } from "react";
|
|
10
10
|
import { fillAddress } from "@protobase/schema/internal";
|
|
11
11
|
//#region src/app/pages/use-run-action.ts
|
package/dist/app/record-page.js
CHANGED
|
@@ -9,29 +9,29 @@ import { useRecord } from "../data/use-record.js";
|
|
|
9
9
|
import { recordTitle } from "../live/model-helpers.js";
|
|
10
10
|
import { humanize } from "../live/naming.js";
|
|
11
11
|
import { useProjectUi } from "./pages/project-ui.js";
|
|
12
|
+
import { Notice, useAdminMeta, usePermissions } from "./meta-gate.js";
|
|
13
|
+
import { can, fieldAccess } from "./permissions.js";
|
|
12
14
|
import { displayValue } from "../live/display-value.js";
|
|
13
15
|
import { filledFields } from "./filled-fields.js";
|
|
14
|
-
import { Notice, useAdminMeta, usePermissions } from "./meta-gate.js";
|
|
15
16
|
import { AppLink, useAppAddress } from "./use-app-address.js";
|
|
16
17
|
import { ErrorBanner } from "./error-banner.js";
|
|
17
18
|
import { shownWidget } from "./field-types/shown-widget.js";
|
|
18
19
|
import { WidgetPart } from "./field-types/widget-part.js";
|
|
19
|
-
import { Markdown } from "../markdown/markdown.js";
|
|
20
20
|
import { isMarkdown } from "../markdown/markdown-hint.js";
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
21
|
+
import { toneFor } from "../live/columns-from-model.js";
|
|
22
|
+
import { ValueBadge } from "./value-badge.js";
|
|
23
|
+
import { Markdown } from "../markdown/markdown.js";
|
|
24
|
+
import { FieldValue } from "./pages/field-value.js";
|
|
23
25
|
import { Field } from "../record-view/field.js";
|
|
24
26
|
import { Section } from "../record-view/section.js";
|
|
25
27
|
import { MetadataCard, RelatedRecords, SidebarCard } from "../record-view/record-sidebar.js";
|
|
26
28
|
import { RecordHeader } from "../record-view/record-header.js";
|
|
27
29
|
import { SpecTable } from "../record-view/spec-table.js";
|
|
28
30
|
import { KeyFacts } from "../record-view/key-facts.js";
|
|
29
|
-
import {
|
|
31
|
+
import { FieldEditor } from "./field-editor.js";
|
|
32
|
+
import { namedIcon } from "./named-icon.js";
|
|
30
33
|
import { useDeleteFlow } from "./delete/use-delete-flow.js";
|
|
31
34
|
import { useRestore } from "./delete/use-restore.js";
|
|
32
|
-
import { namedIcon } from "./named-icon.js";
|
|
33
|
-
import { ValueBadge } from "./value-badge.js";
|
|
34
|
-
import { FieldValue } from "./pages/field-value.js";
|
|
35
35
|
import { auditField } from "../live/audit-fields.js";
|
|
36
36
|
import { CustomSection } from "./custom-section.js";
|
|
37
37
|
import { MapSection } from "./map/map-section.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useIsXs } from "../../lib/use-media-query.js";
|
|
2
2
|
import { Skeleton } from "../../primitives/skeleton.js";
|
|
3
3
|
import { humanize } from "../../live/naming.js";
|
|
4
|
+
import { useAdminMeta } from "../meta-gate.js";
|
|
4
5
|
import { displaysOf, loadedFields } from "../displays/list-displays.js";
|
|
5
6
|
import { defaultOrderBy } from "../list-order.js";
|
|
6
|
-
import { useAdminMeta } from "../meta-gate.js";
|
|
7
7
|
import { AppLink } from "../use-app-address.js";
|
|
8
8
|
import { ErrorBanner } from "../error-banner.js";
|
|
9
9
|
import { useLiveRows } from "../../live/use-live-rows.js";
|
|
10
|
-
import { FilterChipList } from "../searches/filter-chip-list.js";
|
|
11
10
|
import { viewAllAddress } from "../embedded-list/embedded-display.js";
|
|
11
|
+
import { FilterChipList } from "../searches/filter-chip-list.js";
|
|
12
12
|
import { useFilterChips } from "../searches/use-filter-chips.js";
|
|
13
13
|
import { RecordRow } from "./record-row.js";
|
|
14
14
|
import { useMemo } from "react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Skeleton } from "../../primitives/skeleton.js";
|
|
2
2
|
import { humanize } from "../../live/naming.js";
|
|
3
|
-
import { listedResource } from "../current-address.js";
|
|
4
3
|
import { useAdminMeta } from "../meta-gate.js";
|
|
4
|
+
import { listedResource } from "../current-address.js";
|
|
5
5
|
import { ErrorBanner } from "../error-banner.js";
|
|
6
6
|
import { savedScope } from "../saved/saved-records.js";
|
|
7
7
|
import { useSavedRecords } from "../saved/use-saved-records.js";
|
|
@@ -3,8 +3,8 @@ import { keys } from "../data/query-keys.js";
|
|
|
3
3
|
import { useClient } from "../data/api-provider.js";
|
|
4
4
|
import { useAdminMeta } from "./meta-gate.js";
|
|
5
5
|
import { ErrorBanner } from "./error-banner.js";
|
|
6
|
-
import { Section } from "../record-view/section.js";
|
|
7
6
|
import { listColumnNames } from "../live/columns-from-model.js";
|
|
7
|
+
import { Section } from "../record-view/section.js";
|
|
8
8
|
import { EmbeddedDisplaySwitch, EmbeddedList } from "./embedded-list/embedded-list.js";
|
|
9
9
|
import { useEmbeddedDisplay } from "./embedded-list/use-embedded-display.js";
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -5,8 +5,8 @@ import { useAdminMeta } from "../meta-gate.js";
|
|
|
5
5
|
import { AppLink } from "../use-app-address.js";
|
|
6
6
|
import { ErrorBanner } from "../error-banner.js";
|
|
7
7
|
import { InlineFilterChips } from "./filter-chip-list.js";
|
|
8
|
-
import { useSavedSearches } from "./use-saved-searches.js";
|
|
9
8
|
import { RecordRowBody } from "../record-row/record-row-body.js";
|
|
9
|
+
import { useSavedSearches } from "./use-saved-searches.js";
|
|
10
10
|
import { useSearchRow } from "./use-search-row.js";
|
|
11
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
import { encodeKey } from "@protobase/schema/internal";
|
|
@@ -5,10 +5,10 @@ import { useToast } from "../../toasts/toast-provider.js";
|
|
|
5
5
|
import { AppLink } from "../use-app-address.js";
|
|
6
6
|
import { useRefreshResource } from "../pages/use-layout-data.js";
|
|
7
7
|
import { InlineFilterChips } from "./filter-chip-list.js";
|
|
8
|
-
import { SearchNameDialog } from "./search-name-dialog.js";
|
|
9
8
|
import { RecordRowBody } from "../record-row/record-row-body.js";
|
|
10
|
-
import { SearchControls } from "./search-controls.js";
|
|
11
9
|
import { useSearchRow } from "./use-search-row.js";
|
|
10
|
+
import { SearchNameDialog } from "./search-name-dialog.js";
|
|
11
|
+
import { SearchControls } from "./search-controls.js";
|
|
12
12
|
import { useState } from "react";
|
|
13
13
|
import { Pencil, Trash2 } from "lucide-react";
|
|
14
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -3,11 +3,11 @@ import { PageHeader } from "../../app-shell/page-header.js";
|
|
|
3
3
|
import { recordKey } from "../../live/model-helpers.js";
|
|
4
4
|
import { humanize } from "../../live/naming.js";
|
|
5
5
|
import { Notice, useAdminMeta, usePermissions } from "../meta-gate.js";
|
|
6
|
+
import { can } from "../permissions.js";
|
|
6
7
|
import { AppLink } from "../use-app-address.js";
|
|
7
8
|
import { ErrorBanner } from "../error-banner.js";
|
|
8
|
-
import { can } from "../permissions.js";
|
|
9
|
-
import { useDeleteFlow } from "../delete/use-delete-flow.js";
|
|
10
9
|
import { useSavedSearches } from "./use-saved-searches.js";
|
|
10
|
+
import { useDeleteFlow } from "../delete/use-delete-flow.js";
|
|
11
11
|
import { SavedSearchSection } from "./saved-search-section.js";
|
|
12
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { encodeKey } from "@protobase/schema/internal";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useClient } from "../../data/api-provider.js";
|
|
2
2
|
import { humanize } from "../../live/naming.js";
|
|
3
3
|
import { useToast } from "../../toasts/toast-provider.js";
|
|
4
|
-
import { Switch } from "../../primitives/switch.js";
|
|
5
4
|
import { useRefreshResource } from "../pages/use-layout-data.js";
|
|
5
|
+
import { Switch } from "../../primitives/switch.js";
|
|
6
6
|
import { useId } from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { useMutation } from "@tanstack/react-query";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Input } from "../../primitives/input.js";
|
|
2
2
|
import { Button } from "../../primitives/button.js";
|
|
3
|
-
import { ResponsiveDialog } from "../../primitives/responsive-dialog.js";
|
|
4
3
|
import { FilterChipList } from "./filter-chip-list.js";
|
|
4
|
+
import { ResponsiveDialog } from "../../primitives/responsive-dialog.js";
|
|
5
5
|
import { useId, useState } from "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/app/searches/search-name-dialog.tsx
|
|
@@ -3,11 +3,11 @@ import { Button } from "../../primitives/button.js";
|
|
|
3
3
|
import { useClient } from "../../data/api-provider.js";
|
|
4
4
|
import { humanize } from "../../live/naming.js";
|
|
5
5
|
import { defaultOrderBy } from "../list-order.js";
|
|
6
|
-
import { ResponsiveDialog } from "../../primitives/responsive-dialog.js";
|
|
7
6
|
import { countQuery } from "../pages/use-layout-data.js";
|
|
7
|
+
import { useFilterChips } from "./use-filter-chips.js";
|
|
8
|
+
import { ResponsiveDialog } from "../../primitives/responsive-dialog.js";
|
|
8
9
|
import { EmbeddedList } from "../embedded-list/embedded-list.js";
|
|
9
10
|
import { addedFilter, filterChanges, netChange, removedFilter } from "./search-diff.js";
|
|
10
|
-
import { useFilterChips } from "./use-filter-chips.js";
|
|
11
11
|
import { useMemo } from "react";
|
|
12
12
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { useQuery } from "@tanstack/react-query";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { keys } from "../../data/query-keys.js";
|
|
2
2
|
import { useClient } from "../../data/api-provider.js";
|
|
3
|
-
import { fetchLabels } from "../../live/relation-labels.js";
|
|
4
3
|
import { useAdminMeta } from "../meta-gate.js";
|
|
4
|
+
import { fetchLabels } from "../../live/relation-labels.js";
|
|
5
5
|
import { chosenRelations, filterChips } from "./saved-search.js";
|
|
6
6
|
import { useQueries, useQueryClient } from "@tanstack/react-query";
|
|
7
7
|
//#region src/app/searches/use-filter-chips.ts
|
|
@@ -3,11 +3,11 @@ import { recordKey } from "../../live/model-helpers.js";
|
|
|
3
3
|
import { humanize } from "../../live/naming.js";
|
|
4
4
|
import { useToast } from "../../toasts/toast-provider.js";
|
|
5
5
|
import { useAdminMeta } from "../meta-gate.js";
|
|
6
|
-
import { useAppAddress } from "../use-app-address.js";
|
|
7
6
|
import { can } from "../permissions.js";
|
|
7
|
+
import { useAppAddress } from "../use-app-address.js";
|
|
8
8
|
import { useRefreshResource } from "../pages/use-layout-data.js";
|
|
9
|
-
import { useOpenedSearch } from "./use-opened-search.js";
|
|
10
9
|
import { useSavedSearches } from "./use-saved-searches.js";
|
|
10
|
+
import { useOpenedSearch } from "./use-opened-search.js";
|
|
11
11
|
import { useMutation } from "@tanstack/react-query";
|
|
12
12
|
import { encodeKey } from "@protobase/schema/internal";
|
|
13
13
|
//#region src/app/searches/use-save-search.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { keys } from "../../data/query-keys.js";
|
|
2
2
|
import { useClient } from "../../data/api-provider.js";
|
|
3
|
-
import { defaultOrderBy } from "../list-order.js";
|
|
4
3
|
import { useAdminMeta } from "../meta-gate.js";
|
|
4
|
+
import { defaultOrderBy } from "../list-order.js";
|
|
5
5
|
import { useQuery } from "@tanstack/react-query";
|
|
6
6
|
//#region src/app/searches/use-saved-searches.ts
|
|
7
7
|
/** Where the user's saved searches of `resource` are cached; a list key, so a write to the resource refreshes it. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useClient } from "../../data/api-provider.js";
|
|
2
2
|
import { humanize } from "../../live/naming.js";
|
|
3
3
|
import { countQuery, useRefreshResource } from "../pages/use-layout-data.js";
|
|
4
|
-
import { isUnseen, unseenFilter } from "./saved-search.js";
|
|
5
4
|
import { chipsText } from "./filter-chip-list.js";
|
|
5
|
+
import { isUnseen, unseenFilter } from "./saved-search.js";
|
|
6
6
|
import { useFilterChips } from "./use-filter-chips.js";
|
|
7
7
|
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
8
8
|
//#region src/app/searches/use-search-row.ts
|
|
@@ -3,8 +3,8 @@ import { Input } from "../primitives/input.js";
|
|
|
3
3
|
import { Button } from "../primitives/button.js";
|
|
4
4
|
import { humanize } from "../live/naming.js";
|
|
5
5
|
import { displayValue } from "../live/display-value.js";
|
|
6
|
-
import { toDraft } from "../live/field-values.js";
|
|
7
6
|
import { ErrorBanner } from "./error-banner.js";
|
|
7
|
+
import { toDraft } from "../live/field-values.js";
|
|
8
8
|
import { useState } from "react";
|
|
9
9
|
import { Eye, EyeOff } from "lucide-react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useIsXs } from "../lib/use-media-query.js";
|
|
2
2
|
import { Link, useRouter } from "./router.js";
|
|
3
|
-
import { changedList, currentAddress, listDefaults, listedResource } from "./current-address.js";
|
|
4
3
|
import { useAdminMeta } from "./meta-gate.js";
|
|
4
|
+
import { changedList, currentAddress, listDefaults, listedResource } from "./current-address.js";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
import { appPath, readAppPath } from "@protobase/schema";
|
package/dist/app/value-badge.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Badge } from "../primitives/badge.js";
|
|
2
|
-
import { valueColor } from "../live/value-color.js";
|
|
3
2
|
import { toneFor } from "../live/columns-from-model.js";
|
|
3
|
+
import { valueColor } from "../live/value-color.js";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/app/value-badge.tsx
|
|
6
6
|
/** A stored value as a badge: filled with the colour the view gives it and in its badge shape, else in its tone. */
|
|
@@ -2,8 +2,8 @@ import { RouteLink } from "../primitives/route-link.js";
|
|
|
2
2
|
import { useAuth } from "./auth-provider.js";
|
|
3
3
|
import { Button, buttonClass } from "../primitives/button.js";
|
|
4
4
|
import { useSignInAddress } from "./use-sign-in-address.js";
|
|
5
|
-
import { ResponsiveDialog } from "../primitives/responsive-dialog.js";
|
|
6
5
|
import { namedIcon } from "../app/named-icon.js";
|
|
6
|
+
import { ResponsiveDialog } from "../primitives/responsive-dialog.js";
|
|
7
7
|
import { useId } from "react";
|
|
8
8
|
import { Check, LogIn } from "lucide-react";
|
|
9
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
package/dist/data-grid/cells.js
CHANGED
|
@@ -6,8 +6,8 @@ import { formatInt, formatPercent, formatSigned } from "../format/number.js";
|
|
|
6
6
|
import { formatDate, formatDateTime } from "../format/date.js";
|
|
7
7
|
import { fileShown, shownImage } from "../live/file-values.js";
|
|
8
8
|
import { FileImage } from "../live/file-image.js";
|
|
9
|
-
import { userById } from "../mocks/users.js";
|
|
10
9
|
import { valueColor } from "../live/value-color.js";
|
|
10
|
+
import { userById } from "../mocks/users.js";
|
|
11
11
|
import { Check, Paperclip } from "lucide-react";
|
|
12
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { enumLabel } from "@protobase/schema";
|
package/dist/index.d.ts
CHANGED
|
@@ -48,5 +48,13 @@ import { CodeForm, CodeFormProps } from "./auth/code-form.js";
|
|
|
48
48
|
import { ResendCodeButton, ResendCodeButtonProps } from "./auth/resend-code-button.js";
|
|
49
49
|
import { Button, ButtonProps, buttonClass } from "./primitives/button.js";
|
|
50
50
|
import { Input, InputProps } from "./primitives/input.js";
|
|
51
|
+
import { Textarea, TextareaProps } from "./primitives/textarea.js";
|
|
52
|
+
import { Segmented, SegmentedOption, SegmentedProps } from "./primitives/segmented.js";
|
|
53
|
+
import { MenuSelect, MenuSelectProps } from "./primitives/menu-select.js";
|
|
54
|
+
import { ChoiceOption, Choices, ChoicesProps } from "./primitives/choices.js";
|
|
55
|
+
import { Dialog, DialogProps } from "./primitives/dialog.js";
|
|
56
|
+
import { Field, FieldProps } from "./record-view/field.js";
|
|
57
|
+
import { Section } from "./record-view/section.js";
|
|
58
|
+
import { Form, FormProps } from "./app/create/form.js";
|
|
51
59
|
import { Spinner } from "./primitives/spinner.js";
|
|
52
|
-
export { ActionCard, type ActionCardProps, type ActionContext, type ActionHandler, ApiProvider, type ApiProviderProps, App, AppLink, type AppProps, AssistantDock, type AssistantDockProps, AuthLayout, type AuthLayoutProps, type BackendData, type BackendRefresh, type BeforeSignInProps, Button, type ButtonProps, type CardAction, type CardTone, ChatMessage, ChatThread, type ChatThreadProps, CodeForm, type CodeFormProps, CompactTable, type CompactTableProps, Composer, type ComposerProps, type CurrentAddress, type DiffLine, DiffView, type DiffViewProps, FieldList, type FieldWidget, type FieldWidgetEditorProps, type FieldWidgetProps, Input, type InputProps, type LayoutRecord, type ListAddress, type ListChange, type ListDisplay, type ListDisplayRow, LogoMark, type MetaData, OtpInput, type OtpInputProps, PartView, type PluginInfo, type ProjectUi, type RecordCardProps, RecordLink, ResendCodeButton, type ResendCodeButtonProps, ResponsiveDialog, type ResponsiveDialogProps, type ShellLogoProps, SidePanel, type SidePanelProps, SignInPrompt, type SignInPromptProps, Spinner, type Step, StepList, type StepState, buttonClass, definePlugin, defineUi, diffStats, isConflict, mergeUi, parseDiff, pluginApi, protobaseVersion, uiFromModule, useApiToken, useAppAddress, useAssistant, useAssistantClient, useBackendData, useClient, useFacets, useHistogram, useLayoutRecord, useList, useListDisplay, useMeta, usePlugin, useRecord, useResourceClient, useSeries, useUpdateRecord };
|
|
60
|
+
export { ActionCard, type ActionCardProps, type ActionContext, type ActionHandler, ApiProvider, type ApiProviderProps, App, AppLink, type AppProps, AssistantDock, type AssistantDockProps, AuthLayout, type AuthLayoutProps, type BackendData, type BackendRefresh, type BeforeSignInProps, Button, type ButtonProps, type CardAction, type CardTone, ChatMessage, ChatThread, type ChatThreadProps, type ChoiceOption, Choices, type ChoicesProps, CodeForm, type CodeFormProps, CompactTable, type CompactTableProps, Composer, type ComposerProps, type CurrentAddress, Dialog, type DialogProps, type DiffLine, DiffView, type DiffViewProps, Field, FieldList, type FieldProps, type FieldWidget, type FieldWidgetEditorProps, type FieldWidgetProps, Form, type FormProps, Input, type InputProps, type LayoutRecord, type ListAddress, type ListChange, type ListDisplay, type ListDisplayRow, LogoMark, MenuSelect, type MenuSelectProps, type MetaData, OtpInput, type OtpInputProps, PartView, type PluginInfo, type ProjectUi, type RecordCardProps, RecordLink, ResendCodeButton, type ResendCodeButtonProps, ResponsiveDialog, type ResponsiveDialogProps, Section, Segmented, type SegmentedOption, type SegmentedProps, type ShellLogoProps, SidePanel, type SidePanelProps, SignInPrompt, type SignInPromptProps, Spinner, type Step, StepList, type StepState, Textarea, type TextareaProps, buttonClass, definePlugin, defineUi, diffStats, isConflict, mergeUi, parseDiff, pluginApi, protobaseVersion, uiFromModule, useApiToken, useAppAddress, useAssistant, useAssistantClient, useBackendData, useClient, useFacets, useHistogram, useLayoutRecord, useList, useListDisplay, useMeta, usePlugin, useRecord, useResourceClient, useSeries, useUpdateRecord };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { LogoMark } from "./app-shell/logo.js";
|
|
2
|
+
import { Segmented } from "./primitives/segmented.js";
|
|
2
3
|
import { Input } from "./primitives/input.js";
|
|
3
4
|
import { Spinner } from "./primitives/spinner.js";
|
|
4
5
|
import { Button, buttonClass } from "./primitives/button.js";
|
|
6
|
+
import { Dialog } from "./primitives/dialog.js";
|
|
5
7
|
import { OtpInput } from "./primitives/otp-input.js";
|
|
6
8
|
import { ApiProvider, useClient, useResourceClient } from "./data/api-provider.js";
|
|
7
9
|
import { AuthLayout } from "./auth/auth-layout.js";
|
|
@@ -30,14 +32,20 @@ import { AssistantDock } from "./assistant-dock/assistant-dock.js";
|
|
|
30
32
|
import { useAssistant } from "./assistant-dock/use-assistant.js";
|
|
31
33
|
import { useAssistantClient } from "./assistant-dock/use-assistant-client.js";
|
|
32
34
|
import { useMeta } from "./data/use-meta.js";
|
|
35
|
+
import { useLayoutRecord } from "./app/pages/record-scope.js";
|
|
33
36
|
import { AppLink, useAppAddress } from "./app/use-app-address.js";
|
|
37
|
+
import { Field } from "./record-view/field.js";
|
|
38
|
+
import { Section } from "./record-view/section.js";
|
|
39
|
+
import { Textarea } from "./primitives/textarea.js";
|
|
34
40
|
import { ResponsiveDialog } from "./primitives/responsive-dialog.js";
|
|
35
41
|
import { SignInPrompt } from "./auth/sign-in-prompt.js";
|
|
36
42
|
import { useListDisplay } from "./app/displays/display-context.js";
|
|
43
|
+
import { MenuSelect } from "./primitives/menu-select.js";
|
|
44
|
+
import { Form } from "./app/create/form.js";
|
|
37
45
|
import { useFacets, useHistogram, useSeries } from "./data/use-aggregates.js";
|
|
38
|
-
import { useLayoutRecord } from "./app/pages/record-scope.js";
|
|
39
46
|
import { useList } from "./data/use-list.js";
|
|
40
47
|
import { isConflict, useUpdateRecord } from "./data/use-update-record.js";
|
|
41
48
|
import { App } from "./app/app.js";
|
|
42
49
|
import { RecordLink } from "./app/displays/record-link.js";
|
|
43
|
-
|
|
50
|
+
import { Choices } from "./primitives/choices.js";
|
|
51
|
+
export { ActionCard, ApiProvider, App, AppLink, AssistantDock, AuthLayout, Button, ChatMessage, ChatThread, Choices, CodeForm, CompactTable, Composer, Dialog, DiffView, Field, FieldList, Form, Input, LogoMark, MenuSelect, OtpInput, PartView, RecordLink, ResendCodeButton, ResponsiveDialog, Section, Segmented, SidePanel, SignInPrompt, Spinner, StepList, Textarea, buttonClass, definePlugin, defineUi, diffStats, isConflict, mergeUi, parseDiff, pluginApi, protobaseVersion, uiFromModule, useApiToken, useAppAddress, useAssistant, useAssistantClient, useBackendData, useClient, useFacets, useHistogram, useLayoutRecord, useList, useListDisplay, useMeta, usePlugin, useRecord, useResourceClient, useSeries, useUpdateRecord };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { humanize } from "./naming.js";
|
|
2
|
-
import { isMarkdown } from "../markdown/markdown-hint.js";
|
|
3
2
|
import { markdownExcerpt } from "../markdown/markdown-excerpt.js";
|
|
3
|
+
import { isMarkdown } from "../markdown/markdown-hint.js";
|
|
4
4
|
import { enumLabel } from "@protobase/schema";
|
|
5
5
|
//#region src/live/columns-from-model.ts
|
|
6
6
|
const tones = {
|
package/dist/live/grid-loader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { keys } from "../data/query-keys.js";
|
|
2
2
|
import { recordId } from "./model-helpers.js";
|
|
3
|
-
import { listLabels, withLabels } from "./relation-labels.js";
|
|
4
3
|
import { listPhotos, withPhotos } from "./row-photos.js";
|
|
4
|
+
import { listLabels, withLabels } from "./relation-labels.js";
|
|
5
5
|
//#region src/live/grid-loader.ts
|
|
6
6
|
const exactBelow = 5e3;
|
|
7
7
|
/**
|
|
@@ -5,9 +5,9 @@ import { humanize } from "./naming.js";
|
|
|
5
5
|
import { fetchLabels } from "./relation-labels.js";
|
|
6
6
|
import { setRange } from "../filter-panel/filter-state.js";
|
|
7
7
|
import { stateToText } from "./filter-string.js";
|
|
8
|
+
import { rangeFormat, rangeHistogram, widgetFields } from "./view-fields.js";
|
|
8
9
|
import { labelKeys, matchOptions } from "./reference-options.js";
|
|
9
10
|
import { useReferenceSearch } from "./use-reference-search.js";
|
|
10
|
-
import { rangeFormat, rangeHistogram, widgetFields } from "./view-fields.js";
|
|
11
11
|
import { useQueries, useQueryClient } from "@tanstack/react-query";
|
|
12
12
|
import { enumLabel } from "@protobase/schema";
|
|
13
13
|
//#region src/live/use-filter-config.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Segmented } from "../primitives/segmented.js";
|
|
2
|
-
import { Textarea } from "../primitives/textarea.js";
|
|
3
2
|
import { Markdown } from "./markdown.js";
|
|
3
|
+
import { Textarea } from "../primitives/textarea.js";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region src/markdown/markdown-editor.tsx
|
package/dist/package.js
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/primitives/choices.d.ts
|
|
3
|
+
export type ChoiceOption<T extends string> = {
|
|
4
|
+
value: T;
|
|
5
|
+
label: string;
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* `name` groups the radio buttons, so that the arrow keys move between them; `label` names the group for screen
|
|
11
|
+
* readers. A disabled option shows and cannot be chosen.
|
|
12
|
+
*/
|
|
13
|
+
export type ChoicesProps<T extends string> = {
|
|
14
|
+
name: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
options: Array<ChoiceOption<T>>;
|
|
17
|
+
value: T | undefined;
|
|
18
|
+
onChange: (value: T) => void;
|
|
19
|
+
};
|
|
20
|
+
/** One of a few options, each a card of its own row with a line that says what it means; the chosen one is outlined. */
|
|
21
|
+
export declare const Choices: <T extends string>({ name, label, options, value, onChange }: ChoicesProps<T>) => import("react").JSX.Element;
|
|
22
|
+
//#endregion
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/primitives/choices.tsx
|
|
4
|
+
/** One of a few options, each a card of its own row with a line that says what it means; the chosen one is outlined. */
|
|
5
|
+
const Choices = ({ name, label, options, value, onChange }) => /* @__PURE__ */ jsx("div", {
|
|
6
|
+
role: "radiogroup",
|
|
7
|
+
"aria-label": label,
|
|
8
|
+
className: "flex flex-col gap-2",
|
|
9
|
+
children: options.map((option) => /* @__PURE__ */ jsxs("label", {
|
|
10
|
+
className: cn("block rounded-lg border p-3 transition-colors has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-primary", option.disabled ? "cursor-default bg-background opacity-60" : option.value === value ? "cursor-pointer border-primary bg-primary-soft" : "cursor-pointer bg-background hover:bg-surface"),
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ jsx("input", {
|
|
13
|
+
type: "radio",
|
|
14
|
+
name,
|
|
15
|
+
value: option.value,
|
|
16
|
+
checked: option.value === value,
|
|
17
|
+
disabled: option.disabled,
|
|
18
|
+
onChange: () => onChange(option.value),
|
|
19
|
+
className: "sr-only"
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ jsx("span", {
|
|
22
|
+
className: cn("block font-medium", option.value === value && "text-primary-text"),
|
|
23
|
+
children: option.label
|
|
24
|
+
}),
|
|
25
|
+
option.description && /* @__PURE__ */ jsx("span", {
|
|
26
|
+
className: "mt-0.5 block text-xs leading-snug text-muted-foreground",
|
|
27
|
+
children: option.description
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
}, option.value))
|
|
31
|
+
});
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Choices };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/primitives/dialog.d.ts
|
|
3
|
+
export type DialogProps = {
|
|
4
|
+
title: string;
|
|
5
|
+
description?: ReactNode;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
/** Buttons, rendered right-aligned. */
|
|
8
|
+
actions: ReactNode;
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
/** Room for a row of cards or a table in the body, instead of a short question. */
|
|
11
|
+
wide?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/** A modal with a title, optional body and action buttons. Closes on Escape and on a click outside. */
|
|
14
|
+
export declare const Dialog: ({ title, description, onClose, actions, children, wide }: DialogProps) => import("react").JSX.Element;
|
|
15
|
+
//#endregion
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SegmentedOption } from "./segmented.js";
|
|
2
|
+
//#region src/primitives/menu-select.d.ts
|
|
3
|
+
export type MenuSelectProps<T extends string> = {
|
|
4
|
+
value: T;
|
|
5
|
+
options: Array<SegmentedOption<T>>;
|
|
6
|
+
onChange: (value: T) => void;
|
|
7
|
+
label: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The choices of a Segmented switch in a menu, for a row without room for every option: a button with the chosen
|
|
11
|
+
* option's icon and label, opening the options under its right edge.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MenuSelect: <T extends string>({ value, options, onChange, label }: MenuSelectProps<T>) => import("react").JSX.Element;
|
|
14
|
+
//#endregion
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentType } from "react";
|
|
2
|
+
//#region src/primitives/segmented.d.ts
|
|
3
|
+
export type SegmentedOption<T extends string> = {
|
|
4
|
+
value: T;
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: ComponentType<{
|
|
7
|
+
className?: string;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* `md` matches a medium Button, for a switch that sits among buttons. `iconOnly` draws each option as its icon alone,
|
|
12
|
+
* its label the button's name, for a row without room for the words.
|
|
13
|
+
*/
|
|
14
|
+
export type SegmentedProps<T extends string> = {
|
|
15
|
+
value: T;
|
|
16
|
+
options: Array<SegmentedOption<T>>;
|
|
17
|
+
onChange: (value: T) => void;
|
|
18
|
+
label?: string;
|
|
19
|
+
size?: 'sm' | 'md';
|
|
20
|
+
iconOnly?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare const Segmented: <T extends string>({ value, options, onChange, label, size, iconOnly }: SegmentedProps<T>) => import("react").JSX.Element;
|
|
23
|
+
//#endregion
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TextareaHTMLAttributes } from "react";
|
|
2
|
+
//#region src/primitives/textarea.d.ts
|
|
3
|
+
export type TextareaProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value'> & {
|
|
4
|
+
value: string;
|
|
5
|
+
invalid?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/** A text box of several lines that grows with its text instead of scrolling inside. */
|
|
8
|
+
export declare const Textarea: ({ invalid, className, rows, value, ...rest }: TextareaProps) => import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/record-view/field.d.ts
|
|
3
|
+
export type FieldConflict = {
|
|
4
|
+
user: {
|
|
5
|
+
name: string;
|
|
6
|
+
initials: string;
|
|
7
|
+
hue: number;
|
|
8
|
+
};
|
|
9
|
+
ago: string;
|
|
10
|
+
theirValue: string;
|
|
11
|
+
onKeepMine: () => void;
|
|
12
|
+
onUseTheirs: () => void;
|
|
13
|
+
};
|
|
14
|
+
export type FieldProps = {
|
|
15
|
+
label: string;
|
|
16
|
+
/** Marks the label with an asterisk. */
|
|
17
|
+
required?: boolean;
|
|
18
|
+
help?: string;
|
|
19
|
+
example?: string;
|
|
20
|
+
error?: string;
|
|
21
|
+
conflict?: FieldConflict;
|
|
22
|
+
/** Takes the whole row of a grid of two columns, as a text of several lines does. */
|
|
23
|
+
wide?: boolean;
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
};
|
|
26
|
+
export declare const Field: ({ label, required, help, example, error, conflict, wide, children }: FieldProps) => import("react").JSX.Element;
|
|
27
|
+
//#endregion
|