@nxgt/material 2.4.2 → 2.6.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 (210) hide show
  1. package/README.md +28 -21
  2. package/dist/{_Uint8Array-DEXn42kj.js → _Uint8Array-CDlDeQmw.js} +1 -1
  3. package/dist/_overRest-CWIWQwDJ.js +81 -0
  4. package/dist/{abnfDiagram-O67JEVCF-C7NxOWqd.js → abnfDiagram-O67JEVCF-Cl4ukf6a.js} +4 -4
  5. package/dist/{architectureDiagram-NJMV4G6O-BIvwyzEh.js → architectureDiagram-NJMV4G6O-WmFlBQF5.js} +7 -7
  6. package/dist/{client-only.utils-DhcBUmau.js → async-slice-Qoen0Mqm.js} +164 -93
  7. package/dist/{blockDiagram-BEXU5L5S-CzgMFdtn.js → blockDiagram-BEXU5L5S-_6EVgQ2-.js} +11 -11
  8. package/dist/{c4Diagram-YGBWAQC7-WgqlRIL5.js → c4Diagram-YGBWAQC7-D9xSt2QO.js} +8 -8
  9. package/dist/{channel-Ba8pEAWx.js → channel-Dg92Hoym.js} +1 -1
  10. package/dist/{chunk-3FUC2YCW-DnIzetwB.js → chunk-3FUC2YCW-CRQHl-Jx.js} +8 -8
  11. package/dist/{chunk-5DYCD2WN-Bqi3iL5i.js → chunk-5DYCD2WN-Cja1INgd.js} +3 -3
  12. package/dist/{chunk-6AEJRKK7-DDXoGWDs.js → chunk-6AEJRKK7-3YWRP4aV.js} +2 -2
  13. package/dist/{chunk-742MDFTN-nG_ROTnT.js → chunk-742MDFTN-Cs1qGiTK.js} +2 -2
  14. package/dist/{chunk-7INBJB4K-Dg64CbhT.js → chunk-7INBJB4K-BY5n77ka.js} +6 -6
  15. package/dist/{chunk-7M6MHVWA-CPdb6LVf.js → chunk-7M6MHVWA-DqXpf6CM.js} +9 -9
  16. package/dist/{chunk-7PRAP22T-DIiYRAce.js → chunk-7PRAP22T-_Av9vcXz.js} +1 -1
  17. package/dist/{chunk-GNY47TPC-CxWZwDbp.js → chunk-GNY47TPC-BgMsLbCS.js} +11 -11
  18. package/dist/{chunk-GTNCS2PH-CzDYTYNy.js → chunk-GTNCS2PH-BZ9WMD1v.js} +3 -3
  19. package/dist/{chunk-GWA4HPMP-CmsxMX3A.js → chunk-GWA4HPMP-Co-A6dtV.js} +3 -3
  20. package/dist/{chunk-MBY4JIJT-IA2XBafa.js → chunk-MBY4JIJT-C3RQP_Nk.js} +4 -4
  21. package/dist/{chunk-NETBCI7D-Cq92-0cA.js → chunk-NETBCI7D-CsyH43bj.js} +1 -1
  22. package/dist/{chunk-O7XYJQB3-C87zK8E5.js → chunk-O7XYJQB3-A66QSOPA.js} +1 -1
  23. package/dist/{chunk-UA2S7LBM-B0LGFGu3.js → chunk-UA2S7LBM-BNeHeMx9.js} +6 -6
  24. package/dist/{chunk-WEXAMYUT-C-QP0DFq.js → chunk-WEXAMYUT-CucJfehv.js} +2 -2
  25. package/dist/{chunk-XXDRQBXY-Bq4sFnO2.js → chunk-XXDRQBXY-FgXU14Bh.js} +1 -1
  26. package/dist/{chunk-Z7XXMR3K-vh8Pvgr_.js → chunk-Z7XXMR3K-CoCjTVVx.js} +8 -8
  27. package/dist/{chunk-ZIGJFQKS-HDJ6e6OJ.js → chunk-ZIGJFQKS-C3xUAXJq.js} +3 -3
  28. package/dist/{classDiagram-v2-NBCMYWYE-BSyQx7Df.js → classDiagram-v2-NBCMYWYE-j4vk04t-.js} +14 -14
  29. package/dist/{components-C3jpOwPw.js → components-C3wIUrWw.js} +26931 -25668
  30. package/dist/components.js +6 -6
  31. package/dist/{cose-bilkent-JH36ORCC-11-T1rfk.js → cose-bilkent-JH36ORCC-DRUT3qBb.js} +2 -2
  32. package/dist/{cynefinDiagram-VND7K2PF-1kHi2rGa.js → cynefinDiagram-VND7K2PF-B9HrdQW8.js} +4 -4
  33. package/dist/{dagre-6A5THRUB-BDk37t1_.js → dagre-6A5THRUB-DXq_YBNL.js} +572 -613
  34. package/dist/{diagram-22UHCM2B-BvH24G-C.js → diagram-22UHCM2B-He8NDldw.js} +15 -15
  35. package/dist/{diagram-3UASUU5V-DAKVPT0Q.js → diagram-3UASUU5V-CeILva4U.js} +7 -7
  36. package/dist/{diagram-ATOU4E4O-Clju_0RY.js → diagram-ATOU4E4O-CNY-8kl0.js} +3 -3
  37. package/dist/{diagram-CDSNMT55-w7kkJ6MU.js → diagram-CDSNMT55-C8Mk1smi.js} +5 -5
  38. package/dist/{diagram-MLGK6HIB-mUOtRVmm.js → diagram-MLGK6HIB-CpfeILwW.js} +4 -4
  39. package/dist/{diagram-MPIPVDR6-DEUw58dq.js → diagram-MPIPVDR6-Do7bUnTd.js} +4 -4
  40. package/dist/{dist-gYpAi-su.js → dist-C3YK_ean.js} +1 -1
  41. package/dist/{dist-CeHNxLJG.js → dist-CRbPtqwD.js} +1 -1
  42. package/dist/dnd.js +1 -1
  43. package/dist/{ebnfDiagram-ZINNZB2B-BYfatie5.js → ebnfDiagram-ZINNZB2B-1GewX9Zq.js} +4 -4
  44. package/dist/{elk-276RUBZZ-CtsHzWCy.js → elk-276RUBZZ-DFn4kTey.js} +13 -13
  45. package/dist/{erDiagram-OPXOYQCR-DTrqayuU.js → erDiagram-OPXOYQCR-BzVUcUwh.js} +14 -14
  46. package/dist/{field-blur-EUOqpHbF.js → field-blur-BlrE9fOD.js} +1109 -1083
  47. package/dist/flowDiagram-KWPJA3E3-B4pJCj2Q.js +17 -0
  48. package/dist/{ganttDiagram-FUAMR5RP-DxWSt8R4.js → ganttDiagram-FUAMR5RP-B4A4UFFi.js} +6 -6
  49. package/dist/{gitGraphDiagram-X574FWY7-DcGaPSwy.js → gitGraphDiagram-X574FWY7-80yOq8dE.js} +3 -3
  50. package/dist/{graphlib-BOTXrGOf.js → graphlib-CQ3hLS1N.js} +103 -139
  51. package/dist/hooks.js +2 -2
  52. package/dist/{i18n-provider-XTTU9ArK.js → i18n-provider-CbYD2KxP.js} +1 -1
  53. package/dist/i18n.js +6 -6
  54. package/dist/{icon-button-Dl9PDYCE.js → icon-button-BxySFfrr.js} +581 -581
  55. package/dist/{infoDiagram-VRGFBTTK-Cvj167dl.js → infoDiagram-VRGFBTTK-Cboh-B9n.js} +3 -3
  56. package/dist/isArrayLikeObject-5rnYwEK7.js +28 -0
  57. package/dist/isEmpty-DChvniYe.js +53 -0
  58. package/dist/{ishikawaDiagram-OU5B5YK6-ChBwjCfr.js → ishikawaDiagram-OU5B5YK6-DwTd1YxL.js} +4 -4
  59. package/dist/{journeyDiagram-ZHPQQLJL-BycdRLE6.js → journeyDiagram-ZHPQQLJL-C91SPPkY.js} +4 -4
  60. package/dist/{kanban-definition-PNTS6WVX-BRoa-Yp5.js → kanban-definition-PNTS6WVX-S8plI4wn.js} +10 -10
  61. package/dist/lib/components/ui/actions/button/button.compound-variants.d.ts +114 -0
  62. package/dist/lib/components/ui/actions/button/button.d.ts +4 -7
  63. package/dist/lib/components/ui/actions/button/button.variants.d.ts +7 -0
  64. package/dist/lib/components/ui/actions/button/has-text-content.d.ts +10 -0
  65. package/dist/lib/components/ui/actions/icon-button/icon-button.variants.d.ts +1 -1
  66. package/dist/lib/components/ui/collections/data-table/data-table-context.d.ts +4 -0
  67. package/dist/lib/components/ui/collections/data-table/data-table-pagination.d.ts +3 -1
  68. package/dist/lib/components/ui/collections/data-table/data-table.d.ts +12 -2
  69. package/dist/lib/components/ui/collections/data-table/hooks.d.ts +13 -13
  70. package/dist/lib/components/ui/collections/data-table/partials/data-table-body.d.ts +9 -5
  71. package/dist/lib/components/ui/collections/data-table/partials/data-table-empty-row.d.ts +14 -0
  72. package/dist/lib/components/ui/collections/data-table/partials/data-table-skeleton-rows.d.ts +7 -0
  73. package/dist/lib/components/ui/collections/filter/filter-field-number-range.d.ts +15 -0
  74. package/dist/lib/components/ui/collections/pagination/index.d.ts +1 -1
  75. package/dist/lib/components/ui/collections/pagination/pagination.d.ts +9 -1
  76. package/dist/lib/components/ui/collections/tree/use-tree.d.ts +2 -0
  77. package/dist/lib/components/ui/dates/date-range-field/date-range-field-trigger.d.ts +1 -1
  78. package/dist/lib/components/ui/dates/date-range-field/date-range-field.d.ts +10 -1
  79. package/dist/lib/components/ui/dates/date-range-field/date-range-field.utils.d.ts +13 -0
  80. package/dist/lib/components/ui/dates/date-range-field/index.d.ts +1 -0
  81. package/dist/lib/components/ui/dates/date-range-field/partials/date-range-field-content.d.ts +25 -0
  82. package/dist/lib/components/ui/dates/date-range-field/partials/date-range-presets.d.ts +11 -0
  83. package/dist/lib/components/ui/dates/date-range-field/partials/date-range-times.d.ts +11 -0
  84. package/dist/lib/components/ui/dates/date-range-field/use-date-range-presets.d.ts +22 -0
  85. package/dist/lib/components/ui/dates/time-picker/time-picker-utils.d.ts +7 -0
  86. package/dist/lib/components/ui/display/chip/chip.d.ts +1 -1
  87. package/dist/lib/components/ui/feedback/toast/toast.d.ts +9 -4
  88. package/dist/lib/components/ui/fields/number-field/number-field.d.ts +3 -1
  89. package/dist/lib/components/ui/fields/otp-field/index.d.ts +1 -0
  90. package/dist/lib/components/ui/fields/otp-field/input-otp.d.ts +1 -1
  91. package/dist/lib/components/ui/fields/slider/slider-header.d.ts +19 -0
  92. package/dist/lib/components/ui/fields/slider/slider-readout.d.ts +5 -1
  93. package/dist/lib/components/ui/fields/slider/slider.d.ts +7 -0
  94. package/dist/lib/components/ui/fields/switch/switch.d.ts +7 -0
  95. package/dist/lib/components/ui/layout/stepper/stepper-step.d.ts +17 -0
  96. package/dist/lib/components/ui/media/camera/camera-content.d.ts +1 -2
  97. package/dist/lib/components/ui/media/camera/camera-context.d.ts +4 -0
  98. package/dist/lib/components/ui/media/camera/camera-provider.d.ts +2 -0
  99. package/dist/lib/components/ui/media/camera/camera.d.ts +6 -3
  100. package/dist/lib/components/ui/media/camera/capture-photo.d.ts +13 -0
  101. package/dist/lib/components/ui/media/camera/index.d.ts +9 -1
  102. package/dist/lib/components/ui/media/camera/state/camera.reducers.d.ts +1 -1
  103. package/dist/lib/components/ui/media/camera/state/camera.slice.d.ts +4 -9
  104. package/dist/lib/components/ui/media/camera/state/camera.store.d.ts +11 -5
  105. package/dist/lib/components/ui/media/camera/state/camera.thunks.d.ts +4 -4
  106. package/dist/lib/components/ui/media/camera/types.d.ts +19 -9
  107. package/dist/lib/components/ui/media/camera/use-camera.d.ts +5 -11
  108. package/dist/lib/components/ui/media/camera/utils/camera.utils.d.ts +0 -1
  109. package/dist/lib/components/ui/media/file-preview/file-preview-pdf.lazy.d.ts +9 -0
  110. package/dist/lib/components/ui/media/file-preview/file-preview.d.ts +12 -0
  111. package/dist/lib/components/ui/media/file-preview/index.d.ts +3 -0
  112. package/dist/lib/components/ui/media/file-preview/partials/file-preview-body.d.ts +9 -0
  113. package/dist/lib/components/ui/media/file-preview/partials/file-preview-card.d.ts +20 -0
  114. package/dist/lib/components/ui/media/file-preview/partials/file-preview-media.d.ts +11 -0
  115. package/dist/lib/components/ui/media/file-preview/partials/file-preview-pdf.d.ts +10 -0
  116. package/dist/lib/components/ui/media/file-preview/partials/file-preview-status.d.ts +17 -0
  117. package/dist/lib/components/ui/media/file-preview/partials/file-preview-text.d.ts +13 -0
  118. package/dist/lib/components/ui/media/file-preview/types.d.ts +23 -0
  119. package/dist/lib/components/ui/media/file-preview/use-file-preview.d.ts +22 -0
  120. package/dist/lib/components/ui/media/file-preview/use-text-preview.d.ts +15 -0
  121. package/dist/lib/components/ui/media/index.d.ts +2 -0
  122. package/dist/lib/components/ui/media/upload/network-upload-field/use-image-preview.d.ts +6 -0
  123. package/dist/lib/components/ui/overlays/dialog/dialog-outside.d.ts +5 -0
  124. package/dist/lib/components/ui/overlays/dialog/dialog-scroll-content.d.ts +9 -0
  125. package/dist/lib/components/ui/overlays/dialog/index.d.ts +1 -0
  126. package/dist/lib/components/ui/primitives/icon/icon-context.d.ts +1 -1
  127. package/dist/lib/components/ui/primitives/table/table.d.ts +6 -1
  128. package/dist/lib/components/ui/selection/index.d.ts +2 -0
  129. package/dist/lib/components/ui/selection/native-select/index.d.ts +1 -0
  130. package/dist/lib/components/ui/selection/native-select/native-select.d.ts +11 -0
  131. package/dist/lib/components/ui/selection/radio-group/radio-group.d.ts +8 -1
  132. package/dist/lib/components/ui/selection/tree-select-field/index.d.ts +2 -0
  133. package/dist/lib/components/ui/selection/tree-select-field/partials/tree-select-content.d.ts +13 -0
  134. package/dist/lib/components/ui/selection/tree-select-field/partials/tree-select-panel.d.ts +19 -0
  135. package/dist/lib/components/ui/selection/tree-select-field/partials/tree-select-trigger.d.ts +24 -0
  136. package/dist/lib/components/ui/selection/tree-select-field/tree-select-field.d.ts +9 -0
  137. package/dist/lib/components/ui/selection/tree-select-field/tree-select-form-field.d.ts +8 -0
  138. package/dist/lib/components/ui/selection/tree-select-field/tree-select.utils.d.ts +35 -0
  139. package/dist/lib/components/ui/selection/tree-select-field/types.d.ts +37 -0
  140. package/dist/lib/components/ui/selection/tree-select-field/use-tree-select-field.d.ts +20 -0
  141. package/dist/lib/i18n/resources/en/en.d.ts +40 -0
  142. package/dist/lib/i18n/resources/en/material.json.d.ts +43 -3
  143. package/dist/lib/i18n/resources/fr/fr.d.ts +40 -0
  144. package/dist/lib/i18n/resources/fr/material.json.d.ts +43 -3
  145. package/dist/lib/i18n/resources/resources.d.ts +80 -0
  146. package/dist/lib/i18n/translator.d.ts +1 -1
  147. package/dist/lib/lib/redux/status-slice.d.ts +1 -1
  148. package/dist/lib.js +295 -4
  149. package/dist/main.js +16 -16
  150. package/dist/map.js +5 -5
  151. package/dist/material.css +1 -1
  152. package/dist/merge-_Awk4ywA.js +156 -0
  153. package/dist/{mermaid.core-BGAQ3ZAZ.js → mermaid.core-DciYB1MV.js} +49 -49
  154. package/dist/{mindmap-definition-NLK3R4M7-HIqs4Eil.js → mindmap-definition-NLK3R4M7-Brf_2jIE.js} +13 -13
  155. package/dist/{pegDiagram-GJSIUBJH-Dcm3LCQX.js → pegDiagram-GJSIUBJH-CAO6aYvj.js} +4 -4
  156. package/dist/{pieDiagram-5QR66LMP-DQ6djEkW.js → pieDiagram-5QR66LMP-MPh-EWf-.js} +5 -5
  157. package/dist/print.js +2 -2
  158. package/dist/{quadrantDiagram-O4NWA36T-yUWorB72.js → quadrantDiagram-O4NWA36T-CwDeE9KB.js} +3 -3
  159. package/dist/{railroadDiagram-XR7U4H2S-CzOJlTUA.js → railroadDiagram-XR7U4H2S-DmKDXg8V.js} +4 -4
  160. package/dist/{requirementDiagram-PLB6GJNP-Cs5-8Nro.js → requirementDiagram-PLB6GJNP-CCP3YtvB.js} +13 -13
  161. package/dist/{sankeyDiagram-IPEJSGJF-CCqxyVoj.js → sankeyDiagram-IPEJSGJF-vgVchd2a.js} +3 -3
  162. package/dist/{sequenceDiagram-PO4LG4MO-DMLeIQ03.js → sequenceDiagram-PO4LG4MO-B2qb55A5.js} +5 -5
  163. package/dist/{sortable-provider-DuRzFvwe.js → sortable-provider-CzSnl6It.js} +17 -17
  164. package/dist/{src-CJ8DNrI1.js → src-C9kQSo6K.js} +1 -1
  165. package/dist/{stateDiagram-v2-GCMORJYK-D-8sLHg8.js → stateDiagram-v2-GCMORJYK-T-oIXh-8.js} +14 -14
  166. package/dist/{stored-language-BP90Ydtg.js → stored-language-DmUUhRb5.js} +90 -6
  167. package/dist/{swimlanes-2SLR337P-DM_lDm6v.js → swimlanes-2SLR337P-tW3_wBWO.js} +12 -12
  168. package/dist/swimlanesDiagram-TC7HE7FX-B1lWzHp1.js +28 -0
  169. package/dist/{timeline-definition-EJHVYXUP-D3Tz-JnK.js → timeline-definition-EJHVYXUP-SdA6wt2-.js} +5 -5
  170. package/dist/{translate-material-Ctzt0Y2N.js → translate-material-DuY12xca.js} +2 -2
  171. package/dist/{translator-Cfug7hC5.js → translator-CaIYjyFP.js} +1 -1
  172. package/dist/{use-heading-spy-DtVo2HBk.js → use-heading-spy-Crdz4OH5.js} +2 -2
  173. package/dist/{use-material-translation-CJswHOmK.js → use-material-translation-Od0QsFPA.js} +2 -2
  174. package/dist/{usecaseDiagram-POWQR4AR-Cxx8PDrr.js → usecaseDiagram-POWQR4AR-B3rBcR4E.js} +13 -13
  175. package/dist/{vennDiagram-UO4OBE2U-Aql8mhcy.js → vennDiagram-UO4OBE2U-CO0yFCI8.js} +4 -4
  176. package/dist/{wardleyDiagram-VNRHLVJA-tknlhG_t.js → wardleyDiagram-VNRHLVJA-QkwghAYo.js} +4 -4
  177. package/dist/{xychartDiagram-PMCCYNJV-CM0QlWD5.js → xychartDiagram-PMCCYNJV-stQWLgCx.js} +7 -7
  178. package/docs/components/README.md +2 -1
  179. package/docs/components/buttons-and-actions.md +8 -3
  180. package/docs/components/data-display.md +4 -4
  181. package/docs/components/data-table-filter-and-lists.md +100 -6
  182. package/docs/components/date-and-time.md +106 -6
  183. package/docs/components/feedback-and-status.md +4 -3
  184. package/docs/components/form-fields.md +55 -5
  185. package/docs/components/media-and-files.md +117 -8
  186. package/docs/components/navigation-and-layout.md +6 -1
  187. package/docs/components/overlays-and-menus.md +27 -2
  188. package/docs/components/primitives.md +34 -3
  189. package/docs/components/rich-widgets.md +1 -1
  190. package/docs/components/selection-and-choice.md +111 -8
  191. package/docs/guides/forms.md +2 -1
  192. package/docs/guides/i18n.md +58 -9
  193. package/docs/guides/ssr.md +3 -1
  194. package/docs/previews/date-time-daterangefield.webp +0 -0
  195. package/docs/previews/media-files-camera.webp +0 -0
  196. package/docs/previews/media-files-filepreview.webp +0 -0
  197. package/docs/previews/navigation-layout-stepper.webp +0 -0
  198. package/docs/previews/selection-choice-treeselectfield.webp +0 -0
  199. package/docs/roadmap.md +42 -3
  200. package/docs/troubleshooting.md +167 -0
  201. package/package.json +2 -2
  202. package/dist/flowDiagram-KWPJA3E3-B8Isvcc5.js +0 -17
  203. package/dist/isArrayLikeObject-CCJDO2RL.js +0 -86
  204. package/dist/lib/components/ui/fields/slider/slider-ticks.d.ts +0 -1
  205. package/dist/lib/components/ui/media/camera/camera.provider.d.ts +0 -6
  206. package/dist/lib/components/ui/media/camera/state/index.d.ts +0 -2
  207. package/dist/lib/components/ui/media/camera/utils/index.d.ts +0 -1
  208. package/dist/lib-DIj5dvbb.js +0 -367
  209. package/dist/merge-Dm-kHFxo.js +0 -172
  210. package/dist/swimlanesDiagram-TC7HE7FX-CbV1TsML.js +0 -28
