@protobase/ui 0.21.6 → 0.21.8

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 (96) hide show
  1. package/dist/app/app.d.ts +3 -3
  2. package/dist/app/app.js +32 -13
  3. package/dist/app/comments/comment-body.js +13 -0
  4. package/dist/app/comments/comment-composer.js +149 -0
  5. package/dist/app/comments/comments-section.js +78 -0
  6. package/dist/app/comments/mention-text.js +45 -0
  7. package/dist/app/comments/use-mentionable.js +18 -0
  8. package/dist/app/comments/use-post-comment.js +15 -0
  9. package/dist/app/comments/use-record-comments.js +24 -0
  10. package/dist/app/create/create-page.js +4 -4
  11. package/dist/app/current-address.d.ts +4 -3
  12. package/dist/app/current-address.js +1 -0
  13. package/dist/app/custom-section.js +1 -1
  14. package/dist/app/displays/board-columns.js +1 -1
  15. package/dist/app/displays/board-display.js +1 -1
  16. package/dist/app/displays/calendar-controls.js +69 -0
  17. package/dist/app/displays/calendar-day.js +33 -0
  18. package/dist/app/displays/calendar-display.js +174 -0
  19. package/dist/app/displays/calendar-dnd.js +27 -0
  20. package/dist/app/displays/calendar-event.js +72 -0
  21. package/dist/app/displays/calendar-range.js +125 -0
  22. package/dist/app/displays/list-displays.js +8 -2
  23. package/dist/app/displays/map-display.js +1 -1
  24. package/dist/app/displays/record-card.js +2 -2
  25. package/dist/app/displays/use-board-column.js +1 -1
  26. package/dist/app/displays/use-board-move.js +1 -1
  27. package/dist/app/displays/use-calendar-move.js +68 -0
  28. package/dist/app/displays/use-calendar-rows.js +35 -0
  29. package/dist/app/displays/use-map-records.js +1 -1
  30. package/dist/app/embedded-list/embedded-list.js +26 -22
  31. package/dist/app/embedded-list/embedded-row-targets.js +65 -0
  32. package/dist/app/embedded-list/use-embedded-rows.js +1 -1
  33. package/dist/app/gallery/gallery-section.js +1 -1
  34. package/dist/app/gallery/lightbox.js +1 -1
  35. package/dist/app/hand-order/hand-sorted-list.js +3 -3
  36. package/dist/app/hand-order/use-hand-order.js +2 -2
  37. package/dist/app/import/import-dialog.js +1 -1
  38. package/dist/app/list-edit/use-list-edits.js +1 -1
  39. package/dist/app/list-page.js +20 -9
  40. package/dist/app/map/map-section.js +1 -1
  41. package/dist/app/pages/action-inputs/action-inputs-dialog.js +3 -3
  42. package/dist/app/pages/blocks/card-row.js +1 -1
  43. package/dist/app/pages/blocks/modal-form.js +3 -3
  44. package/dist/app/pages/blocks/record-card.js +1 -1
  45. package/dist/app/pages/field-value.js +1 -1
  46. package/dist/app/pages/use-run-action.js +9 -7
  47. package/dist/app/record-lines.js +1 -1
  48. package/dist/app/record-page.js +29 -15
  49. package/dist/app/record-row/record-row-body.js +1 -1
  50. package/dist/app/record-row/saved-record-row.js +1 -1
  51. package/dist/app/related-dots/related-dots.js +1 -1
  52. package/dist/app/related-opens.js +22 -0
  53. package/dist/app/related-section.js +5 -2
  54. package/dist/app/relation-picker.js +1 -1
  55. package/dist/app/search/search-model.js +1 -1
  56. package/dist/app/searches/saved-search-rows.js +2 -2
  57. package/dist/app/searches/saved-searches.js +2 -2
  58. package/dist/app/searches/update-search-dialog.js +1 -1
  59. package/dist/app/searches/use-save-search.js +1 -1
  60. package/dist/app/searches/use-saved-searches.js +1 -1
  61. package/dist/app/use-app-address.d.ts +3 -1
  62. package/dist/app/use-app-address.js +9 -10
  63. package/dist/assistant-dock/widget-view.js +1 -1
  64. package/dist/auth/auth-layout.d.ts +4 -2
  65. package/dist/auth/auth-layout.js +4 -3
  66. package/dist/auth/user-to-shell.js +3 -1
  67. package/dist/data/api-provider.d.ts +26 -0
  68. package/dist/data/query-keys.js +18 -1
  69. package/dist/data-grid/row-menu.js +8 -1
  70. package/dist/format/date.js +27 -1
  71. package/dist/forms/prove-human.js +24 -0
  72. package/dist/forms/public-form-page.js +142 -0
  73. package/dist/forms/use-form-address.js +11 -0
  74. package/dist/index.js +7 -7
  75. package/dist/live/columns-from-model.js +1 -1
  76. package/dist/live/use-filter-config.js +1 -1
  77. package/dist/package.js +1 -1
  78. package/dist/plugins/plugin-gate.js +1 -1
  79. package/dist/primitives/segmented.js +8 -3
  80. package/dist/primitives/textarea.d.ts +4 -3
  81. package/dist/primitives/textarea.js +9 -4
  82. package/dist/shell/assets/app-C01lazBK.js +69 -0
  83. package/dist/shell/assets/{export-worker-CVd5saLq.js → export-worker-BnOpS_4Q.js} +1 -1
  84. package/dist/shell/assets/index-CBGigFxb.css +2 -0
  85. package/dist/shell/assets/{index-BztYGbYc.js → index-xN6_oZU2.js} +1 -1
  86. package/dist/shell/assets/{maplibre-CVOEAJ62.js → maplibre-Ba9RapjY.js} +1 -1
  87. package/dist/shell/assets/{markdown-content-Bg8FC_aK.js → markdown-content-BUxrbovf.js} +1 -1
  88. package/dist/shell/assets/{record-map-ChUVZLR6.js → record-map-14zotZ2s.js} +1 -1
  89. package/dist/shell/assets/{records-map-BAI2D9VS.js → records-map-wi-0pXqF.js} +1 -1
  90. package/dist/shell/assets/shared-protobase-ui-BVwhKZk9.js +1 -0
  91. package/dist/shell/index.html +4 -4
  92. package/dist/shell/protobase.shell.json +1 -1
  93. package/package.json +5 -4
  94. package/dist/shell/assets/app-Dfqcc3td.js +0 -69
  95. package/dist/shell/assets/index-C1fzTv_X.css +0 -2
  96. package/dist/shell/assets/shared-protobase-ui-CzT3bJ35.js +0 -1
