@nxgt/material 3.94.0 → 3.95.1

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 (391) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +6 -2
  3. package/dist/{alert-dialog-BaqK-rmd.js → alert-dialog-D4r0Kn9h.js} +1 -1
  4. package/dist/{async-slice-BfNpIJAH.js → async-slice-Bx438UlG.js} +1 -1
  5. package/dist/{button-CozGHXAv.js → button-Z_xcg10A.js} +1 -1
  6. package/dist/{calculator-BIx6cwgU.js → calculator-BfIBMiFX.js} +10 -10
  7. package/dist/calculator-field.js +6 -6
  8. package/dist/{calculator-segment-BsaxUtzL.js → calculator-segment-DQE1EFdw.js} +1 -1
  9. package/dist/calculator.js +1 -1
  10. package/dist/charts.js +3 -3
  11. package/dist/{chip-DMEUGYdC.js → chip-Bb9SM3Ly.js} +2 -2
  12. package/dist/{code-editor-BWfky-aN.js → code-editor-Cw-dOrn2.js} +4 -4
  13. package/dist/code-editor.js +4 -4
  14. package/dist/{code-language-items-BUaNYJuw.js → code-language-items-BVfxGKiv.js} +2 -2
  15. package/dist/components/components.css +7 -1
  16. package/dist/components/theme-tokens.css +7 -0
  17. package/dist/components/ui/dates/duration-field/duration-field-expressive.css +2 -63
  18. package/dist/components/ui/dates/picker-trigger/typed-box-expressive.css +30 -21
  19. package/dist/components/ui/fields/number-field/number-field-score.css +151 -0
  20. package/dist/components/ui/fields/quantity-field/quantity-field.css +117 -0
  21. package/dist/components/ui/primitives/field-box/field-box-parts.css +1 -2
  22. package/dist/components/ui/primitives/field-box/field-box-tokens.css +54 -36
  23. package/dist/components/ui/primitives/field-box/field-box.css +44 -86
  24. package/dist/components/ui/primitives/field-box/field-stepper.css +129 -0
  25. package/dist/{components-CZpdAQMh.js → components-DXCfO95n.js} +13787 -13699
  26. package/dist/components.js +26 -27
  27. package/dist/{conversion-variant-aIBhul_U.js → conversion-variant-Ciii9Rbh.js} +4 -4
  28. package/dist/currency-field-DipsI0Bv.js +303 -0
  29. package/dist/{dialog-H40HjqXN.js → dialog-CFuONiW5.js} +3 -3
  30. package/dist/dnd.js +1 -1
  31. package/dist/{dropdown-menu-CawkIlW8.js → dropdown-menu-BvtBDoSD.js} +1 -1
  32. package/dist/editor.js +8 -8
  33. package/dist/{empty-state-sRVjgCis.js → empty-state-n2zb23YG.js} +1 -1
  34. package/dist/{financial-variant-Bqo9-swy.js → financial-variant-CTXTLbE_.js} +7 -7
  35. package/dist/{hooks-BTj_WJm9.js → hooks-zyRsvilJ.js} +2 -2
  36. package/dist/hooks.js +2 -2
  37. package/dist/{hover-card-BZU1DWGY.js → hover-card-BJ15hu7B.js} +1 -1
  38. package/dist/i18n.js +3 -3
  39. package/dist/{icon-badge-CXgvqMsM.js → icon-badge-B2ns44Cz.js} +1 -1
  40. package/dist/{icon-button-B9WjQ3RO.js → icon-button-BG438okX.js} +1 -1
  41. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  42. package/dist/lib/components/ui/fields/number-field/number-control.d.ts +10 -3
  43. package/dist/lib/components/ui/fields/number-field/number-field-base.d.ts +2 -0
  44. package/dist/lib/components/ui/fields/number-field/number-field.d.ts +7 -1
  45. package/dist/lib/components/ui/fields/number-field/number-field.types.d.ts +13 -0
  46. package/dist/lib/components/ui/fields/number-field/number-score-control.d.ts +19 -0
  47. package/dist/lib/components/ui/fields/number-field/number-stepper.d.ts +16 -2
  48. package/dist/lib/components/ui/fields/quantity-field/quantity-field.d.ts +4 -3
  49. package/dist/lib/components/ui/fields/quantity-field/quantity-row.d.ts +5 -9
  50. package/dist/lib/components/ui/fields/quantity-field/quantity-unit-menu.d.ts +19 -0
  51. package/dist/lib/components/ui/fields/quantity-field/quantity-unit.d.ts +11 -4
  52. package/dist/lib/components/ui/fields/quantity-field/use-unit-chip-name.d.ts +14 -0
  53. package/dist/lib/components/ui/fields/switch/partials/switch-row.d.ts +2 -2
  54. package/dist/lib/components/ui/fields/switch/switch.d.ts +2 -2
  55. package/dist/lib/components/ui/fields/text-field/text-field-units.d.ts +24 -0
  56. package/dist/lib/components/ui/fields/text-field/text-field.d.ts +9 -0
  57. package/dist/lib/components/ui/fields/verification-code/partials/code-surface.d.ts +13 -6
  58. package/dist/lib/components/ui/fields/verification-code/partials/recovery-input.d.ts +1 -1
  59. package/dist/lib/components/ui/layout/app-shell/app-sidebar-group.d.ts +12 -0
  60. package/dist/lib/components/ui/layout/app-shell/types.d.ts +7 -0
  61. package/dist/lib/components/ui/primitives/input-group/input-group.d.ts +1 -1
  62. package/dist/lib/i18n/resources/en/en.d.ts +5 -0
  63. package/dist/lib/i18n/resources/en/material.json.d.ts +7 -2
  64. package/dist/lib/i18n/resources/fr/fr.d.ts +5 -0
  65. package/dist/lib/i18n/resources/fr/material.json.d.ts +7 -2
  66. package/dist/lib/i18n/resources/resources.d.ts +10 -0
  67. package/dist/lib/i18n/translator.d.ts +1 -1
  68. package/dist/lib.js +1 -1
  69. package/dist/main.js +32 -33
  70. package/dist/map.js +8 -8
  71. package/dist/material.css +1 -1
  72. package/dist/pdf-reader.js +1 -1
  73. package/dist/percent-field-Cjc_3pP0.js +137 -0
  74. package/dist/{picker-surface-D2aYI4v7.js → picker-surface-Cr2n42qv.js} +4 -4
  75. package/dist/{popover-QQYPWzw6.js → popover-XBAX2Shp.js} +1 -1
  76. package/dist/{pos-types-BIeZGGAs.js → pos-types-BFVWeJki.js} +1 -1
  77. package/dist/{pos-variant-Cdn1AVoA.js → pos-variant-DWB8Bc12.js} +4 -4
  78. package/dist/print.js +1 -1
  79. package/dist/{programmer-variant-CMBybkqw.js → programmer-variant-B-wPnDeX.js} +2 -2
  80. package/dist/{public-CPxFxbi4.js → public-D1bH-KPQ.js} +9 -9
  81. package/dist/{rich-code-block-DKJ8eKzL.js → rich-code-block-DP2RT7pV.js} +5 -5
  82. package/dist/{scientific-variant-CXL1ayb7.js → scientific-variant-BP08Mo0g.js} +2 -2
  83. package/dist/{sortable-provider-BYqwwyr1.js → sortable-provider-CHGZrS0f.js} +2 -2
  84. package/dist/{spinner-D7ol2n_-.js → spinner-rk8J5y9O.js} +1 -1
  85. package/dist/styles.css +2 -0
  86. package/dist/{tabs-DyiFTy5g.js → tabs-nuYLggwC.js} +1 -1
  87. package/dist/text-field-DOndWDT5.js +169 -0
  88. package/dist/theme-picker.js +2 -2
  89. package/dist/{theme-toggle-QZ0bIrg9.js → theme-toggle-5waw9Wk8.js} +1 -1
  90. package/dist/{toolbar-items-BpOEBsSt.js → toolbar-items-Bo-nMzKJ.js} +4 -4
  91. package/dist/{translate-material-DlMetRSJ.js → translate-material-H5GMStyF.js} +1 -1
  92. package/dist/{translator-VtzVrnLm.js → translator-gdpQeToI.js} +14 -4
  93. package/dist/{use-chat-composer-DQ2rTD_q.js → use-chat-composer-DEd6GM2N.js} +23 -24
  94. package/dist/{use-heading-spy-17B5xa7B.js → use-heading-spy-n_wPa5jC.js} +4 -4
  95. package/dist/{use-material-translation-Cx5u36V5.js → use-material-translation-BW5HZMwt.js} +1 -1
  96. package/dist/{use-return-focus-S7g7q_Yn.js → use-return-focus-BC4sGh1b.js} +1 -1
  97. package/docs/README.md +1 -0
  98. package/docs/components/date-and-time.md +25 -23
  99. package/docs/components/form-fields.md +80 -26
  100. package/docs/components/navigation-and-layout.md +1 -1
  101. package/docs/guides/app-shell.md +15 -0
  102. package/docs/guides/field-look-2-x.md +10 -4
  103. package/docs/guides/field-look-refined.md +130 -0
  104. package/docs/guides/layouts.md +2 -1
  105. package/docs/guides/theming.md +39 -31
  106. package/docs/previews/backgrounds-icons-quiet-band.webp +0 -0
  107. package/docs/previews/backgrounds-icons.webp +0 -0
  108. package/docs/previews/backgrounds-matrix.webp +0 -0
  109. package/docs/previews/buttons-actions-actioncard.webp +0 -0
  110. package/docs/previews/buttons-actions-backlink.webp +0 -0
  111. package/docs/previews/buttons-actions-button.webp +0 -0
  112. package/docs/previews/buttons-actions-buttongroup.webp +0 -0
  113. package/docs/previews/buttons-actions-fab.webp +0 -0
  114. package/docs/previews/buttons-actions-fabmenu.webp +0 -0
  115. package/docs/previews/buttons-actions-iconbutton.webp +0 -0
  116. package/docs/previews/buttons-actions-languageswitcher.webp +0 -0
  117. package/docs/previews/buttons-actions-linkbutton.webp +0 -0
  118. package/docs/previews/buttons-actions-loadmorebutton.webp +0 -0
  119. package/docs/previews/buttons-actions-loadmorefooter.webp +0 -0
  120. package/docs/previews/buttons-actions-responsivebutton.webp +0 -0
  121. package/docs/previews/buttons-actions-scrolltolatestbutton.webp +0 -0
  122. package/docs/previews/buttons-actions-scrolltotop.webp +0 -0
  123. package/docs/previews/buttons-actions-splitbutton.webp +0 -0
  124. package/docs/previews/buttons-actions-themetoggle.webp +0 -0
  125. package/docs/previews/buttons-actions-toolbar-density-and-keyboard.webp +0 -0
  126. package/docs/previews/buttons-actions-toolbar.webp +0 -0
  127. package/docs/previews/data-display-accordioncard.webp +0 -0
  128. package/docs/previews/data-display-apiendpoint.webp +0 -0
  129. package/docs/previews/data-display-apioperation.webp +0 -0
  130. package/docs/previews/data-display-avatar.webp +0 -0
  131. package/docs/previews/data-display-badge.webp +0 -0
  132. package/docs/previews/data-display-card-presets.webp +0 -0
  133. package/docs/previews/data-display-changehistory.webp +0 -0
  134. package/docs/previews/data-display-chip.webp +0 -0
  135. package/docs/previews/data-display-codegroup.webp +0 -0
  136. package/docs/previews/data-display-description.webp +0 -0
  137. package/docs/previews/data-display-enrolmentcard.webp +0 -0
  138. package/docs/previews/data-display-enrolmentsecret.webp +0 -0
  139. package/docs/previews/data-display-metric-cards.webp +0 -0
  140. package/docs/previews/data-display-periodcards.webp +0 -0
  141. package/docs/previews/data-display-recoverycodes.webp +0 -0
  142. package/docs/previews/data-display-recoverycodesstatus.webp +0 -0
  143. package/docs/previews/data-display-secretcard.webp +0 -0
  144. package/docs/previews/data-display-terminal.webp +0 -0
  145. package/docs/previews/data-display-timeline.webp +0 -0
  146. package/docs/previews/data-display-tonevalue.webp +0 -0
  147. package/docs/previews/data-display-votetally.webp +0 -0
  148. package/docs/previews/data-table-filter-lists-datagrid.webp +0 -0
  149. package/docs/previews/data-table-filter-lists-datatable.webp +0 -0
  150. package/docs/previews/data-table-filter-lists-daygroupedlist.webp +0 -0
  151. package/docs/previews/data-table-filter-lists-drag-and-drop.webp +0 -0
  152. package/docs/previews/data-table-filter-lists-facetgroup.webp +0 -0
  153. package/docs/previews/data-table-filter-lists-filter.webp +0 -0
  154. package/docs/previews/data-table-filter-lists-listempty.webp +0 -0
  155. package/docs/previews/data-table-filter-lists-listpane.webp +0 -0
  156. package/docs/previews/data-table-filter-lists-markinglist.webp +0 -0
  157. package/docs/previews/data-table-filter-lists-pagination.webp +0 -0
  158. package/docs/previews/data-table-filter-lists-servertable.webp +0 -0
  159. package/docs/previews/data-table-filter-lists-tree.webp +0 -0
  160. package/docs/previews/date-time-agefield.webp +0 -0
  161. package/docs/previews/date-time-calendar-expressive.webp +0 -0
  162. package/docs/previews/date-time-calendar.webp +0 -0
  163. package/docs/previews/date-time-datefield.webp +0 -0
  164. package/docs/previews/date-time-daterangefield.webp +0 -0
  165. package/docs/previews/date-time-durationfield.webp +0 -0
  166. package/docs/previews/date-time-fields-expressive.webp +0 -0
  167. package/docs/previews/date-time-halfdayrangefield.webp +0 -0
  168. package/docs/previews/date-time-nowindicator.webp +0 -0
  169. package/docs/previews/date-time-timefield.webp +0 -0
  170. package/docs/previews/date-time-timepicker-tiles.webp +0 -0
  171. package/docs/previews/date-time-timepicker.webp +0 -0
  172. package/docs/previews/feedback-status-alert.webp +0 -0
  173. package/docs/previews/feedback-status-alertdialog.webp +0 -0
  174. package/docs/previews/feedback-status-celebration.webp +0 -0
  175. package/docs/previews/feedback-status-circularprogress.webp +0 -0
  176. package/docs/previews/feedback-status-confirmationdialog.webp +0 -0
  177. package/docs/previews/feedback-status-confirmdialog.webp +0 -0
  178. package/docs/previews/feedback-status-countdowntimer.webp +0 -0
  179. package/docs/previews/feedback-status-customalertdialog.webp +0 -0
  180. package/docs/previews/feedback-status-customdialog.webp +0 -0
  181. package/docs/previews/feedback-status-emptystate.webp +0 -0
  182. package/docs/previews/feedback-status-errorstate.webp +0 -0
  183. package/docs/previews/feedback-status-hydrateloading.webp +0 -0
  184. package/docs/previews/feedback-status-illustration-education.webp +0 -0
  185. package/docs/previews/feedback-status-illustration-game.webp +0 -0
  186. package/docs/previews/feedback-status-illustration-health.webp +0 -0
  187. package/docs/previews/feedback-status-illustration.webp +0 -0
  188. package/docs/previews/feedback-status-notificationrow.webp +0 -0
  189. package/docs/previews/feedback-status-notifications.webp +0 -0
  190. package/docs/previews/feedback-status-pageloadfailed.webp +0 -0
  191. package/docs/previews/feedback-status-progress.webp +0 -0
  192. package/docs/previews/feedback-status-skeleton.webp +0 -0
  193. package/docs/previews/feedback-status-spinner.webp +0 -0
  194. package/docs/previews/feedback-status-stalenotice.webp +0 -0
  195. package/docs/previews/feedback-status-stepupdialog-retry.webp +0 -0
  196. package/docs/previews/feedback-status-stepupdialog.webp +0 -0
  197. package/docs/previews/feedback-status-toast.webp +0 -0
  198. package/docs/previews/feedback-status-typingindicator.webp +0 -0
  199. package/docs/previews/feedback-status-unsaveddialog.webp +0 -0
  200. package/docs/previews/form-fields-attributes.webp +0 -0
  201. package/docs/previews/form-fields-choicelistfield.webp +0 -0
  202. package/docs/previews/form-fields-colorfield.webp +0 -0
  203. package/docs/previews/form-fields-contacts.webp +0 -0
  204. package/docs/previews/form-fields-countryfield.webp +0 -0
  205. package/docs/previews/form-fields-currencyfield.webp +0 -0
  206. package/docs/previews/form-fields-emailfield.webp +0 -0
  207. package/docs/previews/form-fields-field.webp +0 -0
  208. package/docs/previews/form-fields-formsection.webp +0 -0
  209. package/docs/previews/form-fields-inlineedit.webp +0 -0
  210. package/docs/previews/form-fields-inputgroupfield.webp +0 -0
  211. package/docs/previews/form-fields-localizedtextfields.webp +0 -0
  212. package/docs/previews/form-fields-markdowntextareafield.webp +0 -0
  213. package/docs/previews/form-fields-numberfield.webp +0 -0
  214. package/docs/previews/form-fields-openinghours.webp +0 -0
  215. package/docs/previews/form-fields-otpfield.webp +0 -0
  216. package/docs/previews/form-fields-passwordfield.webp +0 -0
  217. package/docs/previews/form-fields-percentfield.webp +0 -0
  218. package/docs/previews/form-fields-phonefield.webp +0 -0
  219. package/docs/previews/form-fields-postaladdress.webp +0 -0
  220. package/docs/previews/form-fields-repeatablegroup.webp +0 -0
  221. package/docs/previews/form-fields-searchfield.webp +0 -0
  222. package/docs/previews/form-fields-slider.webp +0 -0
  223. package/docs/previews/form-fields-switch.webp +0 -0
  224. package/docs/previews/form-fields-textareafield.webp +0 -0
  225. package/docs/previews/form-fields-textfield.webp +0 -0
  226. package/docs/previews/form-fields-timezonefield.webp +0 -0
  227. package/docs/previews/form-fields-urlfield.webp +0 -0
  228. package/docs/previews/form-fields-verificationcode.webp +0 -0
  229. package/docs/previews/foundations-themes-gallery.webp +0 -0
  230. package/docs/previews/foundations-themes-icon-motifs.webp +0 -0
  231. package/docs/previews/foundations-themes-nesting.webp +0 -0
  232. package/docs/previews/foundations-themes-provider.webp +0 -0
  233. package/docs/previews/foundations-themes-themepicker.webp +0 -0
  234. package/docs/previews/guides-i18n-i18nprovider.webp +0 -0
  235. package/docs/previews/guides-i18n-translated-components.webp +0 -0
  236. package/docs/previews/media-files-audioplayer.webp +0 -0
  237. package/docs/previews/media-files-camera.webp +0 -0
  238. package/docs/previews/media-files-carousel.webp +0 -0
  239. package/docs/previews/media-files-filelist.webp +0 -0
  240. package/docs/previews/media-files-filelistfield.webp +0 -0
  241. package/docs/previews/media-files-filepreview.webp +0 -0
  242. package/docs/previews/media-files-gallery-image-lists.webp +0 -0
  243. package/docs/previews/media-files-gallery-video.webp +0 -0
  244. package/docs/previews/media-files-gallery-viewer.webp +0 -0
  245. package/docs/previews/media-files-gallery.webp +0 -0
  246. package/docs/previews/media-files-imagecropper.webp +0 -0
  247. package/docs/previews/media-files-imageeditor.webp +0 -0
  248. package/docs/previews/media-files-imagefield.webp +0 -0
  249. package/docs/previews/media-files-lightboxgallery.webp +0 -0
  250. package/docs/previews/media-files-map.webp +0 -0
  251. package/docs/previews/media-files-mediaplayer.webp +0 -0
  252. package/docs/previews/media-files-mediaplayerhost.webp +0 -0
  253. package/docs/previews/media-files-mediaplayerlightbox.webp +0 -0
  254. package/docs/previews/media-files-mediaplayermini.webp +0 -0
  255. package/docs/previews/media-files-minigallery.webp +0 -0
  256. package/docs/previews/media-files-pdfreader.webp +0 -0
  257. package/docs/previews/media-files-uploadfield.webp +0 -0
  258. package/docs/previews/navigation-layout-appshell-blue-moon.webp +0 -0
  259. package/docs/previews/navigation-layout-appshell-footer-icon.webp +0 -0
  260. package/docs/previews/navigation-layout-appshell-menu-badge.webp +0 -0
  261. package/docs/previews/navigation-layout-appshell-page-ground.webp +0 -0
  262. package/docs/previews/navigation-layout-appshell-themes.webp +0 -0
  263. package/docs/previews/navigation-layout-appshell.webp +0 -0
  264. package/docs/previews/navigation-layout-authcard-split.webp +0 -0
  265. package/docs/previews/navigation-layout-authcard.webp +0 -0
  266. package/docs/previews/navigation-layout-background.webp +0 -0
  267. package/docs/previews/navigation-layout-breadcrumb.webp +0 -0
  268. package/docs/previews/navigation-layout-doc-api.webp +0 -0
  269. package/docs/previews/navigation-layout-doc-blocks.webp +0 -0
  270. package/docs/previews/navigation-layout-doc.webp +0 -0
  271. package/docs/previews/navigation-layout-editorlayout.webp +0 -0
  272. package/docs/previews/navigation-layout-hero.webp +0 -0
  273. package/docs/previews/navigation-layout-landinglayout.webp +0 -0
  274. package/docs/previews/navigation-layout-listdetailslayout.webp +0 -0
  275. package/docs/previews/navigation-layout-pager.webp +0 -0
  276. package/docs/previews/navigation-layout-recordpage.webp +0 -0
  277. package/docs/previews/navigation-layout-settingslayout.webp +0 -0
  278. package/docs/previews/navigation-layout-sidebar.webp +0 -0
  279. package/docs/previews/navigation-layout-steps.webp +0 -0
  280. package/docs/previews/navigation-layout-stickyactionbar.webp +0 -0
  281. package/docs/previews/navigation-layout-threadlayout-pages.webp +0 -0
  282. package/docs/previews/navigation-layout-toc.webp +0 -0
  283. package/docs/previews/overlays-menus-contextmenu.webp +0 -0
  284. package/docs/previews/overlays-menus-dialog.webp +0 -0
  285. package/docs/previews/overlays-menus-drawer.webp +0 -0
  286. package/docs/previews/overlays-menus-dropdownmenu.webp +0 -0
  287. package/docs/previews/overlays-menus-hovercard.webp +0 -0
  288. package/docs/previews/overlays-menus-popover.webp +0 -0
  289. package/docs/previews/overlays-menus-sheet.webp +0 -0
  290. package/docs/previews/overlays-menus-tooltip.webp +0 -0
  291. package/docs/previews/primitives-accordion.webp +0 -0
  292. package/docs/previews/primitives-card.webp +0 -0
  293. package/docs/previews/primitives-collapsible.webp +0 -0
  294. package/docs/previews/primitives-extendedlabel.webp +0 -0
  295. package/docs/previews/primitives-helpertext.webp +0 -0
  296. package/docs/previews/primitives-input.webp +0 -0
  297. package/docs/previews/primitives-inputgroup.webp +0 -0
  298. package/docs/previews/primitives-label.webp +0 -0
  299. package/docs/previews/primitives-scrollarea.webp +0 -0
  300. package/docs/previews/primitives-segmentednav.webp +0 -0
  301. package/docs/previews/primitives-tabs.webp +0 -0
  302. package/docs/previews/primitives-tabsnav.webp +0 -0
  303. package/docs/previews/primitives-textarea.webp +0 -0
  304. package/docs/previews/primitives-toggle.webp +0 -0
  305. package/docs/previews/primitives-togglegroup.webp +0 -0
  306. package/docs/previews/primitives-typography.webp +0 -0
  307. package/docs/previews/rich-widgets-calculator-conversion.webp +0 -0
  308. package/docs/previews/rich-widgets-chat-action-proposal.webp +0 -0
  309. package/docs/previews/rich-widgets-chat-advanced.webp +0 -0
  310. package/docs/previews/rich-widgets-chat-composer.webp +0 -0
  311. package/docs/previews/rich-widgets-chat-inbox.webp +0 -0
  312. package/docs/previews/rich-widgets-chat-overview.webp +0 -0
  313. package/docs/previews/rich-widgets-chat-thread.webp +0 -0
  314. package/docs/previews/rich-widgets-chat-widget.webp +0 -0
  315. package/docs/previews/rich-widgets-codeeditor.webp +0 -0
  316. package/docs/previews/rich-widgets-compacteditor.webp +0 -0
  317. package/docs/previews/rich-widgets-documenteditor.webp +0 -0
  318. package/docs/previews/rich-widgets-drawing.webp +0 -0
  319. package/docs/previews/rich-widgets-emojipicker.webp +0 -0
  320. package/docs/previews/rich-widgets-eventcalendar.webp +0 -0
  321. package/docs/previews/rich-widgets-kanban-phone-layout.webp +0 -0
  322. package/docs/previews/rich-widgets-kanban.webp +0 -0
  323. package/docs/previews/rich-widgets-mentionlist.webp +0 -0
  324. package/docs/previews/rich-widgets-native-charts-areachart.webp +0 -0
  325. package/docs/previews/rich-widgets-native-charts-barchart.webp +0 -0
  326. package/docs/previews/rich-widgets-native-charts-combochart.webp +0 -0
  327. package/docs/previews/rich-widgets-native-charts-donutchart.webp +0 -0
  328. package/docs/previews/rich-widgets-native-charts-funnelchart.webp +0 -0
  329. package/docs/previews/rich-widgets-native-charts-heatmapchart.webp +0 -0
  330. package/docs/previews/rich-widgets-native-charts-linechart-reference.webp +0 -0
  331. package/docs/previews/rich-widgets-native-charts-linechart.webp +0 -0
  332. package/docs/previews/rich-widgets-native-charts-palette.webp +0 -0
  333. package/docs/previews/rich-widgets-native-charts-piechart.webp +0 -0
  334. package/docs/previews/rich-widgets-native-charts-radarchart.webp +0 -0
  335. package/docs/previews/rich-widgets-native-charts-radialbarchart.webp +0 -0
  336. package/docs/previews/rich-widgets-native-charts-scatterchart.webp +0 -0
  337. package/docs/previews/rich-widgets-questioncard-rich-content.webp +0 -0
  338. package/docs/previews/rich-widgets-questionmediaview.webp +0 -0
  339. package/docs/previews/rich-widgets-questionnavigator.webp +0 -0
  340. package/docs/previews/rich-widgets-quiz.webp +0 -0
  341. package/docs/previews/rich-widgets-richchatcomposer.webp +0 -0
  342. package/docs/previews/rich-widgets-richtexteditor.webp +0 -0
  343. package/docs/previews/rich-widgets-richtextviewer.webp +0 -0
  344. package/docs/previews/selection-choice-autocomplete.webp +0 -0
  345. package/docs/previews/selection-choice-checkbox.webp +0 -0
  346. package/docs/previews/selection-choice-checkboxgroup.webp +0 -0
  347. package/docs/previews/selection-choice-checkcardfield.webp +0 -0
  348. package/docs/previews/selection-choice-chipgroupfield.webp +0 -0
  349. package/docs/previews/selection-choice-choicecardgroup.webp +0 -0
  350. package/docs/previews/selection-choice-combobox.webp +0 -0
  351. package/docs/previews/selection-choice-comboboxfield.webp +0 -0
  352. package/docs/previews/selection-choice-optiontile.webp +0 -0
  353. package/docs/previews/selection-choice-radiogroup.webp +0 -0
  354. package/docs/previews/selection-choice-select.webp +0 -0
  355. package/docs/previews/selection-choice-selectfield.webp +0 -0
  356. package/docs/previews/selection-choice-sortablelist.webp +0 -0
  357. package/docs/previews/selection-choice-switcher.webp +0 -0
  358. package/docs/previews/selection-choice-transferlist.webp +0 -0
  359. package/docs/previews/selection-choice-treeselectfield.webp +0 -0
  360. package/docs/roadmap.md +13 -10
  361. package/docs/troubleshooting.md +44 -0
  362. package/lib/components/components.css +7 -1
  363. package/lib/components/theme-tokens.css +7 -0
  364. package/lib/components/ui/dates/duration-field/duration-field-expressive.css +2 -63
  365. package/lib/components/ui/dates/picker-trigger/typed-box-expressive.css +30 -21
  366. package/lib/components/ui/fields/number-field/number-field-score.css +151 -0
  367. package/lib/components/ui/fields/quantity-field/quantity-field.css +117 -0
  368. package/lib/components/ui/primitives/field-box/field-box-parts.css +1 -2
  369. package/lib/components/ui/primitives/field-box/field-box-tokens.css +54 -36
  370. package/lib/components/ui/primitives/field-box/field-box.css +44 -86
  371. package/lib/components/ui/primitives/field-box/field-stepper.css +129 -0
  372. package/lib/styles.css +2 -0
  373. package/lib/themes/ambre.css +5 -1
  374. package/lib/themes/ardoise.css +5 -1
  375. package/lib/themes/bleumono.css +5 -1
  376. package/lib/themes/bluemoon.css +5 -1
  377. package/lib/themes/corail.css +5 -1
  378. package/lib/themes/foret.css +5 -1
  379. package/lib/themes/lavande.css +5 -1
  380. package/lib/themes/menthe.css +5 -1
  381. package/lib/themes/ocean.css +5 -1
  382. package/lib/themes/pink.css +5 -1
  383. package/lib/themes/prune.css +5 -1
  384. package/lib/themes/sable.css +5 -1
  385. package/lib/themes/slate.css +5 -1
  386. package/lib/themes/teal.css +5 -1
  387. package/package.json +2 -2
  388. package/dist/currency-field-IcEMAcAw.js +0 -289
  389. package/dist/input-group-Df9vp2EZ.js +0 -70
  390. package/dist/percent-field-DrI4_J7x.js +0 -14
  391. package/dist/text-field-BAdY-kpO.js +0 -59