package/README.md CHANGED
@@ -264,6 +264,7 @@ preview, an example and the options that matter. In the
264
264
  *Component* column, `·` separates a field from its React Hook Form wrapper.
265
265
  The last column gives the matching export in `@nxgt/material-vue`, or `—` when
266
266
  Vue has none. "(same parts)" means Vue exports the same sub-components.
267
+ React-only today: `Combobox` (not planned in Vue) and `StepperIndicator`.
267
268
 
268
269
  ### Primitives
269
270
 
@@ -284,7 +285,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
284
285
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-kbd.webp" width="120" alt="Kbd"> | [`Kbd`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#kbd), `KbdShortcut` | One keyboard key, or a key combination with platform glyphs. | `Kbd`, `KbdShortcut` |
285
286
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-separator.webp" width="120" alt="Separator"> | [`Separator`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#separator) | Horizontal or vertical divider. | `Separator` |
286
287
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-scrollarea.webp" width="120" alt="ScrollArea"> | [`ScrollArea`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#scrollarea), `ScrollBar` | Scroll container with a thin custom scrollbar that matches the theme. | `ScrollArea`, `ScrollBar` |
287
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-table.webp" width="120" alt="Table"> | [`Table`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#table), `TableHeader`, `TableBody`, `TableFooter`, `TableRow`, `TableHead`, `TableCell`, `TableCaption` | Styled semantic table inside a scrollable wrapper. | `Table` (same parts), `TableEmpty` |
288
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-table.webp" width="120" alt="Table"> | [`Table`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#table), `TableHeader`, `TableBody`, `TableFooter`, `TableRow`, `TableHead`, `TableCell`, `TableCaption`, `TableEmpty` | Styled semantic table inside a scrollable wrapper; `TableEmpty` is the full-width "nothing here" row. | `Table` (same parts) |
288
289
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-tabs.webp" width="120" alt="Tabs"> | [`Tabs`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#tabs), `TabsList`, `TabsTrigger`, `TabsContent` | Tabs whose triggers can take an icon. `variant="line"` is the quieter pill style. | `Tabs` (same parts) |
289
290
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-toggle.webp" width="120" alt="Toggle"> | [`Toggle`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#toggle) | Pressable on / off button: default or outlined, three sizes. | `Toggle` |
290
291
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/primitives-togglegroup.webp" width="120" alt="ToggleGroup"> | [`ToggleGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/primitives.md#togglegroup), `ToggleGroupItem`, `ToggleGroupSeparator` | Single or multiple toggle group sharing variant and size. | `ToggleGroup`, `ToggleGroupItem` |
@@ -294,13 +295,13 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
294
295
 
