@nxgt/material 3.68.0 → 3.70.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 (94) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +5 -4
  3. package/dist/{alert-dialog-BhARh_qC.js → alert-dialog-CBkWG32g.js} +1 -1
  4. package/dist/{async-slice-CHyRU5V3.js → async-slice-CNZ3N55P.js} +1 -1
  5. package/dist/{button-Du7fJ9i_.js → button-D3qzqDY_.js} +1 -1
  6. package/dist/charts.js +3 -3
  7. package/dist/{chip-BVB6UYl-.js → chip-CMTe4sQd.js} +2 -2
  8. package/dist/{code-editor-D-GBs2yu.js → code-editor-Cs7mz1J-.js} +5 -5
  9. package/dist/code-editor.js +5 -5
  10. package/dist/{code-language-items-xrgq1Am0.js → code-language-items-D_QMgjVy.js} +2 -2
  11. package/dist/{components-iNCh4A6M.js → components-BbWcozcj.js} +17652 -17382
  12. package/dist/components.js +28 -28
  13. package/dist/{dialog-DFY_nsqF.js → dialog-B3BSdRci.js} +4 -4
  14. package/dist/dnd.js +1 -1
  15. package/dist/{dropdown-menu-B6Yh4XJu.js → dropdown-menu-BaupOWgS.js} +1 -1
  16. package/dist/editor.js +661 -661
  17. package/dist/{empty-state-DGtwE50c.js → empty-state-B2Um5UpI.js} +2 -2
  18. package/dist/{field-blur-Br7ij-a1.js → field-blur-1XLyxRPr.js} +1 -1
  19. package/dist/{field-blur-context-CucMAZLj.js → field-blur-context-XNvCDnMT.js} +1 -1
  20. package/dist/{hooks-CYQJkKGc.js → hooks-BU21Jpaa.js} +2 -2
  21. package/dist/hooks.js +2 -2
  22. package/dist/{hover-card-C2J0GwWf.js → hover-card-Bvm3svX9.js} +1 -1
  23. package/dist/i18n.js +3 -3
  24. package/dist/{icon-badge-LzO5K6Wu.js → icon-badge-wip9bfa2.js} +3 -3
  25. package/dist/{icon-button-vLJ4YrEW.js → icon-button-QwIeBTdw.js} +1 -1
  26. package/dist/lib/components/ui/collections/filter/use-filter-field-config.d.ts +3 -3
  27. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  28. package/dist/lib/components/ui/fields/country-field/index.d.ts +2 -0
  29. package/dist/lib/components/ui/fields/country-field/iso-countries.d.ts +2 -0
  30. package/dist/lib/components/ui/fields/index.d.ts +1 -0
  31. package/dist/lib/components/ui/fields/phone-field/index.d.ts +1 -1
  32. package/dist/lib/components/ui/fields/phone-field/parse-phone.d.ts +2 -0
  33. package/dist/lib/components/ui/fields/phone-field/phone-field.d.ts +8 -1
  34. package/dist/lib/components/ui/fields/phone-field/phone-form-field.d.ts +8 -1
  35. package/dist/lib/components/ui/fields/phone-field/use-phone-value.d.ts +2 -1
  36. package/dist/lib/components/ui/fields/postal-address/utils.d.ts +15 -0
  37. package/dist/lib/components/ui/fields/quantity-field/index.d.ts +3 -0
  38. package/dist/lib/components/ui/fields/quantity-field/quantity-field.d.ts +8 -0
  39. package/dist/lib/components/ui/fields/quantity-field/quantity-form-field.d.ts +8 -0
  40. package/dist/lib/components/ui/fields/quantity-field/quantity-row.d.ts +13 -0
  41. package/dist/lib/components/ui/fields/quantity-field/quantity-unit.d.ts +12 -0
  42. package/dist/lib/components/ui/fields/quantity-field/quantity-value.d.ts +9 -0
  43. package/dist/lib/components/ui/fields/quantity-field/types.d.ts +45 -0
  44. package/dist/lib/components/ui/media/upload/index.d.ts +1 -0
  45. package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.d.ts +6 -1
  46. package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.errors.d.ts +8 -0
  47. package/dist/lib/components/ui/media/upload/network-upload-field/network-upload-field.utils.d.ts +2 -7
  48. package/dist/lib/components/ui/media/upload/network-upload-field/use-start-upload.d.ts +7 -3
  49. package/dist/lib/components/ui/media/upload/network-upload-field/use-upload-item-handlers.d.ts +2 -1
  50. package/dist/lib/components/ui/media/upload/s3-upload-field/s3-upload-field.d.ts +2 -5
  51. package/dist/lib/components/ui/media/upload/s3-upload-field/s3-upload-field.utils.d.ts +26 -1
  52. package/dist/lib/components/ui/media/upload/upload-error.d.ts +33 -0
  53. package/dist/lib/components/ui/selection/autocomplete/autocomplete-enter.d.ts +18 -0
  54. package/dist/lib/components/ui/selection/autocomplete/partials/autocomplete-chip-input.d.ts +2 -1
  55. package/dist/lib/components/ui/selection/autocomplete/partials/autocomplete-text-input.d.ts +2 -1
  56. package/dist/lib/components/ui/selection/autocomplete/types.d.ts +3 -1
  57. package/dist/lib/components/ui/widgets/education/questions/partials/question-content.d.ts +1 -1
  58. package/dist/lib/components/ui/widgets/education/questions/question-text.d.ts +1 -1
  59. package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
  60. package/dist/lib/components/ui/widgets/education/questions/types.d.ts +10 -0
  61. package/dist/lib/i18n/resources/en/en.d.ts +9 -0
  62. package/dist/lib/i18n/resources/en/material.json.d.ts +10 -1
  63. package/dist/lib/i18n/resources/fr/fr.d.ts +9 -0
  64. package/dist/lib/i18n/resources/fr/material.json.d.ts +10 -1
  65. package/dist/lib/i18n/resources/resources.d.ts +18 -0
  66. package/dist/lib/i18n/translator.d.ts +1 -1
  67. package/dist/lib.js +1 -1
  68. package/dist/main.js +42 -42
  69. package/dist/map.js +8 -8
  70. package/dist/pdf-reader.js +1 -1
  71. package/dist/print.js +1 -1
  72. package/dist/{public-BHthpdpe.js → public-BuGgOtAl.js} +9 -9
  73. package/dist/{rich-code-block-DoW7l2ND.js → rich-code-block-DdHqzzek.js} +5 -5
  74. package/dist/{sortable-provider-FLNMfr0o.js → sortable-provider-DMyaSfZZ.js} +2 -2
  75. package/dist/{spinner-DCgDw8eq.js → spinner-ByYdcukU.js} +1 -1
  76. package/dist/theme-picker.js +2 -2
  77. package/dist/{theme-toggle-BMDAwMLh.js → theme-toggle-DB3aZZnO.js} +1 -1
  78. package/dist/{toolbar-items-CkPEhQq7.js → toolbar-items-DbzIKjo7.js} +3 -3
  79. package/dist/{translate-material-DkcuQBNr.js → translate-material-Dh7MYkHT.js} +1 -1
  80. package/dist/{translator-DXdVRdMm.js → translator-Byhohi1S.js} +20 -2
  81. package/dist/{typography-BNS_IbFI.js → typography-rUf0mE5a.js} +1 -1
  82. package/dist/{use-chat-composer-B-tGRLkI.js → use-chat-composer-uUUTRB3Z.js} +2401 -2343
  83. package/dist/{use-heading-spy-DaqibCCm.js → use-heading-spy-CVzW2NM3.js} +4 -4
  84. package/dist/{use-material-translation-Bxl8sv1n.js → use-material-translation-BAYyZOcH.js} +1 -1
  85. package/dist/{use-return-focus-Y_Kx0QlW.js → use-return-focus-CQAuk9kh.js} +1 -1
  86. package/docs/components/form-fields.md +97 -3
  87. package/docs/components/media-and-files.md +55 -9
  88. package/docs/components/rich-widgets.md +2 -1
  89. package/docs/components/selection-and-choice.md +10 -3
  90. package/docs/guides/forms.md +4 -3
  91. package/docs/previews/form-fields-quantityfield.webp +0 -0
  92. package/docs/roadmap.md +3 -0
  93. package/docs/troubleshooting.md +11 -4
  94. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @nxgt/material