@@ -0,0 +1,130 @@
1
+ # The Refined field look
2
+
3
+ Every text field and picker trigger shares one look, the **field box**. This
4
+ page describes the Refined look it has now, what changed for an app that
5
+ upgraded, and how to tune it or bring a detail of the earlier look back. The
6
+ tokens are listed in [Theming, the field box](theming.md#the-field-box); the
7
+ earlier steps are in [The field look (2.x)](field-look-2-x.md).
8
+
9
+ It is a minor release with no API removed. The one new prop is
10
+ `NumberField`'s `variant="score"`.
11
+
12
+ ## What a field looks like
13
+
14
+ | State | The box |
15
+ | --- | --- |
16
+ | Rest | the card surface, a 1px border that keeps 3:1 or more against it, 8px corners |
17
+ | Hover | the border firms and the surface takes a 2.5% foreground wash (not on a disabled or read-only field) |
18
+ | Focus, or a picker open | a 1px primary border and a 4px ring (it replaces the 3px halo); one ring for the whole box whichever part has focus |
19
+ | Error | an error-text border with a 1px line inside and, on focus, an error ring |
20
+ | Read-only | a dashed border, no surface |
21
+ | Disabled | a recessed surface and a quieter border |
22
+ | Filled | the same as empty: no primary tint. `data-filled` is still set (an empty attribute, or `"true"` / `"false"` on a `Switch` row and an `UploadField`), so your own CSS can style on it |
23
+
24
+ Forced colours and reduced motion are unchanged.
25
+
26
+ Fields that draw their own box follow the same tokens: the OTP slots, the
27
+ verification code slots and recovery input, the inline edit display, the
28
+ `Switcher` search and the `ColorField` swatch. The date, time and duration
29
+ boxes (`DateField`, `DateRangeField`, `TimeField`, `DurationField`) take the
30
+ same focus ring instead of their former 2px inset boundary.
31
+
32
+ ```tsx
33
+ import { TextField } from '@nxgt/material/components';
34
+
35
+ <TextField label="Name" placeholder="Ada Lovelace" helperText="As on your ID." />
36
+ ```
37
+
38
+ ## What each field changed
39
+
40
+ | Field | Change |
41
+ | --- | --- |
42
+ | `TextField` and the `*Field` text wrappers | `leading` / `trailing` icons and actions are muted with no well fill; a text unit (`"/ 20"`, a currency code) sits inline at the end in muted text. `CurrencyField` follows |
43
+ | `NumberField`, `PercentField`, `CalculatorField` | one `role="group"` box; the value is end-aligned in tabular figures, the suffix hugs it, the Decrease and Increase buttons are a tinted round pair at the end (the `DurationField` look), no dividers |
44
+ | `QuantityField`, `AgeField` | the value, the unit and the pair share one box; the unit is a chip that opens a menu |
45
+ | `NumberField variant="score"` | a big value with its maximum, no box at rest; see [the form fields page](../components/form-fields.md#numberfield) |
46
+ | Date, time and duration fields | the shared focus ring, a dashed hairline when read-only, the recessed surface when disabled |
47
+
48
+ ### Tab order and roles (for tests)
49
+
50
+ - The `NumberField` order is the input, Decrease, Increase (it was Decrease,
51
+ input, Increase). With a `CalculatorField`: input, Open calculator,
52
+ Decrease, Increase. A `QuantityField` is value, unit, Decrease, Increase.
53
+ - The number box is a `group`. A test that queries an unnamed
54
+ `getByRole('group')` now also matches it: name the one you mean.
55
+ - A `QuantityField` unit is a button named "Unit: mg", not a `combobox`:
56
+ query `getByRole('button', { name: /unit/i })`.
57
+ - Visual snapshots of fields change; role and name queries hold.
58
+
59
+ ```tsx
60
+ import { QuantityField } from '@nxgt/material/components';
61
+ import type { QuantityValue } from '@nxgt/material/components';
62
+ import { useState } from 'react';
63
+
64
+ export function Dose() {
65
+ const [dose, setDose] = useState<QuantityValue>({ value: 5, unit: 'mg' });
66
+ return (
67
+ <QuantityField
68
+ label="Dose"
69
+ units={[
70
+ { value: 'mg', label: 'mg' },
71
+ { value: 'ml', label: 'mL' },
72
+ ]}
73
+ value={dose}
74
+ onChange={setDose}
75
+ />
76
+ );
77
+ }
78
+ ```
79
+
80
+ ## Tune it
81
+
82
+ Set the tokens after the import, on `:root` and again under `.dark`
83
+ (`--nxgt-field-border` and the like follow `--card` and `--foreground`, so a
84
+ formula you write once usually serves both):
85
+
86
+ ```css
87
+ @import "@nxgt/material/styles.css";
88
+
89
+ :root,
90
+ .dark,
91
+ [data-theme="dark"] {
92
+ --nxgt-field-border: color-mix(in oklab, var(--foreground) 60%, var(--card));
93
+ --nxgt-field-halo: color-mix(in oklab, var(--primary-text) 32%, transparent);
94
+ }
95
+ ```
96
+
97
+ Lightening the border below 3:1 against the card fails WCAG 1.4.11; the story
98
+ `Guides/Accessibility/Field contrast` measures the shipped values.
99
+
100
+ ## Getting a detail of the earlier look back
101
+
102
+ **A tint on a filled field.** The `--nxgt-field-bg-filled` tokens are kept but
103
+ alias the rest surface, and nothing paints from them any more. Style on
104
+ `data-filled` instead; an unlayered rule beats the field box's layer. The selector excludes `"false"` because the field box sets an empty `data-filled`, while a `Switch` row and an `UploadField` write a boolean, so an off switch or an empty upload renders `data-filled="false"`:
105
+
106
+ ```css
107
+ .nxgt-field-box[data-filled]:not([data-filled="false"]) {
108
+ background-color: color-mix(in oklab, var(--primary) 10%, transparent);
109
+ }
110
+
111
+ .dark .nxgt-field-box[data-filled]:not([data-filled="false"]),
112
+ [data-theme="dark"] .nxgt-field-box[data-filled]:not([data-filled="false"]) {
113
+ background-color: color-mix(in oklab, var(--primary) 26%, transparent);
114
+ }
115
+ ```
116
+
117
+ **The 3px halo and the translucent surface.** Set `--nxgt-field-halo` and
118
+ `--nxgt-field-bg` (for example to `color-mix(in oklab, var(--muted) 5%, transparent)`).
119
+ A halo's width is fixed at 4px.
120
+
121
+ **The 12px corners.** `--nxgt-field-radius: 0.75rem`.
122
+
123
+ **NumberField steppers, order and box.** There is no prop for the old outlined
124
+ buttons around the input or the old tab order.
125
+
126
+ ## Related
127
+
128
+ - [Theming, the field box](theming.md#the-field-box) lists every token.
129
+ - [Form fields](../components/form-fields.md) has each field's props.
130
+ - [Troubleshooting](../troubleshooting.md#a-filled-field-has-no-primary-tint-after-upgrading) covers the lost filled tint.
@@ -207,7 +207,8 @@ dashboard, a list and detail, a form and dialog, a table and settings, a dense
207
207
  detail page, a status board, a landing page, a search dialog with its results
208
208
  page, a team feed, the sign-in, sign-up and forgotten-password screens, a
209
209
  gallery of pictures, settings with sections, a messages thread, an overview of
210
- rearrangeable widgets on `DashboardGrid` and a document editor. Start from the
210
+ rearrangeable widgets on `DashboardGrid`, a document editor and an entry sheet (one row per person with a
211
+ mark out of a total, a comment behind a toggle, locked rows and one sticky Save). Start from the
211
212
  closest one and replace the data.
212
213
 
213
214
  ## See also
@@ -71,6 +71,7 @@ at the top are needed is in [getting started](../getting-started.md#styles).
71
71
  | `--primary-text` | `text-primary-text` | primary drawn as text or an icon on a page, card or popover surface: `Typography tone="primary"`, links, the `Alert` primary icon, selected labels. In light, `--primary` mixed toward black: 96 % at most, solved lower on a tinted page so a tonal Button label on a striped, selected or header row, or straight on the page ground, reaches 4.6:1 (79 % on teal, 76 % on corail; read the shipped theme file for each preset); in dark, `--primary` mixed 60 % with white (`color-mix(in oklab, var(--primary) 40%, white)`), well over 4.5:1 on `--background` and `--card` |
72
72
  | `--primary-indicator` | `bg-primary-indicator`, `border-primary-indicator`, `ring-primary-indicator`, `stroke-primary-indicator` | primary drawn as a non-text mark that carries a state (WCAG 1.4.11, 3:1): an active bar or dot, a selected or focused border, a ring, a spinner arc. Equal to `--primary` in light; in dark, `--primary` mixed 25 % with white (`color-mix(in oklab, var(--primary) 75%, white)`), 4.8:1 on `--background`, 4.5:1 on `--card`, 4.2:1 on `--muted` (`--primary` itself gives 2.7, 2.5 and 2.3:1) |
73
73
  | `--error-text` | `text-error-text` | error drawn as text: field messages, `HelperText` in its error state, form and dialog errors, `variant="error"` menu items |
74
+ | `--success-text`, `--warning-text` | `text-success-text`, `text-warning-text` | success and warning drawn as text: a field's valid or caution message. Solved like `--error-text` for every theme and preset: 4.5:1 or more on `--background` and `--card`, in light and dark |
74
75
  | `--destructive` | `bg-destructive`, `text-destructive` | deprecated alias of `--error`: the light theme sets it to `var(--error)`, the dark theme keeps its own value; use `--error` |
75
76
  | `--ground` | `bg-ground` | the page's ground under `ActivityLayout`: the tinted colour the cards stand on (see [Page ground](#page-ground)) |
76
77
  | `--surface-container`, `--surface-container-high` | `bg-surface-container`, `bg-surface-container-high` | tinted chrome: `--surface-container` is the scrolled top app bar (draw it with a 1px `--border` hairline), the primary at 12 % over `--ground` in light (less for a very dark primary, solved per seed) and 26 % in dark; `--surface-container-high` is raised chrome such as a search field, the primary at 16 % over `--background` in light (+4 points over the solved share) and 34 % over `--ground` in dark. Foreground, muted foreground and primary text keep 4.5:1 or more on both, in every preset |
@@ -828,29 +829,36 @@ export function DangerZone() {
828
829
  ## The field box
829
830
 
830
831
  Text fields and picker triggers share one look, the field box
831
- (`nxgt-field-box` in `styles.css`), drawn from its own tokens. `fg`, `bg`,
832
- `primary`, `primary-text` and `error` below stand for `--foreground`,
833
- `--background`, `--primary`, `--primary-text` and `--error`; "a % b" is
834
- `color-mix(in oklab, a %, b)`, and "a %" is the same over `transparent`.
835
-
836
- | Token | Light | Dark | Used for |
837
- | --- | --- | --- | --- |
838
- | `--nxgt-field-bg` | fg 2% bg | fg 5% bg | the empty surface |
839
- | `--nxgt-field-bg-hover` | fg 6.5% bg | fg 9% bg | the empty surface under the pointer |
840
- | `--nxgt-field-bg-filled` | primary 10% | primary 26% | the tint once the field holds a value |
841
- | `--nxgt-field-bg-filled-hover` | primary 14% | primary 32% | the same under the pointer |
842
- | `--nxgt-field-bg-invalid` | error 5% bg | error 10% bg | the faint wash of a field in error |
843
- | `--nxgt-field-border` | fg 13% | fg 16% | the hairline |
844
- | `--nxgt-field-border-hover` | fg 24% | fg 32% | the hairline under the pointer |
845
- | `--nxgt-field-focus` | `var(--primary-text)` | `var(--primary-text)` | the focused or open border |
846
- | `--nxgt-field-halo` | primary-text 22% | primary-text 35% | the 3px halo around a focused field |
847
- | `--nxgt-field-halo-invalid` | error 22% | error 40% | the halo of a focused field in error |
848
- | `--nxgt-field-well` | fg 6% | fg 10% | the round well behind a trigger's chevron, flag or avatar |
849
- | `--nxgt-field-radius` | `0.5rem` | the same | the corners (8px, the buttons' radius; `0.75rem` gives the earlier 12px) |
850
- | `--nxgt-field-inner-radius` | `0.25rem` | the same | the facing corners when a picker's list opens against its trigger |
851
- | `--nxgt-field-list-shadow` | a fg 9% ring and a soft drop shadow | a fg 12% ring and a deeper shadow | the shadow of that list |
852
- | `--nxgt-option-ring` | primary-text 70% | primary-text 50% | the 1px keyboard ring of a list or menu row: the lightest that keeps 3:1 against the row and the popover |
853
- | `--nxgt-option-muted` | muted-foreground 78% toward foreground | the same mix | muted text on a row or a filled box: a row's description and suffix ("GMT+2", "+33"), a box's suffix and `TreeSelectField`'s path; keeps 4.5:1 on the 18 % chosen row |
832
+ (`nxgt-field-box` in `styles.css`), drawn from its own tokens: the Refined
833
+ look, on the card surface, with a border that keeps 3:1 against it, a 1px
834
+ primary border with a 4px ring on focus, and no tint once the field holds a
835
+ value ([the Refined field look](field-look-refined.md) has the states and the
836
+ way back). `fg`, `card`, `primary-text` and `error` below stand for
837
+ `--foreground`, `--card`, `--primary-text` and `--error`; "a % b" is
838
+ `color-mix(in oklab, a %, b)`, and "a %" is the same over `transparent`. Light
839
+ and dark take the same formulas: they follow `--card` and `--foreground`.
840
+
841
+ | Token | Value | Used for |
842
+ | --- | --- | --- |
843
+ | `--nxgt-field-bg` | `var(--card)` | the surface |
844
+ | `--nxgt-field-bg-hover` | fg 2.5% card | the surface under the pointer |
845
+ | `--nxgt-field-bg-disabled` | fg 5% card | the recessed surface of a disabled field |
846
+ | `--nxgt-field-bg-filled`, `--nxgt-field-bg-filled-hover` | the two above | kept so a read resolves; an override no longer paints (nothing uses them): style on `data-filled` |
847
+ | `--nxgt-field-bg-invalid` | `var(--nxgt-field-bg)` | alias: an error no longer washes the surface |
848
+ | `--nxgt-field-border` | fg 52% card | the rest border (3:1 or more against the card) |
849
+ | `--nxgt-field-border-hover` | fg 74% card | the border under the pointer |
850
+ | `--nxgt-field-border-readonly` | fg 50% card | the dashed border of a read-only field (3:1 or more against the card and the page ground) |
851
+ | `--nxgt-field-border-disabled` | fg 24% card | the border of a disabled field |
852
+ | `--nxgt-field-focus` | `var(--primary-text)` | the focused or open border (1px) |
853
+ | `--nxgt-field-error` | `var(--error-text)` | the border of a field in error |
854
+ | `--nxgt-field-halo` | primary-text 24% | the 4px ring around a focused field |
855
+ | `--nxgt-field-halo-invalid` | error 26% | the ring of a focused field in error |
856
+ | `--nxgt-field-well` | fg 6% (dark: fg 10%) | the round well behind a trigger's chevron, flag or avatar |
857
+ | `--nxgt-field-radius` | `0.5rem` | the corners (8px, the buttons' radius; `0.75rem` gives the earlier 12px) |
858
+ | `--nxgt-field-inner-radius` | `0.25rem` | the facing corners when a picker's list opens against its trigger |
859
+ | `--nxgt-field-list-shadow` | a fg 9% ring and a soft drop shadow (dark: a fg 12% ring and a deeper shadow) | the shadow of that list |
860
+ | `--nxgt-option-ring` | primary-text 70% (dark: 50%) | the 1px keyboard ring of a list or menu row: the lightest that keeps 3:1 against the row and the popover |
861
+ | `--nxgt-option-muted` | muted-foreground 78% toward foreground | muted text on a row or a filled box: a row's description and suffix ("GMT+2", "+33"), a box's suffix and `TreeSelectField`'s path; keeps 4.5:1 on the 18 % chosen row |
854
862
 
855
863
  Set them after the import. The colour tokens are declared again under
856
864
  `.dark`, so a dark wrapper computes them from its own colours, and a colour
@@ -862,12 +870,12 @@ radii are declared once, on `:root`.
862
870
 
863
871
  :root {
864
872
  --nxgt-field-radius: 0.25rem;
865
- --nxgt-field-bg-filled: color-mix(in oklab, var(--primary) 8%, transparent);
873
+ --nxgt-field-border: color-mix(in oklab, var(--foreground) 60%, var(--card));
866
874
  }
867
875
 
868
876
  .dark,
869
877
  [data-theme="dark"] {
870
- --nxgt-field-bg-filled: color-mix(in oklab, var(--primary) 20%, transparent);
878
+ --nxgt-field-border: color-mix(in oklab, var(--foreground) 60%, var(--card));
871
879
  }
872
880
  ```
873
881
 
@@ -882,12 +890,12 @@ knows both, so a `className="rounded-lg"` you pass replaces the field's
882
890
  radius instead of sitting beside it. Round parts (the chevron's well, a
883
891
  colour swatch) stay `rounded-full`.
884
892
 
885
- The shipped values keep the placeholder and the text at 4.5:1 or more, the
886
- focus and error borders at 3:1, a filled field 1.15:1 apart from the page and
887
- 1.10:1 apart from an empty one, in both themes; the story
888
- `Guides/Accessibility/Field contrast` measures them. A lighter dark filled
889
- tint can fall under 1.10:1; check it with that story. What changed from the
890
- earlier look, and how to get it back: [The field look (2.x)](field-look-2-x.md).
893
+ The shipped values keep the placeholder and the text at 4.5:1 or more and the
894
+ rest, focus and error borders at 3:1 or more against the card, in every shipped
895
+ theme and both modes; the story `Guides/Accessibility/Field contrast` measures
896
+ them. A border you lighten can fall under 3:1: check it with that story. What
897
+ changed, and how to get the earlier look back: [The Refined field
898
+ look](field-look-refined.md) and [The field look (2.x)](field-look-2-x.md).
891
899
 
892
900
  ## Links
893
901