295
296
  | Preview | Component | What it does | @nxgt/material-vue |
296
297
  | --- | --- | --- | --- |
297
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-button.webp" width="120" alt="Button"> | [`Button`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#button) | Filled, tonal, outlined, ghost or link button in seven colours, with a loading state. | `Button` |
298
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-button.webp" width="120" alt="Button"> | [`Button`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#button) | Filled, tonal, outlined, ghost or link button in seven colours, four sizes and four square icon sizes, with a loading state. | `Button` |
298
299
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-iconbutton.webp" width="120" alt="IconButton"> | [`IconButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#iconbutton) | Icon-only button with an optional tooltip. | `IconButton` |
299
300
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-buttongroup.webp" width="120" alt="ButtonGroup"> | [`ButtonGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#buttongroup) | Joins adjacent buttons into one control. | `ButtonGroup` |
300
301
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-splitbutton.webp" width="120" alt="SplitButton"> | [`SplitButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#splitbutton) | Main action plus a dropdown menu of secondary actions. | `SplitButton` |
301
302
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-responsivebutton.webp" width="120" alt="ResponsiveButton"> | [`ResponsiveButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#responsivebutton) | Shows its label on desktop and collapses to icon-only on mobile, keeping the label for screen readers. | `ResponsiveButton` |
302
303
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-linkbutton.webp" width="120" alt="LinkButton"> | [`LinkButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#linkbutton), `IconLinkButton`, `ResponsiveLinkButton` | The button styles rendered as `react-router` links. | `LinkButton`, `IconLinkButton`, `ResponsiveLinkButton` |
303
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-copybutton.webp" width="120" alt="CopyButton"> | [`CopyButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#copybutton), `CopyValue` | Copies a value to the clipboard and briefly shows a check mark. `CopyValue` displays the value next to the button. | `CopyButton` |
304
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-copybutton.webp" width="120" alt="CopyButton"> | [`CopyButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#copybutton), `CopyValue` | Copies a value to the clipboard and briefly shows a check mark. `CopyValue` displays the value next to the button. | `CopyButton`, `CopyValue` |
304
305
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-highlighttext.webp" width="120" alt="HighlightText"> | [`HighlightText`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#highlighttext) | Marks case-insensitive matches of a query inside a string (`splitMatch`). | `HighlightText` |
305
306
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-loadmorebutton.webp" width="120" alt="LoadMoreButton"> | [`LoadMoreButton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#loadmorebutton) | "Load more" button for cursor pagination; icon-only with a tooltip unless `expanded`. | `LoadMoreButton` |
306
307
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/buttons-actions-scrolltotop.webp" width="120" alt="ScrollToTop"> | [`ScrollToTop`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/buttons-and-actions.md#scrolltotop) | Floating button that appears past a scroll threshold. | `ScrollToTop` |
@@ -324,14 +325,14 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
324
325
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-urlfield.webp" width="120" alt="UrlField"> | [`UrlField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#urlfield) · `UrlFormField` | Validates on blur; open-in-new-tab and copy buttons. | `UrlField`, `UrlFormField` |
325
326
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-searchfield.webp" width="120" alt="SearchField"> | [`SearchField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#searchfield) · `SearchFormField` | Search icon, clear button and spinner, with a debounced `onValueChange`. | `SearchField`, `SearchFormField` |
326
327
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-colorfield.webp" width="120" alt="ColorField"> | [`ColorField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#colorfield) · `ColorFormField` | Hex input with a colour picker in a popover. | `ColorField`, `ColorFormField` |
327
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-otpfield.webp" width="120" alt="OtpField"> | [`OtpField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#otpfield) · `OtpFormField` | One-time code input of configurable length. | `OtpField`, `OtpFormField`, `InputOTP` |
328
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-otpfield.webp" width="120" alt="OtpField"> | [`OtpField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#otpfield) · `OtpFormField`, `InputOTP`, `InputOTPGroup`, `InputOTPSlot`, `InputOTPSeparator` | One-time code input of configurable length; the `InputOTP` parts compose your own. | `OtpField`, `OtpFormField`, `InputOTP` (same parts) |
328
329
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-inputgroupfield.webp" width="120" alt="InputGroupField"> | [`InputGroupField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#inputgroupfield) · `InputGroupFormField` | Labelled `InputGroup` with addons and helper text. | `InputGroupField`, `InputGroupFormField` |
329
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-inlineedit.webp" width="120" alt="InlineEdit"> | [`InlineEdit`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#inlineedit) · `InlineEditFormField` | Click-to-edit text with save and cancel. | `InlineEdit` |
330
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-inlineedit.webp" width="120" alt="InlineEdit"> | [`InlineEdit`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#inlineedit) · `InlineEditFormField` | Click-to-edit text with save and cancel. | `InlineEdit`, `InlineEditFormField` |
330
331
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-countryfield.webp" width="120" alt="CountryField"> | [`CountryField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#countryfield) · `CountryFormField` | Single or multiple country picker with flags. | `CountryField`, `CountryFormField` |
331
332
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-timezonefield.webp" width="120" alt="TimezoneField"> | [`TimezoneField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#timezonefield) · `TimezoneFormField` | Searchable IANA timezone picker with localised labels. | `TimezoneField`, `TimezoneFormField` |
332
333
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-ratingfield.webp" width="120" alt="RatingField"> | [`RatingField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#ratingfield) · `RatingFormField` | Star rating with hover preview, click-to-clear and a read-only mode. | `RatingField`, `RatingFormField` |
333
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-slider.webp" width="120" alt="Slider"> | [`Slider`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#slider) · `SliderFormField` | Labelled single or range slider with an editable value and ticks. | `Slider`, `SliderField`, `SliderFormField` |
334
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-switch.webp" width="120" alt="Switch"> | [`Switch`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#switch) · `SwitchFormField` | Toggle switch, optionally in a labelled, bordered row. | `Switch`, `SwitchField`, `SwitchFormField` |
334
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-slider.webp" width="120" alt="Slider"> | [`Slider`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#slider), `SliderField` · `SliderFormField` | Labelled single or range slider with an editable value and ticks. `SliderField` is an alias, Vue's name. | `Slider`, `SliderField`, `SliderFormField` |
335
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-switch.webp" width="120" alt="Switch"> | [`Switch`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#switch), `SwitchField` · `SwitchFormField` | Toggle switch, optionally in a labelled, bordered row. `SwitchField` is an alias, Vue's name. | `Switch`, `SwitchField`, `SwitchFormField` |
335
336
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-attributes.webp" width="120" alt="AttributesField"> | [`AttributesField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#attributes), `AttributesList`, `AttributeDialog`, `AttributeForm`, `AttributeValuesForm` · `AttributesFormField`, `AttributeValuesFormFieldSet`, `AttributeValueFormField` | Editor for typed custom attributes (string, number, date, select, rich text…). | `AttributesField`, `AttributesList`, `AttributeDialog`, `AttributeForm`, `AttributeValuesForm`, `AttributesFormField`, `AttributeValuesFormFieldSet`, `AttributeValueFormField` |
336
337
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-contacts.webp" width="120" alt="Contacts"> | [`Contacts`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#contacts), `ContactDialog`, `ContactItem` (deprecated) · `ContactsFormField` | Typed contact list (phone, email, URL…) with an add / edit dialog. | `Contacts`, `ContactItem`, `ContactDialog`, `ContactsFormField` |
337
338
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/form-fields-postaladdress.webp" width="120" alt="PostalAddress"> | [`PostalAddress`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/form-fields.md#postaladdress), `PostalAddressDialog` · `PostalAddressFormField` | Address card with an edit dialog. | `PostalAddress`, `PostalAddressDialog`, `PostalAddressFormField` |
@@ -343,7 +344,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
343
344
  | --- | --- | --- | --- |
