@12-apps/ui 6.84.0 → 6.86.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 (686) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +7 -0
  3. package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
  4. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +4 -4
  5. package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
  6. package/dist/_internal/components/data-display/Badge/Badge.styles.js +3 -3
  7. package/dist/_internal/components/data-display/Badge/BadgeContent.js +3 -3
  8. package/dist/_internal/components/data-display/CardKit/CardKebab.js +5 -5
  9. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
  10. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +9 -9
  11. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
  12. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +7 -7
  13. package/dist/_internal/components/data-display/Carousel/Carousel.js +10 -10
  14. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +6 -6
  15. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +3 -3
  16. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  17. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  18. package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
  19. package/dist/_internal/components/data-display/Chart/chart-internals.js +3 -3
  20. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  21. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +1 -1
  22. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +64 -64
  23. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +78 -78
  24. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +5 -5
  25. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +6 -6
  26. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +8 -8
  27. package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
  28. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
  29. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
  30. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +3 -3
  31. package/dist/_internal/components/data-display/DataViews/data-views-card-body.js +6 -6
  32. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +19 -19
  33. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +6 -6
  34. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +3 -3
  35. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +6 -6
  36. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  37. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  38. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +31 -31
  39. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
  40. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +5 -5
  41. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +61 -61
  42. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +34 -34
  43. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +28 -28
  44. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +31 -31
  45. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +3 -3
  46. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +5 -5
  47. package/dist/_internal/components/data-display/DataViews/data-views-quick-chip.js +3 -3
  48. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +7 -7
  49. package/dist/_internal/components/data-display/DataViews/data-views-search.js +3 -3
  50. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  51. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -17
  52. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +20 -20
  53. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -16
  54. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  55. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
  56. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +22 -22
  57. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +17 -17
  58. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  59. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +24 -24
  60. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +4 -4
  61. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +5 -5
  62. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
  63. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  64. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  65. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
  66. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -3
  67. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +4 -4
  68. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
  69. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +8 -8
  70. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +4 -4
  71. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +3 -3
  72. package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
  73. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +16 -16
  74. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +3 -3
  75. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
  76. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
  77. package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
  78. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  79. package/dist/_internal/components/data-display/RegionMap/RegionMap.fixtures.js +51 -0
  80. package/dist/_internal/components/data-display/RegionMap/RegionMap.fixtures.js.map +1 -0
  81. package/dist/_internal/components/data-display/RegionMap/RegionMap.helpers.js +38 -0
  82. package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +9 -0
  83. package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js.map +1 -0
  84. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +37 -0
  85. package/dist/_internal/components/data-display/RegionMap/RegionMap.js.map +1 -0
  86. package/dist/_internal/components/data-display/RegionMap/RegionMap.types.js +1 -0
  87. package/dist/_internal/components/data-display/RegionMap/RegionMap.types.js.map +1 -0
  88. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +10 -0
  89. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js.map +1 -0
  90. package/dist/_internal/components/data-display/RegionMap/RegionMapLegend.js +9 -0
  91. package/dist/_internal/components/data-display/RegionMap/RegionMapLegend.js.map +1 -0
  92. package/dist/_internal/components/data-display/RegionMap/RegionMapList.js +34 -0
  93. package/dist/_internal/components/data-display/RegionMap/RegionMapList.js.map +1 -0
  94. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
  95. package/dist/_internal/components/data-display/Sheet/Sheet.js +6 -6
  96. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +3 -3
  97. package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
  98. package/dist/_internal/components/data-display/Table/Table.js +2 -2
  99. package/dist/_internal/components/data-display/index.js +91 -74
  100. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  101. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  102. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +7 -7
  103. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +10 -10
  104. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +9 -9
  105. package/dist/_internal/components/feedback/index.js +21 -21
  106. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +8 -8
  107. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +6 -6
  108. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +4 -4
  109. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +4 -4
  110. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +3 -3
  111. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +4 -4
  112. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +3 -3
  113. package/dist/_internal/components/form/Button/Button.js +4 -4
  114. package/dist/_internal/components/form/Button/Button.styles.js +3 -3
  115. package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
  116. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +3 -3
  117. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +8 -8
  118. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +4 -4
  119. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +4 -4
  120. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +5 -5
  121. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +4 -4
  122. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +11 -11
  123. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +3 -3
  124. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +4 -4
  125. package/dist/_internal/components/form/CepField/CepField.js +6 -6
  126. package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
  127. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  128. package/dist/_internal/components/form/Command/Command.js +3 -3
  129. package/dist/_internal/components/form/Command/Command.styles.js +3 -3
  130. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +3 -3
  131. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
  132. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +12 -12
  133. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
  134. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
  135. package/dist/_internal/components/form/Input/Input.factory.js +4 -4
  136. package/dist/_internal/components/form/Input/Input.js +5 -5
  137. package/dist/_internal/components/form/Input/Input.styles.js +3 -3
  138. package/dist/_internal/components/form/InputOTP/InputOTP.js +4 -4
  139. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +3 -3
  140. package/dist/_internal/components/form/Label/Label.js +3 -3
  141. package/dist/_internal/components/form/Label/Label.styles.js +3 -3
  142. package/dist/_internal/components/form/Menubar/Menubar.item.js +3 -3
  143. package/dist/_internal/components/form/Menubar/Menubar.js +7 -7
  144. package/dist/_internal/components/form/Menubar/Menubar.styles.js +3 -3
  145. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +5 -5
  146. package/dist/_internal/components/form/NumberField/NumberField.js +6 -6
  147. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  148. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +5 -5
  149. package/dist/_internal/components/form/PickerSheet/PickerSheet.js +6 -6
  150. package/dist/_internal/components/form/PickerSheet/PickerSheet.parts.js +4 -4
  151. package/dist/_internal/components/form/PickerSheet/PickerSheet.styles.js +3 -3
  152. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +5 -5
  153. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +3 -3
  154. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +4 -4
  155. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  156. package/dist/_internal/components/form/Select/Select.js +6 -6
  157. package/dist/_internal/components/form/Select/Select.menu.js +4 -4
  158. package/dist/_internal/components/form/Select/Select.searchable.js +4 -4
  159. package/dist/_internal/components/form/Select/Select.styles.js +3 -3
  160. package/dist/_internal/components/form/Textarea/Textarea.js +3 -3
  161. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -4
  162. package/dist/_internal/components/form/Toggle/Toggle.js +4 -4
  163. package/dist/_internal/components/form/Toggle/Toggle.styles.js +3 -3
  164. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +3 -3
  165. package/dist/_internal/components/form/index.js +59 -59
  166. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +12 -12
  167. package/dist/_internal/components/form/total-form/Fields/CepField.js +7 -7
  168. package/dist/_internal/components/form/total-form/Fields/SelectField.js +7 -7
  169. package/dist/_internal/components/form/total-form/Fields/TextField.js +6 -6
  170. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +4 -4
  171. package/dist/_internal/components/form/total-form/Fields/index.js +31 -31
  172. package/dist/_internal/components/form/total-form/SubmitButton.js +5 -5
  173. package/dist/_internal/components/index.js +222 -205
  174. package/dist/_internal/components/layout/Box/Box.js +6 -6
  175. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +3 -3
  176. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  177. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +4 -4
  178. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +3 -3
  179. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +3 -3
  180. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +3 -3
  181. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +3 -3
  182. package/dist/_internal/components/layout/Screen/Screen.js +7 -7
  183. package/dist/_internal/components/layout/SettingCard/SettingCard.js +11 -11
  184. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +9 -9
  185. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +10 -10
  186. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +10 -10
  187. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +12 -12
  188. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +11 -11
  189. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +12 -12
  190. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
  191. package/dist/_internal/components/layout/Skeleton/Skeleton.js +2 -2
  192. package/dist/_internal/components/layout/Stack/Stack.js +7 -7
  193. package/dist/_internal/components/layout/TableFilter/TableFilter.js +3 -3
  194. package/dist/_internal/components/layout/index.js +34 -34
  195. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
  196. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
  197. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
  198. package/dist/_internal/components/navigation/Pagination/Pagination.js +4 -4
  199. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +3 -3
  200. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +3 -3
  201. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
  202. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  203. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +3 -3
  204. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +3 -3
  205. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +3 -3
  206. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
  207. package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +3 -3
  208. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  209. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +2 -2
  210. package/dist/_internal/components/navigation/index.js +18 -18
  211. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
  212. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
  213. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  214. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +3 -3
  215. package/dist/_internal/components/utility/index.js +16 -16
  216. package/dist/_internal/en-US.data-display.js +2 -2
  217. package/dist/_internal/icons/Icon.js +6 -6
  218. package/dist/_internal/provider/UiProvider.js +5 -5
  219. package/dist/_internal/provider/mui-bridge.js +4 -4
  220. package/dist/_internal/provider/use-ui-theme.js +5 -5
  221. package/dist/_internal/pt-BR.data-display.js +2 -2
  222. package/dist/_internal/social-login-button/social-login-button.js +5 -5
  223. package/dist/_internal/tokens/density.js +3 -3
  224. package/dist/_internal/tokens/field-height.js +2 -2
  225. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  226. package/dist/charts.js +14 -14
  227. package/dist/{chunk-3RHU2Y2N.js → chunk-2DDCRHJE.js} +2 -2
  228. package/dist/{chunk-6ONQTXFM.js → chunk-2GDPZ53K.js} +2 -2
  229. package/dist/{chunk-X3EB67O2.js → chunk-2VRJ577J.js} +4 -4
  230. package/dist/{chunk-QSRZOXQI.js → chunk-2WVHZIWP.js} +2 -2
  231. package/dist/{chunk-6OYB3MRF.js → chunk-33AVAYCR.js} +3 -3
  232. package/dist/{chunk-62SXUU5U.js → chunk-3DPPDGOF.js} +5 -5
  233. package/dist/{chunk-RXKFPXVH.js → chunk-3IX2TP4I.js} +2 -2
  234. package/dist/chunk-3OL2TSEJ.js +80 -0
  235. package/dist/chunk-3OL2TSEJ.js.map +1 -0
  236. package/dist/{chunk-BTGXHQX3.js → chunk-4JNC5AEF.js} +2 -2
  237. package/dist/{chunk-6MOJK2QT.js → chunk-4SQ2WCZA.js} +2 -2
  238. package/dist/{chunk-QHFAKEZZ.js → chunk-4V37DAMA.js} +3 -3
  239. package/dist/{chunk-PWXDMP7G.js → chunk-52RHAAIH.js} +10 -10
  240. package/dist/{chunk-E3E4L7MH.js → chunk-56GWNA5V.js} +5 -5
  241. package/dist/{chunk-I54LHHZS.js → chunk-5CP5Z3YU.js} +2 -2
  242. package/dist/{chunk-L6UTYEUS.js → chunk-5S5K73I6.js} +3 -3
  243. package/dist/{chunk-RBW5QQXW.js → chunk-5XTPEA3O.js} +2 -2
  244. package/dist/{chunk-LOGSJH2Q.js → chunk-5ZC7CNU4.js} +2 -2
  245. package/dist/{chunk-V4JMZZGH.js → chunk-6A4PTK5Q.js} +5 -5
  246. package/dist/{chunk-2P5ZBBTL.js → chunk-6GICMRDX.js} +5 -5
  247. package/dist/{chunk-QOTMQLMW.js → chunk-6OISIUZM.js} +3 -3
  248. package/dist/{chunk-34FX3NRZ.js → chunk-6PTP5NID.js} +2 -2
  249. package/dist/{chunk-3XZZSHE5.js → chunk-6VTOGR36.js} +5 -5
  250. package/dist/{chunk-RLDTV5I2.js → chunk-6WHIJPEF.js} +2 -2
  251. package/dist/{chunk-6LMYQJZP.js → chunk-6YSGP2WS.js} +3 -2
  252. package/dist/{chunk-6LMYQJZP.js.map → chunk-6YSGP2WS.js.map} +1 -1
  253. package/dist/{chunk-D7SOXI2K.js → chunk-72HOUWAW.js} +2 -2
  254. package/dist/{chunk-2D4WKET2.js → chunk-75FHDUJW.js} +5 -5
  255. package/dist/{chunk-AAREDFH6.js → chunk-7TKQIZ3K.js} +2 -2
  256. package/dist/{chunk-WPFVQVQC.js → chunk-7VUXSNVZ.js} +5 -5
  257. package/dist/chunk-A63WU4UZ.js +226 -0
  258. package/dist/chunk-A63WU4UZ.js.map +1 -0
  259. package/dist/chunk-ABRUOINB.js +1 -0
  260. package/dist/chunk-ABRUOINB.js.map +1 -0
  261. package/dist/{chunk-UERGWYGY.js → chunk-ABRVOPC2.js} +3 -3
  262. package/dist/{chunk-M74YHHJE.js → chunk-ACBHZG3Z.js} +5 -5
  263. package/dist/chunk-ACFKPE2T.js +1 -0
  264. package/dist/chunk-ACFKPE2T.js.map +1 -0
  265. package/dist/{chunk-GPTNZ57P.js → chunk-ARMKSYEQ.js} +3 -3
  266. package/dist/{chunk-MHFXJRLD.js → chunk-AT6UKTH4.js} +2 -2
  267. package/dist/{chunk-O4G7QKDU.js → chunk-AWUFS2ZC.js} +7 -7
  268. package/dist/{chunk-66QQ7YQN.js → chunk-AYJGRQT4.js} +3 -2
  269. package/dist/{chunk-66QQ7YQN.js.map → chunk-AYJGRQT4.js.map} +1 -1
  270. package/dist/{chunk-YWJCMGTE.js → chunk-BECKKDYG.js} +2 -2
  271. package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
  272. package/dist/{chunk-ENRB6PIN.js → chunk-BRHRK7BK.js} +2 -2
  273. package/dist/chunk-BRZKOUEL.js +115 -0
  274. package/dist/chunk-BRZKOUEL.js.map +1 -0
  275. package/dist/{chunk-Z47SYKRX.js → chunk-C74PDNTF.js} +3 -3
  276. package/dist/{chunk-KEBYZ2MO.js → chunk-CARUHKZW.js} +11 -11
  277. package/dist/{chunk-3HSLEUVW.js → chunk-CBO46LJH.js} +5 -5
  278. package/dist/{chunk-EMSMJRP3.js → chunk-CESGZRVQ.js} +4 -4
  279. package/dist/{chunk-LODYTVOO.js → chunk-CFDWKQZT.js} +2 -2
  280. package/dist/chunk-COOSJKZL.js +197 -0
  281. package/dist/chunk-COOSJKZL.js.map +1 -0
  282. package/dist/{chunk-TPAMLIN7.js → chunk-CPZGFIFH.js} +2 -2
  283. package/dist/{chunk-UIWVSZ6I.js → chunk-CSGBHYW6.js} +2 -2
  284. package/dist/{chunk-JW7MN4DG.js → chunk-D34PZJH3.js} +2 -2
  285. package/dist/{chunk-WT7VZDTI.js → chunk-DDNUPFPE.js} +5 -5
  286. package/dist/{chunk-LZ5PGB7U.js → chunk-DYRZRY2T.js} +5 -5
  287. package/dist/{chunk-73BMQ3VC.js → chunk-ENJOBJPK.js} +2 -2
  288. package/dist/{chunk-U36BXXQ7.js → chunk-EP3DRILI.js} +2 -2
  289. package/dist/{chunk-W2JYXZC2.js → chunk-FCLON3MO.js} +3 -3
  290. package/dist/{chunk-I5NTADBO.js → chunk-FEKWKWGK.js} +4 -4
  291. package/dist/{chunk-33MMQHYU.js → chunk-FJ3UZ4RC.js} +2 -2
  292. package/dist/{chunk-LNIK7FJO.js → chunk-FORQEHRQ.js} +2 -2
  293. package/dist/{chunk-N3W6FZOC.js → chunk-FQGPYP2M.js} +4 -4
  294. package/dist/{chunk-MAHY7PK3.js → chunk-FQMLTCXT.js} +4 -4
  295. package/dist/{chunk-BDJIP4HG.js → chunk-FRUDRDJX.js} +4 -4
  296. package/dist/{chunk-MO4FFK62.js → chunk-FXECKKPW.js} +3 -3
  297. package/dist/{chunk-UWVVKUCG.js → chunk-FZEDQNUN.js} +3 -3
  298. package/dist/{chunk-YASSCBWN.js → chunk-GHP5JLL3.js} +2 -2
  299. package/dist/{chunk-3S352ZSG.js → chunk-GLR5MSU3.js} +2 -2
  300. package/dist/chunk-GMRQPNG3.js +80 -0
  301. package/dist/chunk-GMRQPNG3.js.map +1 -0
  302. package/dist/{chunk-ATJTGQYE.js → chunk-GOQOVKUZ.js} +3 -3
  303. package/dist/{chunk-REMODSVN.js → chunk-HDTFLW42.js} +2 -2
  304. package/dist/{chunk-SFVHZAGE.js → chunk-HG2YLNGJ.js} +2 -2
  305. package/dist/{chunk-OKDAHCYE.js → chunk-HJJR2WGL.js} +2 -2
  306. package/dist/{chunk-J34VGMA5.js → chunk-HNEZWVDR.js} +2 -2
  307. package/dist/{chunk-MGFTHOPG.js → chunk-HUXAIQC5.js} +2 -2
  308. package/dist/{chunk-OUI5IPS6.js → chunk-HWPQKHN2.js} +6 -6
  309. package/dist/{chunk-PGVGCDPD.js → chunk-I7JUAHUO.js} +3 -3
  310. package/dist/{chunk-LC6ND4ET.js → chunk-IBOFASAZ.js} +2 -2
  311. package/dist/{chunk-TNDTEI6D.js → chunk-IDRVQVDL.js} +2 -2
  312. package/dist/{chunk-4PUCT3RX.js → chunk-IEAPXS57.js} +2 -2
  313. package/dist/{chunk-NQCTANF3.js → chunk-IF5UY3CT.js} +4 -4
  314. package/dist/{chunk-OQ554425.js → chunk-IFX5KP65.js} +4 -4
  315. package/dist/{chunk-VQBY73QH.js → chunk-IMCSY2SI.js} +6 -6
  316. package/dist/{chunk-BARTUKJU.js → chunk-IU2WSJ4F.js} +2 -2
  317. package/dist/{chunk-GVSRBFP3.js → chunk-IYDXKLCE.js} +7 -7
  318. package/dist/{chunk-5NT2M2JI.js → chunk-JKIKHWD2.js} +4 -4
  319. package/dist/{chunk-IKXCAYFH.js → chunk-JVTZ7FWR.js} +2 -2
  320. package/dist/{chunk-DPHSJLMN.js → chunk-JZQYVGPV.js} +2 -2
  321. package/dist/{chunk-3W2B7IZG.js → chunk-K6WY2CHG.js} +2 -2
  322. package/dist/{chunk-RWCQ6TEM.js → chunk-KR4TN3OF.js} +2 -2
  323. package/dist/{chunk-SUCVFEPT.js → chunk-KRPDBVUB.js} +5 -5
  324. package/dist/{chunk-LRIPJ2D5.js → chunk-KRYOT3KB.js} +2 -2
  325. package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
  326. package/dist/{chunk-I3OKAQ5L.js → chunk-L7HNQRFS.js} +7 -7
  327. package/dist/{chunk-J7C7FPVO.js → chunk-LABIUXDM.js} +2 -2
  328. package/dist/{chunk-GM7BG3SD.js → chunk-LLPPIO3K.js} +3 -3
  329. package/dist/{chunk-RCTHCXS6.js → chunk-LRQT4MQO.js} +2 -2
  330. package/dist/{chunk-LTSVYILY.js → chunk-LXMFHD7M.js} +4 -4
  331. package/dist/{chunk-72OG3AGH.js → chunk-LYB6YYTG.js} +2 -2
  332. package/dist/{chunk-DRJL3JHR.js → chunk-LZJHHMOF.js} +2 -2
  333. package/dist/{chunk-Y4KR4LT2.js → chunk-MIUPTZS6.js} +2 -2
  334. package/dist/{chunk-XXUTD74L.js → chunk-MK6UXAWY.js} +3 -3
  335. package/dist/{chunk-BIUT3K6A.js → chunk-MKNW4FRR.js} +6 -6
  336. package/dist/{chunk-NZDIO5UG.js → chunk-MVNFUIJS.js} +5 -5
  337. package/dist/{chunk-APBIQH4G.js → chunk-N5OEDOJT.js} +7 -7
  338. package/dist/{chunk-UAOE3ZPC.js → chunk-NEYZV6V5.js} +6 -6
  339. package/dist/{chunk-ZXHODKHH.js → chunk-NKHNUTTY.js} +3 -3
  340. package/dist/{chunk-JL4I7OQE.js → chunk-NOF2FF4K.js} +2 -2
  341. package/dist/{chunk-WOSUYOAU.js → chunk-NQYC7V5N.js} +5 -5
  342. package/dist/{chunk-2XI4R6UO.js → chunk-NTRWUDP6.js} +2 -2
  343. package/dist/{chunk-ZCCKIWZU.js → chunk-NYA26GV2.js} +2 -2
  344. package/dist/{chunk-N3LW5ER5.js → chunk-NZBEE2PR.js} +3 -3
  345. package/dist/{chunk-RUQNKOSP.js → chunk-OPY2AGAU.js} +4 -4
  346. package/dist/{chunk-FYJDI5BW.js → chunk-OQN2FHEL.js} +3 -3
  347. package/dist/{chunk-WNIL2KTB.js → chunk-OQW4OERS.js} +3 -3
  348. package/dist/{chunk-KG7OTJ26.js → chunk-OZYUE2BI.js} +2 -2
  349. package/dist/{chunk-Y3TD7HOY.js → chunk-P4Q7JK4L.js} +2 -2
  350. package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
  351. package/dist/chunk-PBRCKHN3.js +75 -0
  352. package/dist/chunk-PBRCKHN3.js.map +1 -0
  353. package/dist/{chunk-4AJY7HMH.js → chunk-PD7MKJCM.js} +5 -5
  354. package/dist/{chunk-ICKR3QTG.js → chunk-PGHSNG33.js} +4 -4
  355. package/dist/{chunk-ZNJGEDCE.js → chunk-PGYYDSNX.js} +2 -2
  356. package/dist/{chunk-KXTNTDRD.js → chunk-PPEHBI5O.js} +2 -2
  357. package/dist/{chunk-5RPT32EL.js → chunk-PVIQDBUN.js} +2 -2
  358. package/dist/{chunk-N3ZOZWP5.js → chunk-Q3HYEAVQ.js} +2 -2
  359. package/dist/{chunk-HKQQ2NED.js → chunk-Q4GAPZDA.js} +2 -2
  360. package/dist/{chunk-VUBFCHXL.js → chunk-Q7XLTN2D.js} +3 -3
  361. package/dist/{chunk-YQIT3ET7.js → chunk-QAH3XILB.js} +3 -3
  362. package/dist/{chunk-YH7G44WL.js → chunk-QLJU7UUI.js} +2 -2
  363. package/dist/{chunk-TVMSXL3R.js → chunk-QO7UJXXO.js} +2 -2
  364. package/dist/{chunk-EXTES7LP.js → chunk-QZOQVJ5L.js} +4 -4
  365. package/dist/{chunk-QQHZBJMU.js → chunk-RGVNXES5.js} +4 -4
  366. package/dist/{chunk-MWPD2BXO.js → chunk-RHVJ3L4U.js} +2 -2
  367. package/dist/{chunk-YV4O7KDR.js → chunk-S6HIZQIG.js} +5 -5
  368. package/dist/{chunk-MQVIYTH5.js → chunk-SAKSIN7E.js} +2 -2
  369. package/dist/{chunk-4HBCWKIX.js → chunk-SGFRSRAL.js} +2 -2
  370. package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
  371. package/dist/{chunk-37G7M2GJ.js → chunk-T6QVM5Q5.js} +5 -5
  372. package/dist/{chunk-BLNFOP2O.js → chunk-T6YTDEY4.js} +4 -4
  373. package/dist/{chunk-QTLM2YY2.js → chunk-TI4FGQYV.js} +2 -2
  374. package/dist/{chunk-6HMDUUVJ.js → chunk-TRYR424I.js} +4 -4
  375. package/dist/{chunk-V2UJEICC.js → chunk-TVDHA7BT.js} +8 -8
  376. package/dist/{chunk-74KCGLOU.js → chunk-U2ILXZDG.js} +2 -2
  377. package/dist/{chunk-TR7ZA67L.js → chunk-U2QV4TTZ.js} +2 -2
  378. package/dist/{chunk-GNDIVKWF.js → chunk-U3HGQHEO.js} +3 -3
  379. package/dist/{chunk-3YFDGFEK.js → chunk-U4WAAZXJ.js} +2 -2
  380. package/dist/{chunk-UQUN2NGE.js → chunk-UAFSEZ2E.js} +2 -2
  381. package/dist/{chunk-D5Y4PNC5.js → chunk-ULAZDF6D.js} +2 -2
  382. package/dist/{chunk-3OWFUFZL.js → chunk-UMI3GYWI.js} +6 -6
  383. package/dist/{chunk-Q7QQXNL7.js → chunk-UT545JBQ.js} +3 -3
  384. package/dist/{chunk-JXK53XJW.js → chunk-UTUYXH72.js} +5 -5
  385. package/dist/{chunk-E72INDBL.js → chunk-UXOFA3ZP.js} +4 -4
  386. package/dist/{chunk-PDSZN26U.js → chunk-V6KQ5R4T.js} +11 -11
  387. package/dist/{chunk-FLJ3RIRP.js → chunk-VEKTKCSB.js} +5 -5
  388. package/dist/{chunk-UJACXYC2.js → chunk-VHGHF537.js} +3 -3
  389. package/dist/{chunk-OFXCSLGX.js → chunk-VLH3IMJG.js} +2 -2
  390. package/dist/{chunk-AKBL7S7A.js → chunk-VPGDYI63.js} +5 -5
  391. package/dist/{chunk-6DGNMASB.js → chunk-VPH3TENY.js} +2 -2
  392. package/dist/{chunk-45AON4CS.js → chunk-VYQZ5U3N.js} +2 -2
  393. package/dist/{chunk-GXSHLMT4.js → chunk-WDSJ6SVY.js} +2 -2
  394. package/dist/{chunk-JMDT3GQ3.js → chunk-WMAS6DZR.js} +3 -3
  395. package/dist/{chunk-XE7QBHXN.js → chunk-WTOA52EQ.js} +2 -2
  396. package/dist/{chunk-ILNAPS44.js → chunk-XMWTVDQN.js} +20 -20
  397. package/dist/{chunk-JIAIPOEV.js → chunk-XNMU32XC.js} +2 -2
  398. package/dist/{chunk-PEMXXFXL.js → chunk-XQJPR57I.js} +2 -2
  399. package/dist/{chunk-54F7QIV2.js → chunk-XW44IFYE.js} +5 -5
  400. package/dist/{chunk-I2KAN3YB.js → chunk-Y3LK6ZQG.js} +2 -2
  401. package/dist/{chunk-7AC2UGTU.js → chunk-Y46R26TE.js} +3 -3
  402. package/dist/{chunk-GQ2T44BC.js → chunk-YEKPQAOW.js} +2 -2
  403. package/dist/{chunk-YC2QYRNE.js → chunk-YGWLMTPB.js} +2 -2
  404. package/dist/{chunk-H56CRMCM.js → chunk-YHPSPFU5.js} +9 -9
  405. package/dist/{chunk-F6LZHF4O.js → chunk-YTDUIU7X.js} +2 -2
  406. package/dist/{chunk-CO7GH3W7.js → chunk-YWXCLPCX.js} +2 -2
  407. package/dist/{chunk-RIPG3QIN.js → chunk-Z445LLFN.js} +4 -4
  408. package/dist/{chunk-M7HYNXCU.js → chunk-ZAPP32GD.js} +2 -2
  409. package/dist/{chunk-C2OX3C7L.js → chunk-ZLVRCQPG.js} +7 -7
  410. package/dist/{chunk-SGAHME6W.js → chunk-ZVZTQF7E.js} +4 -4
  411. package/dist/data-display/Alert.js +2 -2
  412. package/dist/data-display/AsyncStateContainer.js +4 -4
  413. package/dist/data-display/Badge.js +3 -3
  414. package/dist/data-display/CardKit.js +10 -10
  415. package/dist/data-display/Carousel.js +10 -10
  416. package/dist/data-display/Chart.js +14 -14
  417. package/dist/data-display/DataGrid.js +1 -1
  418. package/dist/data-display/DataViews.js +88 -88
  419. package/dist/data-display/FleetMap.js +24 -24
  420. package/dist/data-display/LazyImage.js +5 -5
  421. package/dist/data-display/Lightbox.js +6 -6
  422. package/dist/data-display/LoadingState.js +3 -3
  423. package/dist/data-display/MapPreview.js +16 -16
  424. package/dist/data-display/Progress.js +2 -2
  425. package/dist/data-display/RegionMap.js +45 -0
  426. package/dist/data-display/RegionMap.js.map +1 -0
  427. package/dist/data-display/Sheet.js +6 -6
  428. package/dist/data-display/StatCard.js +3 -3
  429. package/dist/data-display/Table.js +2 -2
  430. package/dist/en-US.js +6 -6
  431. package/dist/feedback/ConfirmAction.js +5 -5
  432. package/dist/feedback/Modal.js +2 -2
  433. package/dist/feedback/NotificationStatusNotice.js +7 -7
  434. package/dist/feedback/SequenceResolver.js +10 -10
  435. package/dist/form/AddressAutocomplete.js +8 -8
  436. package/dist/form/Autocomplete.js +4 -4
  437. package/dist/form/Button.js +4 -4
  438. package/dist/form/Calendar.js +5 -5
  439. package/dist/form/CategorySelect.js +11 -11
  440. package/dist/form/CepField.js +6 -6
  441. package/dist/form/Checkbox.js +2 -2
  442. package/dist/form/CodeEditor.js +3 -3
  443. package/dist/form/Command.js +3 -3
  444. package/dist/form/CreatableSelect.js +3 -3
  445. package/dist/form/DateRangePicker.js +12 -12
  446. package/dist/form/Input/outlined.js +5 -5
  447. package/dist/form/Input.js +5 -5
  448. package/dist/form/InputOTP.js +4 -4
  449. package/dist/form/Label.js +3 -3
  450. package/dist/form/MenuSelect.js +4 -4
  451. package/dist/form/Menubar.js +7 -7
  452. package/dist/form/NumberField.js +6 -6
  453. package/dist/form/PhoneInput.js +5 -5
  454. package/dist/form/PickerSheet.js +6 -6
  455. package/dist/form/RadioGroup.js +5 -5
  456. package/dist/form/RichTextEditor.js +2 -2
  457. package/dist/form/Select.js +6 -6
  458. package/dist/form/Textarea.js +3 -3
  459. package/dist/form/Toggle.js +4 -4
  460. package/dist/form/ToggleGroup.js +3 -3
  461. package/dist/form/total-form.js +34 -34
  462. package/dist/icons.js +6 -6
  463. package/dist/layout/Box.js +6 -6
  464. package/dist/layout/ContentToolbar.js +12 -12
  465. package/dist/layout/Screen.js +7 -7
  466. package/dist/layout/SettingCard.js +15 -15
  467. package/dist/layout/SettingsLayout.js +2 -2
  468. package/dist/layout/Skeleton.js +2 -2
  469. package/dist/layout/Stack.js +7 -7
  470. package/dist/layout/TableFilter.js +3 -3
  471. package/dist/locales.js +14 -14
  472. package/dist/navigation/AppHeader.js +9 -9
  473. package/dist/navigation/CommandPalette.js +2 -2
  474. package/dist/navigation/Pagination.js +4 -4
  475. package/dist/navigation/SectionNav.js +4 -4
  476. package/dist/navigation/Tabs.js +2 -2
  477. package/dist/provider.js +6 -6
  478. package/dist/pt-BR.js +8 -8
  479. package/dist/social-login-button.js +5 -5
  480. package/dist/tokens.js +4 -4
  481. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts +25 -0
  482. package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -0
  483. package/dist/types/components/data-display/RegionMap/RegionMap.fixtures.d.ts +27 -0
  484. package/dist/types/components/data-display/RegionMap/RegionMap.fixtures.d.ts.map +1 -0
  485. package/dist/types/components/data-display/RegionMap/RegionMap.helpers.d.ts +110 -0
  486. package/dist/types/components/data-display/RegionMap/RegionMap.helpers.d.ts.map +1 -0
  487. package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts +28 -0
  488. package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts.map +1 -0
  489. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +116 -0
  490. package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -0
  491. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +28 -0
  492. package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -0
  493. package/dist/types/components/data-display/RegionMap/RegionMapLegend.d.ts +12 -0
  494. package/dist/types/components/data-display/RegionMap/RegionMapLegend.d.ts.map +1 -0
  495. package/dist/types/components/data-display/RegionMap/RegionMapList.d.ts +20 -0
  496. package/dist/types/components/data-display/RegionMap/RegionMapList.d.ts.map +1 -0
  497. package/dist/types/components/data-display/RegionMap/index.d.ts +5 -0
  498. package/dist/types/components/data-display/RegionMap/index.d.ts.map +1 -0
  499. package/dist/types/components/data-display/index.d.ts +1 -0
  500. package/dist/types/components/data-display/index.d.ts.map +1 -1
  501. package/dist/types/components/form/total-form/Fields/SelectField.d.ts.map +1 -1
  502. package/dist/types/components/form/total-form/Fields/ToggleField.d.ts.map +1 -1
  503. package/dist/user-avatar.js +5 -5
  504. package/dist/utility/WorkflowStep.js +3 -3
  505. package/package.json +5 -1
  506. package/src/components/data-display/RegionMap/RegionMap.fixtures.ts +67 -0
  507. package/src/components/data-display/RegionMap/RegionMap.helpers.ts +338 -0
  508. package/src/components/data-display/RegionMap/RegionMap.hooks.ts +125 -0
  509. package/src/components/data-display/RegionMap/RegionMap.md +144 -0
  510. package/src/components/data-display/RegionMap/RegionMap.tsx +88 -0
  511. package/src/components/data-display/RegionMap/RegionMap.types.ts +117 -0
  512. package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +299 -0
  513. package/src/components/data-display/RegionMap/RegionMapLegend.tsx +81 -0
  514. package/src/components/data-display/RegionMap/RegionMapList.tsx +167 -0
  515. package/src/components/data-display/RegionMap/index.ts +13 -0
  516. package/src/components/data-display/RegionMap/tests.md +22 -0
  517. package/src/components/data-display/RegionMap/track.md +13 -0
  518. package/src/components/data-display/index.ts +1 -0
  519. package/src/components/form/total-form/Fields/SelectField.tsx +4 -0
  520. package/src/components/form/total-form/Fields/ToggleField.tsx +3 -0
  521. package/dist/chunk-CDCTLPMD.js +0 -1
  522. /package/dist/{chunk-CDCTLPMD.js.map → _internal/components/data-display/RegionMap/RegionMap.helpers.js.map} +0 -0
  523. /package/dist/{chunk-3RHU2Y2N.js.map → chunk-2DDCRHJE.js.map} +0 -0
  524. /package/dist/{chunk-6ONQTXFM.js.map → chunk-2GDPZ53K.js.map} +0 -0
  525. /package/dist/{chunk-X3EB67O2.js.map → chunk-2VRJ577J.js.map} +0 -0
  526. /package/dist/{chunk-QSRZOXQI.js.map → chunk-2WVHZIWP.js.map} +0 -0
  527. /package/dist/{chunk-6OYB3MRF.js.map → chunk-33AVAYCR.js.map} +0 -0
  528. /package/dist/{chunk-62SXUU5U.js.map → chunk-3DPPDGOF.js.map} +0 -0
  529. /package/dist/{chunk-RXKFPXVH.js.map → chunk-3IX2TP4I.js.map} +0 -0
  530. /package/dist/{chunk-BTGXHQX3.js.map → chunk-4JNC5AEF.js.map} +0 -0
  531. /package/dist/{chunk-6MOJK2QT.js.map → chunk-4SQ2WCZA.js.map} +0 -0
  532. /package/dist/{chunk-QHFAKEZZ.js.map → chunk-4V37DAMA.js.map} +0 -0
  533. /package/dist/{chunk-PWXDMP7G.js.map → chunk-52RHAAIH.js.map} +0 -0
  534. /package/dist/{chunk-E3E4L7MH.js.map → chunk-56GWNA5V.js.map} +0 -0
  535. /package/dist/{chunk-I54LHHZS.js.map → chunk-5CP5Z3YU.js.map} +0 -0
  536. /package/dist/{chunk-L6UTYEUS.js.map → chunk-5S5K73I6.js.map} +0 -0
  537. /package/dist/{chunk-RBW5QQXW.js.map → chunk-5XTPEA3O.js.map} +0 -0
  538. /package/dist/{chunk-LOGSJH2Q.js.map → chunk-5ZC7CNU4.js.map} +0 -0
  539. /package/dist/{chunk-V4JMZZGH.js.map → chunk-6A4PTK5Q.js.map} +0 -0
  540. /package/dist/{chunk-2P5ZBBTL.js.map → chunk-6GICMRDX.js.map} +0 -0
  541. /package/dist/{chunk-QOTMQLMW.js.map → chunk-6OISIUZM.js.map} +0 -0
  542. /package/dist/{chunk-34FX3NRZ.js.map → chunk-6PTP5NID.js.map} +0 -0
  543. /package/dist/{chunk-3XZZSHE5.js.map → chunk-6VTOGR36.js.map} +0 -0
  544. /package/dist/{chunk-RLDTV5I2.js.map → chunk-6WHIJPEF.js.map} +0 -0
  545. /package/dist/{chunk-D7SOXI2K.js.map → chunk-72HOUWAW.js.map} +0 -0
  546. /package/dist/{chunk-2D4WKET2.js.map → chunk-75FHDUJW.js.map} +0 -0
  547. /package/dist/{chunk-AAREDFH6.js.map → chunk-7TKQIZ3K.js.map} +0 -0
  548. /package/dist/{chunk-WPFVQVQC.js.map → chunk-7VUXSNVZ.js.map} +0 -0
  549. /package/dist/{chunk-UERGWYGY.js.map → chunk-ABRVOPC2.js.map} +0 -0
  550. /package/dist/{chunk-M74YHHJE.js.map → chunk-ACBHZG3Z.js.map} +0 -0
  551. /package/dist/{chunk-GPTNZ57P.js.map → chunk-ARMKSYEQ.js.map} +0 -0
  552. /package/dist/{chunk-MHFXJRLD.js.map → chunk-AT6UKTH4.js.map} +0 -0
  553. /package/dist/{chunk-O4G7QKDU.js.map → chunk-AWUFS2ZC.js.map} +0 -0
  554. /package/dist/{chunk-YWJCMGTE.js.map → chunk-BECKKDYG.js.map} +0 -0
  555. /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
  556. /package/dist/{chunk-ENRB6PIN.js.map → chunk-BRHRK7BK.js.map} +0 -0
  557. /package/dist/{chunk-Z47SYKRX.js.map → chunk-C74PDNTF.js.map} +0 -0
  558. /package/dist/{chunk-KEBYZ2MO.js.map → chunk-CARUHKZW.js.map} +0 -0
  559. /package/dist/{chunk-3HSLEUVW.js.map → chunk-CBO46LJH.js.map} +0 -0
  560. /package/dist/{chunk-EMSMJRP3.js.map → chunk-CESGZRVQ.js.map} +0 -0
  561. /package/dist/{chunk-LODYTVOO.js.map → chunk-CFDWKQZT.js.map} +0 -0
  562. /package/dist/{chunk-TPAMLIN7.js.map → chunk-CPZGFIFH.js.map} +0 -0
  563. /package/dist/{chunk-UIWVSZ6I.js.map → chunk-CSGBHYW6.js.map} +0 -0
  564. /package/dist/{chunk-JW7MN4DG.js.map → chunk-D34PZJH3.js.map} +0 -0
  565. /package/dist/{chunk-WT7VZDTI.js.map → chunk-DDNUPFPE.js.map} +0 -0
  566. /package/dist/{chunk-LZ5PGB7U.js.map → chunk-DYRZRY2T.js.map} +0 -0
  567. /package/dist/{chunk-73BMQ3VC.js.map → chunk-ENJOBJPK.js.map} +0 -0
  568. /package/dist/{chunk-U36BXXQ7.js.map → chunk-EP3DRILI.js.map} +0 -0
  569. /package/dist/{chunk-W2JYXZC2.js.map → chunk-FCLON3MO.js.map} +0 -0
  570. /package/dist/{chunk-I5NTADBO.js.map → chunk-FEKWKWGK.js.map} +0 -0
  571. /package/dist/{chunk-33MMQHYU.js.map → chunk-FJ3UZ4RC.js.map} +0 -0
  572. /package/dist/{chunk-LNIK7FJO.js.map → chunk-FORQEHRQ.js.map} +0 -0
  573. /package/dist/{chunk-N3W6FZOC.js.map → chunk-FQGPYP2M.js.map} +0 -0
  574. /package/dist/{chunk-MAHY7PK3.js.map → chunk-FQMLTCXT.js.map} +0 -0
  575. /package/dist/{chunk-BDJIP4HG.js.map → chunk-FRUDRDJX.js.map} +0 -0
  576. /package/dist/{chunk-MO4FFK62.js.map → chunk-FXECKKPW.js.map} +0 -0
  577. /package/dist/{chunk-UWVVKUCG.js.map → chunk-FZEDQNUN.js.map} +0 -0
  578. /package/dist/{chunk-YASSCBWN.js.map → chunk-GHP5JLL3.js.map} +0 -0
  579. /package/dist/{chunk-3S352ZSG.js.map → chunk-GLR5MSU3.js.map} +0 -0
  580. /package/dist/{chunk-ATJTGQYE.js.map → chunk-GOQOVKUZ.js.map} +0 -0
  581. /package/dist/{chunk-REMODSVN.js.map → chunk-HDTFLW42.js.map} +0 -0
  582. /package/dist/{chunk-SFVHZAGE.js.map → chunk-HG2YLNGJ.js.map} +0 -0
  583. /package/dist/{chunk-OKDAHCYE.js.map → chunk-HJJR2WGL.js.map} +0 -0
  584. /package/dist/{chunk-J34VGMA5.js.map → chunk-HNEZWVDR.js.map} +0 -0
  585. /package/dist/{chunk-MGFTHOPG.js.map → chunk-HUXAIQC5.js.map} +0 -0
  586. /package/dist/{chunk-OUI5IPS6.js.map → chunk-HWPQKHN2.js.map} +0 -0
  587. /package/dist/{chunk-PGVGCDPD.js.map → chunk-I7JUAHUO.js.map} +0 -0
  588. /package/dist/{chunk-LC6ND4ET.js.map → chunk-IBOFASAZ.js.map} +0 -0
  589. /package/dist/{chunk-TNDTEI6D.js.map → chunk-IDRVQVDL.js.map} +0 -0
  590. /package/dist/{chunk-4PUCT3RX.js.map → chunk-IEAPXS57.js.map} +0 -0
  591. /package/dist/{chunk-NQCTANF3.js.map → chunk-IF5UY3CT.js.map} +0 -0
  592. /package/dist/{chunk-OQ554425.js.map → chunk-IFX5KP65.js.map} +0 -0
  593. /package/dist/{chunk-VQBY73QH.js.map → chunk-IMCSY2SI.js.map} +0 -0
  594. /package/dist/{chunk-BARTUKJU.js.map → chunk-IU2WSJ4F.js.map} +0 -0
  595. /package/dist/{chunk-GVSRBFP3.js.map → chunk-IYDXKLCE.js.map} +0 -0
  596. /package/dist/{chunk-5NT2M2JI.js.map → chunk-JKIKHWD2.js.map} +0 -0
  597. /package/dist/{chunk-IKXCAYFH.js.map → chunk-JVTZ7FWR.js.map} +0 -0
  598. /package/dist/{chunk-DPHSJLMN.js.map → chunk-JZQYVGPV.js.map} +0 -0
  599. /package/dist/{chunk-3W2B7IZG.js.map → chunk-K6WY2CHG.js.map} +0 -0
  600. /package/dist/{chunk-RWCQ6TEM.js.map → chunk-KR4TN3OF.js.map} +0 -0
  601. /package/dist/{chunk-SUCVFEPT.js.map → chunk-KRPDBVUB.js.map} +0 -0
  602. /package/dist/{chunk-LRIPJ2D5.js.map → chunk-KRYOT3KB.js.map} +0 -0
  603. /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
  604. /package/dist/{chunk-I3OKAQ5L.js.map → chunk-L7HNQRFS.js.map} +0 -0
  605. /package/dist/{chunk-J7C7FPVO.js.map → chunk-LABIUXDM.js.map} +0 -0
  606. /package/dist/{chunk-GM7BG3SD.js.map → chunk-LLPPIO3K.js.map} +0 -0
  607. /package/dist/{chunk-RCTHCXS6.js.map → chunk-LRQT4MQO.js.map} +0 -0
  608. /package/dist/{chunk-LTSVYILY.js.map → chunk-LXMFHD7M.js.map} +0 -0
  609. /package/dist/{chunk-72OG3AGH.js.map → chunk-LYB6YYTG.js.map} +0 -0
  610. /package/dist/{chunk-DRJL3JHR.js.map → chunk-LZJHHMOF.js.map} +0 -0
  611. /package/dist/{chunk-Y4KR4LT2.js.map → chunk-MIUPTZS6.js.map} +0 -0
  612. /package/dist/{chunk-XXUTD74L.js.map → chunk-MK6UXAWY.js.map} +0 -0
  613. /package/dist/{chunk-BIUT3K6A.js.map → chunk-MKNW4FRR.js.map} +0 -0
  614. /package/dist/{chunk-NZDIO5UG.js.map → chunk-MVNFUIJS.js.map} +0 -0
  615. /package/dist/{chunk-APBIQH4G.js.map → chunk-N5OEDOJT.js.map} +0 -0
  616. /package/dist/{chunk-UAOE3ZPC.js.map → chunk-NEYZV6V5.js.map} +0 -0
  617. /package/dist/{chunk-ZXHODKHH.js.map → chunk-NKHNUTTY.js.map} +0 -0
  618. /package/dist/{chunk-JL4I7OQE.js.map → chunk-NOF2FF4K.js.map} +0 -0
  619. /package/dist/{chunk-WOSUYOAU.js.map → chunk-NQYC7V5N.js.map} +0 -0
  620. /package/dist/{chunk-2XI4R6UO.js.map → chunk-NTRWUDP6.js.map} +0 -0
  621. /package/dist/{chunk-ZCCKIWZU.js.map → chunk-NYA26GV2.js.map} +0 -0
  622. /package/dist/{chunk-N3LW5ER5.js.map → chunk-NZBEE2PR.js.map} +0 -0
  623. /package/dist/{chunk-RUQNKOSP.js.map → chunk-OPY2AGAU.js.map} +0 -0
  624. /package/dist/{chunk-FYJDI5BW.js.map → chunk-OQN2FHEL.js.map} +0 -0
  625. /package/dist/{chunk-WNIL2KTB.js.map → chunk-OQW4OERS.js.map} +0 -0
  626. /package/dist/{chunk-KG7OTJ26.js.map → chunk-OZYUE2BI.js.map} +0 -0
  627. /package/dist/{chunk-Y3TD7HOY.js.map → chunk-P4Q7JK4L.js.map} +0 -0
  628. /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
  629. /package/dist/{chunk-4AJY7HMH.js.map → chunk-PD7MKJCM.js.map} +0 -0
  630. /package/dist/{chunk-ICKR3QTG.js.map → chunk-PGHSNG33.js.map} +0 -0
  631. /package/dist/{chunk-ZNJGEDCE.js.map → chunk-PGYYDSNX.js.map} +0 -0
  632. /package/dist/{chunk-KXTNTDRD.js.map → chunk-PPEHBI5O.js.map} +0 -0
  633. /package/dist/{chunk-5RPT32EL.js.map → chunk-PVIQDBUN.js.map} +0 -0
  634. /package/dist/{chunk-N3ZOZWP5.js.map → chunk-Q3HYEAVQ.js.map} +0 -0
  635. /package/dist/{chunk-HKQQ2NED.js.map → chunk-Q4GAPZDA.js.map} +0 -0
  636. /package/dist/{chunk-VUBFCHXL.js.map → chunk-Q7XLTN2D.js.map} +0 -0
  637. /package/dist/{chunk-YQIT3ET7.js.map → chunk-QAH3XILB.js.map} +0 -0
  638. /package/dist/{chunk-YH7G44WL.js.map → chunk-QLJU7UUI.js.map} +0 -0
  639. /package/dist/{chunk-TVMSXL3R.js.map → chunk-QO7UJXXO.js.map} +0 -0
  640. /package/dist/{chunk-EXTES7LP.js.map → chunk-QZOQVJ5L.js.map} +0 -0
  641. /package/dist/{chunk-QQHZBJMU.js.map → chunk-RGVNXES5.js.map} +0 -0
  642. /package/dist/{chunk-MWPD2BXO.js.map → chunk-RHVJ3L4U.js.map} +0 -0
  643. /package/dist/{chunk-YV4O7KDR.js.map → chunk-S6HIZQIG.js.map} +0 -0
  644. /package/dist/{chunk-MQVIYTH5.js.map → chunk-SAKSIN7E.js.map} +0 -0
  645. /package/dist/{chunk-4HBCWKIX.js.map → chunk-SGFRSRAL.js.map} +0 -0
  646. /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
  647. /package/dist/{chunk-37G7M2GJ.js.map → chunk-T6QVM5Q5.js.map} +0 -0
  648. /package/dist/{chunk-BLNFOP2O.js.map → chunk-T6YTDEY4.js.map} +0 -0
  649. /package/dist/{chunk-QTLM2YY2.js.map → chunk-TI4FGQYV.js.map} +0 -0
  650. /package/dist/{chunk-6HMDUUVJ.js.map → chunk-TRYR424I.js.map} +0 -0
  651. /package/dist/{chunk-V2UJEICC.js.map → chunk-TVDHA7BT.js.map} +0 -0
  652. /package/dist/{chunk-74KCGLOU.js.map → chunk-U2ILXZDG.js.map} +0 -0
  653. /package/dist/{chunk-TR7ZA67L.js.map → chunk-U2QV4TTZ.js.map} +0 -0
  654. /package/dist/{chunk-GNDIVKWF.js.map → chunk-U3HGQHEO.js.map} +0 -0
  655. /package/dist/{chunk-3YFDGFEK.js.map → chunk-U4WAAZXJ.js.map} +0 -0
  656. /package/dist/{chunk-UQUN2NGE.js.map → chunk-UAFSEZ2E.js.map} +0 -0
  657. /package/dist/{chunk-D5Y4PNC5.js.map → chunk-ULAZDF6D.js.map} +0 -0
  658. /package/dist/{chunk-3OWFUFZL.js.map → chunk-UMI3GYWI.js.map} +0 -0
  659. /package/dist/{chunk-Q7QQXNL7.js.map → chunk-UT545JBQ.js.map} +0 -0
  660. /package/dist/{chunk-JXK53XJW.js.map → chunk-UTUYXH72.js.map} +0 -0
  661. /package/dist/{chunk-E72INDBL.js.map → chunk-UXOFA3ZP.js.map} +0 -0
  662. /package/dist/{chunk-PDSZN26U.js.map → chunk-V6KQ5R4T.js.map} +0 -0
  663. /package/dist/{chunk-FLJ3RIRP.js.map → chunk-VEKTKCSB.js.map} +0 -0
  664. /package/dist/{chunk-UJACXYC2.js.map → chunk-VHGHF537.js.map} +0 -0
  665. /package/dist/{chunk-OFXCSLGX.js.map → chunk-VLH3IMJG.js.map} +0 -0
  666. /package/dist/{chunk-AKBL7S7A.js.map → chunk-VPGDYI63.js.map} +0 -0
  667. /package/dist/{chunk-6DGNMASB.js.map → chunk-VPH3TENY.js.map} +0 -0
  668. /package/dist/{chunk-45AON4CS.js.map → chunk-VYQZ5U3N.js.map} +0 -0
  669. /package/dist/{chunk-GXSHLMT4.js.map → chunk-WDSJ6SVY.js.map} +0 -0
  670. /package/dist/{chunk-JMDT3GQ3.js.map → chunk-WMAS6DZR.js.map} +0 -0
  671. /package/dist/{chunk-XE7QBHXN.js.map → chunk-WTOA52EQ.js.map} +0 -0
  672. /package/dist/{chunk-ILNAPS44.js.map → chunk-XMWTVDQN.js.map} +0 -0
  673. /package/dist/{chunk-JIAIPOEV.js.map → chunk-XNMU32XC.js.map} +0 -0
  674. /package/dist/{chunk-PEMXXFXL.js.map → chunk-XQJPR57I.js.map} +0 -0
  675. /package/dist/{chunk-54F7QIV2.js.map → chunk-XW44IFYE.js.map} +0 -0
  676. /package/dist/{chunk-I2KAN3YB.js.map → chunk-Y3LK6ZQG.js.map} +0 -0
  677. /package/dist/{chunk-7AC2UGTU.js.map → chunk-Y46R26TE.js.map} +0 -0
  678. /package/dist/{chunk-GQ2T44BC.js.map → chunk-YEKPQAOW.js.map} +0 -0
  679. /package/dist/{chunk-YC2QYRNE.js.map → chunk-YGWLMTPB.js.map} +0 -0
  680. /package/dist/{chunk-H56CRMCM.js.map → chunk-YHPSPFU5.js.map} +0 -0
  681. /package/dist/{chunk-F6LZHF4O.js.map → chunk-YTDUIU7X.js.map} +0 -0
  682. /package/dist/{chunk-CO7GH3W7.js.map → chunk-YWXCLPCX.js.map} +0 -0
  683. /package/dist/{chunk-RIPG3QIN.js.map → chunk-Z445LLFN.js.map} +0 -0
  684. /package/dist/{chunk-M7HYNXCU.js.map → chunk-ZAPP32GD.js.map} +0 -0
  685. /package/dist/{chunk-C2OX3C7L.js.map → chunk-ZLVRCQPG.js.map} +0 -0
  686. /package/dist/{chunk-SGAHME6W.js.map → chunk-ZVZTQF7E.js.map} +0 -0
