impact-nova 2.6.2 → 3.0.0-alpha.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 (259) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-cell-components.d.ts +9 -0
  2. package/dist/components/data/ag-grid-react/ag-grid-list.d.ts +16 -0
  3. package/dist/components/data/ag-grid-react/ag-grid-list.js +23 -0
  4. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +21 -9
  5. package/dist/components/data/ag-grid-react/cell-renderers/editors/list-select-cell-editor.d.ts +14 -0
  6. package/dist/components/data/ag-grid-react/cell-renderers/editors/list-select-cell-editor.js +70 -0
  7. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.d.ts +10 -5
  8. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.js +73 -41
  9. package/dist/components/data/ag-grid-react/cell-renderers/index.d.ts +7 -0
  10. package/dist/components/data/ag-grid-react/cell-renderers/index.js +42 -36
  11. package/dist/components/data/ag-grid-react/cell-renderers/list-select-display-renderer.d.ts +19 -0
  12. package/dist/components/data/ag-grid-react/cell-renderers/list-select-display-renderer.js +89 -0
  13. package/dist/components/data/ag-grid-react/cell-renderers/select-ai-insight-affordance.d.ts +28 -0
  14. package/dist/components/data/ag-grid-react/cell-renderers/select-ai-insight-affordance.js +96 -0
  15. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.d.ts +30 -10
  16. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +72 -24
  17. package/dist/components/data/ag-grid-react/cell-renderers/style-description-display-renderer.d.ts +42 -0
  18. package/dist/components/data/ag-grid-react/cell-renderers/style-description-display-renderer.js +86 -0
  19. package/dist/components/data/ag-grid-react/headers/components/date-filter-picker.d.ts +2 -12
  20. package/dist/components/data/ag-grid-react/headers/header-search-input.js +200 -207
  21. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  22. package/dist/components/data/ag-grid-react/index.js +263 -244
  23. package/dist/components/data/data-table/data-table.js +85 -82
  24. package/dist/components/data/data-table/data-table.types.d.ts +5 -0
  25. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +2 -3
  26. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +2 -3
  27. package/dist/components/data/expandable-list-item/sku-next-page-coordinator.d.ts +14 -0
  28. package/dist/components/data/expandable-list-item/sku-strip-lookahead.d.ts +26 -0
  29. package/dist/components/data/expandable-list-item/useServerSkuInfinitePages.d.ts +10 -0
  30. package/dist/components/data/expandable-list-item/useSkuStripVirtualizer.d.ts +30 -0
  31. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.catalog.d.ts +81 -0
  32. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.item-grid.d.ts +1 -0
  33. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.product-card.d.ts +7 -0
  34. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.sku-picker.d.ts +2 -0
  35. package/dist/components/data-display/chart/chart-heatmap-demos.d.ts +3 -0
  36. package/dist/components/data-display/chart/chart-heatmap-play.d.ts +9 -0
  37. package/dist/components/data-display/chart/chart.category-cluster-heatmap.stories-data.d.ts +22 -0
  38. package/dist/components/data-display/chart/chart.diverging-heatmap.stories-data.d.ts +43 -0
  39. package/dist/components/data-display/chart/chart.js +100 -93
  40. package/dist/components/data-display/chart/chart.types.d.ts +10 -0
  41. package/dist/components/data-display/chart/chart.utils.d.ts +14 -2
  42. package/dist/components/data-display/chart/chart.utils.js +132 -35
  43. package/dist/components/data-display/chart/index.js +15 -13
  44. package/dist/components/data-display/chart/resolve-highcharts-options.js +19 -14
  45. package/dist/components/data-display/globe-map/globe-map.d.ts +8 -0
  46. package/dist/components/data-display/globe-map/globe-map.js +161 -0
  47. package/dist/components/data-display/globe-map/globe-map.stories-data.d.ts +12 -0
  48. package/dist/components/data-display/globe-map/globe-map.types.d.ts +83 -0
  49. package/dist/components/data-display/globe-map/globe-map.utils.d.ts +115 -0
  50. package/dist/components/data-display/globe-map/globe-map.utils.js +259 -0
  51. package/dist/components/data-display/globe-map/globe-map.variants.d.ts +19 -0
  52. package/dist/components/data-display/globe-map/globe-map.variants.js +80 -0
  53. package/dist/components/data-display/globe-map/index.d.ts +2 -0
  54. package/dist/components/data-display/globe-map/index.js +10 -0
  55. package/dist/components/data-display/globe-map/internals/globe-countries-110m.json.d.ts +4 -0
  56. package/dist/components/data-display/globe-map/internals/globe-countries-110m.json.js +7 -0
  57. package/dist/components/data-display/globe-map/internals/globe-map-context.d.ts +25 -0
  58. package/dist/components/data-display/globe-map/internals/globe-map-context.js +19 -0
  59. package/dist/components/data-display/globe-map/internals/globe-map-legend.d.ts +2 -0
  60. package/dist/components/data-display/globe-map/internals/globe-map-legend.js +51 -0
  61. package/dist/components/data-display/globe-map/internals/globe-map-point-card-carousel.d.ts +6 -0
  62. package/dist/components/data-display/globe-map/internals/globe-map-point-card-carousel.js +119 -0
  63. package/dist/components/data-display/globe-map/internals/globe-map-point-card.d.ts +2 -0
  64. package/dist/components/data-display/globe-map/internals/globe-map-point-card.js +106 -0
  65. package/dist/components/data-display/globe-map/internals/globe-map-scene.d.ts +17 -0
  66. package/dist/components/data-display/globe-map/internals/globe-map-scene.js +218 -0
  67. package/dist/components/data-display/globe-map/internals/globe-map-tooltip.d.ts +2 -0
  68. package/dist/components/data-display/globe-map/internals/globe-map-tooltip.js +33 -0
  69. package/dist/components/data-display/globe-map/internals/use-globe-map-scene.d.ts +45 -0
  70. package/dist/components/data-display/globe-map/internals/use-globe-map-scene.js +270 -0
  71. package/dist/components/data-display/hex-tilemap/hex-tilemap.d.ts +9 -0
  72. package/dist/components/data-display/hex-tilemap/hex-tilemap.js +94 -0
  73. package/dist/components/data-display/hex-tilemap/hex-tilemap.stories-data.d.ts +7 -0
  74. package/dist/components/data-display/hex-tilemap/hex-tilemap.types.d.ts +43 -0
  75. package/dist/components/data-display/hex-tilemap/hex-tilemap.variants.d.ts +11 -0
  76. package/dist/components/data-display/hex-tilemap/hex-tilemap.variants.js +47 -0
  77. package/dist/components/data-display/hex-tilemap/index.d.ts +2 -0
  78. package/dist/components/data-display/hex-tilemap/index.js +12 -0
  79. package/dist/components/data-display/hex-tilemap/internals/hex-camera.d.ts +40 -0
  80. package/dist/components/data-display/hex-tilemap/internals/hex-camera.js +103 -0
  81. package/dist/components/data-display/hex-tilemap/internals/hex-country-lattices.d.ts +9 -0
  82. package/dist/components/data-display/hex-tilemap/internals/hex-country-lattices.js +1387 -0
  83. package/dist/components/data-display/hex-tilemap/internals/hex-geometry.d.ts +21 -0
  84. package/dist/components/data-display/hex-tilemap/internals/hex-geometry.js +82 -0
  85. package/dist/components/data-display/hex-tilemap/internals/hex-lattice.d.ts +18 -0
  86. package/dist/components/data-display/hex-tilemap/internals/hex-lattice.js +47 -0
  87. package/dist/components/data-display/hex-tilemap/internals/hex-layout.d.ts +10 -0
  88. package/dist/components/data-display/hex-tilemap/internals/hex-layout.js +35 -0
  89. package/dist/components/data-display/hex-tilemap/internals/hex-new-zealand-grid.d.ts +31 -0
  90. package/dist/components/data-display/hex-tilemap/internals/hex-new-zealand-grid.js +138 -0
  91. package/dist/components/data-display/hex-tilemap/internals/hex-regions.d.ts +6 -0
  92. package/dist/components/data-display/hex-tilemap/internals/hex-regions.js +18 -0
  93. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-context.d.ts +24 -0
  94. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-context.js +19 -0
  95. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-legend.d.ts +2 -0
  96. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-legend.js +51 -0
  97. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-tooltip.d.ts +2 -0
  98. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-tooltip.js +36 -0
  99. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-viewport.d.ts +3 -0
  100. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-viewport.js +147 -0
  101. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-zoom.d.ts +13 -0
  102. package/dist/components/data-display/hex-tilemap/internals/hex-tilemap-zoom.js +99 -0
  103. package/dist/components/data-display/hex-tilemap/internals/hex-world-grid.d.ts +8 -0
  104. package/dist/components/data-display/hex-tilemap/internals/use-hex-camera.d.ts +27 -0
  105. package/dist/components/data-display/hex-tilemap/internals/use-hex-camera.js +137 -0
  106. package/dist/components/data-display/notch-card/index.d.ts +2 -0
  107. package/dist/components/data-display/notch-card/index.js +6 -0
  108. package/dist/components/data-display/notch-card/notch-card.d.ts +7 -0
  109. package/dist/components/data-display/notch-card/notch-card.js +151 -0
  110. package/dist/components/data-display/notch-card/notch-card.path.d.ts +19 -0
  111. package/dist/components/data-display/notch-card/notch-card.path.js +118 -0
  112. package/dist/components/data-display/notch-card/notch-card.types.d.ts +15 -0
  113. package/dist/components/data-display/notch-card/notch-card.variants.d.ts +15 -0
  114. package/dist/components/data-display/notch-card/notch-card.variants.js +86 -0
  115. package/dist/components/feedback/hover-card/hover-card.d.ts +3 -1
  116. package/dist/components/feedback/hover-card/hover-card.js +28 -24
  117. package/dist/components/feedback/tooltip/overflow-tooltip.d.ts +1 -1
  118. package/dist/components/feedback/tooltip/overflow-tooltip.js +63 -57
  119. package/dist/components/feedback/tooltip/overflow-tooltip.types.d.ts +4 -0
  120. package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
  121. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  122. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  123. package/dist/components/flows/filter-strip/index.d.ts +1 -0
  124. package/dist/components/flows/filter-strip/index.js +4 -2
  125. package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +48 -46
  126. package/dist/components/flows/iris-chat/index.d.ts +10 -0
  127. package/dist/components/flows/iris-chat/index.js +55 -0
  128. package/dist/components/flows/iris-chat/iris-chat-artifact.d.ts +4 -0
  129. package/dist/components/flows/iris-chat/iris-chat-artifact.js +125 -0
  130. package/dist/components/flows/iris-chat/iris-chat-composer.d.ts +3 -0
  131. package/dist/components/flows/iris-chat/iris-chat-composer.js +297 -0
  132. package/dist/components/flows/iris-chat/iris-chat-context.d.ts +14 -0
  133. package/dist/components/flows/iris-chat/iris-chat-context.js +23 -0
  134. package/dist/components/flows/iris-chat/iris-chat-icons.d.ts +18 -0
  135. package/dist/components/flows/iris-chat/iris-chat-icons.js +176 -0
  136. package/dist/components/flows/iris-chat/iris-chat-markdown.d.ts +3 -0
  137. package/dist/components/flows/iris-chat/iris-chat-markdown.js +62 -0
  138. package/dist/components/flows/iris-chat/iris-chat-menu.d.ts +15 -0
  139. package/dist/components/flows/iris-chat/iris-chat-menu.js +259 -0
  140. package/dist/components/flows/iris-chat/iris-chat-prompt.d.ts +3 -0
  141. package/dist/components/flows/iris-chat/iris-chat-prompt.js +46 -0
  142. package/dist/components/flows/iris-chat/iris-chat-thinking.d.ts +12 -0
  143. package/dist/components/flows/iris-chat/iris-chat-thinking.js +202 -0
  144. package/dist/components/flows/iris-chat/iris-chat-thread.d.ts +37 -0
  145. package/dist/components/flows/iris-chat/iris-chat-thread.js +493 -0
  146. package/dist/components/flows/iris-chat/iris-chat.d.ts +43 -0
  147. package/dist/components/flows/iris-chat/iris-chat.js +336 -0
  148. package/dist/components/flows/iris-chat/iris-chat.types.d.ts +208 -0
  149. package/dist/components/flows/iris-chat/iris-chat.variants.d.ts +14 -0
  150. package/dist/components/flows/iris-chat/iris-chat.variants.js +78 -0
  151. package/dist/components/flows/iris-chat/read-iris-greeting-period.d.ts +4 -0
  152. package/dist/components/flows/iris-chat/read-iris-greeting-period.js +16 -0
  153. package/dist/components/flows/wizard/index.d.ts +2 -2
  154. package/dist/components/flows/wizard/index.js +17 -13
  155. package/dist/components/flows/wizard/wizard-context.d.ts +6 -1
  156. package/dist/components/flows/wizard/wizard-context.js +15 -7
  157. package/dist/components/flows/wizard/wizard.d.ts +22 -4
  158. package/dist/components/flows/wizard/wizard.js +278 -174
  159. package/dist/components/flows/wizard/wizard.types.d.ts +40 -0
  160. package/dist/components/forms/choice-card/assets/featured-backdrop-baked.webp.js +4 -0
  161. package/dist/components/forms/choice-card/assets/featured-noise.webp.js +4 -0
  162. package/dist/components/forms/choice-card/choice-card-featured-arcs.d.ts +4 -0
  163. package/dist/components/forms/choice-card/choice-card-featured-arcs.js +42 -0
  164. package/dist/components/forms/choice-card/choice-card-featured-backdrop.d.ts +4 -0
  165. package/dist/components/forms/choice-card/choice-card-featured-backdrop.js +45 -0
  166. package/dist/components/forms/choice-card/choice-card-indicator.variants.d.ts +8 -0
  167. package/dist/components/forms/choice-card/choice-card-indicator.variants.js +5 -0
  168. package/dist/components/forms/choice-card/choice-card-percent.d.ts +11 -0
  169. package/dist/components/forms/choice-card/choice-card-percent.js +80 -0
  170. package/dist/components/forms/choice-card/choice-card.d.ts +40 -3
  171. package/dist/components/forms/choice-card/choice-card.js +651 -170
  172. package/dist/components/forms/choice-card/choice-card.types.d.ts +40 -0
  173. package/dist/components/forms/choice-card/choice-card.variants.d.ts +7 -0
  174. package/dist/components/forms/choice-card/choice-card.variants.js +100 -0
  175. package/dist/components/forms/choice-card/index.d.ts +2 -1
  176. package/dist/components/forms/choice-card/index.js +27 -10
  177. package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
  178. package/dist/components/forms/select/components/Submenu.js +2 -3
  179. package/dist/components/layout/header/header.d.ts +3 -2
  180. package/dist/components/layout/header/header.js +67 -47
  181. package/dist/components/layout/header/header.types.d.ts +1 -0
  182. package/dist/components/primitives/iris/iris-agent-cursor.d.ts +3 -0
  183. package/dist/components/primitives/iris/iris-agent-cursor.js +89 -0
  184. package/dist/components/primitives/iris/iris-alan-gradient-icon.d.ts +5 -0
  185. package/dist/components/primitives/iris/iris-alan-gradient-icon.js +69 -0
  186. package/dist/components/primitives/iris/iris-control-context.d.ts +15 -0
  187. package/dist/components/primitives/iris/iris-control-context.js +44 -0
  188. package/dist/components/primitives/iris/iris-control-region.d.ts +10 -0
  189. package/dist/components/primitives/iris/iris-control-region.js +102 -0
  190. package/dist/components/primitives/iris/iris-control.types.d.ts +24 -0
  191. package/dist/components/primitives/iris/iris-control.variants.d.ts +4 -0
  192. package/dist/components/primitives/iris/iris-control.variants.js +20 -0
  193. package/dist/components/primitives/iris/iris.d.ts +24 -0
  194. package/dist/components/primitives/iris/iris.js +232 -0
  195. package/dist/components/primitives/iris/iris.types.d.ts +35 -0
  196. package/dist/components/primitives/iris/iris.variants.d.ts +30 -0
  197. package/dist/components/primitives/iris/iris.variants.js +120 -0
  198. package/dist/components/primitives/stepper/internals/pipeline-current-mark.d.ts +6 -0
  199. package/dist/components/primitives/stepper/internals/pipeline-current-mark.js +35 -0
  200. package/dist/components/primitives/stepper/internals/rail-status-dot.d.ts +13 -0
  201. package/dist/components/primitives/stepper/internals/rail-status-dot.js +70 -0
  202. package/dist/components/primitives/stepper/internals/step-hit-target.d.ts +15 -0
  203. package/dist/components/primitives/stepper/internals/step-hit-target.js +51 -0
  204. package/dist/components/primitives/stepper/internals/step-model.d.ts +3 -0
  205. package/dist/components/primitives/stepper/internals/step-model.js +10 -0
  206. package/dist/components/primitives/stepper/internals/stepper-compact.d.ts +5 -0
  207. package/dist/components/primitives/stepper/internals/stepper-compact.js +68 -0
  208. package/dist/components/primitives/stepper/internals/stepper-pipeline.d.ts +7 -0
  209. package/dist/components/primitives/stepper/internals/stepper-pipeline.js +87 -0
  210. package/dist/components/primitives/stepper/internals/stepper-rail.d.ts +5 -0
  211. package/dist/components/primitives/stepper/internals/stepper-rail.js +105 -0
  212. package/dist/components/primitives/stepper/internals/stepper-summary.d.ts +5 -0
  213. package/dist/components/primitives/stepper/internals/stepper-summary.js +103 -0
  214. package/dist/components/primitives/stepper/internals/stepper-track.d.ts +8 -0
  215. package/dist/components/primitives/stepper/internals/stepper-track.js +170 -0
  216. package/dist/components/primitives/stepper/stepper.d.ts +1 -0
  217. package/dist/components/primitives/stepper/stepper.js +134 -52
  218. package/dist/components/primitives/stepper/stepper.types.d.ts +17 -0
  219. package/dist/components/primitives/stepper/stepper.variants.d.ts +26 -0
  220. package/dist/components/primitives/stepper/stepper.variants.js +165 -5
  221. package/dist/components/primitives/tabs/tabs.d.ts +4 -1
  222. package/dist/components/primitives/tabs/tabs.js +131 -59
  223. package/dist/components/primitives/tabs/tabs.types.d.ts +5 -1
  224. package/dist/form-react/Fields/DateRangeField.js +20 -19
  225. package/dist/form-react/Fields/WeekRangePicker.js +36 -36
  226. package/dist/i18n/defaultMessages.d.ts +100 -0
  227. package/dist/i18n/defaultMessages.js +118 -21
  228. package/dist/i18n/index.d.ts +1 -1
  229. package/dist/i18n/locales/de.js +99 -2
  230. package/dist/i18n/locales/es.js +99 -2
  231. package/dist/i18n/locales/hi.js +99 -2
  232. package/dist/i18n/locales/kn.js +99 -2
  233. package/dist/impact-nova-components.css +972 -2
  234. package/dist/impact-nova-tokens.scss +109 -1
  235. package/dist/impact-nova.css +1 -1
  236. package/dist/index.d.ts +1 -1
  237. package/dist/index.js +585 -551
  238. package/dist/lib/virtualized/directional-range-extractor.d.ts +26 -0
  239. package/dist/lib/virtualized/directional-range-extractor.js +39 -0
  240. package/dist/lib/virtualized/index.d.ts +3 -0
  241. package/dist/lib/virtualized/index.js +35 -27
  242. package/dist/lib/virtualized/scroll-seek.d.ts +61 -0
  243. package/dist/lib/virtualized/scroll-seek.js +61 -0
  244. package/dist/lib/virtualized/usePaintedRangeVirtualizer.d.ts +19 -0
  245. package/dist/lib/virtualized/usePaintedRangeVirtualizer.js +30 -0
  246. package/dist/lib/virtualized/useResponsiveColumnCount.d.ts +35 -0
  247. package/dist/lib/virtualized/useResponsiveColumnCount.js +51 -0
  248. package/dist/lib/virtualized/useScrollSeekPaintedRange.d.ts +13 -0
  249. package/dist/lib/virtualized/useScrollSeekPaintedRange.js +45 -0
  250. package/dist/lib/virtualized/useVirtualizedList.d.ts +7 -0
  251. package/dist/lib/virtualized/useVirtualizedList.js +89 -87
  252. package/dist/lib/virtualized/useVirtualizedRows.d.ts +9 -2
  253. package/dist/lib/virtualized/useVirtualizedRows.js +15 -13
  254. package/dist/lib/virtualized/virtualized.types.d.ts +2 -0
  255. package/dist/llms/rules/installation.js +1 -1
  256. package/dist/llms/rules/requirements.js +1 -1
  257. package/dist/tailwind.config.js +3 -1
  258. package/dist/theme/tailwind-colors.js +2 -1
  259. package/package.json +39 -4