2
2
 
3
+ ## 3.70.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2125](https://github.com/softistx/nxgt-material/pull/2125) [`9d64782`](https://github.com/softistx/nxgt-material/commit/9d64782b4e5abc2e498274a995916d99b29bdb2a) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Postal address helpers: `formatPostalAddress(address, { language, separator? })` returns one line for a read view, ordered by the country's convention (postal code before the city in FR, BE, CH, DE and others; after it in GB, US, CA, IE, AU, NZ, IN) with the country named in the language like `postalAddressCountryName`, empty parts skipped. `ISO_COUNTRY_CODES` and an `isCountryCode(code)` type guard are now exported, so an app no longer keeps its own copy of the 249 codes. Additive ([#2122](https://github.com/softistx/nxgt-material/issues/2122)).
8
+
9
+ - [#2124](https://github.com/softistx/nxgt-material/pull/2124) [`98b5af8`](https://github.com/softistx/nxgt-material/commit/98b5af8ad420b71b1e15493272e8f7ad25bf559c) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `PhoneFormField` now refuses an incomplete number. A non-empty draft that is not yet a possible number for its country is a field error (`material.phone-field.incomplete`: « Incomplete number » / « Numéro incomplet ») that blocks the submit, instead of validating as `null` and clearing the stored phone. An empty field is still `null`. `PhoneField` gains `onValidityChange(incomplete)` for use outside React Hook Form, and `isIncompletePhone(raw, iso)` is exported. `PhoneFormField` also takes `rules`. Additive: a user who never types half a number sees no change.
10
+
11
+ - [#2119](https://github.com/softistx/nxgt-material/pull/2119) [`a0cf9da`](https://github.com/softistx/nxgt-material/commit/a0cf9da2a1f49d2ca85f038cd9680cf670c1d802) Thanks [@SteveGT96](https://github.com/SteveGT96)! - The upload fields word transport errors in the active language. The S3 helpers (`putFileWithProgress`, `postFileWithProgress`, `uploadToTarget`) now reject with an `UploadError` (`kind`: `status` | `network` | `aborted`, with `status` and the S3 `code`), mapped to the new `material.upload.error-status`, `error-status-code`, `error-network` and `error-aborted` keys (en and fr); `error.message` is unchanged, and an abort is now an `UploadError` named `AbortError` (no longer a `DOMException`: test `name === 'AbortError'` or `kind === 'aborted'`), and an abort without a Remove (unmount) shows `error-aborted` with Retry. A plain `Error` from your own `onUpload` keeps its message. New exports: `UploadError`, `UploadErrorKind`, `isUploadError` (a structural guard that also recognises an error from another copy of the package) ([#2098](https://github.com/softistx/nxgt-material/issues/2098)).
12
+
13
+ ## 3.69.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [#2107](https://github.com/softistx/nxgt-material/pull/2107) [`6223e1f`](https://github.com/softistx/nxgt-material/commit/6223e1f1f87d686e31b87a25a871664c287161ee) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `QuantityField` and `QuantityFormField`: one labelled field holding an amount and its unit, with the value `{ value: number | null, unit: string }`. One `<fieldset>` named by the one label; the number is a `NumberField`'s (locale decimal, `min`, `max`, `step`, steppers named after the field), the unit a picker over `units` or, with `allowCustomUnit`, a text input suggesting them. One message under the pair describes the group, the number and the unit through `aria-describedby`; in a form an error on `name`, `name.value` or `name.unit` shows there. Both parts stay on one line on a phone. English and French `material.quantity-field.*` strings ([#2093](https://github.com/softistx/nxgt-material/issues/2093)).
18
+
19
+ - [#2118](https://github.com/softistx/nxgt-material/pull/2118) [`70e3649`](https://github.com/softistx/nxgt-material/commit/70e3649854c4cd7dee8351dd67e087206f771f49) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Add `preview` to `QuestionCard`: an author's read-only view that shows the marks (the right options marked, the expected text or number filled in) and the `explanation`, with no verdict banner (a passed `verdict` is ignored), for all question kinds. An `open` or `code` question has no `correct`, so its `value` (the reference answer) is shown as given. Replaces passing `revealed`, the right answer as `value` and `showFeedback={false}` by hand ([#2116](https://github.com/softistx/nxgt-material/issues/2116)).
20
+
21
+ - [#2096](https://github.com/softistx/nxgt-material/pull/2096) [`236c99e`](https://github.com/softistx/nxgt-material/commit/236c99e13de71e7e3f1947d8fc72fb38b5c7bf04) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `S3UploadField`, `S3UploadFormField`, `ImageS3Field`, `ImageS3FormField`, `FileListS3Field` and `FileListS3FormField` accept a presigned POST target: `getPresignedUrl` may return `{ method: 'POST', url, fields, value }`, sent as `multipart/form-data` with `fields` in order and the file last as `file`, storing `value` (the key). The PUT shape `{ uploadUrl, publicUrl, headers? }` is unchanged. Progress, retry, cancel and errors are shared; a refused policy reports `Upload failed with status 400 (EntityTooLarge)`. New exports: `PresignedPutTarget`, `PresignedPostTarget`. CORS (`POST`) and CSP `connect-src` are documented ([#2084](https://github.com/softistx/nxgt-material/issues/2084)). `PresignedUploadTarget` is now a union; code that reads `uploadUrl`/`headers` from it narrows on `method !== 'POST'` or uses `PresignedPutTarget`.
22
+
23
+ - [#2110](https://github.com/softistx/nxgt-material/pull/2110) [`53c0248`](https://github.com/softistx/nxgt-material/commit/53c0248e4f6bd5999900292cab4f2b78679cb983) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Cancelling an upload now aborts it. `onUpload` of `NetworkUploadField`, `ImageField` and `FileListField` receives an `AbortSignal` as an optional third argument, aborted when an uploading row is removed or the field unmounts, and the S3 fields abort their request. An aborted upload is neither an error nor a committed value. Additive: an `onUpload` that ignores the signal behaves as before (its late value is dropped).
24
+
25
+ Also fixes the Remove button of an uploading row, which the row's `pointer-events-none` made unclickable with a mouse.
26
+
27
+ ### Patch Changes
28
+
29
+ - [#2111](https://github.com/softistx/nxgt-material/pull/2111) [`6910881`](https://github.com/softistx/nxgt-material/commit/6910881892884679743752f3178d503ddbc81ecf) Thanks [@SteveGT96](https://github.com/SteveGT96)! - Autocomplete: Enter in the input no longer submits the surrounding form while it has something to do. With `freeSolo` it adds the typed text (as the "Add" button does), it picks a highlighted option, and with the list open it is only default-prevented. Enter on a closed list with nothing typed still submits, as in a plain input ([#2099](https://github.com/softistx/nxgt-material/issues/2099)).
30
+
3
31
  ## 3.68.0
4
32
 
5
33
  ### Minor Changes
package/README.md CHANGED
@@ -573,8 +573,9 @@ Not components: what the stylesheet gives any element.
573
573
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-passwordfield.webp" width="120" alt="PasswordField"> | [`PasswordField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#passwordfield) · `PasswordFormField` | Show / hide toggle and an optional strength meter (`scorePassword`). | `PasswordField`, `PasswordFormField` |
574
574
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-numberfield.webp" width="120" alt="NumberField"> | [`NumberField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#numberfield) · `NumberFormField` | Emits `number \| null`, with min / max / step clamping, +/− buttons and a suffix. | `NumberField`, `NumberFormField` |
575
575
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-percentfield.webp" width="120" alt="PercentField"> | [`PercentField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#percentfield) · `PercentFormField` | `NumberField` with a `%` suffix. | `PercentField`, `PercentFormField` |
576
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-quantityfield.webp" width="120" alt="QuantityField"> | [`QuantityField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#quantityfield) · `QuantityFormField` | One labelled field holding an amount and its unit: a `NumberField` and a unit picker (or a typed unit) in one group, with one error message. | not yet |
576
577
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-currencyfield.webp" width="120" alt="CurrencyField"> | [`CurrencyField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#currencyfield) · `CurrencyFormField` | Amount formatted to the locale on blur, with the currency's own decimals and a currency suffix (EUR by default). | `CurrencyField`, `CurrencyFormField` |
577
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-phonefield.webp" width="120" alt="PhoneField"> | [`PhoneField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#phonefield) · `PhoneFormField` | International number with a country picker (the code a 32px pill in a 44px field box, its list connected); emits E.164. | `PhoneField`, `PhoneFormField` |
578
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-phonefield.webp" width="120" alt="PhoneField"> | [`PhoneField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#phonefield) · `PhoneFormField` | International number with a country picker (the code a 32px pill in a 44px field box, its list connected); emits E.164; `PhoneFormField` refuses a half-typed number (`onValidityChange`, `isIncompletePhone`). | `PhoneField`, `PhoneFormField` |
578
579
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-urlfield.webp" width="120" alt="UrlField"> | [`UrlField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#urlfield) · `UrlFormField` | Validates on blur; open-in-new-tab and copy buttons. | `UrlField`, `UrlFormField` |
579
580
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-searchfield.webp" width="120" alt="SearchField"> | [`SearchField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#searchfield) · `SearchFormField` | 44px field box with the search icon in its lead well, a clear button and a spinner, with a debounced `onValueChange`. | `SearchField`, `SearchFormField` |
580
581
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/form-fields-colorfield.webp" width="120" alt="ColorField"> | [`ColorField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/form-fields.md#colorfield) · `ColorFormField` | Hex input with a colour picker in a popover. | `ColorField`, `ColorFormField` |
@@ -762,12 +763,12 @@ Not components: what the stylesheet gives any element.
762
763
 
763
764
  | Preview | Component | What it does | @nxgt/material-vue |
764
765
  | --- | --- | --- | --- |
765
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-s3uploadfield.webp" width="120" alt="S3UploadField"> | [`S3UploadField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#s3uploadfield-networkuploadfield), `NetworkUploadField` · `S3UploadFormField`, `NetworkUploadFormField` | Drag-and-drop uploader with progress, retry, previews and size / count limits. The S3 variant uploads through a presigned PUT. | `S3UploadField`, `NetworkUploadField`, `S3UploadFormField`, `NetworkUploadFormField` |
766
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-s3uploadfield.webp" width="120" alt="S3UploadField"> | [`S3UploadField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#s3uploadfield-networkuploadfield), `NetworkUploadField` · `S3UploadFormField`, `NetworkUploadFormField` | Drag-and-drop uploader with progress, retry, previews and size / count limits. The S3 variant uploads through a presigned PUT or POST policy. | `S3UploadField`, `NetworkUploadField`, `S3UploadFormField`, `NetworkUploadFormField` (S3 variants PUT only, #2095) |
766
767
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-uploadfield.webp" width="120" alt="UploadField"> | [`UploadField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#uploadfield) · `UploadFormField` | Labelled file input showing the chosen file's name. | `UploadField`, `UploadFormField` |
767
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-filelist.webp" width="120" alt="FileList"> | [`FileList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#filelist), `FileListField`, `FileListS3Field` · `FileListFormField`, `FileListS3FormField` | File list with type icons, size, download and remove. The field variants upload with progress. | `FileList`, `FileListField`, `FileListS3Field`, `FileListFormField`, `FileListS3FormField` |
768
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-filelist.webp" width="120" alt="FileList"> | [`FileList`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#filelist), `FileListField`, `FileListS3Field` · `FileListFormField`, `FileListS3FormField` | File list with type icons, size, download and remove. The field variants upload with progress. | `FileList`, `FileListField`, `FileListS3Field`, `FileListFormField`, `FileListS3FormField` (S3 variants PUT only, #2095) |
768
769
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-filepreview.webp" width="120" alt="FilePreview"> | [`FilePreview`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#filepreview) | One file previewed by its MIME type or extension: image, PDF (lazy `PdfReader`), video, audio, text / JSON / CSV / Markdown, or a card with a download link. SSR-safe. | `FilePreview` |
769
770
  | — | [`FilesFormField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#filesformfield) | Free-solo autocomplete of file URLs, with image thumbnails. | `FilesFormField` |
770
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-imagefield.webp" width="120" alt="ImageField"> | [`ImageField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#imagefield), `ImageS3Field` · `ImageFormField`, `ImageS3FormField` | Single image upload with preview and progress. | `ImageField`, `ImageS3Field`, `ImageFormField`, `ImageS3FormField` |
771
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-imagefield.webp" width="120" alt="ImageField"> | [`ImageField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#imagefield), `ImageS3Field` · `ImageFormField`, `ImageS3FormField` | Single image upload with preview and progress. | `ImageField`, `ImageS3Field`, `ImageFormField`, `ImageS3FormField` (S3 variants PUT only, #2095) |
771
772
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-imagecropper.webp" width="120" alt="ImageCropper"> | [`ImageCropper`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#imagecropper), `ImageCropperDialog` | Crop with zoom, rotation, aspect presets and a round shape; outputs a `File`. | `ImageCropper`, `ImageCropperDialog` |
772
773
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-imageeditor.webp" width="120" alt="ImageEditor"> | [`ImageEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#imageeditor), `ImageEditorDialog` | Photo editor: live histogram and one-tap Auto, light and colour adjustments, filter presets, crop and rotate, markup (pen, shapes, arrows, text, redaction), before / after split, keyboard shortcuts, undo and export. Responsive; non-destructive: the edits come back with the file. | — |
773
774
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/media-files-gallery.webp" width="120" alt="Gallery"> | [`Gallery`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/media-and-files.md#gallery-lightboxgallery-minigallery), `LightboxGallery`, `MiniGallery` | Image / video gallery (grid, masonry, justified, quilted, woven, carousel…) with a lightbox, selection and shaped tiles (opt-in `galleries.css`). | `Gallery`, `LightboxGallery`, `MiniGallery` |
@@ -3,7 +3,7 @@ import { t } from "./utils-BLfntITJ.js";
3
3
  import { o as n } from "./dist-DVRQkaTK.js";
4
4
  import { c as r, s as i } from "./dist-lmHmz_bu.js";
5
5
  import { t as a } from "./in-dialog-Vwkyp-M5.js";
6
- import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-Y_Kx0QlW.js";
6
+ import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-CQAuk9kh.js";
7
7
  import { i as _ } from "./escape-owner-DpaP0lm1.js";
8
8
  import * as v from "react";
9
9
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { l as e, r as t, s as n, u as r } from "./translator-DXdVRdMm.js";
1
+ import { l as e, r as t, s as n, u as r } from "./translator-Byhohi1S.js";
2
2
  import { t as i } from "./_baseIsEqual-C6ksIHya.js";
3
3
  import { useMemo as a } from "react";
4
4
  import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { n as t, t as n } from "./dist-DVRQkaTK.js";
3
- import { n as r, r as i, t as a } from "./spinner-DCgDw8eq.js";
3
+ import { n as r, r as i, t as a } from "./spinner-ByYdcukU.js";
4
4
  import { a as o, i as s, n as c, o as l, s as u, t as d } from "./use-click-lock-BZYtTmVt.js";
5
5
  import { t as f } from "./is-production-GLw59WU8.js";
6
6
  import { t as p } from "./button-group-context-CaP0X5p_.js";
package/dist/charts.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./ui.utils-CAnKTCw5.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { t as n } from "./warn-once-C_e47JM8.js";
4
- import { t as r } from "./button-Du7fJ9i_.js";
5
- import { t as i } from "./use-material-translation-Bxl8sv1n.js";
4
+ import { t as r } from "./button-D3qzqDY_.js";
5
+ import { t as i } from "./use-material-translation-BAYyZOcH.js";
6
6
  import { t as a } from "./use-ssr-media-query-C6M5m8sf.js";
7
7
  import { i as o, n as s, r as c, t as l } from "./util-4heV2LPI.js";
8
8
  import { t as u } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
9
- import { t as d } from "./chip-BVB6UYl-.js";
9
+ import { t as d } from "./chip-CMTe4sQd.js";
10
10
  import { c as f, d as p, f as m, i as h, o as g, p as _, s as v, t as y } from "./line-path-C5pZGC49.js";
11
11
  import { t as b } from "./live-status-BGPaN8r8.js";
12
12
  import { t as x } from "./linear-G97mfnKF.js";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { r as t } from "./spinner-DCgDw8eq.js";
2
+ import { r as t } from "./spinner-ByYdcukU.js";
3
3
  import { s as n } from "./use-click-lock-BZYtTmVt.js";
4
- import { t as r } from "./use-material-translation-Bxl8sv1n.js";
4
+ import { t as r } from "./use-material-translation-BAYyZOcH.js";
5
5
  import { t as i } from "./react-node-text-Crkpfpco.js";
6
6
  import { cloneElement as a, isValidElement as o } from "react";
7
7
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -1,12 +1,12 @@
1
1
  import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { a as n } from "./dist-lmHmz_bu.js";
4
- import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-B6Yh4XJu.js";
5
- import { a as c, i as l, n as u } from "./field-blur-context-CucMAZLj.js";
6
- import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-CkPEhQq7.js";
4
+ import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-BaupOWgS.js";
5
+ import { a as c, i as l, n as u } from "./field-blur-context-XNvCDnMT.js";
6
+ import { a as d, d as f, r as p, t as m, u as h } from "./toolbar-items-DbzIKjo7.js";
7
7
  import { t as g } from "./is-production-GLw59WU8.js";
8
- import { t as _ } from "./use-material-translation-Bxl8sv1n.js";
9
- import { i as v, n as y, o as b, t as x } from "./code-language-items-xrgq1Am0.js";
8
+ import { t as _ } from "./use-material-translation-BAYyZOcH.js";
9
+ import { i as v, n as y, o as b, t as x } from "./code-language-items-D_QMgjVy.js";
10
10
  import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
11
11
  import { n as C, t as w } from "./escape-owner-DpaP0lm1.js";
12
12
  import { t as T } from "./skeleton-DSdtr2qc.js";
@@ -1,14 +1,14 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { a as t } from "./dist-lmHmz_bu.js";
3
- import { d as n, r, t as i, u as a } from "./toolbar-items-CkPEhQq7.js";
4
- import { t as o } from "./use-material-translation-Bxl8sv1n.js";
5
- import { i as s, n as c, o as l } from "./code-language-items-xrgq1Am0.js";
6
- import { r as u, t as d } from "./field-blur-Br7ij-a1.js";
3
+ import { d as n, r, t as i, u as a } from "./toolbar-items-DbzIKjo7.js";
4
+ import { t as o } from "./use-material-translation-BAYyZOcH.js";
5
+ import { i as s, n as c, o as l } from "./code-language-items-D_QMgjVy.js";
6
+ import { r as u, t as d } from "./field-blur-1XLyxRPr.js";
7
7
  import { t as f } from "./skeleton-DSdtr2qc.js";
8
8
  import { t as p } from "./live-status-BGPaN8r8.js";
9
9
  import { t as m } from "./use-mobile-BDro060N.js";
10
10
  import { t as h } from "./react-node-text-Crkpfpco.js";
11
- import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-D-GBs2yu.js";
11
+ import { a as g, c as _, d as v, f as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, t as D, u as O } from "./code-editor-Cs7mz1J-.js";
12
12
  import { useEffect as k, useRef as A, useState as j } from "react";
13
13
  import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
14
14
  import { getCspNonce as F } from "@nxgt/material-core/csp-nonce";
@@ -1,5 +1,5 @@
1
- import { d as e, f as t } from "./dropdown-menu-B6Yh4XJu.js";
2
- import { t as n } from "./use-material-translation-Bxl8sv1n.js";
1
+ import { d as e, f as t } from "./dropdown-menu-BaupOWgS.js";
2
+ import { t as n } from "./use-material-translation-BAYyZOcH.js";
3
3
  import { t as r } from "./live-status-BGPaN8r8.js";
4
4
  import { useEffect as i, useRef as a, useState as o } from "react";
5
5
  import { jsx as s } from "react/jsx-runtime";