@douglasneuroinformatics/libui 4.4.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/chunk-5B62SIBQ.js +60 -0
  2. package/dist/chunk-5B62SIBQ.js.map +1 -0
  3. package/dist/chunk-GT5NL2RJ.js +306 -0
  4. package/dist/chunk-GT5NL2RJ.js.map +1 -0
  5. package/dist/{chunk-LSGD4EQY.js → chunk-SGSRBDMT.js} +30 -24
  6. package/dist/{chunk-LSGD4EQY.js.map → chunk-SGSRBDMT.js.map} +1 -1
  7. package/dist/components.d.ts +13 -17
  8. package/dist/components.js +10 -4
  9. package/dist/components.js.map +1 -1
  10. package/dist/hooks.d.ts +3 -6
  11. package/dist/hooks.js +3 -2
  12. package/dist/i18n.d.ts +25 -28
  13. package/dist/i18n.js +4 -5
  14. package/dist/{types-DDyMlEuL.d.ts → types-CxoDu4Em.d.ts} +18 -6
  15. package/dist/utils.js +1 -0
  16. package/package.json +9 -15
  17. package/src/components/Accordion/Accordion.stories.tsx +1 -1
  18. package/src/components/ActionDropdown/ActionDropdown.stories.tsx +1 -1
  19. package/src/components/AlertDialog/AlertDialog.stories.tsx +1 -1
  20. package/src/components/ArrowToggle/ArrowToggle.stories.tsx +1 -1
  21. package/src/components/Avatar/Avatar.stories.tsx +1 -1
  22. package/src/components/Badge/Badge.stories.tsx +1 -1
  23. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  24. package/src/components/Button/Button.stories.tsx +1 -1
  25. package/src/components/Card/Card.stories.tsx +1 -1
  26. package/src/components/Chart/Chart.stories.tsx +1 -1
  27. package/src/components/Checkbox/Checkbox.stories.tsx +2 -2
  28. package/src/components/ClientTable/ClientTable.stories.tsx +1 -1
  29. package/src/components/Collapsible/Collapsible.stories.tsx +1 -1
  30. package/src/components/Command/Command.stories.tsx +1 -1
  31. package/src/components/ContextMenu/ContextMenu.stories.tsx +1 -1
  32. package/src/components/CopyButton/CopyButton.stories.tsx +1 -1
  33. package/src/components/DataTable/DataTable.stories.tsx +1 -1
  34. package/src/components/DatePicker/DatePicker.stories.tsx +1 -1
  35. package/src/components/Dialog/Dialog.stories.tsx +1 -1
  36. package/src/components/Drawer/Drawer.stories.tsx +1 -1
  37. package/src/components/DropdownButton/DropdownButton.stories.tsx +1 -1
  38. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +1 -1
  39. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +1 -1
  40. package/src/components/FileDropzone/FileDropzone.stories.tsx +1 -1
  41. package/src/components/Form/BooleanField/BooleanField.stories.tsx +1 -1
  42. package/src/components/Form/DateField/DateField.stories.tsx +1 -1
  43. package/src/components/Form/Form.stories.tsx +1 -1
  44. package/src/components/Form/Form.tsx +13 -6
  45. package/src/components/Form/NumberField/NumberField.stories.tsx +1 -1
  46. package/src/components/Form/SetField/SetField.stories.tsx +1 -1
  47. package/src/components/Form/StringField/StringField.stories.tsx +1 -1
  48. package/src/components/Heading/Heading.stories.tsx +1 -1
  49. package/src/components/HoverCard/HoverCard.stories.tsx +2 -2
  50. package/src/components/Input/Input.stories.tsx +1 -1
  51. package/src/components/Label/Label.stories.tsx +1 -1
  52. package/src/components/LanguageToggle/LanguageToggle.stories.tsx +22 -2
  53. package/src/components/LineGraph/LineGraph.stories.tsx +1 -1
  54. package/src/components/ListboxDropdown/ListboxDropdown.stories.tsx +1 -1
  55. package/src/components/MenuBar/MenuBar.stories.tsx +1 -1
  56. package/src/components/NotificationHub/NotificationHub.stories.tsx +1 -1
  57. package/src/components/OneTimePasswordInput/OneTimePasswordInput.stories.tsx +1 -1
  58. package/src/components/Pagination/Pagination.stories.tsx +1 -1
  59. package/src/components/Popover/Popover.stories.tsx +4 -4
  60. package/src/components/Progress/Progress.stories.tsx +1 -1
  61. package/src/components/RadioGroup/RadioGroup.stories.tsx +1 -1
  62. package/src/components/Resizable/Resizable.stories.tsx +1 -1
  63. package/src/components/ScrollArea/ScrollArea.stories.tsx +1 -1
  64. package/src/components/SearchBar/SearchBar.stories.tsx +1 -1
  65. package/src/components/Select/Select.stories.tsx +1 -1
  66. package/src/components/Separator/Separator.stories.tsx +3 -3
  67. package/src/components/Sheet/Sheet.stories.tsx +1 -1
  68. package/src/components/Slider/Slider.stories.tsx +1 -1
  69. package/src/components/Spinner/Spinner.stories.tsx +1 -1
  70. package/src/components/SpinnerIcon/SpinnerIcon.stories.tsx +1 -1
  71. package/src/components/StatisticCard/StatisticCard.stories.tsx +1 -1
  72. package/src/components/Switch/Switch.stories.tsx +1 -1
  73. package/src/components/Table/Table.stories.tsx +1 -1
  74. package/src/components/Tabs/Tabs.stories.tsx +1 -1
  75. package/src/components/TextArea/TextArea.stories.tsx +1 -1
  76. package/src/components/ThemeToggle/ThemeToggle.stories.tsx +1 -1
  77. package/src/components/Tooltip/Tooltip.stories.tsx +1 -1
  78. package/src/hooks/useTranslation/useTranslation.ts +39 -24
  79. package/src/i18n/__tests__/translator.test.ts +91 -0
  80. package/src/i18n/index.ts +4 -1
  81. package/src/i18n/translator.ts +129 -0
  82. package/src/i18n/types.ts +23 -6
  83. package/src/testing/mocks.ts +0 -9
  84. package/src/testing/setup-tests.ts +3 -2
  85. package/dist/chunk-VFVO337W.js +0 -252
  86. package/dist/chunk-VFVO337W.js.map +0 -1
  87. package/src/i18n/internal.ts +0 -23
  88. package/src/i18n/store.ts +0 -69