344
345
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-calendar.webp" width="120" alt="Calendar"> | [`Calendar`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#calendar), `CalendarDayButton` | Day-picker calendar with a year view, a today shortcut and `disablePast` / `disableFuture`. | `Calendar` (Reka parts) |
345
346
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-datefield.webp" width="120" alt="DateField"> | [`DateField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#datefield) · `DateFormField` | Labelled trigger that opens a calendar popover, with an optional time picker. | `DateField`, `DateFormField` |
346
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-daterangefield.webp" width="120" alt="DateRangeField"> | [`DateRangeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#daterangefield) · `DateRangeFormField` | From / to range picked in a popover calendar. | `DateRangeField`, `DateRangeFormField` |
347
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-daterangefield.webp" width="120" alt="DateRangeField"> | [`DateRangeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#daterangefield) · `DateRangeFormField` | From / to range picked in a popover calendar, with presets and times. | `DateRangeField`, `DateRangeFormField` |
347
348
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-timefield.webp" width="120" alt="TimeField"> | [`TimeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#timefield) · `TimeFormField` | Opens a `TimePicker` in a popover, or in a dialog on mobile. | `TimeField`, `TimeFormField` |
348
349
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-timepicker.webp" width="120" alt="TimePicker"> | [`TimePicker`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#timepicker) | Hour and minute inputs with AM / PM and auto-advancing focus. | `TimePicker` |
349
350
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/date-time-durationfield.webp" width="120" alt="DurationField"> | [`DurationField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/date-and-time.md#durationfield) · `DurationFormField` | Hours and minutes combined into a total in minutes. | `DurationField`, `DurationFormField` |
@@ -352,19 +353,20 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
352
353
 