@@ -1,41 +1,42 @@
1
- import { jsx as i, jsxs as I } from "react/jsx-runtime";
2
- import { useState as h, useMemo as p, useCallback as D, useEffect as A, memo as w, useRef as O, useLayoutEffect as N } from "react";
3
- import { AgGridWrapper as M } from "../ag-grid-react/index.js";
4
- import { cn as _ } from "../../../lib/utils.js";
5
- import { DataTableContext as F, DataTableSheetPortalStoreContext as z, useDataTable as B, useDataTableSheetPortal as P } from "./data-table-context.js";
6
- import { createDataTableSheetPortalStore as L } from "./data-table-sheet-portal-store.js";
7
- import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as v, DATA_TABLE_SHEET_SLIDE_TRANSITION_MS as j } from "./data-table-constants.js";
8
- import { scheduleColumnTreePrewarm as k } from "./data-table-column-tree-cache.js";
9
- import { scheduleColumnRuntimeStateGuard as W } from "./column-runtime-state-guard.js";
10
- import { extractRuntimeColumnDefs as X, mergeInitialGridRuntimeState as V } from "./data-table-column-def-pin.js";
11
- const R = {
1
+ import { jsx as i, jsxs as O } from "react/jsx-runtime";
2
+ import { useState as p, useMemo as S, useCallback as b, useEffect as x, memo as A, useRef as N, useLayoutEffect as M } from "react";
3
+ import { AgGridWrapper as F } from "../ag-grid-react/index.js";
4
+ import { AG_GRID_LIST_ROW_HEIGHT_BY_DENSITY as B } from "../ag-grid-react/ag-grid-list.js";
5
+ import { cn as w } from "../../../lib/utils.js";
6
+ import { DataTableContext as L, DataTableSheetPortalStoreContext as z, useDataTable as j, useDataTableSheetPortal as G } from "./data-table-context.js";
7
+ import { createDataTableSheetPortalStore as k } from "./data-table-sheet-portal-store.js";
8
+ import { DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX as R, DATA_TABLE_SHEET_SLIDE_TRANSITION_MS as W } from "./data-table-constants.js";
9
+ import { scheduleColumnTreePrewarm as Y } from "./data-table-column-tree-cache.js";
10
+ import { scheduleColumnRuntimeStateGuard as X } from "./column-runtime-state-guard.js";
11
+ import { extractRuntimeColumnDefs as V, mergeInitialGridRuntimeState as $ } from "./data-table-column-def-pin.js";
12
+ const P = {
12
13
  default: 46,
13
14
  compact: 30,
14
15
  comfort: 52
15
- }, ie = ({
16
+ }, le = ({
16
17
  children: a,
17
18
  className: r
18
19
  }) => {
19
- const [t, e] = h(null), [o, s] = h("medium"), [n, d] = h("full"), [l, u] = h("default"), m = p(() => L(), []), f = D((c) => {
20
+ const [e, t] = p(null), [o, s] = p("medium"), [n, d] = p("full"), [l, u] = p("default"), m = S(() => k(), []), f = b((c) => {
20
21
  m.registerScopedSheetDepth(c);
21
- }, [m]), g = D((c) => {
22
- e(c);
22
+ }, [m]), g = b((c) => {
23
+ t(c);
23
24
  }, []);
24
- A(() => {
25
- if (!t)
25
+ x(() => {
26
+ if (!e)
26
27
  return;
27
- const c = k(t), S = W(t);
28
+ const c = Y(e), _ = X(e);
28
29
  return () => {
29
- c(), S();
30
+ c(), _();
30
31
  };
31
- }, [t]);
32
- const H = {
32
+ }, [e]);
33
+ const h = {
33
34
  small: "12px",
34
35
  medium: "14px",
35
36
  large: "16px"
36
- }[o], x = `${R[l]}px`, b = p(
37
+ }[o], H = `${P[l]}px`, D = S(
37
38
  () => ({
38
- gridApi: t,
39
+ gridApi: e,
39
40
  registerApi: g,
40
41
  registerScopedSheetDepth: f,
41
42
  fontSize: o,
@@ -46,7 +47,7 @@ const R = {
46
47
  setRowHeight: u
47
48
  }),
48
49
  [
49
- t,
50
+ e,
50
51
  g,
51
52
  f,
52
53
  o,
@@ -54,7 +55,7 @@ const R = {
54
55
  l
55
56
  ]
56
57
  );
57
- return /* @__PURE__ */ i(F.Provider, { value: b, children: /* @__PURE__ */ i(
58
+ return /* @__PURE__ */ i(L.Provider, { value: D, children: /* @__PURE__ */ i(
58
59
  z.Provider,
59
60
  {
60
61
  value: m,
@@ -62,13 +63,13 @@ const R = {
62
63
  "div",
63
64
  {
64
65
  "data-component": "data-table",
65
- className: _(
66
+ className: w(
66
67
  "flex flex-col w-full min-h-0 rounded-[inherit]",
67
68
  r
68
69
  ),
69
70
  style: {
70
- "--ag-font-size": H,
71
- "--ag-row-height": x
71
+ "--ag-font-size": h,
72
+ "--ag-row-height": H
72
73
  },
73
74
  children: a
74
75
  }
@@ -81,8 +82,8 @@ const R = {
81
82
  m: "mil",
82
83
  b: "bil",
83
84
  full_precision: "full_precision"
84
- }, Y = w(function() {
85
- const { setSheetTarget: r } = P();
85
+ }, q = A(function() {
86
+ const { setSheetTarget: r } = G();
86
87
  return /* @__PURE__ */ i(
87
88
  "div",
88
89
  {
@@ -90,64 +91,64 @@ const R = {
90
91
  className: "absolute inset-0 pointer-events-none z-[39] flex overflow-hidden"
91
92
  }
92
93
  );
93
- }), $ = w(function({
94
+ }), J = A(function({
94
95
  className: r,
95
- children: t
96
+ children: e
96
97
  }) {
97
- const { scopedSheetOpen: e } = P(), o = O(null), [s, n] = h(!1);
98
- !e && s && n(!1), N(() => {
99
- if (!e || (o.current?.clientHeight ?? 0) >= v)
98
+ const { scopedSheetOpen: t } = G(), o = N(null), [s, n] = p(!1);
99
+ !t && s && n(!1), M(() => {
100
+ if (!t || (o.current?.clientHeight ?? 0) >= R)
100
101
  return;
101
102
  const u = window.setTimeout(() => {
102
103
  n(!0);
103
- }, j);
104
+ }, W);
104
105
  return () => {
105
106
  window.clearTimeout(u);
106
107
  };
107
- }, [e]);
108
- const d = e && s;
109
- return /* @__PURE__ */ I(
108
+ }, [t]);
109
+ const d = t && s;
110
+ return /* @__PURE__ */ O(
110
111
  "div",
111
112
  {
112
113
  ref: o,
113
- className: _(
114
+ className: w(
114
115
  "relative flex-1 min-h-0 w-full bg-canvas-elevated rounded-b-[inherit] grid-rounded-bottom",
115
116
  r
116
117
  ),
117
- style: d ? { minHeight: v } : void 0,
118
+ style: d ? { minHeight: R } : void 0,
118
119
  children: [
119
- t,
120
- /* @__PURE__ */ i(Y, {})
120
+ e,
121
+ /* @__PURE__ */ i(q, {})
121
122
  ]
122
123
  }
123
124
  );
124
- }), q = w(function({
125
+ }), K = A(function({
125
126
  resolvedRowHeight: r,
126
- mergedContext: t,
127
- onGridReady: e,
127
+ mergedContext: e,
128
+ onGridReady: t,
128
129
  columnDefs: o,
129
130
  maintainColumnOrder: s = !0,
130
131
  ...n
131
132
  }) {
132
133
  return /* @__PURE__ */ i(
133
- M,
134
+ F,
134
135
  {
135
136
  ...n,
136
137
  columnDefs: o,
137
138
  rowHeight: r,
138
- onGridReady: e,
139
- context: t,
139
+ onGridReady: t,
140
+ context: e,
140
141
  maintainColumnOrder: s
141
142
  }
142
143
  );
143
144
  });
144
- function ae(a) {
145
+ function ce(a) {
145
146
  const {
146
147
  registerApi: r,
147
- rowHeight: t,
148
- gridApi: e,
148
+ rowHeight: e,
149
+ gridApi: t,
149
150
  numericFormat: o
150
- } = B(), {
151
+ } = j(), {
151
152
  className: s,
152
153
  onGridReady: n,
153
154
  rowHeight: d,
@@ -156,72 +157,74 @@ function ae(a) {
156
157
  initialState: m,
157
158
  suppressInitialRuntimeState: f,
158
159
  maintainColumnOrder: g = !0,
160
+ variant: h = "table",
159
161
  ...H
160
- } = a, x = R[t], b = d ?? x, { runtimeColumnDefs: c, extractedRuntimeDefaults: S } = p(
161
- () => X(u ?? void 0),
162
+ } = a, D = P[e], c = d ?? (h === "list" ? B[e] : D), { runtimeColumnDefs: _, extractedRuntimeDefaults: v } = S(
163
+ () => V(u ?? void 0),
162
164
  [u]
163
- ), C = p(
164
- () => V(
165
+ ), C = S(
166
+ () => $(
165
167
  m,
166
- S,
168
+ v,
167
169
  f
168
170
  ),
169
- [m, S, f]
170
- ), G = p(
171
+ [m, v, f]
172
+ ), E = S(
171
173
  () => ({
172
174
  ...l,
173
175
  formatType: y[o]
174
176
  }),
175
177
  [l, o]
176
178
  );
177
- A(() => {
178
- e?.resetRowHeights();
179
- }, [t, e]), A(() => {
180
- if (e) {
181
- const T = e.getGridOption("context") || {};
182
- e.setGridOption("context", {
179
+ x(() => {
180
+ t?.resetRowHeights();
181
+ }, [e, h, t]), x(() => {
182
+ if (t) {
183
+ const T = t.getGridOption("context") || {};
184
+ t.setGridOption("context", {
183
185
  ...T,
184
186
  formatType: y[o]
185
- }), e.refreshCells({ force: !0 });
187
+ }), t.refreshCells({ force: !0 });
186
188
  }
187
- }, [o, e]);
188
- const E = D(
189
+ }, [o, t]);
190
+ const I = b(
189
191
  (T) => {
190
192
  r(T.api), n?.(T);
191
193
  },
192
194
  [r, n]
193
195
  );
194
- return /* @__PURE__ */ i($, { className: s, children: /* @__PURE__ */ i(
195
- q,
196
+ return /* @__PURE__ */ i(J, { className: s, children: /* @__PURE__ */ i(
197
+ K,
196
198
  {
197
199
  ...H,
198
- columnDefs: c,
200
+ variant: h,
201
+ columnDefs: _,
199
202
  initialState: C,
200
203
  maintainColumnOrder: g,
201
- resolvedRowHeight: b,
202
- mergedContext: G,
203
- onGridReady: E
204
+ resolvedRowHeight: c,
205
+ mergedContext: E,
206
+ onGridReady: I
204
207
  }
205
208
  ) });
206
209
  }
207
- const se = ({
210
+ const ue = ({
208
211
  children: a,
209
212
  className: r,
210
- ...t
213
+ ...e
211
214
  }) => /* @__PURE__ */ i(
212
215
  "div",
213
216
  {
214
217
  "data-component": "data-table-toolbar",
215
- className: _(
218
+ className: w(
216
219
  "flex items-center justify-between px-4 py-3 shrink-0 bg-canvas-elevated rounded-t-[inherit]",
217
220
  r
218
221
  ),
219
- ...t,
222
+ ...e,
220
223
  children: a
221
224
  }
222
225
  );
223
226
  export {
224
- ie as DataTable,
225
- ae as DataTableContent,
226
- se as DataTableToolbar
227
+ le as DataTable,
228
+ ce as DataTableContent,
229
+ ue as DataTableToolbar
227
230
  };
@@ -14,6 +14,11 @@ export type DataTableProps = {
14
14
  */
15
15
  export type DataTableContentProps<TData = unknown> = AgGridWrapperProps<TData> & {
16
16
  className?: string;
17
+ /**
18
+ * Visual skin forwarded to `AgGridWrapper`. `"list"` is card-row chrome with
19
+ * a 60px default row height (48px card + 12px gap). Explicit `rowHeight` wins.
20
+ */
21
+ variant?: AgGridWrapperProps<TData>["variant"];
17
22
  /**
18
23
  * Skip injecting extracted column pinning/visibility into `initialState` on
19
24
  * first paint — use when a saved view will apply immediately after mount.
@@ -3,8 +3,7 @@ import { Badge as s } from "../../data-display/badge/badge.js";
3
3
  import { FilterPopoverContent as u } from "../../flows/filter-strip/filter-tag-list.js";
4
4
  import { Popover as b, PopoverTrigger as f } from "../../feedback/popover/popover.js";
5
5
  import { Tooltip as g, TooltipTrigger as v, TooltipContent as x } from "../../feedback/tooltip/tooltip.js";
6
- import "react";
7
- function I({
6
+ function w({
8
7
  tags: o,
9
8
  title: l = "Attributes",
10
9
  maxVisibleTags: n = 4,
@@ -71,5 +70,5 @@ function I({
71
70
  );
72
71
  }
73
72
  export {
74
- I as ExpandableListItemAttributes
73
+ w as ExpandableListItemAttributes
75
74
  };
@@ -1,9 +1,8 @@
1
1
  import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
2
  import { ScrollOverflowAffordance as o } from "../../layout/horizontal-scroller/scroll-overflow-affordance.js";
3
- import "react";
4
3
  import { OverflowTooltip as r } from "../../feedback/tooltip/overflow-tooltip.js";
5
4
  const m = 128;
6
- function f({
5
+ function x({
7
6
  columns: i,
8
7
  sectionId: l = "metrics"
9
8
  }) {
@@ -51,5 +50,5 @@ function f({
51
50
  );
52
51
  }
53
52
  export {
54
- f as ExpandableListItemMetrics
53
+ x as ExpandableListItemMetrics
55
54
  };
@@ -0,0 +1,14 @@
1
+ type NextPageRequestResult = {
2
+ started: boolean;
3
+ elapsedMs: number;
4
+ };
5
+ /**
6
+ * One in-flight next-page request for an infinite query.
7
+ * Callers that bypass `fetchNextPageIfNeeded` are not protected by the lock.
8
+ */
9
+ export declare function createNextPageRequestCoordinator(requestPage: () => Promise<unknown>): {
10
+ /** Drops the lock so a new search or sort can fetch immediately. */
11
+ reset(): void;
12
+ fetchNextPageIfNeeded(canFetch: boolean): Promise<NextPageRequestResult>;
13
+ };
14
+ export {};
@@ -0,0 +1,26 @@
1
+ export declare const SKU_PREFETCH_FALLBACK_LATENCY_MS = 220;
2
+ /**
3
+ * Strips to stay ahead of a forward flick.
4
+ * `ceil(|velocity| * latency / stride) + safety`, clamped.
5
+ * Velocity is px/ms, latency is ms, stride is px per strip.
6
+ */
7
+ export declare function getForwardStripLookahead(options: {
8
+ velocityPxPerMs: number;
9
+ latencyMs: number;
10
+ stripStridePx: number;
11
+ minimumStrips?: number;
12
+ maximumStrips?: number;
13
+ safetyStrips?: number;
14
+ }): number;
15
+ /**
16
+ * Forward pagination only. Idle and upward scrolls do not request the next page.
17
+ * `loadedStripCount` is the boundary; skeleton strips past it are not loaded data.
18
+ */
19
+ export declare function shouldPrefetchForwardPage(options: {
20
+ isScrolling: boolean;
21
+ scrollDirection: "forward" | "backward" | null;
22
+ lastVirtualIndex: number | null;
23
+ loadedStripCount: number;
24
+ lookaheadStrips: number;
25
+ requestedLoadedStripCount: number;
26
+ }): boolean;
@@ -0,0 +1,10 @@
1
+ export declare function useServerSkuInfinitePages(search: string, sortAlphabetically: boolean): {
2
+ debouncedSearch: string;
3
+ query: import('@tanstack/react-query').UseInfiniteQueryResult<import('@tanstack/query-core').InfiniteData<import('./virtualized-responsive-grid.catalog').SkuServerPage, unknown>, Error>;
4
+ loadedCatalogIndices: number[];
5
+ totalCount: number;
6
+ loadedItemCount: number;
7
+ fetchNextPageIfNeeded: () => Promise<boolean>;
8
+ loadLatencyMsRef: import('react').RefObject<number>;
9
+ pageRequestFailedRef: import('react').RefObject<boolean>;
10
+ };
@@ -0,0 +1,30 @@
1
+ import { RefObject } from 'react';
2
+ import { UseVirtualizedListResult } from '../../../lib/virtualized';
3
+ type SkuStrip = {
4
+ items: Array<{
5
+ id: string;
6
+ } | undefined>;
7
+ };
8
+ export type SkuStripVirtualizerResult<TStrip extends SkuStrip> = UseVirtualizedListResult<TStrip> & {
9
+ /** True while a fast flick should paint placeholders instead of heavy cells. */
10
+ scrollSeekRef: RefObject<boolean>;
11
+ /** Strip indexes painted as real cells before the current flick. */
12
+ warmedStripIndexesRef: RefObject<Set<number>>;
13
+ };
14
+ export declare function useSkuStripVirtualizer<TStrip extends SkuStrip>(options: {
15
+ scrollRef: RefObject<HTMLDivElement | null>;
16
+ rowCount: number;
17
+ getRowData: (stripIndex: number) => TStrip;
18
+ getRowId: (stripIndex: number) => string;
19
+ isCardView: boolean;
20
+ hasMore?: boolean;
21
+ onEndReached?: () => void | Promise<unknown>;
22
+ isRowLoaded?: (stripIndex: number) => boolean;
23
+ /** Loaded strips only. Skeleton strips past this index are not real rows. */
24
+ loadedStripCount?: number;
25
+ /** Observed page latency. Falls back to the mock's 220ms. */
26
+ loadLatencyMsRef?: RefObject<number>;
27
+ /** Changes when search, sort, layout, or a failed page request replaces the boundary. */
28
+ requestGeneration?: string;
29
+ }): SkuStripVirtualizerResult<TStrip>;
30
+ export {};
@@ -0,0 +1,81 @@
1
+ import { ImageComponent } from 'impact-nova-icons';
2
+ export declare const SKU_CATALOG_TOTAL = 50000;
3
+ export declare const ITEM_CATALOG_TOTAL = 50000;
4
+ export declare const SERVER_PAGE_SIZE = 200;
5
+ export declare const SKU_CARD_MINIMUM_WIDTH = 198;
6
+ export declare const SKU_CARD_COLUMN_GAP = 12;
7
+ /** Painted ChoiceCard `size="sm"` height. Keep in lockstep with `estimateSize` (no live measure). */
8
+ export declare const SKU_CARD_HEIGHT = 66;
9
+ export declare const SKU_LIST_MINIMUM_WIDTH = 155;
10
+ export declare const SKU_LIST_COLUMN_GAP = 80;
11
+ export declare const SKU_LIST_ROW_HEIGHT = 24;
12
+ export declare const SKU_LIST_ROW_GAP = 16;
13
+ export declare const SKU_STRIP_OVERSCAN = 12;
14
+ export declare const BY_ITEM_VISUAL_GRID_COLUMN_COUNT = 4;
15
+ export declare const PRODUCT_CARD_COLUMN_GAP = 16;
16
+ export declare const PRODUCT_CARD_HEIGHT = 331;
17
+ export declare const SKU_PREFIXES: readonly ["WM", "WD", "WB", "WP", "WS", "WJ", "WK"];
18
+ export declare const SKU_PRODUCT_NAMES: readonly ["Classic Crew Tee", "Relaxed Fit Tee", "Oversized Boxy Tee", "V-Neck Essential", "Ribbed Baby Tee", "Cropped Pocket Tee", "Silk Midi Dress", "Knit Cardigan", "Pleated Maxi Skirt", "Wide Leg Trousers", "Cropped Blazer", "Satin Camisole", "Wrap Blouse", "Linen Jumpsuit", "Peplum Jacket", "Ruffle Top", "Pencil Skirt", "A-Line Coat"];
19
+ export type SkuCatalogItem = {
20
+ id: string;
21
+ skuCode: string;
22
+ productName: string;
23
+ Thumbnail: ImageComponent;
24
+ };
25
+ export type RecommendationValue = "keep" | "drop" | "review";
26
+ export declare const RECOMMENDATION_OPTIONS: Array<{
27
+ value: RecommendationValue;
28
+ label: string;
29
+ }>;
30
+ export type ItemPlanComparison = {
31
+ label: string;
32
+ value: string;
33
+ direction: "positive" | "negative";
34
+ };
35
+ export type ItemCatalogRecord = {
36
+ id: string;
37
+ title: string;
38
+ styleId: string;
39
+ category: string;
40
+ buyUnits: number;
41
+ saleUnits: number;
42
+ recommendation: RecommendationValue;
43
+ ProductImage: ImageComponent | null;
44
+ unitsVersusPlan: ItemPlanComparison;
45
+ revenueVersusPlan: ItemPlanComparison;
46
+ grossMarginPercent: string;
47
+ markdownPercent: string;
48
+ weeksOnHand: string;
49
+ sellThroughVersusPlan: ItemPlanComparison;
50
+ };
51
+ export declare function getSkuCatalogItem(catalogIndex: number): SkuCatalogItem;
52
+ export declare function getSkuCatalogSearchText(catalogIndex: number): string;
53
+ export type SkuServerPage = {
54
+ startIndex: number;
55
+ catalogIndices: number[];
56
+ totalCount: number;
57
+ nextStartIndex?: number;
58
+ };
59
+ /** Reuse the filtered catalog for later pages of the same search. Does not mutate cached arrays. */
60
+ export declare function getCachedSkuMatchingIndices(searchQuery: string, sortAlphabetically: boolean): number[] | null;
61
+ export declare function fetchSkuServerPage(options: {
62
+ startIndex: number;
63
+ searchQuery: string;
64
+ sortAlphabetically: boolean;
65
+ pageSize?: number;
66
+ }): Promise<SkuServerPage>;
67
+ export declare function getItemCatalogRecord(catalogIndex: number): ItemCatalogRecord;
68
+ export declare function getStripCount(itemCount: number, columnCount: number): number;
69
+ export declare function collectStripCatalogIndices(options: {
70
+ stripIndex: number;
71
+ columnCount: number;
72
+ itemCount: number;
73
+ catalogIndices?: number[] | null;
74
+ }): number[];
75
+ export declare function filterAndSortCatalogIndices(options: {
76
+ totalCount: number;
77
+ searchQuery: string;
78
+ sortAlphabetically: boolean;
79
+ getSearchText: (catalogIndex: number) => string;
80
+ getSortKey: (catalogIndex: number) => string;
81
+ }): number[] | null;
@@ -0,0 +1 @@
1
+ export declare function ByItemVisualGrid(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { ItemCatalogRecord, RecommendationValue } from './virtualized-responsive-grid.catalog';
2
+ export declare function ProductCard(props: {
3
+ item: ItemCatalogRecord;
4
+ selected: boolean;
5
+ onToggle: () => void;
6
+ onRecommendationChange: (value: RecommendationValue) => void;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare function ClientSkuPickerGrid(): import("react/jsx-runtime").JSX.Element;
2
+ export declare function ServerSkuPickerGrid(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare function CategoryClusterHeatmapCard(): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DivergingHeatmapCard(): import("react/jsx-runtime").JSX.Element;
3
+ export declare function DivergingHeatmapResponsiveCard(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export declare function playCategoryClusterHeatmap({ canvasElement, }: {
2
+ canvasElement: HTMLElement;
3
+ }): Promise<void>;
4
+ export declare function playDivergingHeatmap({ canvasElement, }: {
5
+ canvasElement: HTMLElement;
6
+ }): Promise<void>;
7
+ export declare function playDivergingHeatmapResponsive({ canvasElement, }: {
8
+ canvasElement: HTMLElement;
9
+ }): Promise<void>;
@@ -0,0 +1,22 @@
1
+ import { default as Highcharts } from 'highcharts';
2
+ export declare const CATEGORY_CLUSTER_PRODUCT_CATEGORIES: readonly ["Knitwear", "Outerwear", "Tops", "Bottoms", "Accessories", "Denim"];
3
+ export declare const CATEGORY_CLUSTER_LABELS: readonly ["A", "B", "C", "D", "E"];
4
+ export declare const CATEGORY_CLUSTER_HEATMAP_TITLE = "Category \u00D7 Cluster \u2014 ST%";
5
+ export declare const CATEGORY_CLUSTER_INSIGHT_TEXT = "Cells are colour-coded against the 69% plan: green \u2265+10pp, amber within \u00B15pp, red \u2264\u22125pp. 10 of 30 category-cluster combinations are running red \u2014 Footwear \u00D7 Outlet is the weakest at 46% ST, the first candidate for reallocation or cluster-specific markdown";
6
+ export type CategoryClusterPerformanceTone = "positive" | "warning" | "negative";
7
+ export interface CategoryClusterHeatmapPoint {
8
+ x: number;
9
+ y: number;
10
+ value: number;
11
+ color: string;
12
+ name: string;
13
+ custom: {
14
+ category: string;
15
+ cluster: string;
16
+ };
17
+ }
18
+ export declare function buildCategoryClusterHeatmapPoints(): CategoryClusterHeatmapPoint[];
19
+ export declare function formatCategoryClusterHeatmapTooltip(formatterContext: object): string;
20
+ export declare const CATEGORY_CLUSTER_HEATMAP_SERIES: Highcharts.SeriesHeatmapOptions;
21
+ export declare const CATEGORY_CLUSTER_HEATMAP_OPTIONS: Highcharts.Options;
22
+ export declare const CATEGORY_CLUSTER_HEATMAP_SOURCE = "import {\n Chart,\n ChartContainer,\n ChartHeader,\n ChartTitle,\n ChartContent,\n} from 'impact-nova/chart';\nimport { Card } from 'impact-nova/card';\nimport { IrisMenu } from 'impact-nova/iris';\n\n<Card className=\"w-[880px] max-w-full rounded-lg p-3 shadow-elevation-card\">\n <ChartContainer>\n <ChartHeader>\n <ChartTitle>Category \u00D7 Cluster \u2014 ST%</ChartTitle>\n </ChartHeader>\n <IrisMenu appearance=\"status\">\n Cells are colour-coded against the 69% plan...\n </IrisMenu>\n <ChartContent>\n <Chart\n type=\"heatmap\"\n xAxisCategories={['A', 'B', 'C', 'D', 'E']}\n yAxisCategories={['Knitwear', 'Outerwear', 'Tops', 'Bottoms', 'Accessories', 'Denim']}\n showLegend={false}\n series={[{ type: 'heatmap', data, dataLabels: { enabled: true, format: '{point.value}%' } }]}\n options={{ yAxis: { reversed: true }, plotOptions: { heatmap: { borderRadius: 8, borderWidth: 4 } } }}\n />\n </ChartContent>\n </ChartContainer>\n</Card>";
@@ -0,0 +1,43 @@
1
+ import { default as Highcharts } from 'highcharts';
2
+ export declare const DIVERGING_HEATMAP_ROW_LABELS: readonly ["Short Sleeve", "Long Sleeve", "Sleeveless"];
3
+ export declare const DIVERGING_HEATMAP_COLUMN_LABELS: readonly ["A-Premium Urban", "B-High Street", "C-Suburban", "D-Tourist", "E-Outlet", "F-Online Only", "Org"];
4
+ /** Color-axis domain in millions. Zero is the white midpoint at 2/3 of the range. */
5
+ export declare const DIVERGING_HEATMAP_COLOR_MIN = -2;
6
+ export declare const DIVERGING_HEATMAP_COLOR_MAX = 1;
7
+ export declare const DIVERGING_HEATMAP_ZERO_STOP: number;
8
+ export declare const DIVERGING_HEATMAP_TITLE = "Sleeve Length - Top Value ST% Heatmap By Cluster";
9
+ /** Figma 2626:73835 — 216px columns, 60px cells, 4px gutters, labels under each column. */
10
+ export declare const DIVERGING_HEATMAP_COLUMN_COUNT: 7;
11
+ export declare const DIVERGING_HEATMAP_ROW_COUNT: 3;
12
+ export declare const DIVERGING_HEATMAP_COLUMN_WIDTH = 216;
13
+ export declare const DIVERGING_HEATMAP_ROW_LABEL_WIDTH = 129;
14
+ export declare const DIVERGING_HEATMAP_MARGIN_TOP = 24;
15
+ export declare const DIVERGING_HEATMAP_MARGIN_BOTTOM = 48;
16
+ export declare const DIVERGING_HEATMAP_MARGIN_RIGHT = 96;
17
+ export declare const DIVERGING_HEATMAP_PLOT_HEIGHT = 192;
18
+ export declare const DIVERGING_HEATMAP_CHART_WIDTH: number;
19
+ export declare const DIVERGING_HEATMAP_CHART_HEIGHT: number;
20
+ export interface DivergingHeatmapPoint {
21
+ x: number;
22
+ y: number;
23
+ value: number;
24
+ color: string;
25
+ name: string;
26
+ borderColor?: string;
27
+ borderWidth?: number;
28
+ custom: {
29
+ displayLabel: string;
30
+ rowLabel: string;
31
+ columnLabel: string;
32
+ };
33
+ }
34
+ export declare function buildDivergingHeatmapPoints(): DivergingHeatmapPoint[];
35
+ export declare function formatDivergingHeatmapLabel(formatterContext: object): string;
36
+ export declare function formatDivergingHeatmapTooltip(formatterContext: object): string;
37
+ export declare function formatDivergingHeatmapColorAxisLabel(tickValue: number): string;
38
+ export declare const DIVERGING_HEATMAP_SERIES: Highcharts.SeriesHeatmapOptions;
39
+ export declare const DIVERGING_HEATMAP_OPTIONS: Highcharts.Options;
40
+ /** Container-fit variant — Highcharts ellipsis instead of overlapping labels. */
41
+ export declare const DIVERGING_HEATMAP_RESPONSIVE_OPTIONS: Highcharts.Options;
42
+ export declare const DIVERGING_HEATMAP_RESPONSIVE_SOURCE = "import { Chart } from 'impact-nova/chart';\n\n<Chart\n type=\"heatmap\"\n height={320}\n showLegend\n showTooltip\n xAxisCategories={columns}\n yAxisCategories={rows}\n series={[{ type: 'heatmap', data, dataLabels: { enabled: true } }]}\n options={{\n xAxis: {\n labels: {\n rotation: 0,\n autoRotation: [0],\n overflow: 'justify',\n allowOverlap: false,\n style: { textOverflow: 'ellipsis', whiteSpace: 'nowrap' },\n },\n },\n legend: { align: 'right', verticalAlign: 'middle', layout: 'vertical' },\n }}\n/>";
43
+ export declare const DIVERGING_HEATMAP_SOURCE = "import { Chart } from 'impact-nova/chart';\n\n<Chart\n type=\"heatmap\"\n xAxisCategories={columns}\n yAxisCategories={rows}\n series={[{\n type: 'heatmap',\n data: [{ x: 0, y: 0, value: -1.8, custom: { displayLabel: '$10M' } }],\n dataLabels: {\n enabled: true,\n formatter() { return this.point.custom?.displayLabel; },\n style: { pointerEvents: 'none' },\n },\n }]}\n options={{\n colorAxis: {\n min: -2,\n max: 1,\n reversed: true,\n stops: [\n [0, 'var(--color-error-border)'],\n [2 / 3, 'var(--color-surface-elevated)'],\n [1, 'var(--color-success)'],\n ],\n },\n legend: { align: 'right', verticalAlign: 'middle', layout: 'vertical' },\n }}\n/>";