@12-apps/ui 6.22.0 → 6.23.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 (251) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +7 -0
  3. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  4. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  5. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +1 -1
  6. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
  7. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  8. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  9. package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
  10. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  11. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  12. package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
  13. package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
  14. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +1 -1
  15. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +26 -26
  16. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +30 -30
  17. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
  18. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +5 -5
  19. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +10 -10
  20. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +1 -1
  21. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +22 -22
  22. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +10 -10
  23. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +3 -3
  24. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +4 -4
  25. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  27. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +3 -3
  28. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
  29. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +31 -0
  30. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +23 -0
  31. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js.map +1 -0
  32. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +57 -0
  33. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js.map +1 -0
  34. package/dist/_internal/components/data-display/FleetMap/FleetMap.helpers.js +14 -0
  35. package/dist/_internal/components/data-display/FleetMap/FleetMap.helpers.js.map +1 -0
  36. package/dist/_internal/components/data-display/FleetMap/FleetMap.hooks.js +9 -0
  37. package/dist/_internal/components/data-display/FleetMap/FleetMap.hooks.js.map +1 -0
  38. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +46 -0
  39. package/dist/_internal/components/data-display/FleetMap/FleetMap.js.map +1 -0
  40. package/dist/_internal/components/data-display/FleetMap/FleetMap.types.js +1 -0
  41. package/dist/_internal/components/data-display/FleetMap/FleetMap.types.js.map +1 -0
  42. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +14 -0
  43. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js.map +1 -0
  44. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  45. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +2 -2
  46. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  47. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +6 -6
  48. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  49. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  50. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  51. package/dist/_internal/components/data-display/index.js +82 -62
  52. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  53. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +2 -2
  54. package/dist/_internal/components/feedback/index.js +14 -14
  55. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
  56. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
  57. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
  58. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +2 -2
  59. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +4 -4
  60. package/dist/_internal/components/form/Command/Command.js +2 -2
  61. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +3 -3
  62. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  63. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  64. package/dist/_internal/components/form/index.js +30 -30
  65. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +5 -5
  66. package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
  67. package/dist/_internal/components/index.js +152 -133
  68. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
  69. package/dist/_internal/components/layout/index.js +20 -20
  70. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
  71. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  72. package/dist/_internal/components/navigation/index.js +12 -12
  73. package/dist/_internal/components/utility/index.js +4 -4
  74. package/dist/_internal/pt-BR.data-display.js +2 -2
  75. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  76. package/dist/charts.js +5 -5
  77. package/dist/chunk-2RQINU5T.js +41 -0
  78. package/dist/chunk-2RQINU5T.js.map +1 -0
  79. package/dist/{chunk-VLHGBFR6.js → chunk-2UGJIKVA.js} +2 -2
  80. package/dist/{chunk-WMALDOF5.js → chunk-4G3FGCWX.js} +4 -4
  81. package/dist/{chunk-ZKR5B6YJ.js → chunk-4LRFGB3K.js} +2 -2
  82. package/dist/{chunk-ZOUWHGV3.js → chunk-4MGFUPQT.js} +4 -4
  83. package/dist/{chunk-VQAM2XZV.js → chunk-4XZXLB4I.js} +3 -3
  84. package/dist/chunk-5V4UPOWK.js +36 -0
  85. package/dist/chunk-5V4UPOWK.js.map +1 -0
  86. package/dist/{chunk-VIK3HAUQ.js → chunk-73NJCGQG.js} +2 -2
  87. package/dist/{chunk-PFV6RL4Q.js → chunk-ACFGEZ4Q.js} +3 -3
  88. package/dist/{chunk-U2YJCNRU.js → chunk-AJGYHDA5.js} +4 -4
  89. package/dist/{chunk-HKV4MQ2W.js → chunk-BLBOYCOV.js} +5 -5
  90. package/dist/{chunk-QZBUGUOY.js → chunk-BZTFPSWT.js} +4 -4
  91. package/dist/{chunk-7TZ6OC5T.js → chunk-CBTY36TU.js} +2 -2
  92. package/dist/chunk-CDCTLPMD.js +1 -0
  93. package/dist/chunk-CDCTLPMD.js.map +1 -0
  94. package/dist/chunk-CF3FAAPC.js +79 -0
  95. package/dist/chunk-CF3FAAPC.js.map +1 -0
  96. package/dist/{chunk-PMS3H3OO.js → chunk-DF2FFYZ7.js} +4 -4
  97. package/dist/{chunk-FPWB5ILF.js → chunk-DRHIIUDO.js} +5 -5
  98. package/dist/{chunk-WLQTHPMX.js → chunk-EJQW2IYW.js} +2 -2
  99. package/dist/{chunk-XFUNJYFT.js → chunk-EPNUVSNK.js} +7 -7
  100. package/dist/{chunk-MSUSZLRE.js → chunk-EWT3WMVY.js} +5 -5
  101. package/dist/chunk-F7VBGS4C.js +64 -0
  102. package/dist/chunk-F7VBGS4C.js.map +1 -0
  103. package/dist/{chunk-Q75SJ35X.js → chunk-GMTM6EN7.js} +3 -3
  104. package/dist/{chunk-6NZTYZP5.js → chunk-GVA5CYKP.js} +2 -2
  105. package/dist/{chunk-VR5HDUBK.js → chunk-HP2ODXNA.js} +2 -2
  106. package/dist/{chunk-7BYFC2MR.js → chunk-I7HYGIEJ.js} +6 -6
  107. package/dist/{chunk-UVGRRI7N.js → chunk-IPVYEPXO.js} +4 -4
  108. package/dist/{chunk-5ZTUP65G.js → chunk-JM64OEU6.js} +5 -5
  109. package/dist/{chunk-QFJRB27Q.js → chunk-KHWCX4LI.js} +2 -2
  110. package/dist/{chunk-TLMLEC4F.js → chunk-KW7H5O3K.js} +6 -6
  111. package/dist/{chunk-UU3QAKG6.js → chunk-L4U23SBX.js} +4 -4
  112. package/dist/chunk-MQNKRIGC.js +205 -0
  113. package/dist/chunk-MQNKRIGC.js.map +1 -0
  114. package/dist/{chunk-QWDEOITU.js → chunk-MYGNIFZC.js} +2 -2
  115. package/dist/{chunk-2MMEIN4T.js → chunk-N2TUX4A5.js} +4 -4
  116. package/dist/{chunk-KTK4A3IF.js → chunk-OIKQO73C.js} +7 -7
  117. package/dist/{chunk-REMK55JI.js → chunk-OLZTGVBT.js} +4 -4
  118. package/dist/{chunk-ZIYMBR7K.js → chunk-OTH7H3IP.js} +2 -2
  119. package/dist/{chunk-J4W4TQPC.js → chunk-QJRDDVZ2.js} +5 -5
  120. package/dist/{chunk-VNDOQEJ7.js → chunk-QRX5BYUQ.js} +4 -4
  121. package/dist/{chunk-XT7HMNBW.js → chunk-R6SNYC3D.js} +5 -5
  122. package/dist/{chunk-W2UTDN4T.js → chunk-RBGOGTT2.js} +4 -4
  123. package/dist/chunk-RQWZYD6H.js +1 -0
  124. package/dist/chunk-RQWZYD6H.js.map +1 -0
  125. package/dist/{chunk-EXJBPKGW.js → chunk-SHDIZSN5.js} +5 -5
  126. package/dist/{chunk-23FCBIUN.js → chunk-TNVO2DTB.js} +8 -8
  127. package/dist/{chunk-AGSBIUPV.js → chunk-TPLKJHNN.js} +4 -4
  128. package/dist/{chunk-U2AC4AQX.js → chunk-TU5EIKJA.js} +4 -4
  129. package/dist/chunk-TWQYDKCA.js +113 -0
  130. package/dist/chunk-TWQYDKCA.js.map +1 -0
  131. package/dist/{chunk-BGYLL467.js → chunk-TXHJX2NG.js} +4 -4
  132. package/dist/{chunk-E46PG577.js → chunk-URXT5TOY.js} +4 -4
  133. package/dist/{chunk-5NKUYCZD.js → chunk-VON4BFK4.js} +4 -4
  134. package/dist/{chunk-FL54G7PV.js → chunk-WIT3Y7JT.js} +2 -2
  135. package/dist/{chunk-DVUPIVI2.js → chunk-WQA4LIIK.js} +2 -2
  136. package/dist/{chunk-2UYR2OOE.js → chunk-YRUCIKPO.js} +4 -4
  137. package/dist/{chunk-QKIJ6YXZ.js → chunk-ZA4U5GDU.js} +4 -4
  138. package/dist/{chunk-OXQP3N6X.js → chunk-ZTZ6S5Q6.js} +4 -4
  139. package/dist/data-display/AsyncStateContainer.js +3 -3
  140. package/dist/data-display/Avatar.js +2 -2
  141. package/dist/data-display/CardKit.js +8 -8
  142. package/dist/data-display/Carousel.js +2 -2
  143. package/dist/data-display/Chart.js +5 -5
  144. package/dist/data-display/Chip.js +3 -3
  145. package/dist/data-display/DataGrid.js +1 -1
  146. package/dist/data-display/DataViews.js +33 -33
  147. package/dist/data-display/FleetMap.js +54 -0
  148. package/dist/data-display/FleetMap.js.map +1 -0
  149. package/dist/data-display/HoverCard.js +2 -2
  150. package/dist/data-display/Lightbox.js +2 -2
  151. package/dist/data-display/MapPreview.js +6 -6
  152. package/dist/data-display/Sheet.js +3 -3
  153. package/dist/data-display/Table.js +3 -3
  154. package/dist/feedback/ConfirmAction.js +3 -3
  155. package/dist/feedback/Modal.js +2 -2
  156. package/dist/feedback/StackedModal.js +2 -2
  157. package/dist/form/AddressAutocomplete.js +5 -5
  158. package/dist/form/CategorySelect.js +4 -4
  159. package/dist/form/Command.js +2 -2
  160. package/dist/form/DateRangePicker.js +5 -5
  161. package/dist/form/PhoneInput.js +3 -3
  162. package/dist/form/total-form.js +9 -9
  163. package/dist/layout/SettingsLayout.js +2 -2
  164. package/dist/locales.js +4 -4
  165. package/dist/navigation/AppHeader.js +6 -6
  166. package/dist/navigation/Pagination.js +2 -2
  167. package/dist/pt-BR.js +4 -4
  168. package/dist/types/components/data-display/FleetMap/FleetBody.d.ts +22 -0
  169. package/dist/types/components/data-display/FleetMap/FleetBody.d.ts.map +1 -0
  170. package/dist/types/components/data-display/FleetMap/FleetCanvas.d.ts +50 -0
  171. package/dist/types/components/data-display/FleetMap/FleetCanvas.d.ts.map +1 -0
  172. package/dist/types/components/data-display/FleetMap/FleetMap.d.ts +32 -0
  173. package/dist/types/components/data-display/FleetMap/FleetMap.d.ts.map +1 -0
  174. package/dist/types/components/data-display/FleetMap/FleetMap.fixtures.d.ts +23 -0
  175. package/dist/types/components/data-display/FleetMap/FleetMap.fixtures.d.ts.map +1 -0
  176. package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts +45 -0
  177. package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts.map +1 -0
  178. package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts +54 -0
  179. package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts.map +1 -0
  180. package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts +145 -0
  181. package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts.map +1 -0
  182. package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts +15 -0
  183. package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts.map +1 -0
  184. package/dist/types/components/data-display/FleetMap/index.d.ts +5 -0
  185. package/dist/types/components/data-display/FleetMap/index.d.ts.map +1 -0
  186. package/dist/types/components/data-display/index.d.ts +1 -0
  187. package/dist/types/components/data-display/index.d.ts.map +1 -1
  188. package/dist/user-avatar.js +3 -3
  189. package/package.json +5 -1
  190. package/src/components/data-display/FleetMap/FleetBody.tsx +96 -0
  191. package/src/components/data-display/FleetMap/FleetCanvas.tsx +80 -0
  192. package/src/components/data-display/FleetMap/FleetMap.fixtures.ts +70 -0
  193. package/src/components/data-display/FleetMap/FleetMap.helpers.ts +85 -0
  194. package/src/components/data-display/FleetMap/FleetMap.hooks.ts +164 -0
  195. package/src/components/data-display/FleetMap/FleetMap.md +182 -0
  196. package/src/components/data-display/FleetMap/FleetMap.tsx +169 -0
  197. package/src/components/data-display/FleetMap/FleetMap.types.ts +148 -0
  198. package/src/components/data-display/FleetMap/FleetRoster.tsx +321 -0
  199. package/src/components/data-display/FleetMap/index.ts +9 -0
  200. package/src/components/data-display/FleetMap/tests.md +79 -0
  201. package/src/components/data-display/FleetMap/track.md +50 -0
  202. package/src/components/data-display/index.ts +1 -0
  203. package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -4
  204. package/dist/chunk-X3HL5C6H.js +0 -1
  205. /package/dist/{chunk-X3HL5C6H.js.map → _internal/components/data-display/FleetMap/FleetBody.js.map} +0 -0
  206. /package/dist/{chunk-VLHGBFR6.js.map → chunk-2UGJIKVA.js.map} +0 -0
  207. /package/dist/{chunk-WMALDOF5.js.map → chunk-4G3FGCWX.js.map} +0 -0
  208. /package/dist/{chunk-ZKR5B6YJ.js.map → chunk-4LRFGB3K.js.map} +0 -0
  209. /package/dist/{chunk-ZOUWHGV3.js.map → chunk-4MGFUPQT.js.map} +0 -0
  210. /package/dist/{chunk-VQAM2XZV.js.map → chunk-4XZXLB4I.js.map} +0 -0
  211. /package/dist/{chunk-VIK3HAUQ.js.map → chunk-73NJCGQG.js.map} +0 -0
  212. /package/dist/{chunk-PFV6RL4Q.js.map → chunk-ACFGEZ4Q.js.map} +0 -0
  213. /package/dist/{chunk-U2YJCNRU.js.map → chunk-AJGYHDA5.js.map} +0 -0
  214. /package/dist/{chunk-HKV4MQ2W.js.map → chunk-BLBOYCOV.js.map} +0 -0
  215. /package/dist/{chunk-QZBUGUOY.js.map → chunk-BZTFPSWT.js.map} +0 -0
  216. /package/dist/{chunk-7TZ6OC5T.js.map → chunk-CBTY36TU.js.map} +0 -0
  217. /package/dist/{chunk-PMS3H3OO.js.map → chunk-DF2FFYZ7.js.map} +0 -0
  218. /package/dist/{chunk-FPWB5ILF.js.map → chunk-DRHIIUDO.js.map} +0 -0
  219. /package/dist/{chunk-WLQTHPMX.js.map → chunk-EJQW2IYW.js.map} +0 -0
  220. /package/dist/{chunk-XFUNJYFT.js.map → chunk-EPNUVSNK.js.map} +0 -0
  221. /package/dist/{chunk-MSUSZLRE.js.map → chunk-EWT3WMVY.js.map} +0 -0
  222. /package/dist/{chunk-Q75SJ35X.js.map → chunk-GMTM6EN7.js.map} +0 -0
  223. /package/dist/{chunk-6NZTYZP5.js.map → chunk-GVA5CYKP.js.map} +0 -0
  224. /package/dist/{chunk-VR5HDUBK.js.map → chunk-HP2ODXNA.js.map} +0 -0
  225. /package/dist/{chunk-7BYFC2MR.js.map → chunk-I7HYGIEJ.js.map} +0 -0
  226. /package/dist/{chunk-UVGRRI7N.js.map → chunk-IPVYEPXO.js.map} +0 -0
  227. /package/dist/{chunk-5ZTUP65G.js.map → chunk-JM64OEU6.js.map} +0 -0
  228. /package/dist/{chunk-QFJRB27Q.js.map → chunk-KHWCX4LI.js.map} +0 -0
  229. /package/dist/{chunk-TLMLEC4F.js.map → chunk-KW7H5O3K.js.map} +0 -0
  230. /package/dist/{chunk-UU3QAKG6.js.map → chunk-L4U23SBX.js.map} +0 -0
  231. /package/dist/{chunk-QWDEOITU.js.map → chunk-MYGNIFZC.js.map} +0 -0
  232. /package/dist/{chunk-2MMEIN4T.js.map → chunk-N2TUX4A5.js.map} +0 -0
  233. /package/dist/{chunk-KTK4A3IF.js.map → chunk-OIKQO73C.js.map} +0 -0
  234. /package/dist/{chunk-REMK55JI.js.map → chunk-OLZTGVBT.js.map} +0 -0
  235. /package/dist/{chunk-ZIYMBR7K.js.map → chunk-OTH7H3IP.js.map} +0 -0
  236. /package/dist/{chunk-J4W4TQPC.js.map → chunk-QJRDDVZ2.js.map} +0 -0
  237. /package/dist/{chunk-VNDOQEJ7.js.map → chunk-QRX5BYUQ.js.map} +0 -0
  238. /package/dist/{chunk-XT7HMNBW.js.map → chunk-R6SNYC3D.js.map} +0 -0
  239. /package/dist/{chunk-W2UTDN4T.js.map → chunk-RBGOGTT2.js.map} +0 -0
  240. /package/dist/{chunk-EXJBPKGW.js.map → chunk-SHDIZSN5.js.map} +0 -0
  241. /package/dist/{chunk-23FCBIUN.js.map → chunk-TNVO2DTB.js.map} +0 -0
  242. /package/dist/{chunk-AGSBIUPV.js.map → chunk-TPLKJHNN.js.map} +0 -0
  243. /package/dist/{chunk-U2AC4AQX.js.map → chunk-TU5EIKJA.js.map} +0 -0
  244. /package/dist/{chunk-BGYLL467.js.map → chunk-TXHJX2NG.js.map} +0 -0
  245. /package/dist/{chunk-E46PG577.js.map → chunk-URXT5TOY.js.map} +0 -0
  246. /package/dist/{chunk-5NKUYCZD.js.map → chunk-VON4BFK4.js.map} +0 -0
  247. /package/dist/{chunk-FL54G7PV.js.map → chunk-WIT3Y7JT.js.map} +0 -0
  248. /package/dist/{chunk-DVUPIVI2.js.map → chunk-WQA4LIIK.js.map} +0 -0
  249. /package/dist/{chunk-2UYR2OOE.js.map → chunk-YRUCIKPO.js.map} +0 -0
  250. /package/dist/{chunk-QKIJ6YXZ.js.map → chunk-ZA4U5GDU.js.map} +0 -0
  251. /package/dist/{chunk-OXQP3N6X.js.map → chunk-ZTZ6S5Q6.js.map} +0 -0