353
354
  | Preview | Component | What it does | @nxgt/material-vue |
354
355
  | --- | --- | --- | --- |
355
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-select.webp" width="120" alt="Select"> | [`Select`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#select), `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem`, `SelectGroup`, `SelectLabel`… | Select primitives with groups, labels and scroll buttons. | `Select` (same parts), `NativeSelect` |
356
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-select.webp" width="120" alt="Select"> | [`Select`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#select), `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem`, `SelectGroup`, `SelectLabel`…, `NativeSelect`, `NativeSelectOption`, `NativeSelectOptGroup` | Select primitives with groups, labels and scroll buttons, plus a styled native `<select>`. | `Select` (same parts), `NativeSelect` (same parts) |
356
357
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-selectfield.webp" width="120" alt="SelectField"> | [`SelectField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#selectfield) · `SelectFormField` | Labelled select built from `options`, with `renderOption`. | `SelectField`, `SelectFormField` |
357
358
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-combobox.webp" width="120" alt="Combobox"> | [`Combobox`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#combobox), `ComboboxInput`, `ComboboxContent`, `ComboboxList`, `ComboboxItem`, `ComboboxChips`… | Base UI combobox primitives: input, popup list, groups and chips. | — |
358
359
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-comboboxfield.webp" width="120" alt="ComboboxField"> | [`ComboboxField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#comboboxfield) · `ComboboxFormField` | Labelled, searchable single select over `{ value, label }` options. | `ComboboxField`, `ComboboxFormField` |
359
360
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-autocomplete.webp" width="120" alt="Autocomplete"> | [`Autocomplete`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#autocomplete), `AutocompleteChips` · `AutocompleteFormField` | Single or multiple (chips) autocomplete with free-solo values and a query callback. | `Autocomplete`, `AutocompleteFormField` |
360
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-checkbox.webp" width="120" alt="Checkbox"> | [`Checkbox`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#checkbox) · `CheckboxFormField` | Checkbox with label, helper text and an indeterminate state. | `Checkbox` |
361
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-checkbox.webp" width="120" alt="Checkbox"> | [`Checkbox`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#checkbox) · `CheckboxFormField` | Checkbox with label, helper text and an indeterminate state. | `Checkbox`, `CheckboxFormField` |
361
362
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-checkboxgroup.webp" width="120" alt="CheckboxGroup"> | [`CheckboxGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#checkboxgroup) · `CheckboxGroupFormField` | Checkbox list built from `options`, valued as `string[]`. | `CheckboxGroup`, `CheckboxGroupFormField` |
362
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-radiogroup.webp" width="120" alt="RadioGroup"> | [`RadioGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#radiogroup), `RadioGroupItem` · `RadioGroupFormField` | Labelled radio group built from `options`, horizontal or vertical. | `RadioGroupField`, `RadioGroup`, `RadioGroupFormField` |
363
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-radiogroup.webp" width="120" alt="RadioGroup"> | [`RadioGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#radiogroup), `RadioGroupField`, `RadioGroupItem` · `RadioGroupFormField` | Labelled radio group built from `options`, horizontal or vertical. `RadioGroupField` is an alias, Vue's name. | `RadioGroupField`, `RadioGroup`, `RadioGroupFormField` |
363
364
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-checkcardfield.webp" width="120" alt="CheckCardField"> | [`CheckCardField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#checkcardfield) · `CheckCardFormField` | A yes / no choice shown as two selectable cards. | `CheckCardField`, `CheckCardFormField` |
364
365
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-selectcardfield.webp" width="120" alt="SelectCardField"> | [`SelectCardField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#selectcardfield) · `SelectCardFormField` | Single or multiple choice shown as `ActionCard`s. | `SelectCardField`, `SelectCardFormField` |
365
366
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-selectchipfield.webp" width="120" alt="SelectChipField"> | [`SelectChipField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#selectchipfield) · `SelectChipFormField` | Single or multiple choice shown as toggleable chips. | `SelectChipField`, `SelectChipFormField` |
366
367
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-transferlist.webp" width="120" alt="TransferList"> | [`TransferList`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#transferlist) · `TransferListFormField` | Two-pane picker with search, drag-and-drop, reordering and a `max`. | `TransferList`, `TransferListFormField` |
367
368
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-sortablelist.webp" width="120" alt="SortableList"> | [`SortableList`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#sortablelist) · `SortableListFormField` | Searchable list of strings you reorder by dragging or with the keyboard. | `SortableList`, `SortableListFormField` |
369
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-treeselectfield.webp" width="120" alt="TreeSelectField"> | [`TreeSelectField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#treeselectfield) · `TreeSelectFormField` | A field that opens a `Tree` in a popover: pick one node, or several as chips, with an optional filter. | `TreeSelectField`, `TreeSelectFormField` |
368
370
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/selection-choice-switcher.webp" width="120" alt="Switcher"> | [`Switcher`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/selection-and-choice.md#switcher) | Dropdown for switching the active workspace or account, with an avatar. | `Switcher` |
369
371
 
