@protobase/ui 0.46.2 → 0.46.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/account/account-page.js +50 -0
  2. package/dist/account/account-pages.js +24 -9
  3. package/dist/account/account-tree.js +18 -0
  4. package/dist/account/blocks/account-loading.js +19 -0
  5. package/dist/account/blocks/connected-accounts-block.js +37 -0
  6. package/dist/account/blocks/connected-apps-block.js +21 -0
  7. package/dist/account/blocks/devices-block.js +23 -0
  8. package/dist/account/blocks/passkeys-block.js +25 -0
  9. package/dist/account/blocks/password-block.js +27 -0
  10. package/dist/account/blocks/profile-block.js +28 -0
  11. package/dist/account/blocks/two-factor-block.js +29 -0
  12. package/dist/account/blocks/use-account-data.js +24 -0
  13. package/dist/account/change-email-dialog.js +98 -0
  14. package/dist/account/connected-apps-section.js +4 -4
  15. package/dist/account/device-name.js +26 -0
  16. package/dist/account/devices-section.js +119 -0
  17. package/dist/account/messages.js +94 -2
  18. package/dist/account/passkeys-section.js +4 -4
  19. package/dist/account/password-change-dialog.js +119 -0
  20. package/dist/account/password-dialog.js +2 -2
  21. package/dist/account/password-section.js +51 -0
  22. package/dist/account/profile-section.js +107 -0
  23. package/dist/account/sign-in-policy-form.js +1 -1
  24. package/dist/account/sign-in-policy-page.js +1 -1
  25. package/dist/account/sign-in-providers-section.js +2 -2
  26. package/dist/account/staff-sign-in-log.js +1 -1
  27. package/dist/account/two-factor-section.js +1 -1
  28. package/dist/account/two-factor-setup.js +2 -2
  29. package/dist/activity-chart/activity-chart.js +2 -2
  30. package/dist/app/app.js +39 -23
  31. package/dist/app/charts/chart-view.js +2 -2
  32. package/dist/app/comments/comment-composer.js +1 -1
  33. package/dist/app/comments/comments-section.js +3 -3
  34. package/dist/app/create/create-page.js +4 -4
  35. package/dist/app/current-address.d.ts +1 -0
  36. package/dist/app/custom-section.js +4 -4
  37. package/dist/app/delete/use-delete-flow.js +1 -1
  38. package/dist/app/displays/board-column.js +1 -1
  39. package/dist/app/displays/board-display.js +2 -2
  40. package/dist/app/displays/calendar-display.js +2 -2
  41. package/dist/app/displays/custom-display.js +3 -3
  42. package/dist/app/displays/display-controls.js +1 -1
  43. package/dist/app/displays/map-display.js +2 -2
  44. package/dist/app/displays/period-controls.js +1 -1
  45. package/dist/app/displays/record-card.js +2 -2
  46. package/dist/app/displays/timeline-display.js +2 -2
  47. package/dist/app/displays/use-calendar-move.js +1 -1
  48. package/dist/app/document-title.js +2 -2
  49. package/dist/app/embedded-list/embedded-display.js +1 -1
  50. package/dist/app/embedded-list/embedded-list.js +1 -1
  51. package/dist/app/export/export-dialog.js +2 -2
  52. package/dist/app/export/use-export-flow.js +1 -1
  53. package/dist/app/field-editor.js +2 -2
  54. package/dist/app/file-field.js +3 -3
  55. package/dist/app/gallery/gallery-section.js +2 -2
  56. package/dist/app/gallery/photo-details.js +1 -1
  57. package/dist/app/gallery/use-gallery-photos.js +1 -1
  58. package/dist/app/hand-order/hand-sorted-list.js +3 -3
  59. package/dist/app/history/history-section.js +2 -2
  60. package/dist/app/import/import-button.js +1 -1
  61. package/dist/app/import/import-check-step.js +1 -1
  62. package/dist/app/incoming-card.js +2 -2
  63. package/dist/app/list-group-chart.js +1 -1
  64. package/dist/app/list-page.js +6 -6
  65. package/dist/app/messages.js +0 -2
  66. package/dist/app/meta-gate.js +1 -1
  67. package/dist/app/nav-from-meta.js +1 -1
  68. package/dist/app/new-version/new-version-banner.js +1 -1
  69. package/dist/app/new-version/new-version-button.js +1 -1
  70. package/dist/app/new-version/new-version-toast.js +1 -1
  71. package/dist/app/pages/action-inputs/action-inputs-dialog.js +2 -2
  72. package/dist/app/pages/action-inputs/input-answers.js +1 -1
  73. package/dist/app/pages/blocks/card-row.js +2 -2
  74. package/dist/app/pages/blocks/field.js +1 -1
  75. package/dist/app/pages/blocks/form-draft.js +19 -0
  76. package/dist/app/pages/blocks/modal-form.js +10 -24
  77. package/dist/app/pages/blocks/page-block.js +1 -1
  78. package/dist/app/pages/blocks/record-card.js +2 -2
  79. package/dist/app/pages/blocks/settings.js +179 -0
  80. package/dist/app/pages/blocks/stat.js +2 -2
  81. package/dist/app/pages/blocks/tabs.js +59 -0
  82. package/dist/app/pages/composed-page.js +16 -3
  83. package/dist/app/pages/custom-boundary.js +1 -1
  84. package/dist/app/pages/field-value.js +1 -1
  85. package/dist/app/pages/messages.js +6 -0
  86. package/dist/app/pages/page-tabs.js +27 -0
  87. package/dist/app/pages/record-actions.js +2 -2
  88. package/dist/app/pages/render-node.js +22 -3
  89. package/dist/app/pages/use-run-action.js +1 -1
  90. package/dist/app/project-logo.js +2 -2
  91. package/dist/app/record-chart/record-chart-section.js +4 -4
  92. package/dist/app/record-page.js +12 -12
  93. package/dist/app/record-row/record-row-body.js +1 -1
  94. package/dist/app/record-row/saved-record-row.js +1 -1
  95. package/dist/app/related-cards/related-card.js +1 -1
  96. package/dist/app/related-dots/related-dots-columns.js +1 -1
  97. package/dist/app/related-section.js +2 -2
  98. package/dist/app/relation-picker.js +1 -1
  99. package/dist/app/router.js +2 -2
  100. package/dist/app/saved/saved-list.js +1 -1
  101. package/dist/app/search/use-global-search.js +1 -1
  102. package/dist/app/searches/save-search-button.js +1 -1
  103. package/dist/app/searches/saved-search-rows.js +1 -1
  104. package/dist/app/searches/saved-search-section.js +2 -2
  105. package/dist/app/searches/saved-searches.js +3 -3
  106. package/dist/app/searches/search-controls.js +2 -2
  107. package/dist/app/searches/search-name-dialog.js +1 -1
  108. package/dist/app/searches/update-search-dialog.js +2 -2
  109. package/dist/app/searches/use-save-search.js +1 -1
  110. package/dist/app/sensitive-field.js +2 -2
  111. package/dist/app/source-notice.js +1 -1
  112. package/dist/app/staff-banner.js +2 -2
  113. package/dist/app/use-app-address.js +2 -2
  114. package/dist/app/use-incoming-counts.js +1 -1
  115. package/dist/app-shell/app-shell.js +2 -1
  116. package/dist/app-shell/breadcrumb.js +1 -1
  117. package/dist/app-shell/drawer.js +1 -1
  118. package/dist/app-shell/global-search.js +1 -1
  119. package/dist/app-shell/profile-menu.js +27 -12
  120. package/dist/app-shell/sidebar.js +2 -1
  121. package/dist/assistant-dock/widget-view.js +1 -1
  122. package/dist/auth/auth-gate.js +2 -2
  123. package/dist/auth/auth-messages.js +2 -2
  124. package/dist/auth/auth-provider.js +4 -0
  125. package/dist/auth/code-form.js +1 -1
  126. package/dist/auth/email-code-form.js +1 -1
  127. package/dist/auth/email-code-page.js +1 -1
  128. package/dist/auth/forgot-password-form.js +4 -4
  129. package/dist/auth/provider-sign-in-page.js +2 -2
  130. package/dist/auth/reset-password-form.js +1 -1
  131. package/dist/auth/setup-required-form.js +1 -1
  132. package/dist/auth/setup-required-page.js +2 -2
  133. package/dist/auth/sign-in-form.js +2 -2
  134. package/dist/auth/sign-in-page.js +1 -1
  135. package/dist/auth/sign-in-prompt.js +2 -2
  136. package/dist/auth/sign-up-code-form.js +1 -1
  137. package/dist/auth/sign-up-details-form.js +2 -2
  138. package/dist/auth/sign-up-email-form.js +1 -1
  139. package/dist/auth/sign-up-page.js +1 -1
  140. package/dist/auth/staff-sign-in-form.js +2 -2
  141. package/dist/auth/staff-sign-in-page.js +1 -1
  142. package/dist/auth/two-factor-form.js +3 -3
  143. package/dist/auth/two-factor-page.js +1 -1
  144. package/dist/chat/composer.js +1 -1
  145. package/dist/connect/connect-page.js +4 -4
  146. package/dist/data/meta-data.d.ts +3 -1
  147. package/dist/data/use-meta.js +1 -0
  148. package/dist/data-grid/cell-text.js +1 -1
  149. package/dist/data-grid/cells.js +3 -3
  150. package/dist/data-grid/grid-header.js +1 -1
  151. package/dist/data-grid/grid-row.js +2 -2
  152. package/dist/data-grid/row-menu.js +1 -1
  153. package/dist/filter-panel/facet-group.js +1 -1
  154. package/dist/forms/public-form-page.js +5 -5
  155. package/dist/index.js +20 -20
  156. package/dist/inline-child-table/line-row.js +1 -1
  157. package/dist/inline-child-table/totals-footer.js +1 -1
  158. package/dist/invitations/invite-form.js +1 -1
  159. package/dist/lists/paged-search-list.js +1 -1
  160. package/dist/live/columns-from-model.js +1 -1
  161. package/dist/live/use-filter-config.js +1 -1
  162. package/dist/live/use-reference-search.js +1 -1
  163. package/dist/notifications/bell/notification-bell.js +1 -1
  164. package/dist/notifications/bell/notification-item.js +2 -2
  165. package/dist/organizations/all-organizations.js +1 -1
  166. package/dist/organizations/invitation-page.js +6 -6
  167. package/dist/organizations/invitations-page.js +3 -3
  168. package/dist/organizations/members-page.js +5 -5
  169. package/dist/organizations/organization-page.js +3 -3
  170. package/dist/organizations/organization-row.js +1 -1
  171. package/dist/organizations/organizations-page.js +3 -3
  172. package/dist/organizations/use-organizations.js +1 -1
  173. package/dist/package.js +1 -1
  174. package/dist/plugins/before-sign-in.js +1 -1
  175. package/dist/plugins/plugin-gate.js +1 -1
  176. package/dist/primitives/sheet.js +1 -1
  177. package/dist/record-view/field.js +2 -2
  178. package/dist/record-view/record-header.js +1 -1
  179. package/dist/record-view/record-tabs.js +1 -1
  180. package/dist/roles/use-active-role.js +1 -1
  181. package/dist/shell/assets/app-BS1C66SI.js +9 -0
  182. package/dist/shell/assets/index-DMB4DCM1.js +2 -0
  183. package/dist/shell/assets/index-zVvlyz9B.css +2 -0
  184. package/dist/shell/assets/{maplibre-BlwO7zTh.js → maplibre-CjNYwEqW.js} +3 -3
  185. package/dist/shell/assets/{preload-helper-C24C2MCK.js → preload-helper-SYSsmQ2O.js} +2 -2
  186. package/dist/shell/assets/{record-map-QajKJid1.js → record-map-DjqQGqZ2.js} +2 -2
  187. package/dist/shell/assets/{records-map-B9tGF4Qv.js → records-map-peII4mzy.js} +2 -2
  188. package/dist/shell/assets/shared-protobase-ui-CQQebf-J.js +2 -0
  189. package/dist/shell/assets/vendor-BzlIWwX2.js +63 -0
  190. package/dist/shell/index.html +6 -6
  191. package/dist/shell/protobase.shell.json +1 -1
  192. package/dist/shell/protobase.sw.js +2 -2
  193. package/dist/shell-source-maps/assets/app-BS1C66SI.js.map +1 -0
  194. package/dist/shell-source-maps/assets/{index-CSQBCuCv.js.map → index-DMB4DCM1.js.map} +1 -1
  195. package/dist/shell-source-maps/assets/{maplibre-BlwO7zTh.js.map → maplibre-CjNYwEqW.js.map} +1 -1
  196. package/dist/shell-source-maps/assets/{preload-helper-C24C2MCK.js.map → preload-helper-SYSsmQ2O.js.map} +1 -1
  197. package/dist/shell-source-maps/assets/{record-map-QajKJid1.js.map → record-map-DjqQGqZ2.js.map} +1 -1
  198. package/dist/shell-source-maps/assets/{records-map-B9tGF4Qv.js.map → records-map-peII4mzy.js.map} +1 -1
  199. package/dist/shell-source-maps/assets/{shared-protobase-ui-BZ7JrZar.js.map → shared-protobase-ui-CQQebf-J.js.map} +1 -1
  200. package/dist/shell-source-maps/assets/vendor-BzlIWwX2.js.map +1 -0
  201. package/dist/side-panel/side-panel.js +1 -1
  202. package/dist/toasts/toast.js +1 -1
  203. package/dist/users/create-user-form.js +1 -1
  204. package/dist/users/use-user-roles.js +1 -1
  205. package/dist/users/user-row.js +1 -1
  206. package/package.json +4 -4
  207. package/dist/account/account-security-page.js +0 -97
  208. package/dist/shell/assets/app-DkL4XDpJ.js +0 -9
  209. package/dist/shell/assets/index-CSQBCuCv.js +0 -2
  210. package/dist/shell/assets/index-DHaeB8cs.css +0 -2
  211. package/dist/shell/assets/shared-protobase-ui-BZ7JrZar.js +0 -2
  212. package/dist/shell/assets/vendor-C4-Hop1T.js +0 -63
  213. package/dist/shell-source-maps/assets/app-DkL4XDpJ.js.map +0 -1
  214. package/dist/shell-source-maps/assets/vendor-C4-Hop1T.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { authMessage } from "./auth-messages.js";