@@ -11,10 +11,15 @@ const sizes = {
11
11
  option: "px-3 text-body"
12
12
  }
13
13
  };
14
+ /** A segmented switch's classes, for a row of links that looks like one: the group, and each option, `active` the chosen. */
15
+ const segmentedClass = {
16
+ group: (size = "sm") => cn("inline-flex", sizes[size].group, "rounded-md bg-muted p-0.5"),
17
+ option: (active, size = "sm") => cn("inline-flex items-center gap-1.5 rounded", sizes[size].option, "font-medium transition-colors", active ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground")
18
+ };
14
19
  const Segmented = ({ value, options, onChange, label, size = "sm", iconOnly = false }) => /* @__PURE__ */ jsx("span", {
15
20
  role: "group",
16
21
  "aria-label": label,
17
- className: cn("inline-flex", sizes[size].group, "rounded-md bg-muted p-0.5"),
22
+ className: segmentedClass.group(size),
18
23
  children: options.map((option) => /* @__PURE__ */ jsxs("button", {
19
24
  type: "button",
20
25
  "aria-pressed": option.value === value,
@@ -23,9 +28,9 @@ const Segmented = ({ value, options, onChange, label, size = "sm", iconOnly = fa
23
28
  title: option.label
24
29
  },
25
30
  onClick: () => onChange(option.value),
26
- className: cn("inline-flex items-center gap-1.5 rounded", sizes[size].option, "font-medium transition-colors", option.value === value ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"),
31
+ className: segmentedClass.option(option.value === value, size),
27
32
  children: [option.icon && /* @__PURE__ */ jsx(option.icon, { className: "size-3.5" }), !iconOnly && option.label]
28
33
  }, option.value))
29
34
  });
30
35
  //#endregion
31
- export { Segmented };
36
+ export { Segmented, segmentedClass };
@@ -1,9 +1,10 @@
1
- import { TextareaHTMLAttributes } from "react";
1
+ import { Ref, TextareaHTMLAttributes } from "react";
2
2
  //#region src/primitives/textarea.d.ts
3
3
  export type TextareaProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value'> & {
4
4
  value: string;
5
5
  invalid?: boolean;
6
+ ref?: Ref<HTMLTextAreaElement>;
6
7
  };
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;
8
+ /** A text box of several lines that grows with its text instead of scrolling inside; `ref` reaches the box too. */
9
+ export declare const Textarea: ({ invalid, className, rows, value, ref: given, ...rest }: TextareaProps) => import("react").JSX.Element;
9
10
  //#endregion
@@ -1,15 +1,20 @@
1
1
  import { cn } from "../lib/cn.js";
2
2
  import { useFieldControl } from "./field-control.js";
3
- import { useEffect, useLayoutEffect, useRef } from "react";
3
+ import { useCallback, useEffect, useLayoutEffect, useRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/primitives/textarea.tsx
6
6
  const fit = (box) => {
7
7
  box.style.height = "auto";
8
8
  box.style.height = `${box.scrollHeight + box.offsetHeight - box.clientHeight}px`;
9
9
  };
10
- /** A text box of several lines that grows with its text instead of scrolling inside. */
11
- const Textarea = ({ invalid, className, rows = 3, value, ...rest }) => {
10
+ /** A text box of several lines that grows with its text instead of scrolling inside; `ref` reaches the box too. */
11
+ const Textarea = ({ invalid, className, rows = 3, value, ref: given, ...rest }) => {
12
12
  const ref = useRef(null);
13
+ const setRef = useCallback((box) => {
14
+ ref.current = box;
15
+ if (typeof given === "function") given(box);
16
+ else if (given) given.current = box;
17
+ }, [given]);
13
18
  const control = useFieldControl();
14
19
  useLayoutEffect(() => {
15
20
  if (ref.current) fit(ref.current);
@@ -27,7 +32,7 @@ const Textarea = ({ invalid, className, rows = 3, value, ...rest }) => {
27
32
  return () => observer.disconnect();
28
33
  }, []);
29
34
  return /* @__PURE__ */ jsx("textarea", {
30
- ref,
35
+ ref: setRef,
31
36
  rows,
32
37
  value,
33
38
  className: cn("block w-full resize-none overflow-hidden rounded-md border bg-background px-2.5 py-1.5 text-body text-foreground shadow-sm outline-none placeholder:text-faint-foreground focus:border-primary focus:ring-2 focus:ring-primary/20", invalid ? "border-danger" : "border-border-strong", className),