370
372
  ### Data display
@@ -388,7 +390,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
388
390
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-timeline.webp" width="120" alt="Timeline"> | [`Timeline`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#timeline), `TimelineItem`, `RelativeTime` | Vertical event timeline with toned icons and relative times. | `Timeline`, `TimelineItem`, `RelativeTime` |
389
391
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-eventchip.webp" width="120" alt="EventChip"> | [`EventChip`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#eventchip) | Calendar event pill with time, all-day and continuation edges. | `EventChip` |
390
392
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-codeblock.webp" width="120" alt="CodeBlock"> | [`CodeBlock`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#codeblock), `CodeDiff`, `JsonViewer`, `CodeGroup` | Highlighted code with line numbers and copy, a Monaco diff, a collapsible JSON tree, and tabbed samples (`Tabs variant="line"`). | `CodeBlock`, `CodeDiff`, `JsonViewer`, `CodeGroup` |
391
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-markdown.webp" width="120" alt="Markdown"> | [`Markdown`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#markdown), `MermaidDiagram` | GFM markdown with KaTeX math and mermaid diagrams (`clientOnly`). Fences reuse `CodeBlock`. `ChatMarkdown` renders through it. | `Markdown` |
393
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-markdown.webp" width="120" alt="Markdown"> | [`Markdown`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#markdown), `MermaidDiagram` | GFM markdown with KaTeX math and mermaid diagrams (`clientOnly`). Fences reuse `CodeBlock`. `ChatMarkdown` renders through it. | `Markdown`, `MermaidDiagram` |
392
394
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-terminal.webp" width="120" alt="Terminal"> | [`Terminal`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#terminal) | Display-only log with prompt, copy, and error/input tones. Container queries. | `Terminal` |
393
395
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-figure.webp" width="120" alt="Figure"> | [`Figure`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#figure) | Framed media with an optional caption. | `Figure` |
394
396
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-display-apioperation.webp" width="120" alt="ApiEndpoint"> | [`ApiEndpoint`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-display.md#apiendpoint), `ApiOperation` | HTTP method badge, path and copy; `ApiOperation` adds a param table and example `CodeGroup`. | `ApiEndpoint`, `ApiOperation` |
@@ -400,10 +402,10 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
400
402
 
401
403
  | Preview | Component | What it does | @nxgt/material-vue |
402
404
  | --- | --- | --- | --- |