@@ -25,7 +25,7 @@ import { ZodTypeLike, ZodErrorLike } from '@douglasneuroinformatics/libjs';
25
25
  import { FormDataType, FormContent, PartialNullableFormDataType } from '@douglasneuroinformatics/libui-form-types';
26
26
  import * as _radix_ui_react_hover_card from '@radix-ui/react-hover-card';
27
27
  import * as LabelPrimitive from '@radix-ui/react-label';
28
- import { L as Language } from './types-DDyMlEuL.js';
28
+ import { L as Language } from './types-CxoDu4Em.js';
29
29
  import * as _radix_ui_react_menubar from '@radix-ui/react-menubar';
30
30
  import { MenubarMenuProps } from '@radix-ui/react-menubar';
31
31
  import * as _radix_ui_react_popover from '@radix-ui/react-popover';
@@ -239,7 +239,7 @@ declare const Button: React$1.ForwardRefExoticComponent<{
239
239
  onBlurCapture?: React$1.FocusEventHandler<HTMLButtonElement> | undefined;
240
240
  onChange?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
241
241
  onChangeCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
242
- onBeforeInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
242
+ onBeforeInput?: React$1.InputEventHandler<HTMLButtonElement> | undefined;
243
243
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
244
244
  onInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
245
245
  onInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
@@ -289,8 +289,6 @@ declare const Button: React$1.ForwardRefExoticComponent<{
289
289
  onProgressCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
290
290
  onRateChange?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
291
291
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
292
- onResize?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
293
- onResizeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
294
292
  onSeeked?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
295
293
  onSeekedCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
296
294
  onSeeking?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
@@ -539,7 +537,7 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
539
537
  onBlurCapture?: React$1.FocusEventHandler<HTMLButtonElement> | undefined;
540
538
  onChange?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
541
539
  onChangeCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
542
- onBeforeInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
540
+ onBeforeInput?: React$1.InputEventHandler<HTMLButtonElement> | undefined;
543
541
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
544
542
  onInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
545
543
  onInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
@@ -589,8 +587,6 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
589
587
  onProgressCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
590
588
  onRateChange?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
591
589
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
592
- onResize?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
593
- onResizeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
594
590
  onSeeked?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
595
591
  onSeekedCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
596
592
  onSeeking?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
@@ -950,7 +946,7 @@ declare const Command: React$1.ForwardRefExoticComponent<{
950
946
  onBlurCapture?: React$1.FocusEventHandler<HTMLDivElement> | undefined;
951
947
  onChange?: React$1.FormEventHandler<HTMLDivElement> | undefined;
952
948
  onChangeCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
953
- onBeforeInput?: React$1.FormEventHandler<HTMLDivElement> | undefined;
949
+ onBeforeInput?: React$1.InputEventHandler<HTMLDivElement> | undefined;
954
950
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
955
951
  onInput?: React$1.FormEventHandler<HTMLDivElement> | undefined;
956
952
  onInputCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
@@ -1000,8 +996,6 @@ declare const Command: React$1.ForwardRefExoticComponent<{
1000
996
  onProgressCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1001
997
  onRateChange?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1002
998
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1003
- onResize?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1004
- onResizeCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1005
999
  onSeeked?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1006
1000
  onSeekedCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1007
1001
  onSeeking?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
@@ -1324,6 +1318,13 @@ type FileDropzoneProps = {
1324
1318
  };
1325
1319
  declare const FileDropzone: ({ acceptedFileTypes, className, description, file, setFile, titles }: FileDropzoneProps) => react_jsx_runtime.JSX.Element;
1326
1320
 
1321
+ type FormSubmitResult = {
1322
+ errorMessage: string;
1323
+ success: false;
1324
+ } | {
1325
+ success: true;
1326
+ };
1327
+ type FormSubmitHandler<TData> = (data: NoInfer<TData>) => Promisable<FormSubmitResult | void>;
1327
1328
  type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema['_output'] = TSchema['_output']> = {
1328
1329
  [key: `data-${string}`]: unknown;
1329
1330
  additionalButtons?: {
@@ -1339,14 +1340,9 @@ type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema[
1339
1340
  fieldsFooter?: React.ReactNode;
1340
1341
  id?: string;
1341
1342
  initialValues?: PartialNullableFormDataType<NoInfer<TData>>;
1342
- onBeforeSubmit?: ((data: NoInfer<TData>) => Promisable<{
1343
- errorMessage: string;
1344
- success: false;
1345
- } | {
1346
- success: true;
1347
- }>) | null;
1343
+ onBeforeSubmit?: FormSubmitHandler<NoInfer<TData>> | null;
1348
1344
  onError?: (error: ZodErrorLike) => void;
1349
- onSubmit: (data: NoInfer<TData>) => Promisable<void>;
1345
+ onSubmit: FormSubmitHandler<NoInfer<TData>>;
1350
1346
  preventResetValuesOnReset?: boolean;
1351
1347
  readOnly?: boolean;
1352
1348
  resetBtn?: boolean;
@@ -5,11 +5,12 @@ import {
5
5
  useNotificationsStore,
6
6
  useTheme,
7
7
  useTranslation
8
- } from "./chunk-LSGD4EQY.js";
9
- import "./chunk-VFVO337W.js";
8
+ } from "./chunk-SGSRBDMT.js";
9
+ import "./chunk-GT5NL2RJ.js";
10
10
  import {
11
11
  cn
12
12
  } from "./chunk-HCQE34RL.js";
13
+ import "./chunk-5B62SIBQ.js";
13
14
 
14
15
  // src/components/Accordion/AccordionContent.tsx
15
16
  import { forwardRef } from "react";
@@ -3888,7 +3889,7 @@ var Form = ({
3888
3889
  }
3889
3890
  if (onBeforeSubmit) {
3890
3891
  const beforeSubmitResult = await onBeforeSubmit(result.data);
3891
- if (!beforeSubmitResult.success) {
3892
+ if (beforeSubmitResult && !beforeSubmitResult.success) {
3892
3893
  setErrors({});
3893
3894
  setRootErrors([beforeSubmitResult.errorMessage]);
3894
3895
  return;
@@ -3896,12 +3897,17 @@ var Form = ({
3896
3897
  }
3897
3898
  try {
3898
3899
  setIsSubmitting(true);
3899
- await Promise.all([
3900
+ const [formSubmitResult] = await Promise.all([
3900
3901
  onSubmit(result.data),
3901
3902
  new Promise((resolve) => {
3902
3903
  return suspendWhileSubmitting ? setTimeout(resolve, 500) : resolve();
3903
3904
  })
3904
3905
  ]);
3906
+ if (formSubmitResult && !formSubmitResult.success) {
3907
+ setErrors({});
3908
+ setRootErrors([formSubmitResult.errorMessage]);
3909
+ return;
3910
+ }
3905
3911
  reset();
3906
3912
  } finally {
3907
3913
  setIsSubmitting(false);