2
1
  import { useAuth } from "./auth-provider.js";
2
+ import { authMessage } from "./auth-messages.js";
3
3
  import { TwoFactorForm } from "./two-factor-form.js";
4
4
  import { useState } from "react";
5
5
  import { AuthError } from "@protobase/client";
@@ -1,5 +1,5 @@
1
- import { Input } from "../primitives/input.js";
2
1
  import { Button } from "../primitives/button.js";
2
+ import { Input } from "../primitives/input.js";
3
3
  import { text } from "./messages.js";
4
4
  import { useState } from "react";
5
5
  import { SendHorizontal } from "lucide-react";
@@ -1,11 +1,11 @@
1
+ import { useAuth } from "../auth/auth-provider.js";
1
2
  import { Spinner } from "../primitives/spinner.js";
3
+ import { Notice } from "../app/meta-gate.js";
4
+ import { Button } from "../primitives/button.js";
5
+ import { useRouter } from "../app/router.js";
2
6
  import { authMessage } from "../auth/auth-messages.js";
3
- import { useAuth } from "../auth/auth-provider.js";
4
7
  import { clientName } from "./client-name.js";
5
8
  import { clientPublisher } from "./client-publisher.js";
6
- import { Button } from "../primitives/button.js";
7
- import { useRouter } from "../app/router.js";
8
- import { Notice } from "../app/meta-gate.js";
9
9
  import { isFramed, useArmedAfterFocus, useGuardedPress } from "./interaction-guard.js";
