@douglasneuroinformatics/libui 4.4.0 → 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 (92) 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 +62 -46
  8. package/dist/components.js +955 -652
  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 +15 -15
  34. package/src/components/DataTable/DataTable.tsx +24 -23
  35. package/src/components/DataTable/DestructiveActionDialog.tsx +2 -6
  36. package/src/components/DatePicker/DatePicker.stories.tsx +1 -1
  37. package/src/components/Dialog/Dialog.stories.tsx +1 -1
  38. package/src/components/Drawer/Drawer.stories.tsx +1 -1
  39. package/src/components/DropdownButton/DropdownButton.stories.tsx +1 -1
  40. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +1 -1
  41. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +1 -1
  42. package/src/components/FileDropzone/FileDropzone.stories.tsx +1 -1
  43. package/src/components/Form/BooleanField/BooleanField.stories.tsx +1 -1
  44. package/src/components/Form/DateField/DateField.stories.tsx +1 -1
  45. package/src/components/Form/Form.stories.tsx +2 -3
  46. package/src/components/Form/Form.tsx +17 -9
  47. package/src/components/Form/NumberField/NumberField.stories.tsx +1 -1
  48. package/src/components/Form/SetField/SetField.stories.tsx +1 -1
  49. package/src/components/Form/StringField/StringField.stories.tsx +1 -1
  50. package/src/components/Form/types.ts +0 -33
  51. package/src/components/Heading/Heading.stories.tsx +1 -1
  52. package/src/components/HoverCard/HoverCard.stories.tsx +2 -2
  53. package/src/components/Input/Input.stories.tsx +1 -1
  54. package/src/components/Label/Label.stories.tsx +1 -1
  55. package/src/components/LanguageToggle/LanguageToggle.stories.tsx +22 -2
  56. package/src/components/LineGraph/LineGraph.stories.tsx +1 -1
  57. package/src/components/ListboxDropdown/ListboxDropdown.stories.tsx +1 -1
  58. package/src/components/MenuBar/MenuBar.stories.tsx +1 -1
  59. package/src/components/NotificationHub/NotificationHub.stories.tsx +1 -1
  60. package/src/components/OneTimePasswordInput/OneTimePasswordInput.stories.tsx +1 -1
  61. package/src/components/Pagination/Pagination.stories.tsx +1 -1
  62. package/src/components/Popover/Popover.stories.tsx +4 -4
  63. package/src/components/Progress/Progress.stories.tsx +1 -1
  64. package/src/components/RadioGroup/RadioGroup.stories.tsx +1 -1
  65. package/src/components/Resizable/Resizable.stories.tsx +1 -1
  66. package/src/components/ScrollArea/ScrollArea.stories.tsx +1 -1
  67. package/src/components/SearchBar/SearchBar.stories.tsx +1 -1
  68. package/src/components/Select/Select.stories.tsx +1 -1
  69. package/src/components/Separator/Separator.stories.tsx +3 -3
  70. package/src/components/Sheet/Sheet.stories.tsx +1 -1
  71. package/src/components/Slider/Slider.stories.tsx +1 -1
  72. package/src/components/Spinner/Spinner.stories.tsx +1 -1
  73. package/src/components/SpinnerIcon/SpinnerIcon.stories.tsx +1 -1
  74. package/src/components/StatisticCard/StatisticCard.stories.tsx +1 -1
  75. package/src/components/Switch/Switch.stories.tsx +1 -1
  76. package/src/components/Table/Table.stories.tsx +1 -1
  77. package/src/components/Tabs/Tabs.stories.tsx +1 -1
  78. package/src/components/TextArea/TextArea.stories.tsx +1 -1
  79. package/src/components/ThemeToggle/ThemeToggle.stories.tsx +1 -1
  80. package/src/components/Tooltip/Tooltip.stories.tsx +1 -1
  81. package/src/components/index.ts +1 -0
  82. package/src/hooks/useTranslation/useTranslation.ts +39 -24
  83. package/src/i18n/__tests__/translator.test.ts +91 -0
  84. package/src/i18n/index.ts +4 -1
  85. package/src/i18n/translator.ts +129 -0
  86. package/src/i18n/types.ts +23 -6
  87. package/src/testing/mocks.ts +0 -9
  88. package/src/testing/setup-tests.ts +3 -2
  89. package/dist/chunk-VFVO337W.js +0 -252
  90. package/dist/chunk-VFVO337W.js.map +0 -1
  91. package/src/i18n/internal.ts +0 -23
  92. package/src/i18n/store.ts +0 -69