403
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#datatable), `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` | TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, and column visibility. | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` |
405
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-datatable.webp" width="120" alt="DataTable"> | [`DataTable`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#datatable), `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` | TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, column visibility, skeleton rows while loading and your own empty state. | `DataTable`, `DataTableColumnHeader`, `DataTablePagination`, `DataTableViewOptions` |
404
406
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-filter.webp" width="120" alt="Filter"> | [`Filter`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#filter), `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets` · `FilterFormField` | Schema-driven filters with chips, presets, validation, and URL or storage persistence. | `Filter`, `FilterProvider`, `FilterContent`, `FilterChips`, `FilterPresets`, `FilterFormField` |
405
407
  | — | [`FilterInline`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#filterinline-filterpopover-filterdialog-filtersheet-filterdrawer), `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` | The filter panel shown inline, or in a popover, dialog, sheet or drawer. | `FilterInline`, `FilterPopover`, `FilterDialog`, `FilterSheet`, `FilterDrawer` |
406
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-pagination.webp" width="120" alt="Pagination"> | [`Pagination`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#pagination), `PaginationContent`, `PaginationItem`, `PaginationLink`, `PaginationBar`… | Pagination primitives. `PaginationBar` adds a sibling window with ellipses. | `Pagination` (parts), `PaginationFirst`, `PaginationLast` |
408
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-pagination.webp" width="120" alt="Pagination"> | [`Pagination`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#pagination), `PaginationContent`, `PaginationItem`, `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems`… | Pagination primitives, with first / last links. `PaginationBar` adds a sibling window with ellipses. | `Pagination` (parts), `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems` |
407
409
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-tree.webp" width="120" alt="Tree"> | [`Tree`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#tree), `TreeItem`, `useTree` | Expandable tree with none, single or multiple selection and keyboard navigation. | `Tree`, `TreeItem`, `useTree` |
408
410
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/data-table-filter-lists-drag-and-drop.webp" width="120" alt="DndProvider"> | [`DndProvider`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/data-table-filter-and-lists.md#drag-and-drop), `Draggable`, `Droppable`, `Sortable`, `DragHandle`… | Drag-and-drop primitives; see [dnd](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/guides/helpers.md#nxgtmaterialdnd). | `DndProvider`, `Draggable`, `Droppable`, `Sortable`, `DragHandle` |
409
411
 
@@ -425,7 +427,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
425
427
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-stepper.webp" width="120" alt="Stepper"> | [`Stepper`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#stepper), `StepperIndicator` | Clickable horizontal or vertical steps with status and progress; compact on mobile. | `Stepper` |
426
428
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-steps.webp" width="120" alt="Steps"> | [`Steps`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#steps), `StepsItem` | Numbered editorial steps that stay visible on every breakpoint. | `Steps`, `StepsItem` |
427
429
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-hero.webp" width="120" alt="Hero"> | [`Hero`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#hero) | Landing band with eyebrow, title, supporting copy and actions. | `Hero` |
428
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` | Documentation site shell: sidebar from `md`, TOC rail from `xl`. Reading bar, copy-page / markdown, child cards, see also, and a 404 slot. Storybook `UI/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc`, `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` |
430
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` | Documentation site shell: sidebar from `md`, TOC rail from `xl`. Reading bar, copy-page / markdown, child cards, see also, and a 404 slot. Storybook `UI/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc` (same parts) |
429
431
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/navigation-layout-background.webp" width="120" alt="Background"> | [`Background`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#background) | Full-viewport gradient with blurred colour blobs; centres its children. | `Background` |
430
432
  | — | [`NavigationRail`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/navigation-and-layout.md#navigationrail) | Placeholder: renders an empty rail container and takes no props yet. | `NavigationRail` |
431
433
 
@@ -433,7 +435,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
433
435
 
434
436
  | Preview | Component | What it does | @nxgt/material-vue |
435
437
  | --- | --- | --- | --- |
436
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/overlays-menus-dialog.webp" width="120" alt="Dialog"> | [`Dialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/overlays-and-menus.md#dialog), `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`, `DialogDescription`, `DialogFooter`, `DialogClose`… | Modal dialog parts with an icon close button. | `Dialog` (same parts), `DialogScrollContent` |
438
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/overlays-menus-dialog.webp" width="120" alt="Dialog"> | [`Dialog`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/overlays-and-menus.md#dialog), `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`, `DialogDescription`, `DialogFooter`, `DialogClose`, `DialogScrollContent`… | Modal dialog parts with an icon close button; `DialogScrollContent` scrolls a dialog taller than the screen. | `Dialog` (same parts) |
437
439
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/overlays-menus-sheet.webp" width="120" alt="Sheet"> | [`Sheet`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/overlays-and-menus.md#sheet), `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetTitle`, `SheetFooter`… | Panel that slides in from any edge. | `Sheet` (same parts) |
438
440
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/overlays-menus-drawer.webp" width="120" alt="Drawer"> | [`Drawer`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/overlays-and-menus.md#drawer), `DrawerTrigger`, `DrawerContent`, `DrawerHeader`, `DrawerTitle`, `DrawerFooter`… | Swipeable bottom or side drawer (Vaul). | `Drawer` (same parts) |
439
441
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/overlays-menus-popover.webp" width="120" alt="Popover"> | [`Popover`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/overlays-and-menus.md#popover), `PopoverTrigger`, `PopoverContent`, `PopoverAnchor` | Floating panel anchored to a trigger. | `Popover` (same parts) |
@@ -457,7 +459,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
457
459
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-progress.webp" width="120" alt="Progress"> | [`Progress`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#progress), `CircularProgress`, `ProgressField` | Linear bar, circular ring with a label, and a labelled progress field. | `Progress`, `CircularProgress`, `ProgressField` |
458
460
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-scrollprogress.webp" width="120" alt="ScrollProgress"> | [`ScrollProgress`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#scrollprogress) | Hairline that tracks window or a scrollable `target` (`react-use` `useWindowScroll` / `useScroll`). `DocProgress` composes it. | `ScrollProgress` |
459
461
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-spinner.webp" width="120" alt="Spinner"> | [`Spinner`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#spinner) | Loading spinner in several styles and colours. | `Spinner` |
460
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-toast.webp" width="120" alt="Toaster"> | [`Toaster`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#toast), `toast`, `toasts`, `Toast` | Sonner toasts with icon and action. `toasts` provides `success` / `error` / `warning` / `info` / `loading` presets. | `Toaster`, `toast`, `toasts`, `Toast` |
462
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-toast.webp" width="120" alt="Toaster"> | [`Toaster`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#toast), `toast`, `toasts`, `Toast` | Sonner toasts with icon and action (`ToastAction`). `toasts` provides `success` / `error` / `warning` / `info` / `loading` presets. | `Toaster`, `toast`, `toasts`, `Toast` |
461
463
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-skeleton.webp" width="120" alt="Skeleton"> | [`Skeleton`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#skeleton), `SkeletonAvatar`, `SkeletonCard`, `SkeletonText`, `SkeletonTable` | Loading placeholder and ready-made shapes. | `Skeleton` (same parts) |
462
464
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-hydrateloading.webp" width="120" alt="HydrateLoading"> | [`HydrateLoading`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#hydrateloading) | Full-area spinner shown while hydrating. | `HydrateLoading` |
463
465
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/feedback-status-notifications.webp" width="120" alt="Notifications"> | [`Notifications`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/feedback-and-status.md#notifications) | Notification centre as a bell popover with an unread count, or as an inline panel, with filters and read / dismiss. | `Notifications` |
@@ -469,7 +471,8 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
469
471
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-s3uploadfield.webp" width="120" alt="S3UploadField"> | [`S3UploadField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/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` |
470
472
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-uploadfield.webp" width="120" alt="UploadField"> | [`UploadField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#uploadfield) · `UploadFormField` | Labelled file input showing the chosen file's name. | `UploadField`, `UploadFormField` |
471
473
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-filelist.webp" width="120" alt="FileList"> | [`FileList`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/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` |
472
- | — | [`FilesFormField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#filesformfield) | Free-solo autocomplete of file URLs, with image thumbnails. | — |
474
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-filepreview.webp" width="120" alt="FilePreview"> | [`FilePreview`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/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` |
475
+ | — | [`FilesFormField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#filesformfield) | Free-solo autocomplete of file URLs, with image thumbnails. | `FilesFormField` |
473
476
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-imagefield.webp" width="120" alt="ImageField"> | [`ImageField`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#imagefield), `ImageS3Field` · `ImageFormField`, `ImageS3FormField` | Single image upload with preview and progress. | `ImageField`, `ImageS3Field`, `ImageFormField`, `ImageS3FormField` |
474
477
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-imagecropper.webp" width="120" alt="ImageCropper"> | [`ImageCropper`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#imagecropper), `ImageCropperDialog` | Crop with zoom, rotation, aspect presets and a round shape; outputs a `File`. | `ImageCropper`, `ImageCropperDialog` |
475
478
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-gallery.webp" width="120" alt="Gallery"> | [`Gallery`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#gallery-lightboxgallery-minigallery), `LightboxGallery`, `MiniGallery` | Image / video gallery (grid, masonry, justified, carousel…) with a lightbox and selection. | `Gallery`, `LightboxGallery`, `MiniGallery` |
@@ -477,6 +480,7 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
477
480
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-pdfreader.webp" width="120" alt="PdfReader"> | [`PdfReader`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#pdfreader), `PdfViewer` (deprecated alias), `PdfToolbar`, `PdfSidebar`, `PdfPageList`… | Browser-only PDF reader with zoom, rotation, search, thumbnails, outline and print. | `PdfReader`, `PdfViewer` (same parts) |
478
481
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-stxplayer.webp" width="120" alt="StxPlayer"> | [`StxPlayer`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#stxplayer), `StxPlayerProvider`, `StxPlayerMini`, `StxPlayerQueue`… | Video / audio player with a queue, captions, playback rate, PiP, and full or mini layouts. | `StxPlayer` (same parts) |
479
482
  | — | [`VideoPlayer`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#videoplayer) | Deprecated alias of `StxPlayer`. | `VideoPlayer` |
483
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-camera.webp" width="120" alt="Camera"> | [`Camera`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#camera), `useCamera`, `capturePhotoFromVideo` | Webcam preview with a start / stop toggle and a still capture. Browser-only: renders after mount. | `Camera`, `useCamera`, `capturePhotoFromVideo` |
480
484
  | — | [`PrintDocument`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#print-components), `PrintHeader`, `PrintSection`, `PrintTable`, `PrintTotals`, `PrintCard`, `PrintDataTable`, `PrintKeyValue`, `PrintMetric`… | `@react-pdf/renderer` page shell (size, margins, repeated header and footer, page numbers, watermark) and building blocks for printable PDF documents, with a shared `tw`; tables, detail blocks and figures from column definitions and plain rows. From `@nxgt/material/print`, not `/components`. | `PrintHeader`, `PrintSection`, `PrintTable`, `PrintTotals`, `PrintCard` |
481
485
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/media-files-map.webp" width="120" alt="Map"> | [`Map`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/media-and-files.md#map), `Marker`, `LocationMarker`, `LocationPreview`, `MapActions`, `MinimapControl` · `LocationField`, `LocationFormField` | Leaflet map, markers, controls and a location field. From `@nxgt/material/map`, not `/components`: browser-only, optional peers, `map.css` ([maps guide](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/guides/maps.md)). | `Map`, `Marker`, `LocationMarker`, `LocationPreview`, `MapActions` · `LocationField`, `LocationFormField` (`@nxgt/material-vue/map`) |
482
486
 
@@ -491,11 +495,14 @@ Vue has none. "(same parts)" means Vue exports the same sub-components.
491
495
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-emojipicker.webp" width="120" alt="EmojiPicker"> | [`EmojiPicker`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#emojipicker), `EmojiList` | Shared picker. `ChatComposer` takes `emojis`; `Markdown` expands `:shortcode:`; the RTE toolbar uses the same picker. | `EmojiPicker`, `EmojiList` |
492
496
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-mentionlist.webp" width="120" alt="MentionList"> | [`MentionList`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#mentionlist) | `@` mention list from an `items` prop (local search). ChatComposer and the RTE suggestion list use it. | `MentionList` |
493
497
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-richtexteditor.webp" width="120" alt="RichTextEditor"> | [`RichTextEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#richtexteditor) · `RichTextEditorFormField` | Tiptap editor with toolbar, bubble menu, slash commands, mentions, tables, emoji and images. | `RichTextEditor`, `RichTextEditorFormField` |
494
- | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-codeeditor.webp" width="120" alt="CodeEditor"> | [`CodeEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#codeeditor) · `CodeEditorFormField` | Monaco editor field with a label and a language switch. | `CodeEditor` |
498
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-codeeditor.webp" width="120" alt="CodeEditor"> | [`CodeEditor`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#codeeditor) · `CodeEditorFormField` | Monaco editor field with a label and a language switch. | `CodeEditor`, `CodeEditorFormField` |
495
499
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/previews/rich-widgets-quiz.webp" width="120" alt="Quiz"> | [`Quiz`](https://cdn.jsdelivr.net/npm/@nxgt/material@2/docs/components/rich-widgets.md#quiz), `QuestionCard` | Quiz and question cards composed from Card, ActionCard, GaugeCard, ChecklistCard, ProgressField and TextField. Container queries. | `Quiz`, `QuestionCard` |
496
500
 
497
- `@nxgt/material-vue` also has components with no React counterpart here:
498
- `Camera`, `NativeSelect` and the `InputOTP` primitives.
501
+ `RadioGroupField`, `SliderField` and `SwitchField` are aliases of the
502
+ labelled `RadioGroup`, `Slider` and `Switch`, under the names
503
+ `@nxgt/material-vue` uses, so code reads the same in both libraries. Both
504
+ names work and neither is deprecated; the full naming alignment is planned
505
+ for 3.0.
499
506
 
500
507
  ## Traps
501
508
 
@@ -1,4 +1,4 @@
1
- import { S as e, T as t, d as n, g as r, l as i, u as a, v as o, w as s, x as c } from "./translator-Cfug7hC5.js";
1
+ import { S as e, T as t, d as n, g as r, l as i, u as a, v as o, w as s, x as c } from "./translator-CaIYjyFP.js";
2
2
  //#region ../../node_modules/lodash-es/_isIndex.js
3
3
  var l = 9007199254740991, u = /^(?:0|[1-9]\d*)$/;
4
4
  function d(e, t) {
@@ -0,0 +1,81 @@
1
+ import { m as e, p as t } from "./translator-CaIYjyFP.js";
2
+ //#region ../../node_modules/lodash-es/identity.js
3
+ function n(e) {
4
+ return e;
5
+ }
6
+ //#endregion
7
+ //#region ../../node_modules/lodash-es/_apply.js
8
+ function r(e, t, n) {
9
+ switch (n.length) {
10
+ case 0: return e.call(t);
11
+ case 1: return e.call(t, n[0]);
12
+ case 2: return e.call(t, n[0], n[1]);
13
+ case 3: return e.call(t, n[0], n[1], n[2]);
14
+ }
15
+ return e.apply(t, n);
16
+ }
17
+ //#endregion
18
+ //#region ../../node_modules/lodash-es/_shortOut.js
19
+ var i = 800, a = 16, o = Date.now;
20
+ function s(e) {
21
+ var t = 0, n = 0;
22
+ return function() {
23
+ var r = o(), s = a - (r - n);
24
+ if (n = r, s > 0) {
25
+ if (++t >= i) return arguments[0];
26
+ } else t = 0;
27
+ return e.apply(void 0, arguments);
28
+ };
29
+ }
30
+ //#endregion
31
+ //#region ../../node_modules/lodash-es/constant.js
32
+ function c(e) {
33
+ return function() {
34
+ return e;
35
+ };
36
+ }
37
+ //#endregion
38
+ //#region ../../node_modules/lodash-es/_defineProperty.js
39
+ var l = function() {
40
+ try {
41
+ var t = e(Object, "defineProperty");
42
+ return t({}, "", {}), t;
43
+ } catch {}
44
+ }(), u = s(l ? function(e, t) {
45
+ return l(e, "toString", {
46
+ configurable: !0,
47
+ enumerable: !1,
48
+ value: c(t),
49
+ writable: !0
50
+ });
51
+ } : n);
52
+ //#endregion
53
+ //#region ../../node_modules/lodash-es/_baseAssignValue.js
54
+ function d(e, t, n) {
55
+ t == "__proto__" && l ? l(e, t, {
56
+ configurable: !0,
57
+ enumerable: !0,
58
+ value: n,
59
+ writable: !0
60
+ }) : e[t] = n;
61
+ }
62
+ //#endregion
63
+ //#region ../../node_modules/lodash-es/_assignValue.js
64
+ var f = Object.prototype.hasOwnProperty;
65
+ function p(e, n, r) {
66
+ var i = e[n];
67
+ (!(f.call(e, n) && t(i, r)) || r === void 0 && !(n in e)) && d(e, n, r);
68
+ }
69
+ //#endregion
70
+ //#region ../../node_modules/lodash-es/_overRest.js
71
+ var m = Math.max;
72
+ function h(e, t, n) {
73
+ return t = m(t === void 0 ? e.length - 1 : t, 0), function() {
74
+ for (var i = arguments, a = -1, o = m(i.length - t, 0), s = Array(o); ++a < o;) s[a] = i[t + a];
75
+ a = -1;
76
+ for (var c = Array(t + 1); ++a < t;) c[a] = i[a];
77
+ return c[t] = n(s), r(e, this, c);
78
+ };
79
+ }
80
+ //#endregion
81
+ export { c as a, u as i, p as n, n as o, d as r, h as t };
@@ -1,9 +1,9 @@
1
- import { n as e } from "./src-CJ8DNrI1.js";
1
+ import { n as e } from "./src-C9kQSo6K.js";
2
2
  import { m as t, t as n } from "./mermaid-parser.core-BXD_TD1T.js";
3
3
  import { n as r } from "./chunk-Y2CYZVJY-BAad7w_K.js";
4
- import "./chunk-O7XYJQB3-C87zK8E5.js";
5
- import "./chunk-6AEJRKK7-DDXoGWDs.js";
6
- import { n as i, r as a, t as o } from "./chunk-GTNCS2PH-CzDYTYNy.js";
4
+ import "./chunk-O7XYJQB3-A66QSOPA.js";
5
+ import "./chunk-6AEJRKK7-3YWRP4aV.js";
6
+ import { n as i, r as a, t as o } from "./chunk-GTNCS2PH-BZ9WMD1v.js";
7
7
  import { t as s } from "./chunk-JWPE2WC7-BGVSGRTC.js";
8
8
  //#region ../../node_modules/mermaid/dist/chunks/mermaid.core/abnfDiagram-O67JEVCF.mjs
9
9
  var c = t().RailroadAbnf.parser.LangiumParser, l = /* @__PURE__ */ r((e) => {
@@ -1,13 +1,13 @@
1
- import { bt as e, gt as t } from "./icon-button-Dl9PDYCE.js";
2
- import { n, t as r } from "./src-CJ8DNrI1.js";
3
- import { c as i, i as a } from "./chunk-ZIGJFQKS-HDJ6e6OJ.js";
1
+ import { bt as e, gt as t } from "./icon-button-BxySFfrr.js";
2
+ import { n, t as r } from "./src-C9kQSo6K.js";
3
+ import { c as i, i as a } from "./chunk-ZIGJFQKS-C3xUAXJq.js";
4
4
  import { n as o } from "./mermaid-parser.core-BXD_TD1T.js";
5
5
  import { n as s } from "./chunk-Y2CYZVJY-BAad7w_K.js";
6
- import { H as c, U as l, Y as u, a as d, b as f, f as p, q as m, v as h, w as g, x as _, y as v, z as y } from "./chunk-O7XYJQB3-C87zK8E5.js";
7
- import { t as b } from "./chunk-6AEJRKK7-DDXoGWDs.js";
6
+ import { H as c, U as l, Y as u, a as d, b as f, f as p, q as m, v as h, w as g, x as _, y as v, z as y } from "./chunk-O7XYJQB3-A66QSOPA.js";
7
+ import { t as b } from "./chunk-6AEJRKK7-3YWRP4aV.js";
8
8
  import { t as x } from "./chunk-JWPE2WC7-BGVSGRTC.js";
9
- import { i as S, r as C, t as w } from "./chunk-742MDFTN-nG_ROTnT.js";
10
- import { n as T } from "./chunk-MBY4JIJT-IA2XBafa.js";
9
+ import { i as S, r as C, t as w } from "./chunk-742MDFTN-Cs1qGiTK.js";
10
+ import { n as T } from "./chunk-MBY4JIJT-C3RQP_Nk.js";
11
11
  import { t as E } from "./cytoscape.esm-DXVRLXF3.js";
12
12
  //#region ../../node_modules/cytoscape-fcose/node_modules/cose-base/node_modules/layout-base/layout-base.js
13
13
  var D = /* @__PURE__ */ t(((e, t) => {