@@ -0,0 +1,299 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import Typography from '@mui/material/Typography/index.js';
3
+ import { alpha, type Theme } from '@mui/material/styles/index.js';
4
+ import React from 'react';
5
+
6
+ import { rem, remPx } from '../../../tokens/relative';
7
+
8
+ import { labelPosition, type AreaGeometry, type DrawnRegion, type PlaneBox } from './RegionMap.helpers';
9
+ import type { RegionMapModel } from './RegionMap.hooks';
10
+
11
+ export interface RegionMapDrawingProps {
12
+ model: RegionMapModel & { view: PlaneBox };
13
+ showCenter: boolean;
14
+ highlightedIds: readonly string[];
15
+ maxHeight: string | undefined;
16
+ label: string;
17
+ tappable: boolean;
18
+ testId: string;
19
+ theme: Theme;
20
+ }
21
+
22
+ /**
23
+ * The drawing: one `role="img"`, square, with HTML labels laid over it.
24
+ *
25
+ * Strokes are `non-scaling-stroke` and labels are HTML at theme sizes, so the
26
+ * picture reads the same at 320 px and 1600 px; `maxHeight` caps it on a wide
27
+ * screen. Where it sits in a wider box is the host's call.
28
+ *
29
+ * The base areas are a memoised layer: a toggle changes `excluded`, not the
30
+ * geometry, so only the hatch, highlight and label layers re-render.
31
+ */
32
+ export function RegionMapDrawing({
33
+ model,
34
+ showCenter,
35
+ highlightedIds,
36
+ maxHeight,
37
+ label,
38
+ tappable,
39
+ testId,
40
+ theme,
41
+ }: RegionMapDrawingProps): React.JSX.Element {
42
+ const hatchId = `${React.useId().replace(/:/g, '')}-hatch`;
43
+ const { view, drawn } = model;
44
+ const wanted = new Set(highlightedIds);
45
+ const highlighted = drawn.filter((d) => wanted.has(d.id));
46
+ const labelled = [...drawn.filter((d) => d.excluded), ...highlighted.filter((d) => !d.excluded)];
47
+ const base = drawn.map((d) => ({ id: d.id, name: d.name, geometry: d.geometry, outside: d.outside === true }));
48
+ return (
49
+ <Box
50
+ sx={{
51
+ position: 'relative',
52
+ width: '100%',
53
+ maxWidth: maxHeight,
54
+ maxHeight,
55
+ aspectRatio: '1 / 1',
56
+ border: 1,
57
+ borderColor: 'divider',
58
+ borderRadius: 1,
59
+ overflow: 'hidden',
60
+ bgcolor: 'background.paper',
61
+ }}
62
+ data-testid={`${testId}-canvas`}
63
+ >
64
+ <svg
65
+ viewBox={`${view.minX} ${view.minY} ${view.spanX} ${view.spanY}`}
66
+ role="img"
67
+ aria-label={label}
68
+ onPointerDown={model.onPointerDown}
69
+ onClick={model.onClick}
70
+ style={{ display: 'block', width: '100%', height: '100%', cursor: tappable ? 'pointer' : 'default' }}
71
+ >
72
+ <Hatch id={hatchId} pitch={view.spanX / 70} theme={theme} />
73
+ <BaseAreas areas={base} testId={testId} theme={theme} />
74
+ <ExcludedAreas drawn={drawn} hatchId={hatchId} testId={testId} theme={theme} />
75
+ <Circles radii={model.radii} theme={theme} />
76
+ {highlighted.map((d) => (
77
+ <path
78
+ key={`h-${d.id}`}
79
+ d={d.geometry.path}
80
+ fillRule="evenodd"
81
+ vectorEffect="non-scaling-stroke"
82
+ fill={alpha(theme.palette.primary.main, 0.3)}
83
+ stroke={theme.palette.primary.main}
84
+ strokeWidth={2.5}
85
+ pointerEvents="none"
86
+ data-testid={`${testId}-highlight-${d.id}`}
87
+ />
88
+ ))}
89
+ {showCenter && (
90
+ <circle
91
+ cx={0}
92
+ cy={0}
93
+ r={view.spanX / 90}
94
+ fill={theme.palette.primary.main}
95
+ stroke={theme.palette.background.paper}
96
+ strokeWidth={2}
97
+ vectorEffect="non-scaling-stroke"
98
+ pointerEvents="none"
99
+ data-testid={`${testId}-center`}
100
+ />
101
+ )}
102
+ </svg>
103
+ {labelled.map((d) => (
104
+ <AreaLabel key={`l-${d.id}`} area={d} view={view} testId={testId} theme={theme} />
105
+ ))}
106
+ </Box>
107
+ );
108
+ }
109
+
110
+ /** The hatch an excluded area is filled with: lines, not a colour. */
111
+ function Hatch({ id, pitch, theme }: { id: string; pitch: number; theme: Theme }): React.JSX.Element {
112
+ return (
113
+ <defs>
114
+ <pattern id={id} width={pitch} height={pitch} patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
115
+ <rect width={pitch} height={pitch} fill={alpha(theme.palette.text.primary, 0.1)} />
116
+ <rect width={pitch / 3} height={pitch} fill={theme.palette.text.secondary} />
117
+ </pattern>
118
+ </defs>
119
+ );
120
+ }
121
+
122
+ interface BaseArea {
123
+ id: string;
124
+ name: string;
125
+ geometry: AreaGeometry;
126
+ outside: boolean;
127
+ }
128
+
129
+ interface BaseAreasProps {
130
+ areas: readonly BaseArea[];
131
+ testId: string;
132
+ theme: Theme;
133
+ }
134
+
135
+ /** Same areas, same geometry objects, same look: nothing to re-render. */
136
+ function sameBase(a: BaseAreasProps, b: BaseAreasProps): boolean {
137
+ if (a.theme !== b.theme || a.testId !== b.testId || a.areas.length !== b.areas.length) return false;
138
+ return a.areas.every((area, i) => {
139
+ const other = b.areas[i]!;
140
+ return (
141
+ area.id === other.id &&
142
+ area.geometry === other.geometry &&
143
+ area.outside === other.outside &&
144
+ area.name === other.name
145
+ );
146
+ });
147
+ }
148
+
149
+ /** Every area's fill and border — the tap targets. Memoised: see `sameBase`. */
150
+ const BaseAreas = React.memo(function BaseAreas({ areas, testId, theme }: BaseAreasProps): React.JSX.Element {
151
+ const { palette } = theme;
152
+ return (
153
+ <>
154
+ {areas.map((d) => (
155
+ <path
156
+ key={d.id}
157
+ d={d.geometry.path}
158
+ fillRule="evenodd"
159
+ vectorEffect="non-scaling-stroke"
160
+ fill={d.outside ? palette.background.paper : palette.action.hover}
161
+ stroke={palette.divider}
162
+ strokeWidth={1}
163
+ data-region-id={d.id}
164
+ data-testid={`${testId}-area-${d.id}`}
165
+ >
166
+ <title>{d.name}</title>
167
+ </path>
168
+ ))}
169
+ </>
170
+ );
171
+ }, sameBase);
172
+
173
+ /** The hatch over every excluded area. */
174
+ function ExcludedAreas({
175
+ drawn,
176
+ hatchId,
177
+ testId,
178
+ theme,
179
+ }: {
180
+ drawn: readonly DrawnRegion[];
181
+ hatchId: string;
182
+ testId: string;
183
+ theme: Theme;
184
+ }): React.JSX.Element {
185
+ return (
186
+ <>
187
+ {drawn
188
+ .filter((d) => d.excluded)
189
+ .map((d) => (
190
+ <path
191
+ key={`x-${d.id}`}
192
+ d={d.geometry.path}
193
+ fillRule="evenodd"
194
+ vectorEffect="non-scaling-stroke"
195
+ fill={`url(#${hatchId})`}
196
+ stroke={theme.palette.text.secondary}
197
+ strokeWidth={1.5}
198
+ pointerEvents="none"
199
+ data-testid={`${testId}-excluded-${d.id}`}
200
+ />
201
+ ))}
202
+ </>
203
+ );
204
+ }
205
+
206
+ /** The dashed circles around the centre. */
207
+ function Circles({ radii, theme }: { radii: readonly number[]; theme: Theme }): React.JSX.Element {
208
+ return (
209
+ <>
210
+ {radii.map((radius) => (
211
+ <circle
212
+ key={radius}
213
+ cx={0}
214
+ cy={0}
215
+ r={radius}
216
+ fill="none"
217
+ stroke={theme.palette.info.main}
218
+ strokeWidth={1.75}
219
+ strokeDasharray="7 5"
220
+ vectorEffect="non-scaling-stroke"
221
+ pointerEvents="none"
222
+ />
223
+ ))}
224
+ </>
225
+ );
226
+ }
227
+
228
+ /** Where a label's centre may go along one axis so the whole label stays in view. */
229
+ function clampCentre(wanted: number, half: number, span: number, gap: number): number {
230
+ if (span <= 2 * (half + gap)) return span / 2;
231
+ return Math.min(span - half - gap, Math.max(half + gap, wanted));
232
+ }
233
+
234
+ /**
235
+ * An area's name over the drawing, at the theme's type size whatever the
236
+ * width — and moved in by its own measured size, so it is never clipped at
237
+ * the drawing's edge.
238
+ */
239
+ function AreaLabel({
240
+ area,
241
+ view,
242
+ testId,
243
+ theme,
244
+ }: {
245
+ area: DrawnRegion;
246
+ view: PlaneBox;
247
+ testId: string;
248
+ theme: Theme;
249
+ }): React.JSX.Element {
250
+ const at = labelPosition(area.geometry.rings, view);
251
+ const ref = React.useRef<HTMLSpanElement>(null);
252
+ const gap = remPx(theme, 4);
253
+ // Measured by a ResizeObserver, never in a layout effect: the observer's
254
+ // first call comes after the browser's own layout, so mounting a label on a
255
+ // tap forces no synchronous reflow of the drawing.
256
+ React.useEffect(() => {
257
+ const label = ref.current;
258
+ const box = label?.parentElement;
259
+ if (!label || !box || typeof ResizeObserver === 'undefined') return undefined;
260
+ const observer = new ResizeObserver(() => {
261
+ const width = box.clientWidth;
262
+ const height = box.clientHeight;
263
+ if (width === 0 || height === 0) return;
264
+ const x = clampCentre(at.fractionX * width, label.offsetWidth / 2, width, gap);
265
+ const y = clampCentre(at.fractionY * height, label.offsetHeight / 2, height, gap);
266
+ label.style.left = `${(x / width) * 100}%`;
267
+ label.style.top = `${(y / height) * 100}%`;
268
+ });
269
+ observer.observe(box);
270
+ observer.observe(label);
271
+ return () => observer.disconnect();
272
+ }, [at.fractionX, at.fractionY, gap]);
273
+ const halo = `0 0 ${rem(theme, 3)} ${theme.palette.background.paper}`;
274
+ return (
275
+ <Typography
276
+ ref={ref}
277
+ component="span"
278
+ aria-hidden
279
+ data-testid={`${testId}-label-${area.id}`}
280
+ // Position as an inline style, not `sx`: a per-label class would insert
281
+ // a new CSS rule (and a style recalculation) on every tap.
282
+ style={{ left: `${(at.fractionX * 100).toFixed(2)}%`, top: `${(at.fractionY * 100).toFixed(2)}%` }}
283
+ sx={{
284
+ position: 'absolute',
285
+ transform: 'translate(-50%, -50%)',
286
+ fontSize: rem(theme, 11),
287
+ fontWeight: 700,
288
+ lineHeight: 1.1,
289
+ textAlign: 'center',
290
+ maxWidth: '45%',
291
+ color: 'text.primary',
292
+ pointerEvents: 'none',
293
+ textShadow: `${halo}, ${halo}`,
294
+ }}
295
+ >
296
+ {area.name}
297
+ </Typography>
298
+ );
299
+ }
@@ -0,0 +1,81 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import Typography from '@mui/material/Typography/index.js';
3
+ import { alpha, type Theme } from '@mui/material/styles/index.js';
4
+ import React from 'react';
5
+
6
+ import { rem } from '../../../tokens/relative';
7
+
8
+ import type { RegionMapCopy } from './RegionMap.types';
9
+
10
+ /** What the hatch, the dashed circle and the dot mean — in words. */
11
+ export function RegionMapLegend({
12
+ copy,
13
+ outermostMetres,
14
+ showCenter,
15
+ theme,
16
+ testId,
17
+ }: {
18
+ copy: RegionMapCopy;
19
+ outermostMetres: number | null;
20
+ showCenter: boolean;
21
+ theme: Theme;
22
+ testId: string;
23
+ }): React.JSX.Element {
24
+ const swatch = rem(theme, 14);
25
+ const { palette } = theme;
26
+ const stripe = rem(theme, 2);
27
+ return (
28
+ <Box
29
+ data-testid={`${testId}-legend`}
30
+ sx={{ display: 'flex', flexWrap: 'wrap', columnGap: 2, rowGap: 0.5, mt: 1, alignItems: 'center' }}
31
+ >
32
+ <LegendItem text={copy.legendExcluded}>
33
+ <Box
34
+ component="span"
35
+ sx={{
36
+ width: swatch,
37
+ height: swatch,
38
+ border: 1,
39
+ borderColor: 'text.secondary',
40
+ borderRadius: 0.5,
41
+ background: `repeating-linear-gradient(135deg, ${palette.text.secondary} 0 ${stripe}, ${alpha(palette.text.primary, 0.1)} ${stripe} ${rem(theme, 5)})`,
42
+ }}
43
+ />
44
+ </LegendItem>
45
+ {outermostMetres !== null && (
46
+ <LegendItem text={copy.legendCircle(outermostMetres)}>
47
+ <Box
48
+ component="span"
49
+ sx={{
50
+ width: swatch,
51
+ height: swatch,
52
+ borderWidth: stripe,
53
+ borderStyle: 'dashed',
54
+ borderColor: 'info.main',
55
+ borderRadius: '50%',
56
+ }}
57
+ />
58
+ </LegendItem>
59
+ )}
60
+ {showCenter && (
61
+ <LegendItem text={copy.legendCenter}>
62
+ <Box
63
+ component="span"
64
+ sx={{ width: rem(theme, 10), height: rem(theme, 10), bgcolor: 'primary.main', borderRadius: '50%' }}
65
+ />
66
+ </LegendItem>
67
+ )}
68
+ </Box>
69
+ );
70
+ }
71
+
72
+ function LegendItem({ text, children }: { text: string; children: React.ReactNode }): React.JSX.Element {
73
+ return (
74
+ <Box component="span" sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.75 }}>
75
+ {children}
76
+ <Typography component="span" variant="caption" color="text.secondary">
77
+ {text}
78
+ </Typography>
79
+ </Box>
80
+ );
81
+ }
@@ -0,0 +1,167 @@
1
+ import Check from '@mui/icons-material/Check';
2
+ import Box from '@mui/material/Box/index.js';
3
+ import Button from '@mui/material/Button/index.js';
4
+ import Chip from '@mui/material/Chip/index.js';
5
+ import Typography from '@mui/material/Typography/index.js';
6
+ import type { SxProps, Theme } from '@mui/material/styles/index.js';
7
+ import React from 'react';
8
+
9
+ import { rem } from '../../../tokens/relative';
10
+ import { SR_ONLY_SX } from '../../form/Label/Label.styles';
11
+
12
+ import type {
13
+ RegionMapCopy,
14
+ RegionMapListMode,
15
+ RegionMapListSort,
16
+ RegionMapProps,
17
+ RegionMapRegion,
18
+ } from './RegionMap.types';
19
+
20
+ /** The areas with a row: `listed`, defaulting to "not outside". */
21
+ export function listedRegions(
22
+ regions: readonly RegionMapRegion[],
23
+ sort: RegionMapListSort,
24
+ ): RegionMapRegion[] {
25
+ const listed = regions.filter((region) => region.listed ?? region.outside !== true);
26
+ return sort === 'name' ? [...listed].sort((a, b) => a.name.localeCompare(b.name)) : listed;
27
+ }
28
+
29
+ /**
30
+ * Every listed area as a toggle button — the keyboard's and the screen
31
+ * reader's map, and the way to an area too small to tap. `collapsed` puts it
32
+ * behind one button that names the count; `shown` lays it out with a heading.
33
+ */
34
+ export function RegionMapList({
35
+ regions,
36
+ copy,
37
+ mode,
38
+ sort,
39
+ onToggle,
40
+ testId,
41
+ theme,
42
+ }: {
43
+ regions: readonly RegionMapRegion[];
44
+ copy: RegionMapCopy;
45
+ mode: Exclude<RegionMapListMode, 'none'>;
46
+ sort: RegionMapListSort;
47
+ onToggle: RegionMapProps['onToggle'];
48
+ testId: string;
49
+ theme: Theme;
50
+ }): React.JSX.Element {
51
+ const [open, setOpen] = React.useState(false);
52
+ const listId = `${React.useId().replace(/:/g, '')}-list`;
53
+ const rows = listedRegions(regions, sort);
54
+ const visible = mode === 'shown' || open;
55
+ return (
56
+ <Box sx={{ mt: 1 }}>
57
+ {mode === 'collapsed' && (
58
+ <Button
59
+ variant="text"
60
+ size="small"
61
+ aria-expanded={open}
62
+ aria-controls={listId}
63
+ onClick={() => setOpen((current) => !current)}
64
+ data-testid={`${testId}-list-toggle`}
65
+ sx={{ px: 0 }}
66
+ >
67
+ {open ? copy.hideList : copy.showList(rows.length)}
68
+ </Button>
69
+ )}
70
+ {visible && (
71
+ <Box id={listId} role="group" aria-label={copy.listLabel} data-testid={`${testId}-list`} sx={{ mt: 1 }}>
72
+ {mode === 'shown' && (
73
+ <Typography variant="caption" component="p" sx={{ fontWeight: 700, color: 'text.secondary', mb: 0.5 }}>
74
+ {copy.listLabel}
75
+ </Typography>
76
+ )}
77
+ <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 1 }}>
78
+ {rows.map((region) => (
79
+ <RegionRow
80
+ key={region.id}
81
+ region={region}
82
+ states={copy.rowState}
83
+ onToggle={onToggle}
84
+ testId={testId}
85
+ theme={theme}
86
+ />
87
+ ))}
88
+ </Box>
89
+ </Box>
90
+ )}
91
+ </Box>
92
+ );
93
+ }
94
+
95
+ /** The focus ring every row shows from the keyboard, pressed or not. */
96
+ function focusRing(theme: Theme): { outline: string; outlineOffset: string } {
97
+ return { outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, 2) };
98
+ }
99
+
100
+ /** A row's look: inverted when pressed, holding under hover and focus. */
101
+ function rowSx(pressed: boolean, outside: boolean, theme: Theme): SxProps<Theme> {
102
+ const ring = focusRing(theme);
103
+ if (!pressed) {
104
+ return { color: outside ? 'text.secondary' : 'text.primary', '&.Mui-focusVisible': ring };
105
+ }
106
+ const inverted = { bgcolor: 'text.primary', color: 'background.paper' };
107
+ return {
108
+ ...inverted,
109
+ '& .MuiChip-icon': { color: 'inherit' },
110
+ '&:hover': inverted,
111
+ '&.Mui-focusVisible': { ...inverted, ...ring },
112
+ };
113
+ }
114
+
115
+ /** The state a screen reader hears after the name, if any. */
116
+ function rowState(pressed: boolean, outside: boolean, states: RegionMapCopy['rowState']): string | null {
117
+ if (pressed) return states.excluded;
118
+ return outside ? states.outside : null;
119
+ }
120
+
121
+ /**
122
+ * One area: pressed, filled and checked when excluded — never colour alone —
123
+ * with its state spelled out for a screen reader. The inverted colours hold
124
+ * under hover and keyboard focus, where MUI's own would wash them out.
125
+ */
126
+ function RegionRow({
127
+ region,
128
+ states,
129
+ onToggle,
130
+ testId,
131
+ theme,
132
+ }: {
133
+ region: RegionMapRegion;
134
+ states: RegionMapCopy['rowState'];
135
+ onToggle: RegionMapProps['onToggle'];
136
+ testId: string;
137
+ theme: Theme;
138
+ }): React.JSX.Element {
139
+ const pressed = region.excluded === true;
140
+ const sx = rowSx(pressed, region.outside === true, theme);
141
+ const state = rowState(pressed, region.outside === true, states);
142
+ return (
143
+ <Chip
144
+ data-testid={`${testId}-row-${region.id}`}
145
+ label={
146
+ <Box component="span" sx={{ display: 'inline-flex', gap: 0.75, alignItems: 'baseline' }}>
147
+ <span>{region.name}</span>
148
+ {region.detail && (
149
+ <Box component="span" sx={{ fontSize: rem(theme, 11), opacity: 0.75 }}>
150
+ {region.detail}
151
+ </Box>
152
+ )}
153
+ {state && (
154
+ <Box component="span" sx={SR_ONLY_SX}>
155
+ {state}
156
+ </Box>
157
+ )}
158
+ </Box>
159
+ }
160
+ icon={pressed ? <Check fontSize="small" /> : undefined}
161
+ variant={pressed ? 'filled' : 'outlined'}
162
+ aria-pressed={onToggle ? pressed : undefined}
163
+ onClick={onToggle ? () => onToggle(region.id) : undefined}
164
+ sx={sx}
165
+ />
166
+ );
167
+ }
@@ -0,0 +1,13 @@
1
+ export { RegionMap } from './RegionMap';
2
+ export { decodePolyline, hitRegion, projectionAt } from './RegionMap.helpers';
3
+ export type { AreaGeometry, PlanePoint, PlaneRegion } from './RegionMap.helpers';
4
+ export type {
5
+ RegionMapCircle,
6
+ RegionMapCopy,
7
+ RegionMapListMode,
8
+ RegionMapListSort,
9
+ RegionMapPoint,
10
+ RegionMapProps,
11
+ RegionMapRegion,
12
+ RegionMapRing,
13
+ } from './RegionMap.types';
@@ -0,0 +1,22 @@
1
+ # RegionMap Test Status Tracking
2
+
3
+ ## Test Files Status
4
+
5
+ - [x] `RegionMap.test.stories.tsx` created
6
+ - [x] `__tests__/region-map-helpers.test.ts` — the geometry: even-odd with a
7
+ hole, distance, which area a tap means (hole, smallest, sliver within the
8
+ tolerance even from inside a big neighbour, nothing beyond it), the view,
9
+ label placement, `extent` on 200k values, the projection and the decoder
10
+ - [x] `__tests__/region-map.test.tsx` — what is drawn (areas, hatch + name for
11
+ excluded only, several highlights, nothing with no centre and no areas),
12
+ what a tap reports, read-only, and the list (collapsed by default with its
13
+ count, `aria-expanded`, `aria-pressed`, state in words, outside areas off
14
+ the list and out of the count, `listed`, sort by name, detail, `none`)
15
+
16
+ ## Storybook Tests Status
17
+
18
+ | Test Name | Status | Pass/Fail | Notes |
19
+ | --- | --- | --- | --- |
20
+ | A tap on an area reports its id | Written | — | `test-storybook` is not in this repo's CI; jsdom twin in `region-map.test.tsx` |
21
+ | Excluded areas are hatched and named | Written | — | same |
22
+ | The collapsed list opens and toggles from the keyboard | Written | — | same |
@@ -0,0 +1,13 @@
1
+ # RegionMap
2
+
3
+ A hand-drawn map of named areas around a centre; a tap toggles an area.
4
+ Product-free — built for a delivery host's excluded neighbourhoods, named for
5
+ what it draws.
6
+
7
+ ## Status
8
+
9
+ - [x] Component, types, helpers, fixtures (real IBGE outlines, public data)
10
+ - [x] Docs (`RegionMap.md`), stories, test stories, vitest suites
11
+ - [x] Catalog entry, `data-display` export, `entries.json` subpath
12
+ - [ ] React Native build — not planned until a native host needs it
13
+ - [ ] Zoom and pan — the list covers areas too small to tap
@@ -21,6 +21,7 @@ export * from './FleetMap';
21
21
  export * from './MapPreview';