@@ -21,10 +21,11 @@ import * as _radix_ui_react_collapsible from '@radix-ui/react-collapsible';
21
21
  import * as _radix_ui_react_context_menu from '@radix-ui/react-context-menu';
22
22
  import * as _radix_ui_react_dialog from '@radix-ui/react-dialog';
23
23
  import { Drawer as Drawer$1 } from 'vaul';
24
+ import { ZodTypeLike, ZodErrorLike } from '@douglasneuroinformatics/libjs';
24
25
  import { FormDataType, FormContent, PartialNullableFormDataType } from '@douglasneuroinformatics/libui-form-types';
25
26
  import * as _radix_ui_react_hover_card from '@radix-ui/react-hover-card';
26
27
  import * as LabelPrimitive from '@radix-ui/react-label';
27
- import { L as Language } from './types-DDyMlEuL.js';
28
+ import { L as Language } from './types-CxoDu4Em.js';
28
29
  import * as _radix_ui_react_menubar from '@radix-ui/react-menubar';
29
30
  import { MenubarMenuProps } from '@radix-ui/react-menubar';
30
31
  import * as _radix_ui_react_popover from '@radix-ui/react-popover';
@@ -238,7 +239,7 @@ declare const Button: React$1.ForwardRefExoticComponent<{
238
239
  onBlurCapture?: React$1.FocusEventHandler<HTMLButtonElement> | undefined;
239
240
  onChange?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
240
241
  onChangeCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
241
- onBeforeInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
242
+ onBeforeInput?: React$1.InputEventHandler<HTMLButtonElement> | undefined;
242
243
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
243
244
  onInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
244
245
  onInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
@@ -288,8 +289,6 @@ declare const Button: React$1.ForwardRefExoticComponent<{
288
289
  onProgressCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
289
290
  onRateChange?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
290
291
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
291
- onResize?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
292
- onResizeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
293
292
  onSeeked?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
294
293
  onSeekedCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
295
294
  onSeeking?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
@@ -538,7 +537,7 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
538
537
  onBlurCapture?: React$1.FocusEventHandler<HTMLButtonElement> | undefined;
539
538
  onChange?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
540
539
  onChangeCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
541
- onBeforeInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
540
+ onBeforeInput?: React$1.InputEventHandler<HTMLButtonElement> | undefined;
542
541
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
543
542
  onInput?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
544
543
  onInputCapture?: React$1.FormEventHandler<HTMLButtonElement> | undefined;
@@ -588,8 +587,6 @@ declare const ArrowToggle: React$1.ForwardRefExoticComponent<{
588
587
  onProgressCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
589
588
  onRateChange?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
590
589
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
591
- onResize?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
592
- onResizeCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
593
590
  onSeeked?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
594
591
  onSeekedCapture?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
595
592
  onSeeking?: React$1.ReactEventHandler<HTMLButtonElement> | undefined;
@@ -949,7 +946,7 @@ declare const Command: React$1.ForwardRefExoticComponent<{
949
946
  onBlurCapture?: React$1.FocusEventHandler<HTMLDivElement> | undefined;
950
947
  onChange?: React$1.FormEventHandler<HTMLDivElement> | undefined;
951
948
  onChangeCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
952
- onBeforeInput?: React$1.FormEventHandler<HTMLDivElement> | undefined;
949
+ onBeforeInput?: React$1.InputEventHandler<HTMLDivElement> | undefined;
953
950
  onBeforeInputCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
954
951
  onInput?: React$1.FormEventHandler<HTMLDivElement> | undefined;
955
952
  onInputCapture?: React$1.FormEventHandler<HTMLDivElement> | undefined;
@@ -999,8 +996,6 @@ declare const Command: React$1.ForwardRefExoticComponent<{
999
996
  onProgressCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1000
997
  onRateChange?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1001
998
  onRateChangeCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1002
- onResize?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1003
- onResizeCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1004
999
  onSeeked?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1005
1000
  onSeekedCapture?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
1006
1001
  onSeeking?: React$1.ReactEventHandler<HTMLDivElement> | undefined;
@@ -1196,6 +1191,53 @@ declare const CopyButton: React__default.FC<{
1196
1191
  variant?: ButtonProps['variant'];
1197
1192
  }>;
1198
1193
 
1194
+ type RowAction<TData extends {
1195
+ [key: string]: unknown;
1196
+ }> = {
1197
+ destructive?: boolean;
1198
+ label: string;
1199
+ onSelect: (row: TData) => Promisable<void>;
1200
+ };
1201
+
1202
+ type StaticDataTableColumn<TData extends {
1203
+ [key: string]: unknown;
1204
+ }> = {
1205
+ [K in Extract<keyof TData, string>]: {
1206
+ format?: 'email' | ((val: TData[K]) => unknown);
1207
+ key: K;
1208
+ label: string;
1209
+ sortable?: boolean;
1210
+ };
1211
+ }[Extract<keyof TData, string>];
1212
+ type DynamicDataTableColumn<TData extends {
1213
+ [key: string]: unknown;
1214
+ }> = {
1215
+ compute: (row: TData) => unknown;
1216
+ key?: never;
1217
+ label: string;
1218
+ };
1219
+ type DataTableColumn<TData extends {
1220
+ [key: string]: unknown;
1221
+ }> = DynamicDataTableColumn<TData> | StaticDataTableColumn<TData>;
1222
+ type DataTableProps<TData extends {
1223
+ [key: string]: unknown;
1224
+ }> = {
1225
+ columns: DataTableColumn<TData>[];
1226
+ data: TData[];
1227
+ headerActions?: {
1228
+ label: string;
1229
+ onClick: () => void;
1230
+ }[];
1231
+ rowActions?: RowAction<TData>[];
1232
+ search?: {
1233
+ key: Extract<keyof TData, string>;
1234
+ placeholder?: string;
1235
+ };
1236
+ };
1237
+ declare const DataTable: <TData extends {
1238
+ [key: string]: unknown;
1239
+ }>({ columns, data, headerActions, rowActions, search }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
1240
+
1199
1241
  type DatePickerProps = {
1200
1242
  onMouseEnter?: React$1.MouseEventHandler<HTMLDivElement>;
1201
1243
  onMouseLeave?: React$1.MouseEventHandler<HTMLDivElement>;
@@ -1276,35 +1318,14 @@ type FileDropzoneProps = {
1276
1318
  };
1277
1319
  declare const FileDropzone: ({ acceptedFileTypes, className, description, file, setFile, titles }: FileDropzoneProps) => react_jsx_runtime.JSX.Element;
1278
1320
 
1279
- type ZodIssueLike = {
1280
- [key: string]: any;
1281
- readonly code: string;
1282
- readonly message: string;
1283
- readonly path: PropertyKey[];
1284
- };
1285
- type ZodErrorLike = {
1286
- cause?: unknown;
1287
- issues: ZodIssueLike[];
1288
- name: string;
1289
- };
1290
- type ZodSafeParseResultLike<T> = ZodSafeParseErrorLike | ZodSafeParseSuccessLike<T>;
1291
- type ZodSafeParseSuccessLike<TOutput> = {
1292
- data: TOutput;
1293
- error?: never;
1294
- success: true;
1295
- };
1296
- type ZodSafeParseErrorLike = {
1297
- data?: never;
1298
- error: ZodErrorLike;
1321
+ type FormSubmitResult = {
1322
+ errorMessage: string;
1299
1323
  success: false;
1324
+ } | {
1325
+ success: true;
1300
1326
  };
1301
- type ZodTypeLike<TOutput, TInput = TOutput> = {
1302
- readonly _input: TInput;
1303
- readonly _output: TOutput;
1304
- safeParseAsync: (data: unknown) => Promise<ZodSafeParseResultLike<TOutput>>;
1305
- };
1306
-
1307
- type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema['_input'] = TSchema['_input']> = {
1327
+ type FormSubmitHandler<TData> = (data: NoInfer<TData>) => Promisable<FormSubmitResult | void>;
1328
+ type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema['_output'] = TSchema['_output']> = {
1308
1329
  [key: `data-${string}`]: unknown;
1309
1330
  additionalButtons?: {
1310
1331
  left?: React.ReactNode;
@@ -1319,14 +1340,9 @@ type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema[
1319
1340
  fieldsFooter?: React.ReactNode;
1320
1341
  id?: string;
1321
1342
  initialValues?: PartialNullableFormDataType<NoInfer<TData>>;
1322
- onBeforeSubmit?: ((data: NoInfer<TData>) => Promisable<{
1323
- errorMessage: string;
1324
- success: false;
1325
- } | {
1326
- success: true;
1327
- }>) | null;
1343
+ onBeforeSubmit?: FormSubmitHandler<NoInfer<TData>> | null;
1328
1344
  onError?: (error: ZodErrorLike) => void;
1329
- onSubmit: (data: NoInfer<TData>) => Promisable<void>;
1345
+ onSubmit: FormSubmitHandler<NoInfer<TData>>;
1330
1346
  preventResetValuesOnReset?: boolean;
1331
1347
  readOnly?: boolean;
1332
1348
  resetBtn?: boolean;
@@ -1335,7 +1351,7 @@ type FormProps<TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema[
1335
1351
  suspendWhileSubmitting?: boolean;
1336
1352
  validationSchema: ZodTypeLike<TData>;
1337
1353
  };
1338
- declare const Form: <TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema["_input"] = TSchema["_input"]>({ additionalButtons, className, content, customStyles, fieldsFooter, id, initialValues, onBeforeSubmit, onError, onSubmit, preventResetValuesOnReset, readOnly, resetBtn, revalidateOnBlur, submitBtnLabel, suspendWhileSubmitting, validationSchema, ...props }: FormProps<TSchema, TData>) => react_jsx_runtime.JSX.Element;
1354
+ declare const Form: <TSchema extends ZodTypeLike<FormDataType>, TData extends TSchema["_output"] = TSchema["_output"]>({ additionalButtons, className, content, customStyles, fieldsFooter, id, initialValues, onBeforeSubmit, onError, onSubmit, preventResetValuesOnReset, readOnly, resetBtn, revalidateOnBlur, submitBtnLabel, suspendWhileSubmitting, validationSchema, ...props }: FormProps<TSchema, TData>) => react_jsx_runtime.JSX.Element;
1339
1355
 
1340
1356
  type HeadingProps = {
1341
1357
  children: string;
@@ -1622,4 +1638,4 @@ declare const Tooltip: (({ children, delayDuration, onOpenChange, open, skipDela
1622
1638
  Trigger: React$1.ForwardRefExoticComponent<TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1623
1639
  };
1624
1640
 
1625
- export { Accordion, ActionDropdown, type ActionDropdownProps, AlertDialog, ArrowToggle, type ArrowToggleProps, Avatar, BUTTON_ICON_SIZE, Badge, type BadgeProps, type BaseSearchBarProps, Breadcrumb, Button, type ButtonProps, Card, Chart, ChartConfig, Checkbox, type ClientFieldFactory, ClientTable, type ClientTableColumn, type ClientTableColumnProps, type ClientTableDropdownOptions, type ClientTableEntry, type ClientTableProps, Collapsible, Command, ContextMenu, CopyButton, DatePicker, type DatePickerProps, Dialog, Drawer, DropdownButton, DropdownMenu, ErrorBoundary, ErrorFallback, type ErrorFallbackProps, FileDropzone, type FileDropzoneProps, Form, type FormProps, Heading, type HeadingProps, HoverCard, Input, type InputProps, Label, LanguageToggle, type LanguageToggleProps, LineGraph, type LineGraphData, type LineGraphLine, ListboxDropdown, type ListboxDropdownOption, type ListboxDropdownProps, MenuBar, NotificationHub, type NotificationHubProps, OneTimePasswordInput, Popover, Progress, RadioGroup, type RadioGroupProps, Resizable, ScrollArea, SearchBar, type SearchBarProps, Select, Separator, Sheet, Slider, Spinner, SpinnerIcon, StatisticCard, Switch, Table, Tabs, TextArea, type TextAreaProps, ThemeToggle, type ThemeToggleProps, Tooltip, badgeVariants, buttonVariants, labelVariants };
1641
+ export { Accordion, ActionDropdown, type ActionDropdownProps, AlertDialog, ArrowToggle, type ArrowToggleProps, Avatar, BUTTON_ICON_SIZE, Badge, type BadgeProps, type BaseSearchBarProps, Breadcrumb, Button, type ButtonProps, Card, Chart, ChartConfig, Checkbox, type ClientFieldFactory, ClientTable, type ClientTableColumn, type ClientTableColumnProps, type ClientTableDropdownOptions, type ClientTableEntry, type ClientTableProps, Collapsible, Command, ContextMenu, CopyButton, DataTable, type DataTableColumn, DatePicker, type DatePickerProps, Dialog, Drawer, DropdownButton, DropdownMenu, ErrorBoundary, ErrorFallback, type ErrorFallbackProps, FileDropzone, type FileDropzoneProps, Form, type FormProps, Heading, type HeadingProps, HoverCard, Input, type InputProps, Label, LanguageToggle, type LanguageToggleProps, LineGraph, type LineGraphData, type LineGraphLine, ListboxDropdown, type ListboxDropdownOption, type ListboxDropdownProps, MenuBar, NotificationHub, type NotificationHubProps, OneTimePasswordInput, Popover, Progress, RadioGroup, type RadioGroupProps, Resizable, ScrollArea, SearchBar, type SearchBarProps, Select, Separator, Sheet, Slider, Spinner, SpinnerIcon, StatisticCard, Switch, Table, Tabs, TextArea, type TextAreaProps, ThemeToggle, type ThemeToggleProps, Tooltip, badgeVariants, buttonVariants, labelVariants };