10
10
  import { isSafeTarget, redirectTarget } from "./redirect-target.js";
11
11
  import { signedRequestFor } from "./signed-request.js";
@@ -1,7 +1,7 @@
1
1
  import { Locale } from "@protobase/schema/internal";
2
2
  import { MapLayerModel, PluginRef, ResourcePermissions, SourceRef } from "@protobase/client";
3
- import { BottomBarModel, ResourceModel, SignInViewModel, UserMenuModel, ViewModel } from "@protobase/schema";
4
3
  import { PageModel } from "@protobase/layout";
4
+ import { BottomBarModel, ResourceModel, SignInViewModel, UserMenuModel, ViewModel } from "@protobase/schema";
5
5
  //#region src/data/meta-data.d.ts
6
6
  export type MetaData = {
7
7
  etag: string;
@@ -22,6 +22,8 @@ export type MetaData = {
22
22
  views: Record<string, ViewModel>;
23
23
  /** Composed pages by name. */
24
24
  pages: Record<string, PageModel>;
25
+ /** The signed-in user's account page, at `/-/account` (see `AccountPage`). */
26
+ account?: PageModel;
25
27
  permissions: Record<string, ResourcePermissions>;
26
28
  userMenu?: UserMenuModel;
27
29
  /** For a visitor, the resources they could use once signed in, by name, with what to tell them (see `SignInPrompt`). */
@@ -35,6 +35,7 @@ const useMeta = () => {
35
35
  resources: Object.fromEntries(result.meta.resources.map((model) => [model.name, model])),
36
36
  views: Object.fromEntries(result.meta.views.map((model) => [model.resource, model])),
37
37
  pages: Object.fromEntries((result.meta.pages ?? []).map((model) => [model.name, model])),
38
+ ...result.meta.account && { account: result.meta.account },
38
39
  permissions: result.meta.permissions ?? {},
39
40
  ...result.meta.userMenu && { userMenu: result.meta.userMenu },
40
41
  ...result.meta.signIn && { signIn: Object.fromEntries(result.meta.signIn.map((entry) => [entry.resource, entry])) },
@@ -1,7 +1,7 @@
1
+ import { userById } from "../mocks/users.js";
1
2
  import { formatMoney } from "../format/money.js";
2
3
  import { formatInt, formatPercent, formatSigned } from "../format/number.js";
3
4
  import { formatDate, formatDateTime, formatRelativeTime } from "../format/date.js";
4
- import { userById } from "../mocks/users.js";
5
5
  import { fileShown } from "../live/file-values.js";
6
6
  import { text } from "./messages.js";
7
7
  import { enumLabel } from "@protobase/schema";
@@ -1,9 +1,9 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { Avatar } from "../primitives/avatar.js";
3
- import { Badge } from "../primitives/badge.js";
2
+ import { userById } from "../mocks/users.js";
4
3
  import { viewerZone, zoneLabel } from "../format/zone.js";
5
4
  import { formatDateTime } from "../format/date.js";
6
- import { userById } from "../mocks/users.js";
5
+ import { Avatar } from "../primitives/avatar.js";
6
+ import { Badge } from "../primitives/badge.js";
7
7
  import { fileShown, shownImage } from "../live/file-values.js";
8
8
  import { text } from "./messages.js";
9
9
  import { cellText } from "./cell-text.js";
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { Checkbox } from "../primitives/checkbox.js";
3
2
  import { text } from "./messages.js";
4
3
  import { gridTemplate } from "./grid-template.js";
4
+ import { Checkbox } from "../primitives/checkbox.js";
5
5
  import { isRightAligned } from "./column-spec.js";
6
6
  import { HeaderMenu, unsortableText } from "./header-menu.js";
7
7
  import { ResizeHandle } from "./resize-handle.js";
@@ -1,9 +1,9 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { Skeleton } from "../primitives/skeleton.js";
3
2
  import { formatInt } from "../format/number.js";
4
- import { Checkbox } from "../primitives/checkbox.js";
3
+ import { Skeleton } from "../primitives/skeleton.js";
5
4
  import { text } from "./messages.js";
6
5
  import { gridTemplate } from "./grid-template.js";
6
+ import { Checkbox } from "../primitives/checkbox.js";
7
7
  import { isRightAligned } from "./column-spec.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/data-grid/grid-row.tsx
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { RouteLink } from "../primitives/route-link.js";
3
2
  import { text } from "./messages.js";
3
+ import { RouteLink } from "../primitives/route-link.js";
4
4
  import { usePopoverMenu } from "../primitives/popover-menu.js";
5
5
  import { MoreHorizontal } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { Input } from "../primitives/input.js";
2
1
  import { formatInt } from "../format/number.js";
2
+ import { Input } from "../primitives/input.js";
3
3
  import { Checkbox } from "../primitives/checkbox.js";
4
4
  import { text } from "./messages.js";
5
5
  import { matchesSearch } from "./filter-state.js";
@@ -1,18 +1,18 @@
1
- import { Spinner } from "../primitives/spinner.js";
2
- import { Button } from "../primitives/button.js";
3
1
  import { keys } from "../data/query-keys.js";
4
2
  import { useClient } from "../data/api-provider.js";
3
+ import { Spinner } from "../primitives/spinner.js";
5
4
  import { text } from "../app/meta-gate-messages.js";
6
5
  import { Notice } from "../app/meta-gate.js";
7
- import { AuthLayout } from "../auth/auth-layout.js";
8
- import { humanize } from "../live/naming.js";
6
+ import { Button } from "../primitives/button.js";
9
7
  import { Field } from "../record-view/field.js";
8
+ import { humanize } from "../live/naming.js";
10
9
  import { createBody, hasDatabaseDefault, initialDraft, isRequired } from "../app/create/create-values.js";
11
- import { useDocumentTitle } from "../app/document-title.js";
12
10
  import { ErrorBanner } from "../app/error-banner.js";
13
11
  import { FieldEditor } from "../app/field-editor.js";
14
12
  import { fieldErrors, fieldMessage } from "../app/field-errors.js";
15
13
  import { useFocusFirstInvalid } from "../app/use-focus-first-invalid.js";
14
+ import { AuthLayout } from "../auth/auth-layout.js";
15
+ import { useDocumentTitle } from "../app/document-title.js";
16
16
  import { text as text$1 } from "./messages.js";
17
17
  import { proveHuman } from "./prove-human.js";
18
18
  import { useState } from "react";
package/dist/index.js CHANGED
@@ -1,17 +1,29 @@
1
- import { LogoMark } from "./app-shell/logo.js";
2
- import { Segmented } from "./primitives/segmented.js";
3
- import { useFieldControl } from "./primitives/field-control.js";
4
- import { Input } from "./primitives/input.js";
1
+ import { ApiProvider, useClient, useResourceClient } from "./data/api-provider.js";
2
+ import { useMeta } from "./data/use-meta.js";
5
3
  import { Spinner } from "./primitives/spinner.js";
6
4
  import { Button, buttonClass } from "./primitives/button.js";
7
5
  import { Dialog } from "./primitives/dialog.js";
8
- import { OtpInput } from "./primitives/otp-input.js";
9
6
  import { ResponsiveDialog } from "./primitives/responsive-dialog.js";
7
+ import { useFieldControl } from "./primitives/field-control.js";
8
+ import { Input } from "./primitives/input.js";
9
+ import { Field } from "./record-view/field.js";
10
+ import { Section } from "./record-view/section.js";
11
+ import { AppLink, useAppAddress } from "./app/use-app-address.js";
12
+ import { Segmented } from "./primitives/segmented.js";
13
+ import { Textarea } from "./primitives/textarea.js";
14
+ import { useList } from "./data/use-list.js";
15
+ import { definePlugin, defineUi } from "./app/pages/project-ui.js";
16
+ import { Markdown } from "./markdown/markdown.js";
17
+ import { ActionInputError } from "./app/pages/action-inputs/input-errors.js";
18
+ import { useLayoutRecord } from "./app/pages/record-scope.js";
19
+ import { useFacets, useHistogram, useSeries } from "./data/use-aggregates.js";
20
+ import { LogoMark } from "./app-shell/logo.js";
10
21
  import { SignInPrompt } from "./auth/sign-in-prompt.js";
11
- import { ApiProvider, useClient, useResourceClient } from "./data/api-provider.js";
12
- import { useMeta } from "./data/use-meta.js";
13
- import { allowDelayMs, isFramed, useArmedAfterFocus, useGuardedPress } from "./connect/interaction-guard.js";
22
+ import { useListDisplay } from "./app/displays/display-context.js";
23
+ import { MenuSelect } from "./primitives/menu-select.js";
14
24
  import { AuthLayout } from "./auth/auth-layout.js";
25
+ import { OtpInput } from "./primitives/otp-input.js";
26
+ import { allowDelayMs, isFramed, useArmedAfterFocus, useGuardedPress } from "./connect/interaction-guard.js";
15
27
  import { ResendCodeButton } from "./auth/resend-code-button.js";
16
28
  import { CodeForm } from "./auth/code-form.js";
17
29
  import { uiFromModule } from "./app/pages/ui-from-module.js";
@@ -20,13 +32,6 @@ import { usePlugin } from "./plugins/plugin-context.js";
20
32
  import { pluginApi, protobaseVersion } from "./plugins/plugin-api.js";
21
33
  import { useApiToken } from "./auth/use-api-token.js";
22
34
  import { useRecord } from "./data/use-record.js";
23
- import { Field } from "./record-view/field.js";
24
- import { Section } from "./record-view/section.js";
25
- import { AppLink, useAppAddress } from "./app/use-app-address.js";
26
- import { Textarea } from "./primitives/textarea.js";
27
- import { useList } from "./data/use-list.js";
28
- import { definePlugin, defineUi } from "./app/pages/project-ui.js";
29
- import { Markdown } from "./markdown/markdown.js";
30
35
  import { ChatMessage } from "./chat/chat-message.js";
31
36
  import { ChatThread } from "./chat/chat-thread.js";
32
37
  import { Composer } from "./chat/composer.js";
@@ -42,11 +47,6 @@ import { useBackendData } from "./assistant-dock/use-backend-data.js";
42
47
  import { AssistantDock } from "./assistant-dock/assistant-dock.js";
43
48
  import { useAssistant } from "./assistant-dock/use-assistant.js";
44
49
  import { useAssistantClient } from "./assistant-dock/use-assistant-client.js";
45
- import { ActionInputError } from "./app/pages/action-inputs/input-errors.js";
46
- import { useLayoutRecord } from "./app/pages/record-scope.js";
47
- import { useFacets, useHistogram, useSeries } from "./data/use-aggregates.js";
48
- import { useListDisplay } from "./app/displays/display-context.js";
49
- import { MenuSelect } from "./primitives/menu-select.js";
50
50
  import { Form } from "./app/create/form.js";
51
51
  import { usePushNotifications } from "./notifications/push/use-push-notifications.js";
52
52
  import { useInbox, useMarkNotificationsRead, useUnreadNotifications } from "./notifications/bell/use-inbox.js";
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { formatMoney } from "../format/money.js";
3
2
  import { lineTotalCents } from "../mocks/invoices.js";
4
3
  import { lineGrid } from "./columns.js";
4
+ import { formatMoney } from "../format/money.js";
5
5
  import { LineMenu } from "./line-menu.js";
6
6
  import { NumberCell } from "./number-cell.js";
7
7
  import { text } from "./messages.js";
@@ -1,5 +1,5 @@
1
- import { formatMoney } from "../format/money.js";
2
1
  import { invoiceTotals } from "../mocks/invoices.js";
2
+ import { formatMoney } from "../format/money.js";
3
3
  import { text } from "./messages.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/inline-child-table/totals-footer.tsx
@@ -1,5 +1,5 @@
1
- import { Input } from "../primitives/input.js";
2
1
  import { Button } from "../primitives/button.js";
2
+ import { Input } from "../primitives/input.js";
3
3
  import { AccountSection, SectionError } from "../account/account-section.js";
4
4
  import { useAction } from "../organizations/use-action.js";
5
5
  import { text } from "./messages.js";
@@ -1,5 +1,5 @@
1
- import { Input } from "../primitives/input.js";
2
1
  import { Button } from "../primitives/button.js";
2
+ import { Input } from "../primitives/input.js";
3
3
  import { AccountSection, SectionError } from "../account/account-section.js";
4
4
  import { text } from "./messages.js";
5
5
  import { Search } from "lucide-react";
@@ -1,5 +1,5 @@
1
- import { humanize } from "./naming.js";
2
1
  import { badgeWidth, headerWidth } from "../data-grid/content-widths.js";
2
+ import { humanize } from "./naming.js";
3
3
  import { markdownExcerpt } from "../markdown/markdown-excerpt.js";
4
4
  import { isMarkdown } from "../markdown/markdown-hint.js";
5
5
  import { recordTitleField } from "./model-helpers.js";
@@ -8,8 +8,8 @@ import { stateToText } from "./filter-string.js";
8
8
  import { rangeFormat, rangeHistogram, widgetFields } from "./view-fields.js";
9
9
  import { labelKeys, matchOptions } from "./reference-options.js";
10
10
  import { useReferenceSearch } from "./use-reference-search.js";
11
- import { enumLabel } from "@protobase/schema";
12
11
  import { useQueries, useQueryClient } from "@tanstack/react-query";
12
+ import { enumLabel } from "@protobase/schema";
13
13
  //#region src/live/use-filter-config.ts
14
14
  const histogramBuckets = 24;
15
15
  /**
@@ -1,8 +1,8 @@
1
1
  import { useClient } from "../data/api-provider.js";
2
2
  import { labelFieldOf } from "./model-helpers.js";
3
3
  import { useState } from "react";
4
- import { createWhere, printFilter } from "@protobase/schema";
5
4
  import { keepPreviousData, useQueries } from "@tanstack/react-query";
5
+ import { createWhere, printFilter } from "@protobase/schema";
6
6
  //#region src/live/use-reference-search.ts
7
7
  const where$1 = createWhere();
8
8
  /**
@@ -1,5 +1,5 @@
1
- import { Badge } from "../../primitives/badge.js";
2
1
  import { Button } from "../../primitives/button.js";
2
+ import { Badge } from "../../primitives/badge.js";
3
3
  import { useRouter } from "../../app/router.js";
4
4
  import { usePopoverMenu } from "../../primitives/popover-menu.js";
5
5
  import { usePushNotifications } from "../push/use-push-notifications.js";
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../../lib/cn.js";
2
- import { RouteLink } from "../../primitives/route-link.js";
3
- import { toneDots } from "../../primitives/badge.js";
4
2
  import { formatRelativeTime } from "../../format/date.js";
3
+ import { toneDots } from "../../primitives/badge.js";
4
+ import { RouteLink } from "../../primitives/route-link.js";
5
5
  import { text } from "./messages.js";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/notifications/bell/notification-item.tsx
@@ -1,6 +1,6 @@
1
1
  import { useAuth } from "../auth/auth-provider.js";
2
- import { text } from "./messages.js";
3
2
  import { useAction } from "./use-action.js";
3
+ import { text } from "./messages.js";
4
4
  import { PagedSearchList } from "../lists/paged-search-list.js";
5
5
  import { usePagedSearch } from "../lists/use-paged-search.js";
6
6
  import { reopenIn } from "./use-organizations.js";
@@ -1,14 +1,14 @@
1
+ import { useAuth } from "../auth/auth-provider.js";
1
2
  import { cn } from "../lib/cn.js";
2
- import { RouteLink } from "../primitives/route-link.js";
3
- import { Input } from "../primitives/input.js";
4
3
  import { Spinner } from "../primitives/spinner.js";
5
- import { authMessage } from "../auth/auth-messages.js";
6
- import { useAuth } from "../auth/auth-provider.js";
7
4
  import { Button, buttonClass } from "../primitives/button.js";
8
- import { AuthLayout } from "../auth/auth-layout.js";
5
+ import { Input } from "../primitives/input.js";
6
+ import { RouteLink } from "../primitives/route-link.js";
7
+ import { authMessage } from "../auth/auth-messages.js";
8
+ import { useAction } from "./use-action.js";
9
9
  import { text } from "./messages.js";
10
10
  import { organizationRoleLabel, roleLabel } from "./organization-paths.js";
11
- import { useAction } from "./use-action.js";
11
+ import { AuthLayout } from "../auth/auth-layout.js";
12
12
  import { useEffect, useState } from "react";
13
13
  import { AuthError } from "@protobase/client";
14
14
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,11 +1,11 @@
1
- import { PageHeader } from "../app-shell/page-header.js";
2
1
  import { useAuth } from "../auth/auth-provider.js";
2
+ import { PageHeader } from "../app-shell/page-header.js";
3
3
  import { AccountSection } from "../account/account-section.js";
4
- import { text } from "./messages.js";
5
- import { grantableRoles, organizationRoleLabel, roleLabel } from "./organization-paths.js";
6
4
  import { InviteForm } from "../invitations/invite-form.js";
7
5
  import { PendingInvitationRow } from "../invitations/pending-invitation-row.js";
6
+ import { text } from "./messages.js";
8
7
  import { AppRolesPicker } from "./app-roles-picker.js";
8
+ import { grantableRoles, organizationRoleLabel, roleLabel } from "./organization-paths.js";
9
9
  import { assignableOrganizationRoles } from "./members-page.js";
10
10
  import { useCallback, useEffect, useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,13 +1,13 @@
1
- import { Spinner } from "../primitives/spinner.js";
2
- import { PageHeader } from "../app-shell/page-header.js";
3
- import { authMessage } from "../auth/auth-messages.js";
4
1
  import { useAuth } from "../auth/auth-provider.js";
2
+ import { Spinner } from "../primitives/spinner.js";
5
3
  import { Button } from "../primitives/button.js";
4
+ import { PageHeader } from "../app-shell/page-header.js";
6
5
  import { AccountSection, SectionError } from "../account/account-section.js";
7
- import { text } from "./messages.js";
8
- import { grantableRoles, organizationRoleLabel } from "./organization-paths.js";
6
+ import { authMessage } from "../auth/auth-messages.js";
9
7
  import { useAction } from "./use-action.js";
8
+ import { text } from "./messages.js";
10
9
  import { AppRolesPicker } from "./app-roles-picker.js";
10
+ import { grantableRoles, organizationRoleLabel } from "./organization-paths.js";
11
11
  import { PersonRow } from "../people/person-row.js";
12
12
  import { useCallback, useEffect, useState } from "react";
13
13
  import { AuthError } from "@protobase/client";
@@ -1,12 +1,12 @@
1
- import { Input } from "../primitives/input.js";
2
- import { PageHeader } from "../app-shell/page-header.js";
3
1
  import { useAuth } from "../auth/auth-provider.js";
4
2
  import { Button } from "../primitives/button.js";
5
3
  import { Dialog } from "../primitives/dialog.js";
4
+ import { Input } from "../primitives/input.js";
5
+ import { PageHeader } from "../app-shell/page-header.js";
6
6
  import { AccountSection, SectionError } from "../account/account-section.js";
7
+ import { useAction } from "./use-action.js";
7
8
  import { text } from "./messages.js";
8
9
  import { managesOrganization, organizationRoleLabel } from "./organization-paths.js";
9
- import { useAction } from "./use-action.js";
10
10
  import { reopenIn } from "./use-organizations.js";
11
11
  import { useEffect, useState } from "react";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { Badge } from "../primitives/badge.js";
2
1
  import { Button } from "../primitives/button.js";
2
+ import { Badge } from "../primitives/badge.js";
3
3
  import { text } from "./messages.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/organizations/organization-row.tsx
@@ -1,12 +1,12 @@
1
1
  import { formatTag } from "../locale/active-locale.js";
2
- import { Input } from "../primitives/input.js";
3
- import { PageHeader } from "../app-shell/page-header.js";
4
2
  import { useAuth } from "../auth/auth-provider.js";
5
3
  import { Button } from "../primitives/button.js";
4
+ import { Input } from "../primitives/input.js";
5
+ import { PageHeader } from "../app-shell/page-header.js";
6
6
  import { AccountSection, SectionError } from "../account/account-section.js";
7
+ import { useAction } from "./use-action.js";
7
8
  import { text } from "./messages.js";
8
9
  import { roleLabel } from "./organization-paths.js";
9
- import { useAction } from "./use-action.js";
10
10
  import { isAdmin } from "../auth/user-to-shell.js";
11
11
  import { reopenIn } from "./use-organizations.js";
12
12
  import { OrganizationRow } from "./organization-row.js";
@@ -1,5 +1,5 @@
1
- import { authMessage } from "../auth/auth-messages.js";
2
1
  import { useAuth } from "../auth/auth-provider.js";
2
+ import { authMessage } from "../auth/auth-messages.js";
3
3
  import { text } from "./messages.js";
4
4
  import { useCallback, useEffect, useState } from "react";
5
5
  import { AuthError } from "@protobase/client";
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.46.2";
2
+ var version = "0.46.4";
3
3
  var protobase = { "pluginApi": 1 };
4
4
  //#endregion
5
5
  export { protobase, version };
@@ -1,5 +1,5 @@
1
- import { Spinner } from "../primitives/spinner.js";
2
1
  import { useAuth } from "../auth/auth-provider.js";
2
+ import { Spinner } from "../primitives/spinner.js";
3
3
  import { useRouter } from "../app/router.js";
4
4
  import { CustomBoundary } from "../app/pages/custom-boundary.js";
5
5
  import { mergePlugins } from "./merge-plugins.js";
@@ -1,10 +1,10 @@
1
1
  import { Spinner } from "../primitives/spinner.js";
2
2
  import { useAdminMeta } from "../app/meta-gate.js";
3
+ import { ProjectUiContext } from "../app/pages/project-ui.js";
3
4
  import { mergePlugins } from "./merge-plugins.js";
4
5
  import { text } from "./messages.js";
5
6
  import { usePluginSource } from "./plugin-source.js";
6
7
  import { usePluginLoads } from "./use-plugin-loads.js";
7
- import { ProjectUiContext } from "../app/pages/project-ui.js";
8
8
  import { createContext, useContext, useMemo } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  //#region src/plugins/plugin-gate.tsx
@@ -1,5 +1,5 @@
1
- import { useFocusTrap } from "../lib/use-focus-trap.js";
2
1
  import { text } from "./messages.js";
2
+ import { useFocusTrap } from "../lib/use-focus-trap.js";
3
3
  import { closesSheet } from "./sheet-swipe.js";
4
4
  import { useRef } from "react";
5
5
  import { X } from "lucide-react";
@@ -1,7 +1,7 @@
1
- import { Avatar } from "../primitives/avatar.js";
2
- import { FieldControlContext } from "../primitives/field-control.js";
3
1
  import { Button } from "../primitives/button.js";
4
2
  import { text } from "./messages.js";
3
+ import { FieldControlContext } from "../primitives/field-control.js";
4
+ import { Avatar } from "../primitives/avatar.js";
5
5
  import { useId } from "react";
6
6
  import { TriangleAlert } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
+ import { text } from "./messages.js";
1
2
  import { AvatarStack } from "../primitives/avatar.js";
2
3
  import { Badge } from "../primitives/badge.js";
3
- import { text } from "./messages.js";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/record-view/record-header.tsx
6
6
  const RecordHeader = ({ collection, title, status, lastEditedBy, presence = [], actions }) => {
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { segmentedClass } from "../primitives/segmented.js";
3
2
  import { text } from "./messages.js";
4
3
  import { AppLink } from "../app/use-app-address.js";
4
+ import { segmentedClass } from "../primitives/segmented.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/record-view/record-tabs.tsx
7
7
  /** The record page's tabs, links whose addresses show each; the shown one is the current page. */
@@ -1,6 +1,6 @@
1
- import { authMessage } from "../auth/auth-messages.js";
2
1
  import { useAuth } from "../auth/auth-provider.js";
3
2
  import { useToast } from "../toasts/toast-provider.js";
3
+ import { authMessage } from "../auth/auth-messages.js";
4
4
  import { text } from "./messages.js";
5
5
  import { useCallback, useEffect, useState } from "react";
6
6
  import { AuthError } from "@protobase/client";