@@ -0,0 +1,79 @@
1
+ # FleetMap Test Status Tracking
2
+
3
+ ## Test Files Status
4
+
5
+ - [x] `FleetMap.test.stories.tsx` created
6
+ - [x] `__tests__/fleet-map-helpers.test.ts` created — the four pure decisions,
7
+ at their boundaries, where a story is expensive to stage and an
8
+ off-by-one reads identically on screen
9
+ - [x] `__tests__/fleet-map-hook.test.ts` created — the two decisions the DOM
10
+ cannot show: `centre`'s IDENTITY across a poll, and who owns the
11
+ selection across a re-render
12
+ - [x] `__tests__/fleet-map-guards.test.tsx` created — the behaviours the review
13
+ rounds added guards for, in the suite CI actually runs (`test-storybook`
14
+ is deliberately not wired into this repo's CI)
15
+ - [x] `__tests__/fleet-map-theme.test.tsx` created — the row and its first-load
16
+ skeleton under two host themes, because a radius that looks right on the
17
+ default one is not evidence in a package built to be re-themed
18
+ - [x] All applicable test categories implemented
19
+
20
+ ## Storybook Tests Status
21
+
22
+ ### Test Results
23
+
24
+ | Test Name | Status | Pass/Fail | Notes |
25
+ | --- | --- | --- | --- |
26
+ | Basic Interaction | Running | PASS | rows render, roster ordered freshest first |
27
+ | Freshness | Running | PASS | three states, words not colour, caller formats |
28
+ | Thresholds are props | Running | PASS | same fleet reads differently on tighter bounds |
29
+ | Selection | Running | PASS | click reports, `aria-selected` on one row only |
30
+ | Keyboard Navigation | Running | PASS | one tab stop, arrows move and wrap |
31
+ | Screen Reader | Running | PASS | region, named listbox, map named not hidden |
32
+ | Empty State | Running | PASS | empty state renders, no map canvas |
33
+ | Loading State | Running | PASS | busy, skeletons, NOT the empty state, and silent |
34
+ | Edge Cases | Running | PASS | one unit, long name, no badge, zero seconds |
35
+ | Active Descendant | Running | PASS | points at a row that exists, id is generated |
36
+ | Stale Selection | Running | PASS | a selection that left the fleet dangles nothing |
37
+ | Loading Announcement | Running | PASS | `role="status"` carries `copy.loading` |
38
+ | Loading Keeps Roster | Running | PASS | a poll over a populated roster keeps the listbox |
39
+ | Uncontrolled Selection | Running | PASS | works with neither selection prop passed |
40
+ | Controlled Without Handler | Running | PASS | arrows left un-prevented for the page |
41
+ | Idle Announcement Region | Running | PASS | the live region exists, and is empty, while idle |
42
+
43
+ Legend: Pending | Running | PASS | FAIL
44
+
45
+ Not implemented, and why: **Form Interaction** — the component has no form.
46
+ **Focus Management** — covered inside Keyboard Navigation, since the listbox's
47
+ single tab stop IS its focus contract. **Performance** — the roster is a short
48
+ list by construction (a fleet is people, not rows), so a render benchmark would
49
+ measure the fixture rather than the component.
50
+
51
+ ## Static Stories Status
52
+
53
+ - [x] Default story
54
+ - [x] Empty state
55
+ - [x] Loading state
56
+ - [x] One unit
57
+ - [x] All stale
58
+ - [x] Tight thresholds
59
+ - [x] Long names / no accuracy
60
+ - [x] Selectable (controlled)
61
+ - [x] Compact height
62
+
63
+ ## Lint Status
64
+
65
+ - [x] No lint errors
66
+ - [x] No warnings
67
+ - [x] Clean under `eslint.flakiness.config.mjs`
68
+
69
+ ## TypeCheck Status
70
+
71
+ - [x] No type errors
72
+ - [x] All props properly typed, no `any`
73
+
74
+ ## Overall Component Status
75
+
76
+ - [x] Lint clean
77
+ - [x] TypeCheck clean
78
+ - [x] Stories working
79
+ - [x] Unit tests passing (35: 16 helpers + 8 hook + 9 guards + 2 theme)
@@ -0,0 +1,50 @@
1
+ # FleetMap
2
+
3
+ Where a set of tracked units is right now: a map beside the roster that reads
4
+ it. Product-free — it draws labelled dots with a freshness, and every word plus
5
+ the two formatters arrive through `copy`. Built for a delivery fleet and
6
+ deliberately not named after one.
7
+
8
+ ## Props
9
+
10
+ | prop | effect |
11
+ | --- | --- |
12
+ | `units` | who is reporting; empty renders the empty state rather than an empty map |
13
+ | `copy` | every word, and the `lastSeen` / `accuracy` formatters |
14
+ | `selectedId` | controlled selection; the map centres on it |
15
+ | `onSelect` | fired by a row click, each arrow-key move, and a pin click (mouse only — the pin is not focusable) |
16
+ | `laggingAfterSeconds` | when a unit stops reading as `live` |
17
+ | `staleAfterSeconds` | when it stops reading as `lagging` |
18
+ | `height` | the map's height |
19
+ | `loading` | first-load skeletons, map and roster `aria-busy` |
20
+ | `className` | on the panel root |
21
+ | `dataTestId` | root TEST id; DOM ids are generated separately |
22
+
23
+ ## Lint
24
+
25
+ Clean, including the flakiness config.
26
+
27
+ ## Type Errors
28
+
29
+ None.
30
+
31
+ ## Testing Scenarios
32
+
33
+ Freshness at both thresholds and at their collapse; the centroid fallback and
34
+ the Atlantic-null for an empty fleet; roster order and its tie-break; selection
35
+ wrapping at both ends and a selection that has left the fleet; the empty state
36
+ against the loading state, which are opposite messages.
37
+
38
+ ## Storybook Tests List
39
+
40
+ `BasicInteraction`, `FreshnessTest`, `ThresholdsAreProps`, `SelectionTest`,
41
+ `KeyboardNavigationTest`, `ControlledWithoutHandlerTest`, `ScreenReaderTest`,
42
+ `ActiveDescendantTest`, `StaleSelectionTest`, `EmptyStateTest`,
43
+ `LoadingStateTest`, `IdleAnnouncementRegionTest`, `LoadingAnnouncementTest`,
44
+ `LoadingKeepsThePopulatedRosterTest`, `UncontrolledSelectionTest`,
45
+ `EdgeCaseTest`.
46
+
47
+ ## Current
48
+
49
+ Shipped. Its first consumer is an adopter's courier-tracking panel, which
50
+ composes it with its own transport and its own words.
@@ -17,6 +17,7 @@ export * from './InteractiveTooltip';
17
17
  export * from './LazyImage';
18
18
  export * from './Lightbox';
19
19
  export * from './LoadingState';
20
+ export * from './FleetMap';
20
21
  export * from './MapPreview';
21
22
  export * from './Popover';
22
23
  export * from './Progress';
@@ -61,13 +61,19 @@ escape hatch for the same button in a context where the action is harmless.
61
61
  Refs are not forwarded (the HOC renders trigger + popup as a fragment, so there
62
62
  is no single node to hand back). Use `<ConfirmAction>` where a ref is needed.
63
63
 
64
- ### `ConfirmButton` — the HOC, pre-applied
64
+ ### `createConfirmButton` — the HOC, pre-applied
65
65
 
66
- `withConfirmation(Button)` with the shared wording already in place. Use it when
67
- you just want a guarded button and have no reason to build your own wrapper.
66
+ `withConfirmation(Button)`, wrapped up for you. Use it when you just want a
67
+ guarded button and have no reason to build your own wrapper.
68
+
69
+ A FACTORY rather than a ready-made component, because the wording it bakes in is
70
+ the caller's: it takes the host's `ConfirmActionCopy` and its error sentence, and
71
+ returns the button. Build it once at module scope and use it like any other.
68
72
 
69
73
  ```tsx
70
- import { ConfirmButton } from '@12-apps/ui/feedback/ConfirmAction';
74
+ import { createConfirmButton } from '@12-apps/ui/feedback/ConfirmAction';
75
+
76
+ const ConfirmButton = createConfirmButton(PT_BR_CONFIRM_ACTION_COPY, 'Algo deu errado.');
71
77
 
72
78
  <ConfirmButton
73
79
  color="danger"
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-X3HL5C6H.js.map