22
22
  export * from './Popover';
23
23
  export * from './Progress';
24
+ export * from './RegionMap';
24
25
  export * from './SectionOnboarding/SectionOnboarding';
25
26
  export * from './Sheet';
26
27
  export * from './StatCard';
@@ -44,6 +44,10 @@ export function SelectField({ name, options, label, placeholder }: SelectFieldPr
44
44
  placeholder={placeholder}
45
45
  value={values[name] ?? ''}
46
46
  error={Boolean(error)}
47
+ // The `<label htmlFor>` above names nothing: the combobox is MUI's
48
+ // display div, not a labelable element. `Select` puts `aria-label` on
49
+ // that div, so the question names the control (FUT-4157).
50
+ aria-label={label}
47
51
  data-testid={testId}
48
52
  onChange={(event) => setFieldValue(name, String(event.target.value))}
49
53
  />
@@ -44,6 +44,9 @@ export function ToggleField({ name, options, label }: ToggleFieldProps): React.R
44
44
  options={options}
45
45
  value={values[name] ?? ''}
46
46
  fullWidth
47
+ // A `role="group"` div is not labelable, so the `<label htmlFor>`
48
+ // above names nothing; the group carries the question itself (FUT-4157).
49
+ aria-label={label}
47
50
  dataTestId={testId}
48
51
  onChange={(_event, next) => {
49
52
  if (typeof next === 'string') setFieldValue(name, next);
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-CDCTLPMD.js.map