impact-nova 2.0.9 → 2.1.0-alpha.10

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 (1116) hide show
  1. package/README.md +48 -18
  2. package/dist/components/data/ag-grid-react/ag-grid-cell-components.d.ts +65 -0
  3. package/dist/components/data/ag-grid-react/ag-grid-react.types.d.ts +1 -0
  4. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +3 -0
  5. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +6 -0
  6. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +193 -0
  7. package/dist/components/data/ag-grid-react/build-ag-grid-theme.d.ts +3 -0
  8. package/dist/components/data/ag-grid-react/cell-renderers/actions-cell-renderer.d.ts +30 -0
  9. package/dist/components/data/ag-grid-react/cell-renderers/actions-cell-renderer.js +27 -0
  10. package/dist/components/data/ag-grid-react/cell-renderers/badge-cell-renderer.d.ts +44 -0
  11. package/dist/components/data/ag-grid-react/cell-renderers/badge-cell-renderer.js +23 -0
  12. package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +57 -0
  13. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +5 -0
  14. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.js +15 -0
  15. package/dist/components/data/ag-grid-react/cell-renderers/editors/date-cell-editor.js +87 -0
  16. package/dist/components/data/ag-grid-react/cell-renderers/editors/input-cell-editor.d.ts +50 -0
  17. package/dist/components/data/ag-grid-react/cell-renderers/editors/input-cell-editor.js +270 -0
  18. package/dist/components/data/ag-grid-react/cell-renderers/editors/percent-progress-cell-editor.js +135 -0
  19. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.js +68 -0
  20. package/dist/components/data/ag-grid-react/cell-renderers/editors/split-cell-editor.js +106 -0
  21. package/dist/components/data/ag-grid-react/cell-renderers/editors/split-cell-focus.d.ts +53 -0
  22. package/dist/components/data/ag-grid-react/cell-renderers/editors/split-cell-focus.js +98 -0
  23. package/dist/components/data/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +61 -0
  24. package/dist/components/data/ag-grid-react/cell-renderers/empty-cell-renderer.d.ts +9 -0
  25. package/dist/components/data/ag-grid-react/cell-renderers/empty-cell-renderer.js +5 -0
  26. package/dist/components/data/ag-grid-react/cell-renderers/link-with-batch-cell-renderer.js +148 -0
  27. package/dist/components/data/ag-grid-react/cell-renderers/percent-progress-display-renderer.d.ts +31 -0
  28. package/dist/components/data/ag-grid-react/cell-renderers/percent-progress-display-renderer.js +62 -0
  29. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +31 -0
  30. package/dist/components/data/ag-grid-react/cell-renderers/split-cell-renderer.d.ts +31 -0
  31. package/dist/components/data/ag-grid-react/cell-renderers/split-cell-renderer.js +63 -0
  32. package/dist/components/data/ag-grid-react/cell-renderers/status-badge-renderer.d.ts +35 -0
  33. package/dist/components/data/ag-grid-react/cell-renderers/switch-display-renderer.js +38 -0
  34. package/dist/components/data/ag-grid-react/cell-renderers/types.d.ts +141 -0
  35. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.d.ts +9 -0
  36. package/dist/components/data/ag-grid-react/column-indicator-sync-bus.js +15 -0
  37. package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.d.ts +24 -0
  38. package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +246 -0
  39. package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.d.ts +25 -0
  40. package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +200 -0
  41. package/dist/components/data/ag-grid-react/headers/column-menu/column-settings-menu.js +167 -0
  42. package/dist/components/data/ag-grid-react/headers/components/date-filter-picker.d.ts +38 -0
  43. package/dist/components/data/ag-grid-react/headers/components/header-info.d.ts +39 -0
  44. package/dist/components/data/ag-grid-react/headers/components/header-info.js +109 -0
  45. package/dist/components/data/ag-grid-react/headers/components/info-modal.d.ts +12 -0
  46. package/dist/components/data/ag-grid-react/headers/components/info-modal.js +20 -0
  47. package/dist/components/data/ag-grid-react/headers/components/lazy-tooltip.d.ts +10 -0
  48. package/dist/components/data/ag-grid-react/headers/components/lazy-tooltip.js +13 -0
  49. package/dist/components/data/ag-grid-react/headers/components/section-renderers.d.ts +32 -0
  50. package/dist/components/data/ag-grid-react/headers/components/section-renderers.js +78 -0
  51. package/dist/components/data/ag-grid-react/headers/context/grid-header-context.d.ts +36 -0
  52. package/dist/components/data/ag-grid-react/headers/custom-header.d.ts +3 -0
  53. package/dist/components/data/ag-grid-react/headers/custom-header.js +257 -0
  54. package/dist/components/data/ag-grid-react/headers/custom-inner-header-group.d.ts +12 -0
  55. package/dist/components/data/ag-grid-react/headers/custom-inner-header-group.js +31 -0
  56. package/dist/components/data/ag-grid-react/headers/derive-header-search-state.d.ts +24 -0
  57. package/dist/components/data/ag-grid-react/headers/header-search-active-state.d.ts +10 -0
  58. package/dist/components/data/ag-grid-react/headers/header-search-active-state.js +38 -0
  59. package/dist/components/data/ag-grid-react/headers/header-search-input.d.ts +32 -0
  60. package/dist/components/data/ag-grid-react/headers/header-search-input.js +520 -0
  61. package/dist/components/data/ag-grid-react/headers/use-header-search-editing-state.d.ts +34 -0
  62. package/dist/components/data/ag-grid-react/headers/utils/date-utils.d.ts +88 -0
  63. package/dist/components/data/ag-grid-react/headers/utils/filter-utils.d.ts +122 -0
  64. package/dist/components/data/ag-grid-react/headers/utils/filter-utils.js +475 -0
  65. package/dist/components/data/ag-grid-react/index.d.ts +6 -0
  66. package/dist/components/data/ag-grid-react/index.js +431 -0
  67. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.d.ts +7 -0
  68. package/dist/components/data/ag-grid-react/notify-column-indicator-sync.js +7 -0
  69. package/dist/components/data/ag-grid-react/process-backend-columndefs.d.ts +30 -0
  70. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.d.ts +3 -0
  71. package/dist/components/data/ag-grid-react/sync-ag-grid-theme-mode.js +10 -0
  72. package/dist/components/data/ag-grid-react/theme.d.ts +3 -0
  73. package/dist/components/data/ag-grid-react/theme.js +123 -0
  74. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.d.ts +5 -0
  75. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.js +13 -0
  76. package/dist/components/data/ag-grid-react/useGridAutoSizeStrategyOnResize.js +36 -0
  77. package/dist/components/data/ag-grid-react/value-formatter.types.d.ts +61 -0
  78. package/dist/components/data/ag-grid-react/value-formatter.types.js +19 -0
  79. package/dist/components/data/ag-grid-react/value-formatters.js +110 -0
  80. package/dist/components/data/data-table/build-column-tree-from-grid.d.ts +14 -0
  81. package/dist/components/data/data-table/build-column-tree-from-grid.js +95 -0
  82. package/dist/components/data/data-table/column-indicator.d.ts +17 -0
  83. package/dist/components/data/data-table/column-indicator.js +36 -0
  84. package/dist/components/data/data-table/data-table-column-apply.d.ts +29 -0
  85. package/dist/components/data/data-table/data-table-column-apply.js +102 -0
  86. package/dist/components/data/data-table/data-table-column-def-pin.d.ts +30 -0
  87. package/dist/components/data/data-table/data-table-column-def-pin.js +66 -0
  88. package/dist/components/data/data-table/data-table-column-list-sync.d.ts +8 -0
  89. package/dist/components/data/data-table/data-table-column-list-sync.js +15 -0
  90. package/dist/components/data/data-table/data-table-column-list.d.ts +18 -0
  91. package/dist/components/data/data-table/data-table-column-list.js +85 -0
  92. package/dist/components/data/data-table/data-table-constants.d.ts +8 -0
  93. package/dist/components/data/data-table/data-table-context.d.ts +27 -0
  94. package/dist/components/data/data-table/data-table-context.js +31 -0
  95. package/dist/components/data/data-table/data-table-format-options.js +78 -0
  96. package/dist/components/data/data-table/data-table-saved-views.d.ts +2 -0
  97. package/dist/components/data/data-table/data-table-saved-views.js +402 -0
  98. package/dist/components/data/data-table/data-table-sheet-context.d.ts +18 -0
  99. package/dist/components/data/data-table/data-table-sheet-context.js +18 -0
  100. package/dist/components/data/data-table/data-table-sheet-portal-store.d.ts +13 -0
  101. package/dist/components/data/data-table/data-table-sheet-portal-store.js +36 -0
  102. package/dist/components/data/data-table/data-table-sheet.d.ts +17 -0
  103. package/dist/components/data/data-table/data-table-sheet.js +137 -0
  104. package/dist/components/data/data-table/data-table-view-menu.d.ts +16 -0
  105. package/dist/components/data/data-table/data-table-view-menu.js +133 -0
  106. package/dist/components/data/data-table/data-table.d.ts +16 -0
  107. package/dist/components/data/data-table/data-table.js +202 -0
  108. package/dist/components/data/data-table/data-table.types.d.ts +50 -0
  109. package/dist/components/data/data-table/index.d.ts +13 -0
  110. package/dist/components/data/data-table/index.js +41 -0
  111. package/dist/components/data/data-table/indicator-legend.d.ts +19 -0
  112. package/dist/components/data/data-table/indicator-legend.js +23 -0
  113. package/dist/components/data/data-table/pin-switch.js +75 -0
  114. package/dist/components/data/data-table/use-data-table-column-list-sync.d.ts +16 -0
  115. package/dist/components/data/data-table/use-data-table-column-list-sync.js +225 -0
  116. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.d.ts +8 -0
  117. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +72 -0
  118. package/dist/components/data/expandable-list-item/expandable-list-item-context.d.ts +13 -0
  119. package/dist/components/data/expandable-list-item/expandable-list-item-context.js +25 -0
  120. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.d.ts +6 -0
  121. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +41 -0
  122. package/dist/components/data/expandable-list-item/expandable-list-item-parts.d.ts +31 -0
  123. package/dist/components/data/expandable-list-item/expandable-list-item-parts.js +233 -0
  124. package/dist/components/data/expandable-list-item/expandable-list-item-preset.d.ts +18 -0
  125. package/dist/components/data/expandable-list-item/expandable-list-item-preset.js +133 -0
  126. package/dist/components/data/expandable-list-item/expandable-list-item.d.ts +5 -0
  127. package/dist/components/data/expandable-list-item/expandable-list-item.types.d.ts +35 -0
  128. package/dist/components/data/expandable-list-item/index.d.ts +5 -0
  129. package/dist/components/data/expandable-list-item/index.js +19 -0
  130. package/dist/components/data/nested-list/components/NestedListApplyDiscardButtons.js +37 -0
  131. package/dist/components/data/nested-list/components/NestedListCategoryFilters.js +33 -0
  132. package/dist/components/data/nested-list/components/NestedListContent.d.ts +21 -0
  133. package/dist/components/data/nested-list/components/NestedListContent.js +151 -0
  134. package/dist/components/data/nested-list/components/NestedListDragOverlay.d.ts +7 -0
  135. package/dist/components/data/nested-list/components/NestedListHeader.js +89 -0
  136. package/dist/components/data/nested-list/components/SortableItem.d.ts +31 -0
  137. package/dist/components/data/nested-list/components/SortableItem.js +168 -0
  138. package/dist/components/data/nested-list/hooks/useNestedListDragDrop.d.ts +34 -0
  139. package/dist/components/data/nested-list/hooks/useNestedListDragDrop.js +247 -0
  140. package/dist/components/data/nested-list/hooks/useNestedListHandlers.d.ts +42 -0
  141. package/dist/components/data/nested-list/hooks/useNestedListHandlers.js +185 -0
  142. package/dist/components/data/nested-list/hooks/useNestedListSelectAll.d.ts +17 -0
  143. package/dist/components/data/nested-list/hooks/useNestedListSelectAll.js +62 -0
  144. package/dist/components/data/nested-list/hooks/useNestedListState.d.ts +74 -0
  145. package/dist/components/data/nested-list/index.d.ts +2 -0
  146. package/dist/components/data/nested-list/index.js +6 -0
  147. package/dist/components/data/nested-list/nested-list-change-detection.d.ts +11 -0
  148. package/dist/components/data/nested-list/nested-list-change-detection.js +13 -0
  149. package/dist/components/data/nested-list/nested-list.d.ts +3 -0
  150. package/dist/components/data/nested-list/nested-list.js +401 -0
  151. package/dist/components/data/nested-list/nested-list.types.d.ts +55 -0
  152. package/dist/components/data/nested-list/nested-list.types.js +8 -0
  153. package/dist/components/data-display/avatar/avatar.d.ts +9 -0
  154. package/dist/components/data-display/avatar/avatar.js +36 -0
  155. package/dist/components/data-display/avatar/avatar.types.d.ts +9 -0
  156. package/dist/components/data-display/avatar/avatar.variants.d.ts +4 -0
  157. package/dist/components/data-display/avatar/avatar.variants.js +24 -0
  158. package/dist/components/data-display/avatar/index.d.ts +3 -0
  159. package/dist/components/data-display/avatar/index.js +8 -0
  160. package/dist/components/data-display/badge/badge.d.ts +4 -0
  161. package/dist/components/data-display/badge/badge.js +44 -0
  162. package/dist/components/data-display/badge/badge.types.d.ts +9 -0
  163. package/dist/components/data-display/badge/badge.variants.d.ts +7 -0
  164. package/dist/components/data-display/badge/badge.variants.js +103 -0
  165. package/dist/components/data-display/badge/index.d.ts +3 -0
  166. package/dist/components/data-display/badge/index.js +6 -0
  167. package/dist/components/data-display/calendar/calendar-apply-validation.d.ts +10 -0
  168. package/dist/components/data-display/calendar/calendar-apply-validation.js +65 -0
  169. package/dist/components/data-display/calendar/calendar-caption-header.d.ts +4 -0
  170. package/dist/components/data-display/calendar/calendar-caption-header.js +28 -0
  171. package/dist/components/data-display/calendar/calendar-config.d.ts +13 -0
  172. package/dist/components/data-display/calendar/calendar-config.js +38 -0
  173. package/dist/components/data-display/calendar/calendar-day-button.d.ts +5 -0
  174. package/dist/components/data-display/calendar/calendar-day-button.js +49 -0
  175. package/dist/components/data-display/calendar/calendar-day-picker-classnames.d.ts +53 -0
  176. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +73 -0
  177. package/dist/components/data-display/calendar/calendar-day-picker-components.d.ts +25 -0
  178. package/dist/components/data-display/calendar/calendar-day-picker-components.js +148 -0
  179. package/dist/components/data-display/calendar/calendar-day-picker-view.d.ts +44 -0
  180. package/dist/components/data-display/calendar/calendar-day-picker-view.js +104 -0
  181. package/dist/components/data-display/calendar/calendar-footer-summary.d.ts +14 -0
  182. package/dist/components/data-display/calendar/calendar-footer-summary.js +69 -0
  183. package/dist/components/data-display/calendar/calendar-footer.d.ts +29 -0
  184. package/dist/components/data-display/calendar/calendar-footer.js +71 -0
  185. package/dist/components/data-display/calendar/calendar-month-panes.d.ts +26 -0
  186. package/dist/components/data-display/calendar/calendar-month-panes.js +56 -0
  187. package/dist/components/data-display/calendar/calendar-month-picker-panel.d.ts +28 -0
  188. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +109 -0
  189. package/dist/components/data-display/calendar/calendar-month-utils.d.ts +13 -0
  190. package/dist/components/data-display/calendar/calendar-month-utils.js +88 -0
  191. package/dist/components/data-display/calendar/calendar-panel-context.d.ts +3 -0
  192. package/dist/components/data-display/calendar/calendar-panel-context.js +5 -0
  193. package/dist/components/data-display/calendar/calendar-story-adapters.d.ts +12 -0
  194. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +17 -0
  195. package/dist/components/data-display/calendar/calendar-week-number-cell.js +72 -0
  196. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +24 -0
  197. package/dist/components/data-display/calendar/calendar-week-utils.js +73 -0
  198. package/dist/components/data-display/calendar/calendar.d.ts +4 -0
  199. package/dist/components/data-display/calendar/calendar.js +204 -0
  200. package/dist/components/data-display/calendar/calendar.types.d.ts +55 -0
  201. package/dist/components/data-display/calendar/index.d.ts +4 -0
  202. package/dist/components/data-display/calendar/index.js +8 -0
  203. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +74 -0
  204. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +80 -0
  205. package/dist/components/data-display/calendar/use-calendar-i18n.d.ts +7 -0
  206. package/dist/components/data-display/calendar/use-calendar-i18n.js +23 -0
  207. package/dist/components/data-display/calendar/use-calendar-state.d.ts +65 -0
  208. package/dist/components/data-display/calendar/use-calendar-state.js +197 -0
  209. package/dist/components/data-display/card/card.d.ts +8 -0
  210. package/dist/components/data-display/card/card.js +47 -0
  211. package/dist/components/data-display/card/card.types.d.ts +7 -0
  212. package/dist/components/data-display/card/index.d.ts +2 -0
  213. package/dist/components/data-display/card/index.js +9 -0
  214. package/dist/components/data-display/chart/chart-palette.d.ts +16 -0
  215. package/dist/components/data-display/chart/chart-palette.js +28 -0
  216. package/dist/components/data-display/chart/chart.d.ts +29 -0
  217. package/dist/components/data-display/chart/chart.js +205 -0
  218. package/dist/components/data-display/chart/chart.types.d.ts +33 -0
  219. package/dist/components/data-display/chart/chart.utils.d.ts +3 -0
  220. package/dist/components/data-display/chart/chart.utils.js +201 -0
  221. package/dist/components/data-display/chart/index.d.ts +4 -0
  222. package/dist/components/data-display/chart/index.js +18 -0
  223. package/dist/components/data-display/chart/resolve-highcharts-options.d.ts +3 -0
  224. package/dist/components/data-display/chart/resolve-highcharts-options.js +35 -0
  225. package/dist/components/data-display/separator/index.d.ts +2 -0
  226. package/dist/components/data-display/separator/index.js +4 -0
  227. package/dist/components/data-display/separator/separator.d.ts +3 -0
  228. package/dist/components/data-display/separator/separator.js +25 -0
  229. package/dist/components/data-display/separator/separator.types.d.ts +3 -0
  230. package/dist/components/data-display/skeleton/index.d.ts +2 -0
  231. package/dist/components/data-display/skeleton/index.js +4 -0
  232. package/dist/components/data-display/skeleton/skeleton.d.ts +3 -0
  233. package/dist/components/data-display/skeleton/skeleton.js +18 -0
  234. package/dist/components/data-display/skeleton/skeleton.types.d.ts +2 -0
  235. package/dist/components/data-display/statistics-card/index.d.ts +2 -0
  236. package/dist/components/data-display/statistics-card/index.js +14 -0
  237. package/dist/components/data-display/statistics-card/statistics-card-context.d.ts +10 -0
  238. package/dist/components/data-display/statistics-card/statistics-card-context.js +12 -0
  239. package/dist/components/data-display/statistics-card/statistics-card.color.d.ts +6 -0
  240. package/dist/components/data-display/statistics-card/statistics-card.color.js +19 -0
  241. package/dist/components/data-display/statistics-card/statistics-card.d.ts +14 -0
  242. package/dist/components/data-display/statistics-card/statistics-card.highcharts.d.ts +4 -0
  243. package/dist/components/data-display/statistics-card/statistics-card.highcharts.js +18 -0
  244. package/dist/components/data-display/statistics-card/statistics-card.hooks.d.ts +153 -0
  245. package/dist/components/data-display/statistics-card/statistics-card.hooks.js +96 -0
  246. package/dist/components/data-display/statistics-card/statistics-card.js +243 -0
  247. package/dist/components/data-display/statistics-card/statistics-card.types.d.ts +67 -0
  248. package/dist/components/feedback/alert/alert.d.ts +10 -0
  249. package/dist/components/feedback/alert/alert.js +169 -0
  250. package/dist/components/feedback/alert/alert.types.d.ts +12 -0
  251. package/dist/components/feedback/alert/alert.variants.d.ts +4 -0
  252. package/dist/components/feedback/alert/alert.variants.js +53 -0
  253. package/dist/components/feedback/alert/index.d.ts +3 -0
  254. package/dist/components/feedback/alert/index.js +9 -0
  255. package/dist/components/feedback/alert-dialog/alert-dialog.d.ts +14 -0
  256. package/dist/components/feedback/alert-dialog/alert-dialog.js +100 -0
  257. package/dist/components/feedback/alert-dialog/alert-dialog.types.d.ts +13 -0
  258. package/dist/components/feedback/dialog/dialog.d.ts +16 -0
  259. package/dist/components/feedback/dialog/dialog.js +105 -0
  260. package/dist/components/feedback/dialog/dialog.types.d.ts +15 -0
  261. package/dist/components/feedback/dialog/index.d.ts +2 -0
  262. package/dist/components/feedback/dialog/index.js +14 -0
  263. package/dist/components/feedback/drawer/drawer.d.ts +18 -0
  264. package/dist/components/feedback/drawer/drawer.js +109 -0
  265. package/dist/components/feedback/drawer/drawer.types.d.ts +11 -0
  266. package/dist/components/feedback/drawer/index.d.ts +2 -0
  267. package/dist/components/feedback/drawer/index.js +13 -0
  268. package/dist/components/feedback/dropdown-menu/dropdown-menu.d.ts +42 -0
  269. package/dist/components/feedback/dropdown-menu/dropdown-menu.js +225 -0
  270. package/dist/components/feedback/dropdown-menu/dropdown-menu.types.d.ts +32 -0
  271. package/dist/components/feedback/dropdown-menu/index.d.ts +1 -0
  272. package/dist/components/feedback/dropdown-menu/index.js +19 -0
  273. package/dist/components/feedback/hover-card/hover-card.d.ts +6 -0
  274. package/dist/components/feedback/hover-card/hover-card.js +32 -0
  275. package/dist/components/feedback/hover-card/hover-card.types.d.ts +1 -0
  276. package/dist/components/feedback/hover-card/index.d.ts +2 -0
  277. package/dist/components/feedback/hover-card/index.js +6 -0
  278. package/dist/components/feedback/popover/index.d.ts +2 -0
  279. package/dist/components/feedback/popover/index.js +12 -0
  280. package/dist/components/feedback/popover/popover.d.ts +21 -0
  281. package/dist/components/feedback/popover/popover.js +117 -0
  282. package/dist/components/feedback/popover/popover.types.d.ts +1 -0
  283. package/dist/components/feedback/sheet/index.d.ts +4 -0
  284. package/dist/components/feedback/sheet/index.js +16 -0
  285. package/dist/components/feedback/sheet/sheet-context.d.ts +9 -0
  286. package/dist/components/feedback/sheet/sheet-context.js +9 -0
  287. package/dist/components/feedback/sheet/sheet.d.ts +18 -0
  288. package/dist/components/feedback/sheet/sheet.js +170 -0
  289. package/dist/components/feedback/sheet/sheet.types.d.ts +11 -0
  290. package/dist/components/feedback/sheet/sheet.variants.d.ts +4 -0
  291. package/dist/components/feedback/sheet/sheet.variants.js +20 -0
  292. package/dist/components/feedback/toast/index.d.ts +3 -0
  293. package/dist/components/feedback/toast/index.js +14 -0
  294. package/dist/components/feedback/toast/toast.d.ts +15 -0
  295. package/dist/components/feedback/toast/toast.js +89 -0
  296. package/dist/components/feedback/toast/toast.types.d.ts +14 -0
  297. package/dist/components/feedback/toast/toast.variants.d.ts +3 -0
  298. package/dist/components/feedback/toast/toast.variants.js +24 -0
  299. package/dist/components/feedback/toast/toaster.d.ts +3 -0
  300. package/dist/components/feedback/toast/toaster.js +136 -0
  301. package/dist/components/feedback/toast/toaster.types.d.ts +4 -0
  302. package/dist/components/feedback/tooltip/button-icon-tooltip.d.ts +14 -0
  303. package/dist/components/feedback/tooltip/button-icon-tooltip.js +23 -0
  304. package/dist/components/feedback/tooltip/index.d.ts +7 -0
  305. package/dist/components/feedback/tooltip/index.js +14 -0
  306. package/dist/components/feedback/tooltip/tab-tooltip-render.d.ts +5 -0
  307. package/dist/components/feedback/tooltip/tab-tooltip-render.js +13 -0
  308. package/dist/components/feedback/tooltip/tooltip.d.ts +8 -0
  309. package/dist/components/feedback/tooltip/tooltip.js +57 -0
  310. package/dist/components/feedback/tooltip/tooltip.types.d.ts +11 -0
  311. package/dist/components/feedback/tooltip/tooltip.variants.d.ts +3 -0
  312. package/dist/components/feedback/tooltip/tooltip.variants.js +19 -0
  313. package/dist/components/flows/accordion-nested-list/accordion-nested-list.d.ts +3 -0
  314. package/dist/components/flows/accordion-nested-list/accordion-nested-list.js +115 -0
  315. package/dist/components/flows/accordion-nested-list/accordion-nested-list.types.d.ts +27 -0
  316. package/dist/components/flows/accordion-nested-list/hooks/useAccordionNestedListState.d.ts +19 -0
  317. package/dist/components/flows/accordion-nested-list/hooks/useAccordionNestedListState.js +36 -0
  318. package/dist/components/flows/accordion-nested-list/index.d.ts +2 -0
  319. package/dist/components/flows/command-palette/command-palette-context.d.ts +6 -0
  320. package/dist/components/flows/command-palette/command-palette-context.js +102 -0
  321. package/dist/components/flows/command-palette/command-palette-context.types.d.ts +51 -0
  322. package/dist/components/flows/command-palette/command-palette-react-context.d.ts +3 -0
  323. package/dist/components/flows/command-palette/command-palette-react-context.js +5 -0
  324. package/dist/components/flows/command-palette/command-palette.d.ts +28 -0
  325. package/dist/components/flows/command-palette/command-palette.js +500 -0
  326. package/dist/components/flows/command-palette/command-palette.types.d.ts +58 -0
  327. package/dist/components/flows/command-palette/index.d.ts +25 -0
  328. package/dist/components/flows/command-palette/index.js +53 -0
  329. package/dist/components/flows/command-palette/shortcut-instance-context.d.ts +5 -0
  330. package/dist/components/flows/command-palette/shortcut-instance-context.js +5 -0
  331. package/dist/components/flows/command-palette/shortcut-overlay.d.ts +19 -0
  332. package/dist/components/flows/command-palette/shortcut-overlay.js +166 -0
  333. package/dist/components/flows/command-palette/shortcut-registry.js +221 -0
  334. package/dist/components/flows/command-palette/shortcut-scope-provider.d.ts +51 -0
  335. package/dist/components/flows/command-palette/shortcut-scope-provider.js +52 -0
  336. package/dist/components/flows/command-palette/shortcut-settings.d.ts +38 -0
  337. package/dist/components/flows/command-palette/shortcut-settings.js +285 -0
  338. package/dist/components/flows/command-palette/use-browser-shortcuts.js +48 -0
  339. package/dist/components/flows/command-palette/use-command-palette.d.ts +2 -0
  340. package/dist/components/flows/command-palette/use-command-palette.js +13 -0
  341. package/dist/components/flows/command-palette/use-shortcut.js +49 -0
  342. package/dist/components/flows/command-palette/utils.d.ts +114 -0
  343. package/dist/components/flows/command-palette/utils.js +249 -0
  344. package/dist/components/flows/filter-panel/filter-panel.d.ts +8 -0
  345. package/dist/components/flows/filter-panel/filter-panel.js +216 -0
  346. package/dist/components/flows/filter-panel/filter-panel.types.d.ts +46 -0
  347. package/dist/components/flows/filter-panel/index.d.ts +2 -0
  348. package/dist/components/flows/filter-strip/filter-strip.d.ts +3 -0
  349. package/dist/components/flows/filter-strip/filter-strip.js +134 -0
  350. package/dist/components/flows/filter-strip/filter-strip.types.d.ts +47 -0
  351. package/dist/components/flows/filter-strip/filter-summary.d.ts +18 -0
  352. package/dist/components/flows/filter-strip/filter-summary.js +348 -0
  353. package/dist/components/flows/filter-strip/filter-tag-list.d.ts +24 -0
  354. package/dist/components/flows/filter-strip/filter-tag-list.js +183 -0
  355. package/dist/components/flows/filter-strip/index.d.ts +2 -0
  356. package/dist/components/flows/notification-panel/index.d.ts +5 -0
  357. package/dist/components/flows/notification-panel/index.js +21 -0
  358. package/dist/components/flows/notification-panel/notification-item.d.ts +14 -0
  359. package/dist/components/flows/notification-panel/notification-item.js +88 -0
  360. package/dist/components/flows/notification-panel/notification-list.d.ts +4 -0
  361. package/dist/components/flows/notification-panel/notification-list.js +84 -0
  362. package/dist/components/flows/notification-panel/notification-panel-context.d.ts +6 -0
  363. package/dist/components/flows/notification-panel/notification-panel-context.js +14 -0
  364. package/dist/components/flows/notification-panel/notification-panel.d.ts +6 -0
  365. package/dist/components/flows/notification-panel/notification-panel.js +120 -0
  366. package/dist/components/flows/notification-panel/notification-panel.types.d.ts +54 -0
  367. package/dist/components/flows/wizard/index.d.ts +3 -0
  368. package/dist/components/flows/wizard/index.js +18 -0
  369. package/dist/components/flows/wizard/wizard-context.d.ts +31 -0
  370. package/dist/components/flows/wizard/wizard-context.js +36 -0
  371. package/dist/components/flows/wizard/wizard.d.ts +16 -0
  372. package/dist/components/flows/wizard/wizard.js +291 -0
  373. package/dist/components/flows/wizard/wizard.types.d.ts +30 -0
  374. package/dist/components/forms/checkbox/checkbox.d.ts +6 -0
  375. package/dist/components/forms/checkbox/checkbox.js +144 -0
  376. package/dist/components/forms/checkbox/checkbox.types.d.ts +7 -0
  377. package/dist/components/forms/checkbox/index.d.ts +1 -0
  378. package/dist/components/forms/checkbox/index.js +4 -0
  379. package/dist/components/forms/choice-card/choice-card.d.ts +20 -0
  380. package/dist/components/forms/choice-card/choice-card.js +268 -0
  381. package/dist/components/forms/choice-card/choice-card.types.d.ts +31 -0
  382. package/dist/components/forms/combobox/combobox.d.ts +18 -0
  383. package/dist/components/forms/combobox/combobox.js +283 -0
  384. package/dist/components/forms/combobox/combobox.types.d.ts +39 -0
  385. package/dist/components/forms/combobox/combobox.variants.d.ts +4 -0
  386. package/dist/components/forms/combobox/combobox.variants.js +17 -0
  387. package/dist/components/forms/combobox/index.d.ts +3 -0
  388. package/dist/components/forms/combobox/index.js +6 -0
  389. package/dist/components/forms/date-picker/calendar-selection-adapters.d.ts +24 -0
  390. package/dist/components/forms/date-picker/calendar-selection-adapters.js +89 -0
  391. package/dist/components/forms/date-picker/date-picker.d.ts +3 -0
  392. package/dist/components/forms/date-picker/date-picker.js +165 -0
  393. package/dist/components/forms/date-picker/date-picker.types.d.ts +138 -0
  394. package/dist/components/forms/date-picker/date-range-picker.d.ts +3 -0
  395. package/dist/components/forms/date-picker/date-range-picker.js +238 -0
  396. package/dist/components/forms/date-picker/index.d.ts +18 -0
  397. package/dist/components/forms/date-picker/month-picker.d.ts +3 -0
  398. package/dist/components/forms/date-picker/month-picker.js +143 -0
  399. package/dist/components/forms/date-picker/month-range-picker.d.ts +3 -0
  400. package/dist/components/forms/date-picker/month-range-picker.js +271 -0
  401. package/dist/components/forms/date-picker/multi-date-picker.d.ts +3 -0
  402. package/dist/components/forms/date-picker/multi-date-picker.js +115 -0
  403. package/dist/components/forms/date-picker/multi-month-picker.d.ts +3 -0
  404. package/dist/components/forms/date-picker/multi-month-picker.js +132 -0
  405. package/dist/components/forms/date-picker/multi-week-picker.d.ts +3 -0
  406. package/dist/components/forms/date-picker/multi-week-picker.js +149 -0
  407. package/dist/components/forms/date-picker/week-picker.d.ts +3 -0
  408. package/dist/components/forms/date-picker/week-picker.js +167 -0
  409. package/dist/components/forms/date-picker/week-range-picker.d.ts +3 -0
  410. package/dist/components/forms/date-picker/week-range-picker.js +248 -0
  411. package/dist/components/forms/file-upload/file-upload.d.ts +13 -0
  412. package/dist/components/forms/file-upload/file-upload.js +414 -0
  413. package/dist/components/forms/file-upload/file-upload.types.d.ts +41 -0
  414. package/dist/components/forms/file-upload/index.d.ts +2 -0
  415. package/dist/components/forms/file-upload/index.js +13 -0
  416. package/dist/components/forms/input/index.d.ts +3 -0
  417. package/dist/components/forms/input/index.js +6 -0
  418. package/dist/components/forms/input/input.d.ts +3 -0
  419. package/dist/components/forms/input/input.js +114 -0
  420. package/dist/components/forms/input/input.types.d.ts +12 -0
  421. package/dist/components/forms/input/input.variants.d.ts +5 -0
  422. package/dist/components/forms/input/input.variants.js +29 -0
  423. package/dist/components/forms/label/index.d.ts +2 -0
  424. package/dist/components/forms/label/index.js +4 -0
  425. package/dist/components/forms/label/label.d.ts +3 -0
  426. package/dist/components/forms/label/label.js +21 -0
  427. package/dist/components/forms/label/label.types.d.ts +2 -0
  428. package/dist/components/forms/prompt/index.d.ts +3 -0
  429. package/dist/components/forms/prompt/index.js +7 -0
  430. package/dist/components/forms/prompt/prompt.d.ts +5 -0
  431. package/dist/components/forms/prompt/prompt.js +149 -0
  432. package/dist/components/forms/prompt/prompt.types.d.ts +22 -0
  433. package/dist/components/forms/prompt/prompt.variants.d.ts +3 -0
  434. package/dist/components/forms/prompt/prompt.variants.js +18 -0
  435. package/dist/components/forms/radio-group/index.d.ts +2 -0
  436. package/dist/components/forms/radio-group/index.js +5 -0
  437. package/dist/components/forms/radio-group/radio-group.d.ts +6 -0
  438. package/dist/components/forms/radio-group/radio-group.js +73 -0
  439. package/dist/components/forms/radio-group/radio-group.types.d.ts +8 -0
  440. package/dist/components/forms/select/components/LabelWithSequence.d.ts +13 -0
  441. package/dist/components/forms/select/components/LabelWithSequence.js +18 -0
  442. package/dist/components/forms/select/components/SelectAllRow.d.ts +17 -0
  443. package/dist/components/forms/select/components/SelectAllRow.js +70 -0
  444. package/dist/components/forms/select/components/SelectMenuFooter.d.ts +7 -0
  445. package/dist/components/forms/select/components/SelectMenuFooter.js +22 -0
  446. package/dist/components/forms/select/components/SelectMenuHeader.d.ts +28 -0
  447. package/dist/components/forms/select/components/SelectMenuHeader.js +96 -0
  448. package/dist/components/forms/select/components/SelectMenuListBody.d.ts +46 -0
  449. package/dist/components/forms/select/components/SelectMenuListBody.js +114 -0
  450. package/dist/components/forms/select/components/SelectMenuPanel.d.ts +11 -0
  451. package/dist/components/forms/select/components/SelectMenuPanel.js +54 -0
  452. package/dist/components/forms/select/components/SelectOptionRow.d.ts +41 -0
  453. package/dist/components/forms/select/components/SelectOptionRow.js +145 -0
  454. package/dist/components/forms/select/components/SelectTrigger.d.ts +43 -0
  455. package/dist/components/forms/select/components/SelectTrigger.js +172 -0
  456. package/dist/components/forms/select/components/SelectTriggerValue.d.ts +13 -0
  457. package/dist/components/forms/select/components/SelectTriggerValue.js +28 -0
  458. package/dist/components/forms/select/components/Submenu.d.ts +14 -0
  459. package/dist/components/forms/select/components/Submenu.js +91 -0
  460. package/dist/components/forms/select/hooks/useFlattenOptions.d.ts +24 -0
  461. package/dist/components/forms/select/hooks/useFlattenOptions.js +199 -0
  462. package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.d.ts +26 -0
  463. package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.js +49 -0
  464. package/dist/components/forms/select/hooks/useSelectMenuHeight.d.ts +2 -0
  465. package/dist/components/forms/select/hooks/useSelectMenuHeight.js +29 -0
  466. package/dist/components/forms/select/hooks/useSelectMenuScroll.d.ts +13 -0
  467. package/dist/components/forms/select/hooks/useSelectMenuScroll.js +43 -0
  468. package/dist/components/forms/select/hooks/useSelectOpenEffects.d.ts +26 -0
  469. package/dist/components/forms/select/hooks/useSelectOpenEffects.js +92 -0
  470. package/dist/components/forms/select/hooks/useSelectOutsideScrollLock.d.ts +2 -0
  471. package/dist/components/forms/select/hooks/useSelectOutsideScrollLock.js +23 -0
  472. package/dist/components/forms/select/hooks/useSelectSearchFocus.d.ts +2 -0
  473. package/dist/components/forms/select/hooks/useSelectSearchFocus.js +19 -0
  474. package/dist/components/forms/select/hooks/useSelectSelectionHandlers.d.ts +36 -0
  475. package/dist/components/forms/select/hooks/useSelectSelectionHandlers.js +248 -0
  476. package/dist/components/forms/select/hooks/useSelectValueState.d.ts +19 -0
  477. package/dist/components/forms/select/hooks/useSelectValueState.js +41 -0
  478. package/dist/components/forms/select/hooks/useSelectionModel.d.ts +6 -0
  479. package/dist/components/forms/select/hooks/useVisibleStats.d.ts +16 -0
  480. package/dist/components/forms/select/hooks/useVisibleStats.js +54 -0
  481. package/dist/components/forms/select/index.d.ts +3 -0
  482. package/dist/components/forms/select/index.js +14 -0
  483. package/dist/components/forms/select/select.constants.d.ts +2 -0
  484. package/dist/components/forms/select/select.constants.js +4 -0
  485. package/dist/components/forms/select/select.d.ts +8 -0
  486. package/dist/components/forms/select/select.js +384 -0
  487. package/dist/components/forms/select/select.types.d.ts +218 -0
  488. package/dist/components/forms/select/select.variants.d.ts +13 -0
  489. package/dist/components/forms/select/select.variants.js +76 -0
  490. package/dist/components/forms/select/utils/getSelectableOptionIndices.d.ts +21 -0
  491. package/dist/components/forms/select/utils/getSelectableOptionIndices.js +22 -0
  492. package/dist/components/forms/select/utils/hasClearableSelectValue.d.ts +2 -0
  493. package/dist/components/forms/select/utils/hasClearableSelectValue.js +11 -0
  494. package/dist/components/forms/select/utils/select.d.ts +13 -0
  495. package/dist/components/forms/select/utils/select.js +82 -0
  496. package/dist/components/forms/select/utils/selectFlatOptions.d.ts +5 -0
  497. package/dist/components/forms/select/utils/selectFlatOptions.js +25 -0
  498. package/dist/components/forms/select/utils/selectKeyboardNavigation.d.ts +21 -0
  499. package/dist/components/forms/select/utils/selectKeyboardNavigation.js +78 -0
  500. package/dist/components/forms/select/workers/flatten.worker.d.ts +9 -0
  501. package/dist/components/forms/slider/index.d.ts +2 -0
  502. package/dist/components/forms/slider/index.js +4 -0
  503. package/dist/components/forms/slider/slider.js +57 -0
  504. package/dist/components/forms/smart-input/index.d.ts +2 -0
  505. package/dist/components/forms/smart-input/index.js +4 -0
  506. package/dist/components/forms/smart-input/smart-input.d.ts +5 -0
  507. package/dist/components/forms/smart-input/smart-input.js +188 -0
  508. package/dist/components/forms/smart-input/smart-input.types.d.ts +28 -0
  509. package/dist/components/forms/switch/index.d.ts +2 -0
  510. package/dist/components/forms/switch/index.js +4 -0
  511. package/dist/components/forms/switch/switch.d.ts +8 -0
  512. package/dist/components/forms/switch/switch.js +59 -0
  513. package/dist/components/forms/switch/switch.types.d.ts +11 -0
  514. package/dist/components/forms/switch/switch.variants.d.ts +6 -0
  515. package/dist/components/forms/switch/switch.variants.js +36 -0
  516. package/dist/components/forms/textarea/index.d.ts +3 -0
  517. package/dist/components/forms/textarea/index.js +6 -0
  518. package/dist/components/forms/textarea/textarea.d.ts +5 -0
  519. package/dist/components/forms/textarea/textarea.js +98 -0
  520. package/dist/components/forms/textarea/textarea.types.d.ts +16 -0
  521. package/dist/components/forms/textarea/textarea.variants.d.ts +5 -0
  522. package/dist/components/forms/textarea/textarea.variants.js +29 -0
  523. package/dist/components/layout/breadcrumb/breadcrumb.d.ts +31 -0
  524. package/dist/components/layout/breadcrumb/breadcrumb.js +194 -0
  525. package/dist/components/layout/breadcrumb/breadcrumb.types.d.ts +15 -0
  526. package/dist/components/layout/dynamic-layout/dynamic-layout.d.ts +6 -0
  527. package/dist/components/layout/dynamic-layout/dynamic-layout.js +28 -0
  528. package/dist/components/layout/dynamic-layout/dynamic-layout.types.d.ts +6 -0
  529. package/dist/components/layout/dynamic-layout/dynamic-layout.variants.d.ts +5 -0
  530. package/dist/components/layout/dynamic-layout/dynamic-layout.variants.js +32 -0
  531. package/dist/components/layout/header/header.d.ts +13 -0
  532. package/dist/components/layout/header/header.js +161 -0
  533. package/dist/components/layout/header/header.types.d.ts +24 -0
  534. package/dist/components/layout/horizontal-scroller/horizontal-scroller.d.ts +5 -0
  535. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +185 -0
  536. package/dist/components/layout/horizontal-scroller/horizontal-scroller.types.d.ts +19 -0
  537. package/dist/components/layout/horizontal-scroller/index.d.ts +3 -0
  538. package/dist/components/layout/horizontal-scroller/index.js +5 -0
  539. package/dist/components/layout/layout.d.ts +2 -19
  540. package/dist/components/layout/layout.js +7 -8
  541. package/dist/components/layout/layout.story-fixtures-data.d.ts +14 -0
  542. package/dist/components/layout/layout.story-fixtures.d.ts +0 -13
  543. package/dist/components/layout/layout.types.d.ts +16 -0
  544. package/dist/components/layout/sidebar/sidebar-context.d.ts +13 -0
  545. package/dist/components/layout/sidebar/sidebar-context.js +13 -0
  546. package/dist/components/layout/sidebar/sidebar.d.ts +49 -0
  547. package/dist/components/layout/sidebar/sidebar.js +721 -0
  548. package/dist/components/layout/sidebar/sidebar.types.d.ts +100 -0
  549. package/dist/components/layout/sidebar/sidebar.variants.d.ts +4 -0
  550. package/dist/components/layout/sidebar/sidebar.variants.js +24 -0
  551. package/dist/components/primitives/accordion/accordion.d.ts +16 -0
  552. package/dist/components/primitives/accordion/accordion.js +117 -0
  553. package/dist/components/primitives/accordion/accordion.types.d.ts +24 -0
  554. package/dist/components/primitives/button/button.d.ts +4 -0
  555. package/dist/components/primitives/button/button.js +30 -0
  556. package/dist/components/primitives/button/button.types.d.ts +20 -0
  557. package/dist/components/primitives/button/button.variants.d.ts +9 -0
  558. package/dist/components/primitives/button-group/button-group.d.ts +5 -0
  559. package/dist/components/primitives/button-group/button-group.js +166 -0
  560. package/dist/components/primitives/button-group/button-group.types.d.ts +35 -0
  561. package/dist/components/primitives/button-group/button-group.variants.d.ts +4 -0
  562. package/dist/components/primitives/button-group/button-group.variants.js +22 -0
  563. package/dist/components/primitives/chips/chips.d.ts +3 -0
  564. package/dist/components/primitives/chips/chips.js +114 -0
  565. package/dist/components/primitives/chips/chips.types.d.ts +20 -0
  566. package/dist/components/primitives/chips/chips.variants.d.ts +6 -0
  567. package/dist/components/primitives/chips/chips.variants.js +56 -0
  568. package/dist/components/primitives/empty-container/empty-container.d.ts +8 -0
  569. package/dist/components/primitives/empty-container/empty-container.js +144 -0
  570. package/dist/components/primitives/empty-container/empty-container.types.d.ts +29 -0
  571. package/dist/components/primitives/empty-container/emptyStateIllustrations.d.ts +2 -0
  572. package/dist/components/primitives/empty-container/index.d.ts +2 -0
  573. package/dist/components/primitives/empty-container/index.js +8 -0
  574. package/dist/components/primitives/kbd/index.d.ts +3 -0
  575. package/dist/components/primitives/kbd/index.js +10 -0
  576. package/dist/components/primitives/kbd/kbd.d.ts +4 -0
  577. package/dist/components/primitives/kbd/kbd.js +32 -0
  578. package/dist/components/primitives/kbd/kbd.types.d.ts +9 -0
  579. package/dist/components/primitives/kbd/kbd.variants.d.ts +4 -0
  580. package/dist/components/primitives/kbd/kbd.variants.js +25 -0
  581. package/dist/components/primitives/kbd/keybinding-display.d.ts +15 -0
  582. package/dist/components/primitives/kbd/keybinding-display.js +60 -0
  583. package/dist/components/primitives/loader/loader.d.ts +3 -0
  584. package/dist/components/primitives/loader/loader.js +61 -0
  585. package/dist/components/primitives/loader/loader.types.d.ts +7 -0
  586. package/dist/components/primitives/loader/loader.variants.d.ts +3 -0
  587. package/dist/components/primitives/loader/loader.variants.js +20 -0
  588. package/dist/components/primitives/portal/portal.d.ts +4 -0
  589. package/dist/components/primitives/portal/portal.js +22 -0
  590. package/dist/components/primitives/portal/portal.types.d.ts +5 -0
  591. package/dist/components/primitives/progress/progress.d.ts +5 -0
  592. package/dist/components/primitives/progress/progress.js +68 -0
  593. package/dist/components/primitives/progress/progress.types.d.ts +7 -0
  594. package/dist/components/primitives/stepper/stepper.d.ts +4 -0
  595. package/dist/components/primitives/stepper/stepper.js +76 -0
  596. package/dist/components/primitives/stepper/stepper.types.d.ts +14 -0
  597. package/dist/components/primitives/stepper/stepper.variants.d.ts +10 -0
  598. package/dist/components/primitives/stepper/stepper.variants.js +82 -0
  599. package/dist/components/primitives/tabs/tabs.d.ts +22 -0
  600. package/dist/components/primitives/tabs/tabs.js +148 -0
  601. package/dist/components/primitives/tabs/tabs.types.d.ts +28 -0
  602. package/dist/components/primitives/tag/tag.d.ts +4 -0
  603. package/dist/components/primitives/tag/tag.js +84 -0
  604. package/dist/components/primitives/tag/tag.types.d.ts +13 -0
  605. package/dist/components/primitives/tag/tag.variants.d.ts +5 -0
  606. package/dist/components/primitives/tag/tag.variants.js +37 -0
  607. package/dist/components/primitives/tag-group/tag-group.d.ts +3 -0
  608. package/dist/components/primitives/tag-group/tag-group.js +39 -0
  609. package/dist/components/primitives/tag-group/tag-group.types.d.ts +18 -0
  610. package/dist/components/primitives/tag-group/tag-group.variants.d.ts +5 -0
  611. package/dist/components/primitives/tag-group/tag-group.variants.js +27 -0
  612. package/dist/components/ui/local-raster-icons/assets/excel-error-icon.webp.js +4 -0
  613. package/dist/components/ui/local-raster-icons/assets/file-upload-error.webp.js +4 -0
  614. package/dist/components/ui/local-raster-icons/rasterIcons.d.ts +2 -0
  615. package/dist/components/ui/local-raster-icons/rasterIcons.js +32 -22
  616. package/dist/components/ui/show.d.ts +10 -0
  617. package/dist/components/ui/show.js +7 -0
  618. package/dist/components/ui/show.types.d.ts +5 -0
  619. package/dist/form/form-field.d.ts +2 -0
  620. package/dist/form/form-field.types.d.ts +11 -0
  621. package/dist/form/index.d.ts +4 -0
  622. package/dist/form/index.js +8 -0
  623. package/dist/hooks/use-toast.d.ts +6 -7
  624. package/dist/i18n/defaultMessages.d.ts +22 -0
  625. package/dist/i18n/defaultMessages.js +39 -22
  626. package/dist/i18n/i18n-utils.d.ts +4 -0
  627. package/dist/i18n/i18n-utils.js +41 -0
  628. package/dist/i18n/i18n.types.d.ts +16 -0
  629. package/dist/i18n/impact-nova-i18n-context.d.ts +1 -0
  630. package/dist/i18n/impact-nova-i18n-context.js +36 -0
  631. package/dist/i18n/impact-nova-i18n-context.types.d.ts +1 -0
  632. package/dist/i18n/impact-nova-i18n-defaults.d.ts +2 -0
  633. package/dist/i18n/impact-nova-i18n-defaults.js +13 -0
  634. package/dist/i18n/impact-nova-i18n-react-context.d.ts +3 -0
  635. package/dist/i18n/impact-nova-i18n-react-context.js +5 -0
  636. package/dist/i18n/index.d.ts +4 -2
  637. package/dist/i18n/index.js +19 -0
  638. package/dist/i18n/locales/de.js +18 -1
  639. package/dist/i18n/locales/es.js +18 -1
  640. package/dist/i18n/locales/hi.js +18 -1
  641. package/dist/i18n/locales/kn.js +18 -1
  642. package/dist/i18n/use-impact-nova-i18n.d.ts +2 -0
  643. package/dist/i18n/use-impact-nova-i18n.js +9 -0
  644. package/dist/impact-nova-base.scss +25 -7
  645. package/dist/impact-nova-components.css +295 -109
  646. package/dist/impact-nova-tokens.scss +370 -95
  647. package/dist/impact-nova.css +1 -1
  648. package/dist/index.d.ts +113 -60
  649. package/dist/index.js +573 -482
  650. package/dist/lib/compose-refs.d.ts +8 -0
  651. package/dist/lib/compose-refs.js +14 -0
  652. package/dist/lib/date-bounds-matcher.d.ts +3 -0
  653. package/dist/lib/date-bounds-matcher.js +8 -0
  654. package/dist/lib/fiscal-calendar.d.ts +1 -1
  655. package/dist/lib/primitives/controllable.d.ts +7 -0
  656. package/dist/lib/primitives/create-component.d.ts +9 -0
  657. package/dist/lib/primitives/create-component.js +10 -0
  658. package/dist/lib/primitives/create-compound.d.ts +19 -0
  659. package/dist/lib/primitives/create-compound.js +36 -0
  660. package/dist/lib/primitives/field.d.ts +36 -0
  661. package/dist/lib/primitives/field.js +122 -0
  662. package/dist/lib/primitives/field.types.d.ts +34 -0
  663. package/dist/lib/primitives/field.types.js +11 -0
  664. package/dist/lib/primitives/index.d.ts +9 -0
  665. package/dist/lib/primitives/info-slot.types.d.ts +3 -0
  666. package/dist/lib/primitives/slot.d.ts +12 -0
  667. package/dist/lib/primitives/use-field-chrome.d.ts +30 -0
  668. package/dist/lib/primitives/use-field-chrome.js +121 -0
  669. package/dist/lib/primitives/variants.d.ts +16 -0
  670. package/dist/lib/resolve-design-token-color.d.ts +5 -0
  671. package/dist/lib/resolve-design-token-color.js +12 -0
  672. package/dist/lib/virtualized/index.d.ts +3 -0
  673. package/dist/lib/virtualized/index.js +33 -16
  674. package/dist/lib/virtualized/useVirtualizedList.d.ts +2 -1
  675. package/dist/lib/virtualized/useVirtualizedList.js +113 -107
  676. package/dist/lib/virtualized/useVirtualizedRows.d.ts +1 -1
  677. package/dist/lib/virtualized/virtualized-list-context.d.ts +12 -0
  678. package/dist/lib/virtualized/virtualized-list-context.js +21 -0
  679. package/dist/lib/virtualized/virtualized-list-parts.d.ts +50 -0
  680. package/dist/lib/virtualized/virtualized-list-parts.js +175 -0
  681. package/dist/lib/virtualized/virtualized-list-utils.d.ts +5 -0
  682. package/dist/lib/virtualized/virtualized-list-utils.js +6 -0
  683. package/dist/lib/virtualized/virtualized.types.d.ts +10 -0
  684. package/dist/llms/rules/accessibility.js +1 -1
  685. package/dist/llms/rules/ag-grid.js +1 -1
  686. package/dist/llms/rules/best-practices.js +1 -1
  687. package/dist/llms/rules/installation.js +1 -1
  688. package/dist/llms/rules/migration.js +1 -1
  689. package/dist/llms/rules/real-world-patterns.js +1 -1
  690. package/dist/llms/rules/requirements.js +1 -1
  691. package/dist/llms/rules/troubleshooting.js +1 -1
  692. package/dist/providers/app-providers.d.ts +13 -0
  693. package/dist/providers/app-providers.js +16 -0
  694. package/dist/tailwind.config.js +320 -0
  695. package/dist/theme/tailwind-colors.js +201 -0
  696. package/dist/theme/tokens/chart-series-palette.json.d.ts +53 -0
  697. package/dist/theme/tokens/chart-series-palette.json.js +7 -0
  698. package/package.json +243 -404
  699. package/tailwind.config.d.ts +3 -0
  700. package/dist/components/ui/accordion-nested-list/accordion-nested-list.d.ts +0 -3
  701. package/dist/components/ui/accordion-nested-list/accordion-nested-list.js +0 -105
  702. package/dist/components/ui/accordion-nested-list/hooks/useAccordionNestedListState.d.ts +0 -19
  703. package/dist/components/ui/accordion-nested-list/hooks/useAccordionNestedListState.js +0 -41
  704. package/dist/components/ui/accordion-nested-list/index.d.ts +0 -2
  705. package/dist/components/ui/accordion.d.ts +0 -30
  706. package/dist/components/ui/accordion.js +0 -113
  707. package/dist/components/ui/ag-grid-react/cell-renderers/actions-cell-renderer.d.ts +0 -30
  708. package/dist/components/ui/ag-grid-react/cell-renderers/actions-cell-renderer.js +0 -27
  709. package/dist/components/ui/ag-grid-react/cell-renderers/badge-cell-renderer.d.ts +0 -44
  710. package/dist/components/ui/ag-grid-react/cell-renderers/badge-cell-renderer.js +0 -23
  711. package/dist/components/ui/ag-grid-react/cell-renderers/date-display-renderer.js +0 -57
  712. package/dist/components/ui/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +0 -6
  713. package/dist/components/ui/ag-grid-react/cell-renderers/default-text-cell-renderer.js +0 -9
  714. package/dist/components/ui/ag-grid-react/cell-renderers/editors/date-cell-editor.js +0 -85
  715. package/dist/components/ui/ag-grid-react/cell-renderers/editors/input-cell-editor.d.ts +0 -45
  716. package/dist/components/ui/ag-grid-react/cell-renderers/editors/input-cell-editor.js +0 -270
  717. package/dist/components/ui/ag-grid-react/cell-renderers/editors/percent-progress-cell-editor.js +0 -135
  718. package/dist/components/ui/ag-grid-react/cell-renderers/editors/select-cell-editor.js +0 -67
  719. package/dist/components/ui/ag-grid-react/cell-renderers/editors/split-cell-editor.js +0 -115
  720. package/dist/components/ui/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +0 -61
  721. package/dist/components/ui/ag-grid-react/cell-renderers/empty-cell-renderer.d.ts +0 -10
  722. package/dist/components/ui/ag-grid-react/cell-renderers/empty-cell-renderer.js +0 -5
  723. package/dist/components/ui/ag-grid-react/cell-renderers/link-with-batch-cell-renderer.js +0 -149
  724. package/dist/components/ui/ag-grid-react/cell-renderers/percent-progress-display-renderer.d.ts +0 -31
  725. package/dist/components/ui/ag-grid-react/cell-renderers/percent-progress-display-renderer.js +0 -62
  726. package/dist/components/ui/ag-grid-react/cell-renderers/select-display-renderer.js +0 -31
  727. package/dist/components/ui/ag-grid-react/cell-renderers/split-cell-renderer.d.ts +0 -31
  728. package/dist/components/ui/ag-grid-react/cell-renderers/split-cell-renderer.js +0 -61
  729. package/dist/components/ui/ag-grid-react/cell-renderers/status-badge-renderer.d.ts +0 -35
  730. package/dist/components/ui/ag-grid-react/cell-renderers/switch-display-renderer.js +0 -38
  731. package/dist/components/ui/ag-grid-react/cell-renderers/types.d.ts +0 -141
  732. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.d.ts +0 -24
  733. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +0 -243
  734. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.d.ts +0 -26
  735. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.js +0 -200
  736. package/dist/components/ui/ag-grid-react/headers/column-menu/column-settings-menu.js +0 -160
  737. package/dist/components/ui/ag-grid-react/headers/components/date-filter-picker.d.ts +0 -39
  738. package/dist/components/ui/ag-grid-react/headers/components/header-info.d.ts +0 -39
  739. package/dist/components/ui/ag-grid-react/headers/components/header-info.js +0 -105
  740. package/dist/components/ui/ag-grid-react/headers/components/info-modal.d.ts +0 -12
  741. package/dist/components/ui/ag-grid-react/headers/components/info-modal.js +0 -20
  742. package/dist/components/ui/ag-grid-react/headers/components/lazy-tooltip.d.ts +0 -16
  743. package/dist/components/ui/ag-grid-react/headers/components/lazy-tooltip.js +0 -13
  744. package/dist/components/ui/ag-grid-react/headers/components/section-renderers.d.ts +0 -32
  745. package/dist/components/ui/ag-grid-react/headers/components/section-renderers.js +0 -78
  746. package/dist/components/ui/ag-grid-react/headers/components/truncated-text.d.ts +0 -15
  747. package/dist/components/ui/ag-grid-react/headers/components/truncated-text.js +0 -27
  748. package/dist/components/ui/ag-grid-react/headers/context/grid-header-context.d.ts +0 -36
  749. package/dist/components/ui/ag-grid-react/headers/custom-header-group.d.ts +0 -11
  750. package/dist/components/ui/ag-grid-react/headers/custom-header-group.js +0 -47
  751. package/dist/components/ui/ag-grid-react/headers/custom-header.d.ts +0 -4
  752. package/dist/components/ui/ag-grid-react/headers/custom-header.js +0 -255
  753. package/dist/components/ui/ag-grid-react/headers/derive-header-search-state.d.ts +0 -24
  754. package/dist/components/ui/ag-grid-react/headers/header-search-input.d.ts +0 -33
  755. package/dist/components/ui/ag-grid-react/headers/header-search-input.js +0 -524
  756. package/dist/components/ui/ag-grid-react/headers/use-header-search-editing-state.d.ts +0 -34
  757. package/dist/components/ui/ag-grid-react/headers/utils/date-utils.d.ts +0 -88
  758. package/dist/components/ui/ag-grid-react/headers/utils/filter-utils.d.ts +0 -122
  759. package/dist/components/ui/ag-grid-react/headers/utils/filter-utils.js +0 -475
  760. package/dist/components/ui/ag-grid-react/index.d.ts +0 -7
  761. package/dist/components/ui/ag-grid-react/index.js +0 -409
  762. package/dist/components/ui/ag-grid-react/process-backend-columndefs.d.ts +0 -31
  763. package/dist/components/ui/ag-grid-react/theme.d.ts +0 -2
  764. package/dist/components/ui/ag-grid-react/theme.js +0 -49
  765. package/dist/components/ui/ag-grid-react/useGridAutoSizeStrategyOnResize.js +0 -33
  766. package/dist/components/ui/ag-grid-react/value-formatters.js +0 -103
  767. package/dist/components/ui/alert-dialog.d.ts +0 -20
  768. package/dist/components/ui/alert-dialog.js +0 -122
  769. package/dist/components/ui/alert.d.ts +0 -31
  770. package/dist/components/ui/alert.js +0 -223
  771. package/dist/components/ui/avatar.d.ts +0 -14
  772. package/dist/components/ui/avatar.js +0 -63
  773. package/dist/components/ui/badge.d.ts +0 -16
  774. package/dist/components/ui/badge.js +0 -140
  775. package/dist/components/ui/breadcrumb.d.ts +0 -33
  776. package/dist/components/ui/breadcrumb.js +0 -192
  777. package/dist/components/ui/button-group.d.ts +0 -31
  778. package/dist/components/ui/button-group.js +0 -180
  779. package/dist/components/ui/button-variants.d.ts +0 -9
  780. package/dist/components/ui/button.d.ts +0 -28
  781. package/dist/components/ui/button.js +0 -34
  782. package/dist/components/ui/calendar.d.ts +0 -60
  783. package/dist/components/ui/calendar.js +0 -898
  784. package/dist/components/ui/card.d.ts +0 -8
  785. package/dist/components/ui/card.js +0 -62
  786. package/dist/components/ui/chart/chart.d.ts +0 -29
  787. package/dist/components/ui/chart/chart.js +0 -198
  788. package/dist/components/ui/chart/chart.utils.d.ts +0 -3
  789. package/dist/components/ui/chart/chart.utils.js +0 -192
  790. package/dist/components/ui/chart/index.d.ts +0 -3
  791. package/dist/components/ui/chart/index.js +0 -12
  792. package/dist/components/ui/checkbox.d.ts +0 -11
  793. package/dist/components/ui/checkbox.js +0 -84
  794. package/dist/components/ui/chips.d.ts +0 -30
  795. package/dist/components/ui/chips.js +0 -170
  796. package/dist/components/ui/choice-card/choice-card.d.ts +0 -47
  797. package/dist/components/ui/choice-card/choice-card.js +0 -278
  798. package/dist/components/ui/combobox.d.ts +0 -67
  799. package/dist/components/ui/combobox.js +0 -361
  800. package/dist/components/ui/command-palette/command-palette-context.d.ts +0 -54
  801. package/dist/components/ui/command-palette/command-palette-context.js +0 -111
  802. package/dist/components/ui/command-palette/command-palette.d.ts +0 -86
  803. package/dist/components/ui/command-palette/command-palette.js +0 -504
  804. package/dist/components/ui/command-palette/index.d.ts +0 -24
  805. package/dist/components/ui/command-palette/index.js +0 -51
  806. package/dist/components/ui/command-palette/kbd.d.ts +0 -28
  807. package/dist/components/ui/command-palette/kbd.js +0 -52
  808. package/dist/components/ui/command-palette/shortcut-overlay.d.ts +0 -19
  809. package/dist/components/ui/command-palette/shortcut-overlay.js +0 -172
  810. package/dist/components/ui/command-palette/shortcut-registry.js +0 -220
  811. package/dist/components/ui/command-palette/shortcut-scope-provider.d.ts +0 -55
  812. package/dist/components/ui/command-palette/shortcut-scope-provider.js +0 -55
  813. package/dist/components/ui/command-palette/shortcut-settings.d.ts +0 -38
  814. package/dist/components/ui/command-palette/shortcut-settings.js +0 -285
  815. package/dist/components/ui/command-palette/use-browser-shortcuts.js +0 -48
  816. package/dist/components/ui/command-palette/use-shortcut.js +0 -49
  817. package/dist/components/ui/command-palette/utils.d.ts +0 -141
  818. package/dist/components/ui/command-palette/utils.js +0 -298
  819. package/dist/components/ui/data-table/column-indicator.d.ts +0 -17
  820. package/dist/components/ui/data-table/column-indicator.js +0 -30
  821. package/dist/components/ui/data-table/data-table-column-list.d.ts +0 -8
  822. package/dist/components/ui/data-table/data-table-column-list.js +0 -288
  823. package/dist/components/ui/data-table/data-table-constants.d.ts +0 -9
  824. package/dist/components/ui/data-table/data-table-context.d.ts +0 -30
  825. package/dist/components/ui/data-table/data-table-context.js +0 -20
  826. package/dist/components/ui/data-table/data-table-format-options.js +0 -79
  827. package/dist/components/ui/data-table/data-table-saved-views.d.ts +0 -2
  828. package/dist/components/ui/data-table/data-table-saved-views.js +0 -403
  829. package/dist/components/ui/data-table/data-table-sheet.d.ts +0 -36
  830. package/dist/components/ui/data-table/data-table-sheet.js +0 -140
  831. package/dist/components/ui/data-table/data-table-view-menu.d.ts +0 -16
  832. package/dist/components/ui/data-table/data-table-view-menu.js +0 -132
  833. package/dist/components/ui/data-table/data-table.d.ts +0 -22
  834. package/dist/components/ui/data-table/data-table.js +0 -170
  835. package/dist/components/ui/data-table/index.d.ts +0 -12
  836. package/dist/components/ui/data-table/index.js +0 -39
  837. package/dist/components/ui/data-table/indicator-legend.d.ts +0 -8
  838. package/dist/components/ui/data-table/indicator-legend.js +0 -20
  839. package/dist/components/ui/data-table/pin-switch.js +0 -75
  840. package/dist/components/ui/data-table/stories/fakeServer.d.ts +0 -14
  841. package/dist/components/ui/data-table/stories/interfaces.d.ts +0 -15
  842. package/dist/components/ui/date-picker/date-picker.d.ts +0 -3
  843. package/dist/components/ui/date-picker/date-picker.js +0 -146
  844. package/dist/components/ui/date-picker/date-range-picker.d.ts +0 -3
  845. package/dist/components/ui/date-picker/date-range-picker.js +0 -297
  846. package/dist/components/ui/date-picker/index.d.ts +0 -18
  847. package/dist/components/ui/date-picker/month-picker.d.ts +0 -3
  848. package/dist/components/ui/date-picker/month-picker.js +0 -139
  849. package/dist/components/ui/date-picker/month-range-picker.d.ts +0 -3
  850. package/dist/components/ui/date-picker/month-range-picker.js +0 -327
  851. package/dist/components/ui/date-picker/multi-date-picker.d.ts +0 -3
  852. package/dist/components/ui/date-picker/multi-date-picker.js +0 -111
  853. package/dist/components/ui/date-picker/multi-month-picker.d.ts +0 -3
  854. package/dist/components/ui/date-picker/multi-month-picker.js +0 -128
  855. package/dist/components/ui/date-picker/multi-week-picker.d.ts +0 -3
  856. package/dist/components/ui/date-picker/multi-week-picker.js +0 -145
  857. package/dist/components/ui/date-picker/week-picker.d.ts +0 -3
  858. package/dist/components/ui/date-picker/week-picker.js +0 -163
  859. package/dist/components/ui/date-picker/week-range-picker.d.ts +0 -3
  860. package/dist/components/ui/date-picker/week-range-picker.js +0 -306
  861. package/dist/components/ui/dialog.d.ts +0 -25
  862. package/dist/components/ui/dialog.js +0 -130
  863. package/dist/components/ui/drawer.d.ts +0 -24
  864. package/dist/components/ui/drawer.js +0 -121
  865. package/dist/components/ui/dropdown-menu.d.ts +0 -42
  866. package/dist/components/ui/dropdown-menu.js +0 -201
  867. package/dist/components/ui/dynamic-layout.d.ts +0 -12
  868. package/dist/components/ui/dynamic-layout.js +0 -53
  869. package/dist/components/ui/empty-container.d.ts +0 -8
  870. package/dist/components/ui/empty-container.js +0 -144
  871. package/dist/components/ui/expandable-sku/expandable-sku.d.ts +0 -38
  872. package/dist/components/ui/expandable-sku/expandable-sku.js +0 -245
  873. package/dist/components/ui/expandable-sku/expandable-sku.types.d.ts +0 -35
  874. package/dist/components/ui/expandable-sku/index.d.ts +0 -2
  875. package/dist/components/ui/expandable-sku/index.js +0 -4
  876. package/dist/components/ui/file-upload.d.ts +0 -13
  877. package/dist/components/ui/file-upload.js +0 -298
  878. package/dist/components/ui/filter-panel/filter-panel.d.ts +0 -7
  879. package/dist/components/ui/filter-panel/filter-panel.js +0 -221
  880. package/dist/components/ui/filter-panel/index.d.ts +0 -2
  881. package/dist/components/ui/filter-strip/filter-strip.d.ts +0 -3
  882. package/dist/components/ui/filter-strip/filter-strip.js +0 -127
  883. package/dist/components/ui/filter-strip/filter-summary.d.ts +0 -18
  884. package/dist/components/ui/filter-strip/filter-summary.js +0 -348
  885. package/dist/components/ui/filter-strip/filter-tag-list.d.ts +0 -24
  886. package/dist/components/ui/filter-strip/filter-tag-list.js +0 -183
  887. package/dist/components/ui/filter-strip/index.d.ts +0 -2
  888. package/dist/components/ui/header.d.ts +0 -25
  889. package/dist/components/ui/header.js +0 -156
  890. package/dist/components/ui/horizontal-scroller/horizontal-scroller.d.ts +0 -4
  891. package/dist/components/ui/horizontal-scroller/horizontal-scroller.js +0 -185
  892. package/dist/components/ui/horizontal-scroller/index.d.ts +0 -3
  893. package/dist/components/ui/horizontal-scroller/index.js +0 -5
  894. package/dist/components/ui/hover-card.d.ts +0 -6
  895. package/dist/components/ui/hover-card.js +0 -24
  896. package/dist/components/ui/input.d.ts +0 -20
  897. package/dist/components/ui/input.js +0 -191
  898. package/dist/components/ui/label.d.ts +0 -3
  899. package/dist/components/ui/label.js +0 -18
  900. package/dist/components/ui/loader.d.ts +0 -12
  901. package/dist/components/ui/loader.js +0 -83
  902. package/dist/components/ui/nested-list/components/NestedListApplyDiscardButtons.js +0 -37
  903. package/dist/components/ui/nested-list/components/NestedListCategoryFilters.js +0 -33
  904. package/dist/components/ui/nested-list/components/NestedListContent.d.ts +0 -21
  905. package/dist/components/ui/nested-list/components/NestedListContent.js +0 -145
  906. package/dist/components/ui/nested-list/components/NestedListDragOverlay.d.ts +0 -7
  907. package/dist/components/ui/nested-list/components/NestedListHeader.js +0 -89
  908. package/dist/components/ui/nested-list/components/SortableItem.d.ts +0 -29
  909. package/dist/components/ui/nested-list/components/SortableItem.js +0 -170
  910. package/dist/components/ui/nested-list/hooks/useNestedListDragDrop.d.ts +0 -28
  911. package/dist/components/ui/nested-list/hooks/useNestedListDragDrop.js +0 -253
  912. package/dist/components/ui/nested-list/hooks/useNestedListHandlers.d.ts +0 -42
  913. package/dist/components/ui/nested-list/hooks/useNestedListHandlers.js +0 -185
  914. package/dist/components/ui/nested-list/hooks/useNestedListSelectAll.d.ts +0 -16
  915. package/dist/components/ui/nested-list/hooks/useNestedListSelectAll.js +0 -62
  916. package/dist/components/ui/nested-list/hooks/useNestedListState.d.ts +0 -74
  917. package/dist/components/ui/nested-list/index.d.ts +0 -2
  918. package/dist/components/ui/nested-list/index.js +0 -6
  919. package/dist/components/ui/nested-list/nested-list.d.ts +0 -3
  920. package/dist/components/ui/nested-list/nested-list.js +0 -391
  921. package/dist/components/ui/notification-panel/index.d.ts +0 -3
  922. package/dist/components/ui/notification-panel/index.js +0 -20
  923. package/dist/components/ui/notification-panel/notification-item.d.ts +0 -14
  924. package/dist/components/ui/notification-panel/notification-item.js +0 -88
  925. package/dist/components/ui/notification-panel/notification-list.d.ts +0 -4
  926. package/dist/components/ui/notification-panel/notification-list.js +0 -82
  927. package/dist/components/ui/notification-panel/notification-panel.d.ts +0 -9
  928. package/dist/components/ui/notification-panel/notification-panel.js +0 -127
  929. package/dist/components/ui/popover.d.ts +0 -24
  930. package/dist/components/ui/popover.js +0 -96
  931. package/dist/components/ui/portal.d.ts +0 -7
  932. package/dist/components/ui/portal.js +0 -18
  933. package/dist/components/ui/progress.d.ts +0 -9
  934. package/dist/components/ui/progress.js +0 -63
  935. package/dist/components/ui/prompt.d.ts +0 -27
  936. package/dist/components/ui/prompt.js +0 -165
  937. package/dist/components/ui/radio-group.d.ts +0 -14
  938. package/dist/components/ui/radio-group.js +0 -135
  939. package/dist/components/ui/select/components/LabelWithSequence.d.ts +0 -13
  940. package/dist/components/ui/select/components/LabelWithSequence.js +0 -18
  941. package/dist/components/ui/select/components/Submenu.d.ts +0 -14
  942. package/dist/components/ui/select/components/Submenu.js +0 -91
  943. package/dist/components/ui/select/hooks/useFlattenOptions.d.ts +0 -24
  944. package/dist/components/ui/select/hooks/useFlattenOptions.js +0 -233
  945. package/dist/components/ui/select/hooks/useSelectionModel.d.ts +0 -6
  946. package/dist/components/ui/select/hooks/useVisibleStats.d.ts +0 -16
  947. package/dist/components/ui/select/hooks/useVisibleStats.js +0 -54
  948. package/dist/components/ui/select/index.d.ts +0 -3
  949. package/dist/components/ui/select/index.js +0 -13
  950. package/dist/components/ui/select/select.d.ts +0 -6
  951. package/dist/components/ui/select/select.js +0 -1021
  952. package/dist/components/ui/select/utils/select.d.ts +0 -12
  953. package/dist/components/ui/select/utils/select.js +0 -72
  954. package/dist/components/ui/select/workers/flatten.worker.d.ts +0 -9
  955. package/dist/components/ui/separator.d.ts +0 -4
  956. package/dist/components/ui/separator.js +0 -24
  957. package/dist/components/ui/sheet.d.ts +0 -31
  958. package/dist/components/ui/sheet.js +0 -195
  959. package/dist/components/ui/sidebar.d.ts +0 -99
  960. package/dist/components/ui/sidebar.js +0 -740
  961. package/dist/components/ui/skeleton.d.ts +0 -3
  962. package/dist/components/ui/skeleton.js +0 -18
  963. package/dist/components/ui/slider.js +0 -50
  964. package/dist/components/ui/smart-input.d.ts +0 -25
  965. package/dist/components/ui/smart-input.js +0 -183
  966. package/dist/components/ui/statistics-card.d.ts +0 -80
  967. package/dist/components/ui/statistics-card.hooks.d.ts +0 -152
  968. package/dist/components/ui/statistics-card.hooks.js +0 -102
  969. package/dist/components/ui/statistics-card.js +0 -260
  970. package/dist/components/ui/stepper.d.ts +0 -22
  971. package/dist/components/ui/stepper.js +0 -153
  972. package/dist/components/ui/stories/ag-grid-cell-components.d.ts +0 -65
  973. package/dist/components/ui/switch.d.ts +0 -4
  974. package/dist/components/ui/switch.js +0 -29
  975. package/dist/components/ui/tabs.d.ts +0 -26
  976. package/dist/components/ui/tabs.js +0 -138
  977. package/dist/components/ui/tag-group.d.ts +0 -24
  978. package/dist/components/ui/tag-group.js +0 -61
  979. package/dist/components/ui/tag.d.ts +0 -19
  980. package/dist/components/ui/tag.js +0 -104
  981. package/dist/components/ui/textarea.d.ts +0 -19
  982. package/dist/components/ui/textarea.js +0 -165
  983. package/dist/components/ui/toast.d.ts +0 -17
  984. package/dist/components/ui/toast.js +0 -117
  985. package/dist/components/ui/toaster.d.ts +0 -6
  986. package/dist/components/ui/toaster.js +0 -135
  987. package/dist/components/ui/tooltip.d.ts +0 -14
  988. package/dist/components/ui/tooltip.js +0 -62
  989. package/dist/components/ui/types/accordion-nested-list.types.d.ts +0 -112
  990. package/dist/components/ui/types/accordion.types.d.ts +0 -1
  991. package/dist/components/ui/types/ag-grid.types.d.ts +0 -188
  992. package/dist/components/ui/types/alert.types.d.ts +0 -5
  993. package/dist/components/ui/types/avatar.types.d.ts +0 -1
  994. package/dist/components/ui/types/badge.types.d.ts +0 -1
  995. package/dist/components/ui/types/breadcrumb.types.d.ts +0 -1
  996. package/dist/components/ui/types/button-group.types.d.ts +0 -1
  997. package/dist/components/ui/types/button.types.d.ts +0 -1
  998. package/dist/components/ui/types/card.types.d.ts +0 -1
  999. package/dist/components/ui/types/chart.types.d.ts +0 -24
  1000. package/dist/components/ui/types/checkbox.types.d.ts +0 -1
  1001. package/dist/components/ui/types/chips.types.d.ts +0 -1
  1002. package/dist/components/ui/types/date-picker.types.d.ts +0 -138
  1003. package/dist/components/ui/types/dialog.types.d.ts +0 -8
  1004. package/dist/components/ui/types/dynamic-layout.types.d.ts +0 -1
  1005. package/dist/components/ui/types/empty-container.types.d.ts +0 -27
  1006. package/dist/components/ui/types/file-upload.types.d.ts +0 -25
  1007. package/dist/components/ui/types/filter-panel.types.d.ts +0 -48
  1008. package/dist/components/ui/types/filter-strip.types.d.ts +0 -118
  1009. package/dist/components/ui/types/horizontal-scroller.types.d.ts +0 -49
  1010. package/dist/components/ui/types/hover-card.types.d.ts +0 -1
  1011. package/dist/components/ui/types/input.types.d.ts +0 -1
  1012. package/dist/components/ui/types/loader.types.d.ts +0 -1
  1013. package/dist/components/ui/types/nested-list.types.d.ts +0 -79
  1014. package/dist/components/ui/types/nested-list.types.js +0 -24
  1015. package/dist/components/ui/types/notification-panel.types.d.ts +0 -63
  1016. package/dist/components/ui/types/popover.types.d.ts +0 -1
  1017. package/dist/components/ui/types/progress-bar.types.d.ts +0 -2
  1018. package/dist/components/ui/types/prompt.types.d.ts +0 -1
  1019. package/dist/components/ui/types/radio-button-group.types.d.ts +0 -1
  1020. package/dist/components/ui/types/select.types.d.ts +0 -347
  1021. package/dist/components/ui/types/sidebar.types.d.ts +0 -1
  1022. package/dist/components/ui/types/statistics-card.types.d.ts +0 -1
  1023. package/dist/components/ui/types/stepper.types.d.ts +0 -1
  1024. package/dist/components/ui/types/switch.types.d.ts +0 -1
  1025. package/dist/components/ui/types/tabs.types.d.ts +0 -1
  1026. package/dist/components/ui/types/tag-group.types.d.ts +0 -1
  1027. package/dist/components/ui/types/tag.types.d.ts +0 -1
  1028. package/dist/components/ui/types/text-area.types.d.ts +0 -1
  1029. package/dist/components/ui/wizard/index.d.ts +0 -1
  1030. package/dist/components/ui/wizard/index.js +0 -17
  1031. package/dist/components/ui/wizard/wizard.d.ts +0 -53
  1032. package/dist/components/ui/wizard/wizard.js +0 -314
  1033. package/dist/i18n/ImpactNovaI18nContext.d.ts +0 -21
  1034. package/dist/i18n/ImpactNovaI18nContext.js +0 -76
  1035. package/dist/stories/assets/tabDemoRasterIcons.d.ts +0 -4
  1036. package/tailwind.config.js +0 -316
  1037. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/cell-renderer-utils.d.ts +0 -0
  1038. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/cell-renderer-utils.js +0 -0
  1039. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/checkbox-display-renderer.d.ts +0 -0
  1040. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/checkbox-display-renderer.js +0 -0
  1041. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/date-display-renderer.d.ts +0 -0
  1042. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/editors/date-cell-editor.d.ts +0 -0
  1043. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/editors/percent-progress-cell-editor.d.ts +0 -0
  1044. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/editors/select-cell-editor.d.ts +0 -0
  1045. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/editors/split-cell-editor.d.ts +0 -0
  1046. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/editors/textarea-cell-editor.d.ts +0 -0
  1047. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/gridIconResolver.d.ts +0 -0
  1048. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/gridIconResolver.js +0 -0
  1049. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/index.d.ts +0 -0
  1050. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/index.js +0 -0
  1051. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/input-display-renderer.d.ts +0 -0
  1052. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/input-display-renderer.js +0 -0
  1053. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/link-with-batch-cell-renderer.d.ts +0 -0
  1054. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/select-display-renderer.d.ts +0 -0
  1055. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/status-badge-renderer.js +0 -0
  1056. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/switch-display-renderer.d.ts +0 -0
  1057. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/textarea-display-renderer.d.ts +0 -0
  1058. /package/dist/components/{ui → data}/ag-grid-react/cell-renderers/textarea-display-renderer.js +0 -0
  1059. /package/dist/components/{ui → data}/ag-grid-react/editable-utils.d.ts +0 -0
  1060. /package/dist/components/{ui → data}/ag-grid-react/editable-utils.js +0 -0
  1061. /package/dist/components/{ui → data}/ag-grid-react/grid-api-event-subscription.d.ts +0 -0
  1062. /package/dist/components/{ui → data}/ag-grid-react/grid-api-event-subscription.js +0 -0
  1063. /package/dist/components/{ui → data}/ag-grid-react/headers/column-menu/column-settings-menu.d.ts +0 -0
  1064. /package/dist/components/{ui → data}/ag-grid-react/headers/context/grid-header-context.js +0 -0
  1065. /package/dist/components/{ui → data}/ag-grid-react/headers/derive-header-search-state.js +0 -0
  1066. /package/dist/components/{ui → data}/ag-grid-react/headers/use-header-search-editing-state.js +0 -0
  1067. /package/dist/components/{ui → data}/ag-grid-react/headers/utils/date-utils.js +0 -0
  1068. /package/dist/components/{ui → data}/ag-grid-react/hooks/useStopEditingOnClickOutside.d.ts +0 -0
  1069. /package/dist/components/{ui → data}/ag-grid-react/refreshGridAutoSizeStrategy.d.ts +0 -0
  1070. /package/dist/components/{ui → data}/ag-grid-react/refreshGridAutoSizeStrategy.js +0 -0
  1071. /package/dist/components/{ui → data}/ag-grid-react/useGridAutoSizeStrategyOnResize.d.ts +0 -0
  1072. /package/dist/components/{ui → data}/ag-grid-react/value-formatters.d.ts +0 -0
  1073. /package/dist/components/{ui → data}/data-table/data-table-column-state.d.ts +0 -0
  1074. /package/dist/components/{ui → data}/data-table/data-table-column-state.js +0 -0
  1075. /package/dist/components/{ui → data}/data-table/data-table-constants.js +0 -0
  1076. /package/dist/components/{ui → data}/data-table/data-table-format-options.d.ts +0 -0
  1077. /package/dist/components/{ui/types → data/data-table}/data-table-saved-views.types.d.ts +0 -0
  1078. /package/dist/components/{ui → data}/data-table/data-table-view-options.d.ts +0 -0
  1079. /package/dist/components/{ui → data}/data-table/pin-switch.d.ts +0 -0
  1080. /package/dist/components/{ui → data}/nested-list/components/NestedListApplyDiscardButtons.d.ts +0 -0
  1081. /package/dist/components/{ui → data}/nested-list/components/NestedListCategoryFilters.d.ts +0 -0
  1082. /package/dist/components/{ui → data}/nested-list/components/NestedListHeader.d.ts +0 -0
  1083. /package/dist/components/{ui → data}/nested-list/hooks/useNestedListState.js +0 -0
  1084. /package/dist/components/{ui → data-display}/chart/initializeHighcharts.d.ts +0 -0
  1085. /package/dist/components/{ui → data-display}/chart/initializeHighcharts.js +0 -0
  1086. /package/dist/components/{ui → flows}/accordion-nested-list/index.js +0 -0
  1087. /package/dist/components/{ui → flows}/command-palette/command-palette-layout.d.ts +0 -0
  1088. /package/dist/components/{ui → flows}/command-palette/command-palette-layout.js +0 -0
  1089. /package/dist/components/{ui → flows}/command-palette/shortcut-overlay-context.d.ts +0 -0
  1090. /package/dist/components/{ui → flows}/command-palette/shortcut-overlay-context.js +0 -0
  1091. /package/dist/components/{ui → flows}/command-palette/shortcut-registry.d.ts +0 -0
  1092. /package/dist/components/{ui → flows}/command-palette/use-browser-shortcuts.d.ts +0 -0
  1093. /package/dist/components/{ui → flows}/command-palette/use-global-shortcut.d.ts +0 -0
  1094. /package/dist/components/{ui → flows}/command-palette/use-global-shortcut.js +0 -0
  1095. /package/dist/components/{ui → flows}/command-palette/use-shortcut.d.ts +0 -0
  1096. /package/dist/components/{ui → flows}/filter-panel/index.js +0 -0
  1097. /package/dist/components/{ui → flows}/filter-strip/index.js +0 -0
  1098. /package/dist/components/{ui → forms}/choice-card/index.d.ts +0 -0
  1099. /package/dist/components/{ui → forms}/choice-card/index.js +0 -0
  1100. /package/dist/components/{ui → forms}/date-picker/index.js +0 -0
  1101. /package/dist/components/{ui → forms}/select/hooks/useSelectionModel.js +0 -0
  1102. /package/dist/components/{ui → forms}/select/workers/flatten.worker.js +0 -0
  1103. /package/dist/components/{ui → forms/slider}/slider.d.ts +0 -0
  1104. /package/dist/components/{ui/types → forms/slider}/slider.types.d.ts +0 -0
  1105. /package/dist/components/{ui/button-variants.js → primitives/button/button.variants.js} +0 -0
  1106. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-1.webp.js +0 -0
  1107. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-2.webp.js +0 -0
  1108. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-3.webp.js +0 -0
  1109. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-4.webp.js +0 -0
  1110. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-5.webp.js +0 -0
  1111. /package/dist/components/{ui → primitives}/empty-container/assets/empty-state-6.webp.js +0 -0
  1112. /package/dist/components/{ui/empty-container/emptyStateIllustrations.d.ts → primitives/empty-container/empty-container.illustrations.d.ts} +0 -0
  1113. /package/dist/components/{ui/empty-container/emptyStateIllustrations.js → primitives/empty-container/empty-container.illustrations.js} +0 -0
  1114. /package/dist/components/{ui → primitives/progress}/progress-bar.d.ts +0 -0
  1115. /package/dist/components/{ui → primitives/progress}/progress-bar.js +0 -0
  1116. /package/dist/{components/ui/types → types}/helper-text.types.d.ts +0 -0
@@ -1 +1 @@
1
- export default "# Impact Nova — Best Practices & Do's and Don'ts\n\n## Use Impact Nova components only\n\n**When building with Impact Nova, use the components that are present in this design system only.** The library includes a full set of UI components (forms, navigation, feedback, data display, layout, etc.). There is no need to create new custom components for standard UI—use what Impact Nova provides. Check `list_components` or the component catalog to see what's available; use `get_component` for the spec and usage of any component. Prefer composing existing Impact Nova components over building from scratch.\n\n## Do's\n\n1. **Use compound components** — Use subcomponents (e.g. `Dialog.Content`, `Card.Header`, `Select.Trigger`) for full control without prop drilling.\n2. **Use `cn()` and Tailwind token classes** — Merge classNames with the `cn()` helper; use design token classes (e.g. `bg-brand`, `text-content`, `border-stroke`) not raw hex or arbitrary values.\n3. **Use design tokens** — Prefer Tailwind theme tokens (colors, spacing, radius from the design system). No arbitrary values where a token exists.\n4. **Accessibility first** — Components are built on Radix UI; preserve aria-labels, keyboard support, and screen reader compatibility. Add `aria-label` for icon-only buttons.\n5. **i18n for user-facing strings** — Use `ImpactNovaI18nProvider` and `useImpactNovaI18n()` / `t()` for labels, placeholders, and button text. Override via props when needed.\n6. **File naming** — Use `kebab-case.tsx` for files (e.g. `file-upload.tsx`).\n7. **TypeScript** — Import and extend component props (e.g. `ButtonProps`) for type-safe wrappers.\n8. **Use `variant` and `size` props** — For appearance, use the component's built-in variant and size props (e.g. `Button variant=\"primary\" size=\"lg\"`). Add `className` only for layout (e.g. margin, gap) or intentional overrides.\n\n## Don'ts\n\n1. **No inline styles for token-backed values** — Don't use `style={{ color: '...' }}` or inline hex for colors that exist as tokens.\n2. **Don't bypass tokens** — Avoid hardcoded spacing or colors; use Tailwind token classes.\n3. **Don't skip i18n** — For any user-facing label, placeholder, or message, use the i18n context or pass overrides via props.\n4. **Don't add unnecessary classNames for styling** — Components are already styled to the design standard. Use `variant` and `size` for appearance. Use `className` only for layout (e.g. `mt-4`, `flex gap-2`) or intentional overrides, not for duplicating built-in styles (e.g. don't add `rounded-lg` if the component already applies it).\n5. **Don't use non-token colors** — Stick to the design token palette (primary, secondary, accent, destructive, muted, etc.).\n6. **Don't create new components when Impact Nova already provides one** — The design system has the components you need. Use `list_components` / `get_component` to find and use them instead of building custom equivalents.\n7. **Error and empty states** — Use **Alert** for form or API errors; use **EmptyContainer** when there is no data to show (with optional action like \"Select filter\" or \"Add item\").\n\n## Composition over inheritance\n\nFavor composition. Compose subcomponents rather than extending or wrapping with custom styling that overrides the design system.\n\n## Imports\n\n**Prefer subpath imports** in production apps for tree-shaking (~98% smaller bundles vs full barrel). Use the barrel only for i18n bootstrapping or when importing many symbols from one area in a single file.\n\n- **Subpath (preferred)**: `import { Button } from 'impact-nova/button';`, `import { Card, CardContent } from 'impact-nova/card';`, `import { DataTable, DataTableContent, useDataTable } from 'impact-nova/data-table';`, `import { FilterPanel, FilterPanelSidebar } from 'impact-nova/filter-panel';`, `import { Combobox } from 'impact-nova/combobox';`\n- **Barrel (convenience)**: `import { ImpactNovaI18nProvider, useImpactNovaI18n, de } from 'impact-nova';` — OK for app root setup; avoid for feature modules\n- **Icons (required peer)**: `npm install impact-nova-icons@^0.1.1` then `import { Pin, Chart } from 'impact-nova-icons';` — use `createIconResolver` from `impact-nova-icons/resolver` for dynamic lookup. Icons are **not** exported from `impact-nova`\n- **Types only**: `import type { Option } from 'impact-nova/select';`, `import type { SavedTableViewItem } from 'impact-nova/data-table';`, `import type { RowSelectionState } from 'impact-nova/virtualized';`\n- **i18n provider**: `import { ImpactNovaI18nProvider, useImpactNovaI18n } from 'impact-nova';`\n- **Locale packs**: `import { de } from 'impact-nova/locale/de';` (also `es`, `hi`, `kn`)\n- **CSS (once at root)**: `import 'impact-nova/dist/impact-nova.css';` — or split layers: `impact-nova/impact-nova-tokens.scss`, `impact-nova/impact-nova-base.scss`, `impact-nova/impact-nova-components.css`\n\n**Vite consumers:** add `resolve.dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react']` to avoid dual React/AG Grid instances. Exclude `impact-nova-icons` from `optimizeDeps` to prevent SVG asset warnings. Pre-bundle Highcharts modules in `optimizeDeps.include` if using Chart.\n\n## AG Grid / Data tables (mandatory)\n\n**When working with DataTable, or any data table that uses AG Grid:**\n- **CRITICAL RULE:** If you see a table in a screenshot, or if the user asks for a table by default, you **MUST** use **Impact Nova DataTable** from `impact-nova/data-table`. **Do not build a raw AG Grid or HTML table.**\n- Use **only** AG Grid's official documentation.\n- Follow **only** AG Grid recommended patterns.\n- Rely **only** on the AG Grid API for grid behavior. No deviation.\n- If the user has **ag-mcp** installed, use it for AG Grid API and docs and combine with this MCP for Impact Nova DataTable/column/cell-renderer integration. See resource `impact-nova://ag-grid-rules` for full rules and the default table structure.\n";
1
+ export default "# Impact Nova — Best Practices & Do's and Don'ts\n\n## Use Impact Nova components only\n\n**When building with Impact Nova, use the components that are present in this design system only.** The library includes a full set of UI components (forms, navigation, feedback, data display, layout, etc.). There is no need to create new custom components for standard UI—use what Impact Nova provides. Check `list_components` or the component catalog to see what's available; use `get_component` for the spec and usage of any component. Prefer composing existing Impact Nova components over building from scratch.\n\n## Do's\n\n1. **Use compound components** — Use subcomponents (e.g. `Dialog.Content`, `Card.Header`, `Select.Trigger`) for full control without prop drilling.\n2. **Use `cn()` and Tailwind token classes** — Merge classNames with the `cn()` helper; use design token classes (e.g. `bg-brand`, `text-content`, `border-stroke`) not raw hex or arbitrary values.\n3. **Use design tokens** — Prefer Tailwind theme tokens (colors, spacing, radius from the design system). No arbitrary values where a token exists.\n4. **Accessibility first** — Components are built on Radix UI; preserve aria-labels, keyboard support, and screen reader compatibility. Add `aria-label` for icon-only buttons.\n5. **i18n for user-facing strings** — Mount `ImpactNovaProviders` from `impact-nova/form` at app root; use `useImpactNovaI18n()` / `t()` for labels, placeholders, and button text. Override via props when needed.\n6. **File naming** — Use `kebab-case.tsx` for files (e.g. `file-upload.tsx`).\n7. **TypeScript** — Import and extend component props (e.g. `ButtonProps`) for type-safe wrappers.\n8. **Use `variant` and `size` props** — For appearance, use the component's built-in variant and size props (e.g. `Button variant=\"default\" size=\"lg\"`). Add `className` only for layout (e.g. margin, gap) or intentional overrides.\n\n## Don'ts\n\n1. **No inline styles for token-backed values** — Don't use `style={{ color: '...' }}` or inline hex for colors that exist as tokens.\n2. **Don't bypass tokens** — Avoid hardcoded spacing or colors; use Tailwind token classes.\n3. **Don't skip i18n** — For any user-facing label, placeholder, or message, use the i18n context or pass overrides via props.\n4. **Don't add unnecessary classNames for styling** — Components are already styled to the design standard. Use `variant` and `size` for appearance. Use `className` only for layout (e.g. `mt-4`, `flex gap-2`) or intentional overrides, not for duplicating built-in styles (e.g. don't add `rounded-lg` if the component already applies it).\n5. **Don't use non-token colors** — Stick to the design token palette (primary, secondary, accent, destructive, muted, etc.).\n6. **Don't create new components when Impact Nova already provides one** — The design system has the components you need. Use `list_components` / `get_component` to find and use them instead of building custom equivalents.\n7. **Error and empty states** — Use **Alert** for form or API errors; use **EmptyContainer** when there is no data to show (with optional action like \"Select filter\" or \"Add item\").\n\n## Composition over inheritance\n\nFavor composition. Compose subcomponents rather than extending or wrapping with custom styling that overrides the design system.\n\n## Imports\n\n**Prefer subpath imports** in production apps for tree-shaking (~98% smaller bundles vs full barrel). Use the barrel only for i18n bootstrapping or when importing many symbols from one area in a single file.\n\n- **Subpath (preferred)**: `import { Button } from 'impact-nova/button';`, `import { Card, CardContent } from 'impact-nova/card';`, `import { DataTable, DataTableContent, useDataTable } from 'impact-nova/data-table';`, `import { FilterPanel, FilterPanelSidebar } from 'impact-nova/filter-panel';`, `import { Combobox } from 'impact-nova/combobox';`\n- **App providers**: `import { ImpactNovaProviders } from 'impact-nova/form';` — mount once at root (i18n + TooltipProvider)\n- **Barrel (locale packs only)**: `import { de } from 'impact-nova';` — OK for locale packs; avoid barrel for UI components\n- **Icons (required peer)**: `npm install impact-nova-icons@^0.1.1` then `import { Pin, Chart } from 'impact-nova-icons';` — use `createIconResolver` from `impact-nova-icons/resolver` for dynamic lookup. Icons are **not** exported from `impact-nova`\n- **Types only**: `import type { Option } from 'impact-nova/select';`, `import type { SavedTableViewItem } from 'impact-nova/data-table';`, `import type { RowSelectionState } from 'impact-nova/virtualized';`\n- **i18n hooks**: `import { useImpactNovaI18n } from 'impact-nova/i18n';`\n- **Locale packs**: `import { de } from 'impact-nova/locale/de';` (also `es`, `hi`, `kn`)\n- **CSS (once at root)**: `import 'impact-nova/dist/impact-nova.css';` — or split layers: `impact-nova/impact-nova-tokens.scss`, `impact-nova/impact-nova-base.scss`, `impact-nova/impact-nova-components.css`\n\n**Vite consumers:** add `resolve.dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react']` to avoid dual React/AG Grid instances. Exclude `impact-nova-icons` from `optimizeDeps` to prevent SVG asset warnings. Pre-bundle Highcharts modules in `optimizeDeps.include` if using Chart.\n\n## AG Grid / Data tables (mandatory)\n\n**When working with DataTable, or any data table that uses AG Grid:**\n- **CRITICAL RULE:** If you see a table in a screenshot, or if the user asks for a table by default, you **MUST** use **Impact Nova DataTable** from `impact-nova/data-table`. **Do not build a raw AG Grid or HTML table.**\n- Use **only** AG Grid's official documentation.\n- Follow **only** AG Grid recommended patterns.\n- Rely **only** on the AG Grid API for grid behavior. No deviation.\n- If the user has **ag-mcp** installed, use it for AG Grid API and docs and combine with this MCP for Impact Nova DataTable/column/cell-renderer integration. See resource `impact-nova://ag-grid-rules` for full rules and the default table structure.\n";
@@ -1 +1 @@
1
- export default "# Install and configure Impact Nova\n\nUse these steps to add Impact Nova to an existing project. Run the commands in your project root and apply the code changes to your entry file and layout.\n\n## 0. Scaffold a new app (recommended)\n\n**`create-impact-nova@^1.0.0`** is on npm. Scaffold auto-detects dependency mode:\n\n| Where you run | `impact-nova` dependency |\n|---------------|--------------------------|\n| Published CLI / MCP (outside monorepo) | `^2.0.5` from npm |\n| Inside impact-nova monorepo | `file:` link to repo root |\n\n```bash\nnpx create-impact-nova my-dashboard\ncd my-dashboard\nnpm run dev\n```\n\nMCP: **`scaffold_impact_nova_app`** with `projectName` and optional `modules[]` from the user prompt.\n\n**Overrides:** CLI `--from-npm` · `--link-monorepo` · MCP `usePublishedPackages: true | false`\n\n```bash\nnpx create-impact-nova my-dashboard --from-npm\n```\n\nBase template is shell-only (Home + shared primitives). Feature pages come from recipes — see `create-impact-nova/recipes/README.md`.\n\n**Local link in an existing app** (manual):\n\n```bash\nnpm install impact-nova@file:../path-to-impact-nova-repo\n```\n\nRun `npm run build` in the impact-nova repo after design-system changes.\n\n## 1. Install the package and peer dependencies\n\n```bash\nnpm install impact-nova impact-nova-icons\nnpm install react@^19 react-dom@^19\n```\n\n**Required peers:** `react@^19`, `react-dom@^19`, `impact-nova-icons@^0.1.1`\n\n**Optional peers** (install when you use these features):\n\n| Package | Version | When needed |\n|---------|---------|-------------|\n| `ag-grid-react` | `35.0.1` | DataTable / AG Grid |\n| `ag-grid-enterprise` | `35.0.1` | Enterprise grid features |\n| `highcharts` | `^12` | Chart component |\n| `highcharts-react-official` | `^3` | Chart component |\n| `highcharts-border-radius` | `^0.0.4` | Rounded chart corners |\n| `@tanstack/react-table` | `^8.20` | Optional table utilities |\n\nIf you use AG Grid or Highcharts in your app, also install:\n\n```bash\nnpm install ag-grid-react@35.0.1 ag-grid-enterprise@35.0.1\n# Optional, for charts:\nnpm install highcharts@^12 highcharts-react-official@^3 highcharts-border-radius@^0.0.4\n```\n\n## 2. Import styles in your root entry\n\nIn your app root (e.g. `main.tsx`, `App.tsx`, or `layout.tsx`), **import the CSS before your app component**:\n\n```tsx\nimport 'impact-nova/dist/impact-nova.css';\nimport App from './App';\n// ... rest of your bootstrap\n```\n\n## 3. Add Manrope font (recommended)\n\nIn your `index.html` or layout:\n\n```html\n<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\" rel=\"stylesheet\" />\n```\n\nIn your global CSS or Tailwind base:\n\n```css\n@layer base {\n body {\n font-family: 'Manrope', sans-serif;\n }\n}\n```\n\n## 4. Wrap your app with i18n (recommended)\n\nWrap your app with `ImpactNovaI18nProvider` so date pickers, selects, and other components use the correct locale and labels:\n\n```tsx\nimport { ImpactNovaI18nProvider } from 'impact-nova';\n\nfunction Root() {\n return (\n <ImpactNovaI18nProvider locale=\"en\">\n <App />\n </ImpactNovaI18nProvider>\n );\n}\n```\n\nFor another locale, use a locale pack:\n\n```tsx\nimport { ImpactNovaI18nProvider } from 'impact-nova';\nimport { de } from 'impact-nova/locale/de';\n\n<ImpactNovaI18nProvider locale=\"de\" messages={de}>\n <App />\n</ImpactNovaI18nProvider>\n```\n\n## 5. Subpath imports (recommended)\n\nPrefer subpath imports in feature code for tree-shaking:\n\n```tsx\nimport { Button } from 'impact-nova/button';\nimport { Card, CardContent } from 'impact-nova/card';\nimport { DataTable, DataTableContent, useDataTable } from 'impact-nova/data-table';\nimport { CheckCircle } from 'impact-nova-icons';\n```\n\nThe barrel `import { Button } from 'impact-nova'` still works but pulls a larger module graph. Use subpaths in production apps.\n\n## 6. Using Impact Nova with CSS or SCSS (no Tailwind)\n\nIf your app uses **plain CSS or SCSS** and does **not** use Tailwind, you can still use Impact Nova. Tailwind is optional. Impact Nova ships a single built CSS file (no SCSS source).\n\n- **Import the library CSS** in your app root (e.g. `main.tsx`, `App.tsx`):\n ```tsx\n import 'impact-nova/dist/impact-nova.css';\n ```\n **CSS split exports** (optional, for layered theming): `impact-nova/impact-nova-tokens.scss`, `impact-nova/impact-nova-base.scss`, `impact-nova/impact-nova-components.css`\n Or from your main stylesheet: `@import 'impact-nova/dist/impact-nova.css';` in your main.css or main.scss.\n- **Component styling** comes from Impact Nova's CSS. Use each component's `variant` and `size` props; no Tailwind classes are required.\n- **Your layout and spacing** stay in your CSS or SCSS (margins, padding, flexbox, grid). Use your usual class names; the design system does not require Tailwind utilities.\n- **Manrope font:** Add the font link in `index.html` and in your CSS/SCSS set `body { font-family: 'Manrope', sans-serif; }` (see section 3).\n- **Summary:** No Tailwind, no Tailwind config. Load `impact-nova.css` once; use components with their props; use your existing CSS/SCSS for the rest.\n\n## 7. Using Impact Nova with Webpack\n\nIf your app is built with **Webpack** (including Create React App, which uses Webpack):\n\n- **CSS import:** Webpack will bundle the library CSS as long as you have a rule for `.css`. Ensure your config includes something like:\n ```js\n module: {\n rules: [\n {\n test: /\\.css$/,\n use: ['style-loader', 'css-loader'],\n // or with MiniCssExtractPlugin:\n // use: [MiniCssExtractPlugin.loader, 'css-loader'],\n },\n // ... other rules (e.g. for .tsx, .js)\n ],\n },\n ```\n Then in your root component or entry:\n ```tsx\n import 'impact-nova/dist/impact-nova.css';\n ```\n- **Create React App (CRA):** No extra config. Add `import 'impact-nova/dist/impact-nova.css';` in `index.tsx` or `App.tsx`.\n- **Dedupe React / AG Grid:** If you see “multiple copies of React” or AG Grid issues, use Webpack’s `resolve.alias` so the app uses a single version:\n ```js\n resolve: {\n alias: {\n react: path.resolve(__dirname, 'node_modules/react'),\n 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'),\n // If using AG Grid:\n 'ag-grid-react': path.resolve(__dirname, 'node_modules/ag-grid-react'),\n 'ag-grid-community': path.resolve(__dirname, 'node_modules/ag-grid-community'),\n 'ag-grid-enterprise': path.resolve(__dirname, 'node_modules/ag-grid-enterprise'),\n },\n },\n ```\n- **Tailwind + Webpack:** If you use Tailwind, add the Impact Nova preset and include the package in `content` (see section 7 below).\n\n## 8. Optional: extend Tailwind with Impact Nova preset\n\nIf your project uses Tailwind and you want the same theme (colors, radius), extend your `tailwind.config.js` with the preset from the package:\n\n```js\n// tailwind.config.js\nimport impactNovaPreset from 'impact-nova/tailwind.config.js';\n\nexport default {\n presets: [impactNovaPreset],\n content: [\n './index.html',\n './src/**/*.{js,ts,jsx,tsx}',\n './node_modules/impact-nova/dist/**/*.js',\n ],\n // ... rest of your config\n};\n```\n\n## Summary checklist\n\n- [ ] `npm install impact-nova impact-nova-icons` (and react, react-dom; optional: ag-grid, highcharts)\n- [ ] `import 'impact-nova/dist/impact-nova.css'` in root entry (or @import in main.css/main.scss if using CSS or SCSS without Tailwind; see §6)\n- [ ] Add Manrope font link and body font-family\n- [ ] Wrap app with `<ImpactNovaI18nProvider locale=\"en\">`\n- [ ] Use subpath imports in feature code (see §5)\n- [ ] (Optional) Add Tailwind preset and content path for impact-nova\n- [ ] **Webpack:** Ensure a CSS rule (style-loader + css-loader) and, if needed, resolve.alias for React/AG Grid\n\nAfter this, import components via subpaths: `import { Button } from 'impact-nova/button';`\n\n## 9. Dashboard app shell (optional)\n\nTo scaffold a full dashboard (sidebar, header, breadcrumb, filters), read resource **`impact-nova://layout`** or call `get_real_world_patterns` with `topic: \"layout\"`. Use `Layout` from `impact-nova/layout` — not `DynamicLayout` (grid/flex utility only).\n";
1
+ export default "# Install and configure Impact Nova\n\nUse these steps to add Impact Nova to an existing project. Run the commands in your project root and apply the code changes to your entry file and layout.\n\n## 0. Scaffold a new app (recommended)\n\n**`create-impact-nova@^1.2.0`** is on npm. Scaffold auto-detects dependency mode:\n\n| Where you run | `impact-nova` dependency |\n|---------------|--------------------------|\n| Published CLI / MCP (outside monorepo) | `impact-nova@alpha` (`^2.1.0-alpha.7`) from npm |\n| Inside impact-nova monorepo | `file:` link to repo root |\n\n```bash\nnpx create-impact-nova my-dashboard\ncd my-dashboard\nnpm run dev\n```\n\nMCP: **`scaffold_impact_nova_app`** with `projectName` and optional `modules[]` from the user prompt.\n\n**Overrides:** CLI `--from-npm` · `--link-monorepo` · MCP `usePublishedPackages: true | false`\n\n```bash\nnpx create-impact-nova my-dashboard --from-npm\n```\n\nBase template is shell-only (Home + shared primitives). Feature pages come from recipes — see `create-impact-nova/recipes/README.md`.\n\n**Local link in an existing app** (manual):\n\n```bash\nnpm install impact-nova@file:../path-to-impact-nova-repo\n```\n\nRun `npm run build` in the impact-nova repo after design-system changes.\n\n## 1. Install the package and peer dependencies\n\n```bash\nnpm install impact-nova impact-nova-icons\nnpm install react@^19 react-dom@^19\n```\n\n**Required peers:** `react@^19`, `react-dom@^19`, `impact-nova-icons@^0.1.1`\n\n**Optional peers** (install when you use these features):\n\n| Package | Version | When needed |\n|---------|---------|-------------|\n| `ag-grid-community` | `36.0.1` | AG Grid types/API (pin with react + enterprise) |\n| `ag-grid-react` | `36.0.1` | DataTable / AG Grid |\n| `ag-grid-enterprise` | `36.0.1` | Enterprise grid features |\n| `highcharts` | `^12` | Chart component |\n| `highcharts-react-official` | `^3` | Chart component |\n| `highcharts-border-radius` | `^0.0.4` | Rounded chart corners |\n\nIf you use AG Grid or Highcharts in your app, also install:\n\n```bash\nnpm install ag-grid-community@36.0.1 ag-grid-react@36.0.1 ag-grid-enterprise@36.0.1\n# Optional, for charts:\nnpm install highcharts@^12 highcharts-react-official@^3 highcharts-border-radius@^0.0.4\n```\n\n## 2. Import styles in your root entry\n\nIn your app root (e.g. `main.tsx`, `App.tsx`, or `layout.tsx`), **import the CSS before your app component**:\n\n```tsx\nimport 'impact-nova/dist/impact-nova.css';\nimport App from './App';\n// ... rest of your bootstrap\n```\n\n## 3. Add Manrope font (recommended)\n\nIn your `index.html` or layout:\n\n```html\n<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\" rel=\"stylesheet\" />\n```\n\nIn your global CSS or Tailwind base:\n\n```css\n@layer base {\n body {\n font-family: 'Manrope', sans-serif;\n }\n}\n```\n\n## 4. Wrap your app with providers (recommended)\n\nMount **`ImpactNovaProviders`** once at the app root. It bundles i18n (`ImpactNovaI18nProvider`) and `TooltipProvider` (required for tooltips since v2.0.8):\n\n```tsx\nimport { ImpactNovaProviders } from 'impact-nova/form';\n\nfunction Root() {\n return (\n <ImpactNovaProviders locale=\"en\">\n <App />\n </ImpactNovaProviders>\n );\n}\n```\n\nFor another locale, pass a locale pack:\n\n```tsx\nimport { ImpactNovaProviders } from 'impact-nova/form';\nimport { de } from 'impact-nova/locale/de';\n\n<ImpactNovaProviders locale=\"de\" messages={de}>\n <App />\n</ImpactNovaProviders>\n```\n\n**Barrel exception:** locale packs may use `import { de } from 'impact-nova'`. All UI components still use subpaths (see §5).\n\n## 5. Subpath imports (recommended)\n\nPrefer subpath imports in feature code for tree-shaking:\n\n```tsx\nimport { Button } from 'impact-nova/button';\nimport { Card, CardContent } from 'impact-nova/card';\nimport { DataTable, DataTableContent, useDataTable } from 'impact-nova/data-table';\nimport { CheckCircle } from 'impact-nova-icons';\n```\n\nThe barrel `import { Button } from 'impact-nova'` still works but pulls a larger module graph. **Use subpaths for all UI components**; reserve the barrel for locale packs at app root only. Use `ImpactNovaProviders` from `impact-nova/form` for app setup.\n\n## 6. Using Impact Nova with CSS or SCSS (no Tailwind)\n\nIf your app uses **plain CSS or SCSS** and does **not** use Tailwind, you can still use Impact Nova. Tailwind is optional. Impact Nova ships a single built CSS file (no SCSS source).\n\n- **Import the library CSS** in your app root (e.g. `main.tsx`, `App.tsx`):\n ```tsx\n import 'impact-nova/dist/impact-nova.css';\n ```\n **CSS split exports** (optional, for layered theming): `impact-nova/impact-nova-tokens.scss`, `impact-nova/impact-nova-base.scss`, `impact-nova/impact-nova-components.css`\n Or from your main stylesheet: `@import 'impact-nova/dist/impact-nova.css';` in your main.css or main.scss.\n- **Component styling** comes from Impact Nova's CSS. Use each component's `variant` and `size` props; no Tailwind classes are required.\n- **Your layout and spacing** stay in your CSS or SCSS (margins, padding, flexbox, grid). Use your usual class names; the design system does not require Tailwind utilities.\n- **Manrope font:** Add the font link in `index.html` and in your CSS/SCSS set `body { font-family: 'Manrope', sans-serif; }` (see section 3).\n- **Summary:** No Tailwind, no Tailwind config. Load `impact-nova.css` once; use components with their props; use your existing CSS/SCSS for the rest.\n\n## 6b. Theming in consumer apps\n\n| Surface | What ships |\n|---------|------------|\n| **npm / consumer apps** | **Impact Light** only — `import 'impact-nova/dist/impact-nova.css'` (from `src/theme/tokens/light.json`) |\n| **Storybook / dev** | 10 curated **theme presets** (Impact Dark, Midnight, Ocean, …) — preview switcher only |\n\n**Do not** copy Storybook preset JSON or `theme-presets.ts` into consumer apps. Presets are not in the published package.\n\n**Custom branding:** override CSS variables on `:root` or a scoped class (e.g. `.my-brand`). Use Storybook **Theme Builder** / **Token Catalog** to explore tokens, then export CSS/JSON for your overrides.\n\n## 7. Using Impact Nova with Webpack\n\nIf your app is built with **Webpack** (including Create React App, which uses Webpack):\n\n- **CSS import:** Webpack will bundle the library CSS as long as you have a rule for `.css`. Ensure your config includes something like:\n ```js\n module: {\n rules: [\n {\n test: /\\.css$/,\n use: ['style-loader', 'css-loader'],\n // or with MiniCssExtractPlugin:\n // use: [MiniCssExtractPlugin.loader, 'css-loader'],\n },\n // ... other rules (e.g. for .tsx, .js)\n ],\n },\n ```\n Then in your root component or entry:\n ```tsx\n import 'impact-nova/dist/impact-nova.css';\n ```\n- **Create React App (CRA):** No extra config. Add `import 'impact-nova/dist/impact-nova.css';` in `index.tsx` or `App.tsx`.\n- **Dedupe React / AG Grid:** If you see “multiple copies of React” or AG Grid issues, use Webpack’s `resolve.alias` so the app uses a single version:\n ```js\n resolve: {\n alias: {\n react: path.resolve(__dirname, 'node_modules/react'),\n 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'),\n // If using AG Grid:\n 'ag-grid-react': path.resolve(__dirname, 'node_modules/ag-grid-react'),\n 'ag-grid-community': path.resolve(__dirname, 'node_modules/ag-grid-community'),\n 'ag-grid-enterprise': path.resolve(__dirname, 'node_modules/ag-grid-enterprise'),\n },\n },\n ```\n- **Tailwind + Webpack:** If you use Tailwind, add the Impact Nova preset and include the package in `content` (see section 7 below).\n\n## 8. Optional: extend Tailwind with Impact Nova preset\n\nIf your project uses Tailwind and you want the same theme (colors, radius), extend your `tailwind.config.js` with the preset from the package:\n\n```js\n// tailwind.config.js\nimport impactNovaPreset from 'impact-nova/tailwind.config.js';\n// → dist/tailwind.config.js (bundled theme; no package src/ required)\n\nexport default {\n presets: [impactNovaPreset],\n content: [\n './index.html',\n './src/**/*.{js,ts,jsx,tsx}',\n './node_modules/impact-nova/dist/**/*.js',\n ],\n // ... rest of your config\n};\n```\n\n## Summary checklist\n\n- [ ] `npm install impact-nova impact-nova-icons` (and react, react-dom; optional: ag-grid, highcharts)\n- [ ] `import 'impact-nova/dist/impact-nova.css'` in root entry (or @import in main.css/main.scss if using CSS or SCSS without Tailwind; see §6)\n- [ ] Add Manrope font link and body font-family\n- [ ] Wrap app with `<ImpactNovaProviders locale=\"en\">` from `impact-nova/form`\n- [ ] Use subpath imports in feature code (see §5)\n- [ ] (Optional) Add Tailwind preset and content path for impact-nova\n- [ ] **Webpack:** Ensure a CSS rule (style-loader + css-loader) and, if needed, resolve.alias for React/AG Grid\n\nAfter this, import components via subpaths: `import { Button } from 'impact-nova/button';`\n\n## 9. Dashboard app shell (optional)\n\nTo scaffold a full dashboard (sidebar, header, breadcrumb, filters), read resource **`impact-nova://layout`** or call `get_real_world_patterns` with `topic: \"layout\"`. Use `Layout` from `impact-nova/layout` — not `DynamicLayout` (grid/flex utility only).\n";
@@ -1 +1 @@
1
- export default "# Migration: Impact UI → Impact Nova\n\nGuide for migrating from **Impact UI** (or similar legacy UI) to **Impact Nova**. Use with other Impact Nova MCP tools: `get_component`, `get_installation_and_config`, `get_real_world_patterns`, `validate_usage`.\n\n---\n\n## 1. Prerequisites & MCP usage\n\n**Impact UI MCP (optional):** If migrating from Impact UI, `impact-ui-mcp-server` can help map legacy component names during transition. Disable it after migration completes.\n\n- **impact-ui-mcp-server** (optional) — Source API: Impact UI component names, props, import paths.\n- **Impact Nova MCP** — Target API: Nova imports, compound components, patterns; validate with `validate_usage`.\n\n**Impact Nova MCP tools:** `list_components` | `get_component` | `get_installation_and_config` | `get_real_world_patterns` | `validate_usage` | `suggest_components_for_ui`.\n\nBefore migrating: find all usages of the old UI library; choose big-bang or incremental strategy.\n\n---\n\n## 2. Phase 1 — Install and configure Impact Nova\n\n**Dependencies:**\n```bash\nnpm install impact-nova impact-nova-icons\nnpm install react@^19 react-dom@^19\n```\nWith AG Grid: `ag-grid-react@35.0.1 ag-grid-enterprise@35.0.1`. Optional charts: `highcharts@^12 highcharts-react-official@^3`. Then `npm uninstall impact-ui` when ready.\n\n**Styles:** In app root: `import 'impact-nova/dist/impact-nova.css';`\n\n**Font (Manrope):** Link in HTML; set `body { font-family: 'Manrope', sans-serif; }` in global CSS.\n\n**i18n:** Wrap app with `<ImpactNovaI18nProvider locale=\"en\">` (from `impact-nova`). Use locale packs (e.g. `de`) for other locales.\n\n**Tailwind (optional):** Preset `impact-nova/tailwind.config.js`; add `node_modules/impact-nova/dist/**/*.js` to `content`.\n\n**Vite:** Add `resolve.dedupe: ['react','react-dom','ag-grid-community','ag-grid-enterprise','ag-grid-react']`.\n\nUse MCP **`get_installation_and_config`** for project-specific steps.\n\n---\n\n## 3. Phase 2 — Component mapping (Impact UI → Impact Nova)\n\nUse **`get_component`** for exact API of each Nova component.\n\n| Legacy (Impact UI / common) | Impact Nova | Import |\n|-----------------------------|-------------|--------|\n| Button | Button | `impact-nova` / `impact-nova/button` |\n| Modal / Dialog | Dialog, AlertDialog, Prompt | `impact-nova`, `impact-nova/prompt` |\n| Slide-out / Drawer | Sheet | `impact-nova/sheet` |\n| Select / Dropdown | Select | `impact-nova/select` |\n| Input, TextField | Input, SmartInput | `impact-nova/input`, `impact-nova/smart-input` |\n| Textarea | Textarea | `impact-nova/textarea` |\n| Checkbox | Checkbox | `impact-nova/checkbox` |\n| Radio group | RadioGroup, RadioGroupItem | `impact-nova/radio-group` |\n| Switch / Toggle | Switch | `impact-nova/switch` |\n| Date picker / range | DatePicker, DateRangePicker, WeekRangePicker, MonthRangePicker | `impact-nova/date-picker` |\n| Tabs | Tabs, TabsList, TabsTrigger, TabsContent | `impact-nova/tabs` |\n| Alert / Banner | Alert, AlertTitle, AlertDescription, AlertIcon | `impact-nova/alert` |\n| Toast / Snackbar | toast, Toaster, useToast | `impact-nova` |\n| Badge / Tag | Badge, Tag, Chips | `impact-nova/badge`, `impact-nova`, `impact-nova/chips` |\n| Loader / Spinner | Loader, LoadingSpinner (icons) | `impact-nova/loader`, `impact-nova-icons` |\n| Accordion | Accordion, AccordionItem, AccordionTrigger, AccordionContent | `impact-nova/accordion` |\n| Sidebar / Nav | Sidebar | `impact-nova/sidebar` |\n| Header / AppBar | Header + subcomponents | `impact-nova/header` |\n| Breadcrumb | Breadcrumb, BreadcrumbList, etc. | `impact-nova/breadcrumb` |\n| Avatar | Avatar, AvatarFallback | `impact-nova/avatar` |\n| Tooltip | Tooltip, TooltipTrigger, TooltipContent | `impact-nova/tooltip` |\n| File upload | FileUpload (composition) | `impact-nova/file-upload` |\n| Data grid / Table | DataTable, AG Grid | `impact-nova`, `impact-nova/ag-grid-react/cell-renderers` |\n| Filter panel / strip | FilterPanel, FilterStrip | `impact-nova/filter-panel`, `impact-nova` |\n| Empty state | EmptyContainer + subcomponents | `impact-nova/empty-container` |\n| Confirmation dialog | Prompt, AlertDialog | `impact-nova/prompt`, `impact-nova` |\n| Nested list / Tree | NestedList | `impact-nova/nested-list` |\n| Chart | Chart | `impact-nova/chart` |\n| Horizontal scroll list | HorizontalScroller | `impact-nova/horizontal-scroller` |\n\nIcons: `impact-nova-icons` (e.g. Pin, Chart, LoadingSpinner) + `createIconResolver` for string lookup.\n\n---\n\n## 4. Phase 3 — Import and API changes\n\n**Imports:** **Prefer subpath imports** in all feature code. Run a codemod or migrate manually:\n\n```tsx\n// Before (barrel)\nimport { Button, Select, DataTable } from 'impact-nova';\n\n// After (subpath — preferred)\nimport { Button } from 'impact-nova/button';\nimport { Select } from 'impact-nova/select';\nimport { DataTable, useDataTable } from 'impact-nova/data-table';\nimport { CheckCircle } from 'impact-nova-icons';\n```\n\nBarrel OK for i18n: `import { ImpactNovaI18nProvider, de } from 'impact-nova';`\n\nTypes: `import type { Option } from 'impact-nova/select';`, `import type { SavedTableViewItem } from 'impact-nova/data-table';`, `import type { RowSelectionState } from 'impact-nova/virtualized';`\n\n**API:** Severity/type → `variant` (e.g. `variant=\"destructive\"`). Alert: use AlertTitle, AlertDescription, AlertIcon. Toast: `toast()`, Toaster, useToast. Dialog: compound components; confirmations → Prompt or AlertDialog. Select options: type `Option` from `impact-nova/select`. Prefer compound components (e.g. SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter). Use **`validate_usage`** on snippets.\n\n---\n\n## 5. Phase 4 — Compound patterns\n\nUse **`get_real_world_patterns`** for more detail.\n\n- **Filter UI:** FilterPanel + FilterPanelSidebar, FilterPanelBody, FilterPanelFooter; FilterStrip; types FilterItem, SavedFilterItem, FilterSidebarItem.\n- **Data table + AG Grid:** DataTable, DataTableContent, processBackendColumnDefs, BackendColDef; AG_GRID_CELL_COMPONENTS, LinkCellRenderer from `impact-nova/ag-grid-react/cell-renderers`.\n- **Sheet:** Sheet, SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter from `impact-nova/sheet`; pair with react-hook-form.\n- **Empty state:** EmptyContainer, EmptyContainerImage, EmptyContainerTitle, EmptyContainerDescription, EmptyContainerAction.\n- **Toast + Alert:** Toaster + toast()/useToast; Alert + AlertTitle, AlertDescription, AlertIcon from `impact-nova/alert`.\n- **Tabs + NestedList + Accordion:** Tabs components; NestedList + NestedListItem; Accordion components.\n\n---\n\n## 6. Phase 5 — Verification\n\n**Setup:** Impact Nova MCP enabled; keep impact-ui-mcp-server during migration. Nova + peers installed; CSS + Manrope + ImpactNovaI18nProvider; optional Tailwind + Vite dedupe.\n\n**Migration:** All legacy imports → Nova (barrel/subpath); Alert/Toast/Dialog use Nova variants and compounds; Option/MultiValue from `impact-nova/select`; types via `import type`; use tokens and variant/size.\n\n**MCP:** Use `validate_usage`, `get_component`, `suggest_components_for_ui`.\n\n**Build/tests:** `npm run build`, lint, manual test of forms, filters, tables, toasts, dialogs.\n";
1
+ export default "# Migration: Impact UI → Impact Nova\n\nGuide for migrating from **Impact UI** (or similar legacy UI) to **Impact Nova**. Use with other Impact Nova MCP tools: `get_component`, `get_installation_and_config`, `get_real_world_patterns`, `validate_snippet`.\n\n---\n\n## 1. Prerequisites & MCP usage\n\n**Impact UI MCP (optional):** If migrating from Impact UI, `impact-ui-mcp-server` can help map legacy component names during transition. Disable it after migration completes.\n\n- **impact-ui-mcp-server** (optional) — Source API: Impact UI component names, props, import paths.\n- **Impact Nova MCP** — Target API: Nova imports, compound components, patterns; validate with `validate_snippet`.\n\n**Impact Nova MCP tools:** `query_components` | `get_component_props` | `get_deprecations` | `get_component` | `get_installation_and_config` | `get_real_world_patterns` | `validate_snippet` | `suggest_components_for_ui`.\n\nBefore migrating: find all usages of the old UI library; choose big-bang or incremental strategy.\n\n---\n\n## 2. Phase 1 — Install and configure Impact Nova\n\n**Dependencies:**\n```bash\nnpm install impact-nova impact-nova-icons\nnpm install react@^19 react-dom@^19\n```\nWith AG Grid: `ag-grid-community@36.0.1 ag-grid-react@36.0.1 ag-grid-enterprise@36.0.1`. Optional charts: `highcharts@^12 highcharts-react-official@^3`. Then `npm uninstall impact-ui` when ready.\n\n**Styles:** In app root: `import 'impact-nova/dist/impact-nova.css';`\n\n**Font (Manrope):** Link in HTML; set `body { font-family: 'Manrope', sans-serif; }` in global CSS.\n\n**i18n:** Wrap app with `<ImpactNovaProviders locale=\"en\">` from `impact-nova/form`. Use locale packs (e.g. `de`) for other locales.\n\n**Tailwind (optional):** Preset `impact-nova/tailwind.config.js`; add `node_modules/impact-nova/dist/**/*.js` to `content`.\n\n**Vite:** Add `resolve.dedupe: ['react','react-dom','ag-grid-community','ag-grid-enterprise','ag-grid-react']`.\n\nUse MCP **`get_installation_and_config`** for project-specific steps.\n\n---\n\n## 3. Phase 2 — Component mapping (Impact UI → Impact Nova)\n\nUse **`get_component`** for exact API of each Nova component.\n\n| Legacy (Impact UI / common) | Impact Nova | Import |\n|-----------------------------|-------------|--------|\n| Button | Button | `impact-nova` / `impact-nova/button` |\n| Modal / Dialog | Dialog, AlertDialog, Prompt | `impact-nova`, `impact-nova/prompt` |\n| Slide-out / Drawer | Sheet | `impact-nova/sheet` |\n| Select / Dropdown | Select | `impact-nova/select` |\n| Input, TextField | Input, SmartInput | `impact-nova/input`, `impact-nova/smart-input` |\n| Textarea | Textarea | `impact-nova/textarea` |\n| Checkbox | Checkbox | `impact-nova/checkbox` |\n| Radio group | RadioGroup, RadioGroupItem | `impact-nova/radio-group` |\n| Switch / Toggle | Switch | `impact-nova/switch` |\n| Date picker / range | DatePicker, DateRangePicker, WeekRangePicker, MonthRangePicker | `impact-nova/date-picker` |\n| Tabs | Tabs, TabsList, TabsTrigger, TabsContent | `impact-nova/tabs` |\n| Alert / Banner | Alert, AlertTitle, AlertDescription, AlertIcon | `impact-nova/alert` |\n| Toast / Snackbar | toast, Toaster, useToast | `impact-nova` |\n| Badge / Tag | Badge, Tag, Chips | `impact-nova/badge`, `impact-nova`, `impact-nova/chips` |\n| Loader / Spinner | Loader, LoadingSpinner (icons) | `impact-nova/loader`, `impact-nova-icons` |\n| Accordion | Accordion, AccordionItem, AccordionTrigger, AccordionContent | `impact-nova/accordion` |\n| Sidebar / Nav | Sidebar | `impact-nova/sidebar` |\n| Header / AppBar | Header + subcomponents | `impact-nova/header` |\n| Breadcrumb | Breadcrumb, BreadcrumbList, etc. | `impact-nova/breadcrumb` |\n| Avatar | Avatar, AvatarFallback | `impact-nova/avatar` |\n| Tooltip | Tooltip, TooltipTrigger, TooltipContent | `impact-nova/tooltip` |\n| File upload | FileUpload (composition) | `impact-nova/file-upload` |\n| Data grid / Table | DataTable, AG Grid | `impact-nova`, `impact-nova/ag-grid-react/cell-renderers` |\n| Filter panel / strip | FilterPanel, FilterStrip | `impact-nova/filter-panel`, `impact-nova` |\n| Empty state | EmptyContainer + subcomponents | `impact-nova/empty-container` |\n| Confirmation dialog | Prompt, AlertDialog | `impact-nova/prompt`, `impact-nova` |\n| Nested list / Tree | NestedList | `impact-nova/nested-list` |\n| Chart | Chart | `impact-nova/chart` |\n| Horizontal scroll list | HorizontalScroller | `impact-nova/horizontal-scroller` |\n\nIcons: `impact-nova-icons` (e.g. Pin, Chart, LoadingSpinner) + `createIconResolver` for string lookup.\n\n---\n\n## 4. Phase 3 — Import and API changes\n\n**Imports:** **Prefer subpath imports** in all feature code. Run a codemod or migrate manually:\n\n```tsx\n// Before (barrel)\nimport { Button, Select, DataTable } from 'impact-nova';\n\n// After (subpath — preferred)\nimport { Button } from 'impact-nova/button';\nimport { Select } from 'impact-nova/select';\nimport { DataTable, useDataTable } from 'impact-nova/data-table';\nimport { CheckCircle } from 'impact-nova-icons';\n```\n\nBarrel OK for locale packs: `import { de } from 'impact-nova';`\n\nTypes: `import type { Option } from 'impact-nova/select';`, `import type { SavedTableViewItem } from 'impact-nova/data-table';`, `import type { RowSelectionState } from 'impact-nova/virtualized';`\n\n**API:** Severity/type → `variant` (e.g. `variant=\"destructive\"`). Alert: use AlertTitle, AlertDescription, AlertIcon. Toast: `toast()`, Toaster, useToast. Dialog: compound components; confirmations → Prompt or AlertDialog. Select options: type `Option` from `impact-nova/select`. Prefer compound components (e.g. SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter). Use **`validate_snippet`** on snippets.\n\n---\n\n## 5. Phase 4 — Compound patterns\n\nUse **`get_real_world_patterns`** for more detail.\n\n- **Filter UI:** FilterPanel + FilterPanelSidebar, FilterPanelBody, FilterPanelFooter; FilterStrip; types FilterItem, SavedFilterItem, FilterSidebarItem.\n- **Data table + AG Grid:** DataTable, DataTableContent, processBackendColumnDefs, BackendColDef; AG_GRID_CELL_COMPONENTS, LinkCellRenderer from `impact-nova/ag-grid-react/cell-renderers`.\n- **Sheet:** Sheet, SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter from `impact-nova/sheet`; pair with react-hook-form.\n- **Empty state:** EmptyContainer, EmptyContainerImage, EmptyContainerTitle, EmptyContainerDescription, EmptyContainerAction.\n- **Toast + Alert:** Toaster + toast()/useToast; Alert + AlertTitle, AlertDescription, AlertIcon from `impact-nova/alert`.\n- **Tabs + NestedList + Accordion:** Tabs components; NestedList + NestedListItem; Accordion components.\n\n---\n\n## 6. Phase 5 — Verification\n\n**Setup:** Impact Nova MCP enabled; keep impact-ui-mcp-server during migration. Nova + peers installed; CSS + Manrope + ImpactNovaProviders; optional Tailwind + Vite dedupe.\n\n**Migration:** All legacy imports → Nova (barrel/subpath); Alert/Toast/Dialog use Nova variants and compounds; Option/MultiValue from `impact-nova/select`; types via `import type`; use tokens and variant/size.\n\n**MCP:** Use `validate_snippet`, `get_component`, `suggest_components_for_ui`.\n\n**Build/tests:** `npm run build`, lint, manual test of forms, filters, tables, toasts, dialogs.\n";
@@ -1 +1 @@
1
- export default "# Impact Nova — Real-World Patterns (from production apps)\n\nPatterns observed in apps that use Impact Nova extensively (e.g. filter UIs, data tables, sheets, empty states).\n\n---\n\n## 1. Subpath imports (tree-shaking)\n\n**Default for production apps:** use subpath imports. Production apps (e.g. mtp-mfe-itemsmart-v3) migrated to 100% subpath imports — zero barrel `from 'impact-nova'` in feature code. Barrel is OK for i18n bootstrapping only.\n\n| Use case | Import |\n|----------|--------|\n| Layout (app shell) | `import { Layout } from 'impact-nova/layout';` |\n| Sidebar | `import { Sidebar, SidebarProvider, SidebarContent } from 'impact-nova/sidebar';` |\n| Header | `import { Header, HeaderLeft, HeaderRight, HeaderTitle } from 'impact-nova/header';` |\n| Breadcrumb | `import { Breadcrumb, BreadcrumbList, BreadcrumbHeader } from 'impact-nova/breadcrumb';` |\n| Button only | `import { Button } from 'impact-nova/button';` |\n| Combobox | `import { Combobox } from 'impact-nova/combobox';` |\n| Sheet (side panel) | `import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter } from 'impact-nova/sheet';` |\n| Filter panel | `import { FilterPanel, FilterPanelSidebar } from 'impact-nova/filter-panel';` and `FilterPanelBody`, `FilterPanelFooter` |\n| Filter strip | `import { FilterStrip } from 'impact-nova/filter-strip';` |\n| Empty state | `import { EmptyContainer, EmptyContainerImage, EmptyContainerTitle, EmptyContainerDescription, EmptyContainerAction } from 'impact-nova/empty-container';` |\n| Accordion | `import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from 'impact-nova/accordion';` |\n| Date pickers | `import { DateRangePicker } from 'impact-nova/date-picker';` or `WeekRangePicker`, `MonthRangePicker` |\n| Select | `import { Select } from 'impact-nova/select';` |\n| Data table | `import { DataTable, DataTableContent, DataTableToolbar, useDataTable } from 'impact-nova/data-table';` |\n| Progress bar | `import { ProgressBar } from 'impact-nova/progress-bar';` |\n| Virtualized list | `import { useVirtualizedList, useDebouncedValue } from 'impact-nova/virtualized';` |\n| Row selection type | `import type { RowSelectionState } from 'impact-nova/virtualized';` |\n| Alert | `import { Alert, AlertTitle, AlertDescription, AlertIcon } from 'impact-nova/alert';` |\n| Tooltip | `import { Tooltip, TooltipTrigger, TooltipContent } from 'impact-nova/tooltip';` |\n| Icons | `import { Pin, Unpin, Chart } from 'impact-nova-icons';` + `createIconResolver` for dynamic lookup |\n| AG Grid cell renderers | `import { AG_GRID_CELL_COMPONENTS, LinkCellRenderer } from 'impact-nova/ag-grid-react/cell-renderers';` |\n| Prompt | `import { Prompt } from 'impact-nova/prompt';` |\n| Radio group | `import { RadioGroup, RadioGroupItem } from 'impact-nova/radio-group';` |\n| Button group | `import { ButtonGroup } from 'impact-nova/button-group';` |\n| Smart input | `import { SmartInput as InputWrapper } from 'impact-nova/smart-input';` |\n| Chips | `import { Chip } from 'impact-nova/chips';` |\n| Loader | `import { Loader } from 'impact-nova/loader';` |\n\n---\n\n## 2. Type-only imports\n\nUse type-only imports for types to avoid pulling runtime code:\n\n```ts\nimport type { Option, MultiValue, ActionMeta } from 'impact-nova/select';\nimport type { FilterSidebarItem } from 'impact-nova/filter-panel';\nimport type { FilterItem, SavedFilterItem } from 'impact-nova/filter-strip';\nimport type { NestedListItem } from 'impact-nova/nested-list';\nimport type { FileUploadProps } from 'impact-nova/file-upload';\nimport type { BackendColDef } from 'impact-nova';\n```\n\n---\n\n## 3. Compound patterns\n\n### Filter UI (panel + strip)\n\n- **FilterPanel** + **FilterPanelSidebar** for the sliding panel; **FilterPanelBody** and **FilterPanelFooter** for content and Apply/Cancel.\n- **FilterStrip** to show applied filters (chips/tags). Types: `FilterItem`, `SavedFilterItem` from `impact-nova/filter-strip`.\n- Config drives **FilterSidebarItem** (from `impact-nova/filter-panel`); form state often with react-hook-form.\n\n### Data table + AG Grid\n\n**Mandatory (no deviation):** For DataTable or any data table using AG Grid, refer **only** to AG Grid's official documentation, follow **only** AG Grid recommended patterns, and use **only** the AG Grid API for grid operations. See resource `impact-nova://ag-grid-rules` for full rules. If the user has **ag-mcp** installed, use it for AG Grid API/docs and collaborate with this MCP for Impact Nova integration.\n\n- **DataTable**, **DataTableContent**, **DataTableSheet**, **DataTableSheetContent**, **DataTableSheetHeader**, **DataTableColumnList**, **DataTableFormatOptions** from `impact-nova/data-table`.\n- Use **processBackendColumnDefs** from `impact-nova` when column defs come from the backend; type **BackendColDef**.\n- Cell renderers: **AG_GRID_CELL_COMPONENTS** or **LinkCellRenderer** from `impact-nova/ag-grid-react/cell-renderers`; extend/wrap as needed (e.g. PlanningLinkCellRenderer).\n\n### Sheet (side panel with form)\n\n- **Sheet**, **SheetContent**, **SheetHeader**, **SheetTitle**, **SheetBody**, **SheetFooter** from `impact-nova/sheet`.\n- Use for “Match With”, “Bulk Edit”, “View Management” panels. Pair with react-hook-form for form content.\n\n### Empty state\n\n- **EmptyContainer** wrapping **EmptyContainerImage**, **EmptyContainerTitle**, **EmptyContainerDescription**, **EmptyContainerAction** (e.g. a Button to “Select filter” or “Add item”).\n- **Lazy illustrations:** When no custom `children` are passed to `EmptyContainerImage`, one random illustration loads via dynamic `import()` — only ~1 webp chunk per empty state, not all 6 upfront. Pass custom children to skip illustration loading entirely.\n\n### Tabs + NestedList + Accordion (view management)\n\n- **Tabs**, **TabsList**, **TabsTrigger**, **TabsContent** for switching sections.\n- **NestedList** with **SelectionMode**; data shape **NestedListItem** from `impact-nova/nested-list`.\n- **Accordion**, **AccordionItem**, **AccordionTrigger**, **AccordionContent** for expandable blocks (e.g. Versions & Variance).\n\n### Chart (Highcharts)\n\n- Use **Chart** from `impact-nova/chart` as the wrapper.\n- For **series, options, and configuration** refer to **Highcharts documentation** ([highcharts.com/docs](https://www.highcharts.com/docs/)); use the Highcharts API for chart behavior. Impact Nova provides the React integration and styling; options/series follow Highcharts.\n- Install: `highcharts@^12`, `highcharts-react-official@^3`, optional `highcharts-border-radius@^0.0.4`.\n\n### Toast + Alert\n\n- **toast**, **Toaster**, **useToast** from `impact-nova`; wrap app with **Toaster**.\n- **Alert**, **AlertTitle**, **AlertDescription**, **AlertIcon** from `impact-nova/alert` for inline or toast-style messages.\n\n### Command Palette & keyboard shortcuts\n\nImplementation is **more involved** than other components. Use the dedicated guide: resource **`impact-nova://command-palette`**.\n\n- **Import:** `import { CommandPaletteProvider, CommandPalette, useShortcut, useGlobalShortcut, ShortcutSettings, ShortcutScopeProvider, Kbd, useCommandPalette, useBrowserShortcuts } from 'impact-nova/command-palette';`\n- **Minimal setup:** Wrap app with `CommandPaletteProvider`; render `<CommandPalette />` once inside it (⌘K overlay). Register commands with `useShortcut` (scoped: page/module/modal) or `useGlobalShortcut` (app-wide). Use correct `scope` for priority (modal > page > module > global).\n- **Multi-table:** When multiple DataTables share the same shortcut, wrap each in `ShortcutScopeProvider` with a unique `instance` so only the focused one responds.\n- **ShortcutSettings:** AG Grid–powered panel for user customisation; put inside a Sheet (e.g. Keyboard Shortcuts settings). For AG Grid behaviour follow `impact-nova://ag-grid-rules`.\n- **Kbd:** Use `<Kbd keybinding={{ key: 'k', meta: true }} />` to show shortcut in UI. **Button trigger:** `useCommandPalette().setOpen(true)`.\n\n---\n\n## 4. App setup\n\n- **CSS once at root**: `import 'impact-nova/dist/impact-nova.css';` (e.g. in App.tsx or main.tsx).\n- **AG Grid**: Set `LicenseManager.setLicenseKey(...)` if using enterprise.\n- **Vite**: Dedupe react/ag-grid when using impact-nova to avoid dual instances. Exclude `impact-nova-icons` from `optimizeDeps` to prevent SVG asset warnings in dev:\n\n```js\noptimizeDeps: {\n exclude: ['impact-nova-icons'],\n},\nresolve: {\n dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react'],\n},\n```\n\n---\n\n## 5. Known workarounds\n\n- **HorizontalScroller**: If the package entry is empty in your build, add a Vite alias to `.../horizontal-scroller/horizontal-scroller.js` and a small `declare module 'impact-nova/horizontal-scroller'` for TypeScript.\n- **Chart**: Prefer `import { Chart } from 'impact-nova/chart'`. Pre-bundle Highcharts UMD modules in Vite `optimizeDeps.include` if you see interop errors in dev.\n\n---\n\n## 6. Forms and options\n\n- **Select options**: Use type **Option** (or **SelectOption**) from `impact-nova/select` for `{ value, label }` (and optional fields). **MultiValue** for multi-select.\n- **react-hook-form**: Use Impact Nova form controls (SmartInput, Select, DateRangePicker, RadioGroup, ButtonGroup, Chips, etc.) as controlled components; pass `value`/`onChange` from the form library.\n- **Validation and errors**: Show validation errors with **Alert** or field-level messages; use the form library’s error state (e.g. `formState.errors`) and optional schema validation (e.g. Zod) with react-hook-form.\n\n---\n\n## 7. Breadcrumb and toolbar\n\n- **Breadcrumb** with **BreadcrumbList**, **BreadcrumbItem**, **BreadcrumbLink**, **BreadcrumbSeparator**, **BreadcrumbPage** for table/section context.\n- **DataTableToolbar** for table toolbars (view mode, view management, filters, Update/Cancel when editing).\n\nUse these patterns so the MCP and generated code stay close to how Impact Nova is used in real apps.\n\n---\n\n## 8. Wizard (multi-step flow)\n\nUse **Wizard** for any multi-step creation or onboarding flow. Radix-style controlled state (`value` / `onValueChange`), optional split-panel layout, and `useWizard()` for flexible footers.\n\n### Import\n\n```ts\nimport {\n WizardRoot,\n WizardLayout,\n WizardSidebar,\n WizardTitle,\n WizardDescription,\n WizardMedia,\n WizardBody,\n WizardProgress,\n WizardHeader,\n WizardContent,\n WizardStep,\n WizardFooter,\n useWizard,\n} from 'impact-nova/wizard';\n```\n\n### Minimal multi-step example\n\n```tsx\nimport { useState } from 'react';\nimport {\n WizardRoot, WizardLayout,\n WizardSidebar, WizardTitle, WizardDescription, WizardMedia,\n WizardBody, WizardProgress,\n WizardContent, WizardStep, WizardHeader,\n WizardFooter,\n} from 'impact-nova/wizard';\nimport { Button } from 'impact-nova/button';\n\nexport function CreateAlertFlow() {\n const [step, setStep] = useState(1);\n\n return (\n <WizardRoot value={step} totalSteps={3} onValueChange={setStep}>\n <WizardLayout>\n <WizardSidebar>\n <WizardTitle>Create Alert</WizardTitle>\n <WizardDescription>Configure your alert step by step.</WizardDescription>\n <WizardMedia />\n </WizardSidebar>\n\n <WizardBody>\n <WizardProgress />\n <WizardContent>\n <WizardStep value={1}>\n <WizardHeader>Alert Details</WizardHeader>\n </WizardStep>\n <WizardStep value={2}>\n <WizardHeader>Configuration</WizardHeader>\n </WizardStep>\n <WizardStep value={3}>\n <WizardHeader>Review</WizardHeader>\n </WizardStep>\n </WizardContent>\n <WizardFooter>\n <Button variant=\"secondary\">Cancel</Button>\n <Button variant=\"default\">Submit</Button>\n </WizardFooter>\n </WizardBody>\n </WizardLayout>\n </WizardRoot>\n );\n}\n```\n\n### Key rules\n\n- **WizardRoot** is the context provider — every other sub-component must be a descendant.\n- Use **useWizard()** for `goNext`, `goBack`, `isFirstStep`, `isLastStep` without prop drilling.\n- **WizardStep** renders nothing when `value` doesn't match the current step — use one per step.\n- **WizardMedia** renders a default SVG when neither `src` nor `children` are provided.\n- The sidebar is hidden below the `lg` breakpoint.\n- All sub-components except **WizardRoot** are optional — compose only what you need.\n---\n\n## 9. App layout (app shell)\n\n**Use `Layout`** for the app chrome — not `DynamicLayout` (that is a grid/flex/stack utility only).\n\nFull beginner scaffold: resource **`impact-nova://layout`**.\n\n### Structure\n\n```tsx\nimport { Layout } from 'impact-nova/layout';\nimport { Sidebar, SidebarProvider } from 'impact-nova/sidebar';\nimport { Header, HeaderLeft, HeaderTitle } from 'impact-nova/header';\nimport { BreadcrumbHeader, Breadcrumb, BreadcrumbList } from 'impact-nova/breadcrumb';\nimport { FilterStrip } from 'impact-nova/filter-strip';\n\n<SidebarProvider defaultOpen={false} id=\"app-sidebar\" className=\"flex h-svh min-h-0 w-full min-w-0 overflow-hidden\">\n <Layout\n sidebar={<Sidebar collapsible=\"offcanvas\">...</Sidebar>}\n header={<Header>...</Header>}\n >\n {/* Page content — Item Smart parity */}\n <PageShell>\n <PageStickyHeader pageTitle=\"...\" filterStrip={filtersApplied ? <FilterStrip ... /> : undefined} />\n {filtersApplied ? <WorkspaceBody /> : <EmptyStateView title=\"...\" primaryActionLabel=\"Select filter\" />}\n </PageShell>\n </Layout>\n</SidebarProvider>\n```\n\n### Key rules\n\n- **`SidebarProvider` at app root** — wraps `Layout`, not inside the sidebar slot.\n- **Page background** — `PageShell` → `bg-brand-subtle` (not `bg-canvas-wash` on module pages)\n- **Filter strip** — white sticky bar via `PageStickyHeader` `filterStrip` slot (`page-filter-strip` class)\n- **Tables** — `module-table-container mx-6 flex min-h-[480px] flex-1` → white `DataTable` card with shadow\n- **Subpath imports** — `impact-nova/layout`, `impact-nova/sidebar`, `impact-nova/header`, `impact-nova/breadcrumb`, `impact-nova/filter-strip`.\n- **With React Router** — put `<Outlet />` inside `Layout` children; route pages render breadcrumb + body.\n- **With Command Palette** — `CommandPaletteProvider` at root; `<CommandPalette />` as sibling inside `SidebarProvider`. See `impact-nova://command-palette`.\n\n### Premium primitives (shipped in create-impact-nova template)\n\n| Component | Role |\n|-----------|------|\n| `PageShell` | `bg-brand-subtle` + flex fill chain |\n| `PageStickyHeader` | Breadcrumb `z-30` + white filter strip slot |\n| `EmptyStateView` | Illustration + primary/secondary CTAs |\n| `SummaryMetricCard` | Dashboard KPI tiles (`border-[#C3C8D4]`, hover shadow) |\n| `module-table-container` | Table card shadow + `min-h-[480px] flex-1` fill |\n";
1
+ export default "# Impact Nova — Real-World Patterns (from production apps)\n\nPatterns observed in apps that use Impact Nova extensively (e.g. filter UIs, data tables, sheets, empty states).\n\n---\n\n## 1. Subpath imports (tree-shaking)\n\n**Default for production apps:** use subpath imports. Production apps (e.g. mtp-mfe-itemsmart-v3) migrated to 100% subpath imports — zero barrel `from 'impact-nova'` in feature code. Barrel is OK for i18n bootstrapping only.\n\n| Use case | Import |\n|----------|--------|\n| Layout (app shell) | `import { Layout } from 'impact-nova/layout';` |\n| Sidebar | `import { Sidebar, SidebarProvider, SidebarContent } from 'impact-nova/sidebar';` |\n| Header | `import { Header, HeaderLeft, HeaderRight, HeaderTitle } from 'impact-nova/header';` |\n| Breadcrumb | `import { Breadcrumb, BreadcrumbList, BreadcrumbHeader } from 'impact-nova/breadcrumb';` |\n| Button only | `import { Button } from 'impact-nova/button';` |\n| Combobox | `import { Combobox } from 'impact-nova/combobox';` |\n| Sheet (side panel) | `import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetBody, SheetFooter } from 'impact-nova/sheet';` |\n| Filter panel | `import { FilterPanel, FilterPanelSidebar } from 'impact-nova/filter-panel';` and `FilterPanelBody`, `FilterPanelFooter` |\n| Filter strip | `import { FilterStrip } from 'impact-nova/filter-strip';` |\n| Empty state | `import { EmptyContainer, EmptyContainerImage, EmptyContainerTitle, EmptyContainerDescription, EmptyContainerAction } from 'impact-nova/empty-container';` |\n| Accordion | `import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from 'impact-nova/accordion';` |\n| Date pickers | `import { DateRangePicker } from 'impact-nova/date-picker';` or `WeekRangePicker`, `MonthRangePicker` |\n| Select | `import { Select } from 'impact-nova/select';` |\n| Data table | `import { DataTable, DataTableContent, DataTableToolbar, useDataTable } from 'impact-nova/data-table';` |\n| Progress bar | `import { ProgressBar } from 'impact-nova/progress-bar';` |\n| Virtualized list hooks | `import { useVirtualizedList, useDebouncedValue } from 'impact-nova/virtualized';` |\n| Expandable list row | `import { ExpandableListItem, type ExpandableListItemSection } from 'impact-nova/expandable-list-item';` |\n| Row selection type | `import type { RowSelectionState } from 'impact-nova/virtualized';` |\n| Alert | `import { Alert, AlertTitle, AlertDescription, AlertIcon } from 'impact-nova/alert';` |\n| Tooltip | `import { Tooltip, TooltipTrigger, TooltipContent } from 'impact-nova/tooltip';` |\n| Icons | `import { Pin, Unpin, Chart } from 'impact-nova-icons';` + `createIconResolver` for dynamic lookup |\n| AG Grid cell renderers | `import { AG_GRID_CELL_COMPONENTS, LinkCellRenderer } from 'impact-nova/ag-grid-react/cell-renderers';` |\n| Prompt | `import { Prompt } from 'impact-nova/prompt';` |\n| Radio group | `import { RadioGroup, RadioGroupItem } from 'impact-nova/radio-group';` |\n| Button group | `import { ButtonGroup } from 'impact-nova/button-group';` |\n| Smart input | `import { SmartInput as InputWrapper } from 'impact-nova/smart-input';` |\n| Chips | `import { Chip } from 'impact-nova/chips';` |\n| Loader | `import { Loader } from 'impact-nova/loader';` |\n\n---\n\n## 2. Type-only imports\n\nUse type-only imports for types to avoid pulling runtime code:\n\n```ts\nimport type { Option, MultiValue, ActionMeta } from 'impact-nova/select';\nimport type { FilterSidebarItem } from 'impact-nova/filter-panel';\nimport type { FilterItem, SavedFilterItem } from 'impact-nova/filter-strip';\nimport type { NestedListItem } from 'impact-nova/nested-list';\nimport type { FileUploadProps } from 'impact-nova/file-upload';\nimport type { BackendColDef } from 'impact-nova';\n```\n\n---\n\n## 3. Compound patterns\n\n### Filter UI (panel + strip)\n\n- **FilterPanel** + **FilterPanelSidebar** for the sliding panel; **FilterPanelBody** and **FilterPanelFooter** for content and Apply/Cancel.\n- **FilterStrip** to show applied filters (chips/tags). Types: `FilterItem`, `SavedFilterItem` from `impact-nova/filter-strip`.\n- Config drives **FilterSidebarItem** (from `impact-nova/filter-panel`); form state often with react-hook-form.\n\n### Data table + AG Grid\n\n**Mandatory (no deviation):** For DataTable or any data table using AG Grid, refer **only** to AG Grid's official documentation, follow **only** AG Grid recommended patterns, and use **only** the AG Grid API for grid operations. See resource `impact-nova://ag-grid-rules` for full rules. If the user has **ag-mcp** installed, use it for AG Grid API/docs and collaborate with this MCP for Impact Nova integration.\n\n- **DataTable**, **DataTableContent**, **DataTableSheet**, **DataTableSheetContent**, **DataTableSheetHeader**, **DataTableColumnList**, **DataTableFormatOptions** from `impact-nova/data-table`.\n- **AG Grid v36 peers:** `ag-grid-community@36.0.1`, `ag-grid-react@36.0.1`, `ag-grid-enterprise@36.0.1` — exact pin, dedupe in Vite. No legacy `ag-theme-*` CSS.\n- **Column settings:** `DataTableColumnList` reads pin/sort/filter from the live `GridApi` (frozen vs scrollable sections). Storybook: `Data/DataTable/Column settings scenarios`.\n- Use **processBackendColumnDefs** from `impact-nova` when column defs come from the backend; type **BackendColDef**.\n- Cell renderers: **AG_GRID_CELL_COMPONENTS** or **LinkCellRenderer** from `impact-nova/ag-grid-react/cell-renderers`; extend/wrap as needed (e.g. PlanningLinkCellRenderer).\n\n### Sheet (side panel with form)\n\n- **Sheet**, **SheetContent**, **SheetHeader**, **SheetTitle**, **SheetBody**, **SheetFooter** from `impact-nova/sheet`.\n- Use for “Match With”, “Bulk Edit”, “View Management” panels. Pair with react-hook-form for form content.\n\n### Empty state\n\n- **EmptyContainer** wrapping **EmptyContainerImage**, **EmptyContainerTitle**, **EmptyContainerDescription**, **EmptyContainerAction** (e.g. a Button to “Select filter” or “Add item”).\n- **Lazy illustrations:** When no custom `children` are passed to `EmptyContainerImage`, one random illustration loads via dynamic `import()` — only ~1 webp chunk per empty state, not all 6 upfront. Pass custom children to skip illustration loading entirely.\n\n### Tabs + NestedList + Accordion (view management)\n\n- **Tabs**, **TabsList**, **TabsTrigger**, **TabsContent** for switching sections.\n- **NestedList** with **SelectionMode**; data shape **NestedListItem** from `impact-nova/nested-list`.\n- **Accordion**, **AccordionItem**, **AccordionTrigger**, **AccordionContent** for expandable blocks (e.g. Versions & Variance).\n\n### Chart (Highcharts)\n\n- Use **Chart** from `impact-nova/chart` as the wrapper.\n- For **series, options, and configuration** refer to **Highcharts documentation** ([highcharts.com/docs](https://www.highcharts.com/docs/)); use the Highcharts API for chart behavior. Impact Nova provides the React integration and styling; options/series follow Highcharts.\n- Install: `highcharts@^12`, `highcharts-react-official@^3`, optional `highcharts-border-radius@^0.0.4`.\n\n### Toast + Alert\n\n- **toast**, **Toaster**, **useToast** from `impact-nova`; wrap app with **Toaster**.\n- **Alert**, **AlertTitle**, **AlertDescription**, **AlertIcon** from `impact-nova/alert` for inline or toast-style messages.\n\n### Expandable list row vs virtualized list (independent, composable)\n\nBoth are **decoupled** subpaths. Pick the integration style that fits — preset, compound, or headless hooks.\n\n#### ExpandableListItem (`impact-nova/expandable-list-item`)\n\n| Style | When | Example |\n|-------|------|---------|\n| **Preset** | Data-driven sections from API/config | `<ExpandableListItem title=\"…\" description=\"…\" sections={sections} />` |\n| **Compound** | Custom row layout / slots | `ExpandableListItemRoot` → `Row` → `Checkbox` + `Trigger` → `Content` |\n| **Inside virtualized** | Large lists (optional) | Render preset or compound inside `VirtualizedListItem` |\n\n- Props: **`title`**, **`description`** (not legacy `sku` / `subtitle`)\n- Sections: `ExpandableListItemSection[]` — `metrics` | `attributes` | `custom`\n- Storybook: **Expandable List Item → Composition**\n\n#### Virtualized (`impact-nova/virtualized`)\n\n| Style | When | Example |\n|-------|------|---------|\n| **Compound UI** | New list chrome (search, select-all, viewport) | `VirtualizedList` → `Viewport` → `Content` → `Item` |\n| **Headless hooks** | Full DOM control / existing layout | `useVirtualizedList` + `getItemProps` / `resetRowSize` |\n| **Custom rows** | Any row JSX | ExpandableListItem optional — not required |\n\n- Expandable rows: `getItemProps(index, { measure: isExpanded })`; call `resetRowSize(index)` on collapse\n- Types: `RowSelectionState`, `VirtualRowModel`, `UseVirtualizedListResult`\n- Storybook: **Virtualized List → Composition** and **Custom row UI**\n- Patterns: `query_patterns` → `virtualized-selectable-list`, `expandable-list-item-preset`, `expandable-list-item-compound`\n- **Renamed:** `impact-nova/expandable-sku` → `impact-nova/expandable-list-item`. See `impact-nova://removed-imports`.\n\n### Command Palette & keyboard shortcuts\n\nImplementation is **more involved** than other components. Use the dedicated guide: resource **`impact-nova://command-palette`**.\n\n- **Import:** `import { CommandPaletteProvider, CommandPalette, useShortcut, useGlobalShortcut, ShortcutSettings, ShortcutScopeProvider, Kbd, useCommandPalette, useBrowserShortcuts } from 'impact-nova/command-palette';`\n- **Minimal setup:** Wrap app with `CommandPaletteProvider`; render `<CommandPalette />` once inside it (⌘K overlay). Register commands with `useShortcut` (scoped: page/module/modal) or `useGlobalShortcut` (app-wide). Use correct `scope` for priority (modal > page > module > global).\n- **Multi-table:** When multiple DataTables share the same shortcut, wrap each in `ShortcutScopeProvider` with a unique `instance` so only the focused one responds.\n- **ShortcutSettings:** AG Grid–powered panel for user customisation; put inside a Sheet (e.g. Keyboard Shortcuts settings). For AG Grid behaviour follow `impact-nova://ag-grid-rules`.\n- **Kbd:** Use `<Kbd keybinding={{ key: 'k', meta: true }} />` to show shortcut in UI. **Button trigger:** `useCommandPalette().setOpen(true)`.\n\n---\n\n## 4. App setup\n\n- **CSS once at root**: `import 'impact-nova/dist/impact-nova.css';` (e.g. in App.tsx or main.tsx).\n- **AG Grid**: Set `LicenseManager.setLicenseKey(...)` if using enterprise. Install `ag-grid-community@36.0.1 ag-grid-react@36.0.1 ag-grid-enterprise@36.0.1`.\n- **Vite**: Dedupe react/ag-grid when using impact-nova to avoid dual instances. Exclude `impact-nova-icons` from `optimizeDeps` to prevent SVG asset warnings in dev:\n\n```js\noptimizeDeps: {\n exclude: ['impact-nova-icons'],\n},\nresolve: {\n dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react'],\n},\n```\n\n---\n\n## 5. Known workarounds\n\n- **HorizontalScroller**: If the package entry is empty in your build, add a Vite alias to `.../horizontal-scroller/horizontal-scroller.js` and a small `declare module 'impact-nova/horizontal-scroller'` for TypeScript.\n- **Chart**: Prefer `import { Chart } from 'impact-nova/chart'`. Pre-bundle Highcharts UMD modules in Vite `optimizeDeps.include` if you see interop errors in dev.\n\n---\n\n## 6. Forms and options\n\n- **Select options**: Use type **Option** (or **SelectOption**) from `impact-nova/select` for `{ value, label }` (and optional fields). **MultiValue** for multi-select.\n- **react-hook-form**: Use Impact Nova form controls (SmartInput, Select, DateRangePicker, RadioGroup, ButtonGroup, Chips, etc.) as controlled components; pass `value`/`onChange` from the form library.\n- **Validation and errors**: Show validation errors with **Alert** or field-level messages; use the form library’s error state (e.g. `formState.errors`) and optional schema validation (e.g. Zod) with react-hook-form.\n\n---\n\n## 7. Breadcrumb and toolbar\n\n- **Breadcrumb** with **BreadcrumbList**, **BreadcrumbItem**, **BreadcrumbLink**, **BreadcrumbSeparator**, **BreadcrumbPage** for table/section context.\n- **DataTableToolbar** for table toolbars (view mode, view management, filters, Update/Cancel when editing).\n\nUse these patterns so the MCP and generated code stay close to how Impact Nova is used in real apps.\n\n---\n\n## 8. Wizard (multi-step flow)\n\nUse **Wizard** for any multi-step creation or onboarding flow. Radix-style controlled state (`value` / `onValueChange`), optional split-panel layout, and `useWizard()` for flexible footers.\n\n### Import\n\n```ts\nimport {\n WizardRoot,\n WizardLayout,\n WizardSidebar,\n WizardTitle,\n WizardDescription,\n WizardMedia,\n WizardBody,\n WizardProgress,\n WizardHeader,\n WizardContent,\n WizardStep,\n WizardFooter,\n useWizard,\n} from 'impact-nova/wizard';\n```\n\n### Minimal multi-step example\n\n```tsx\nimport { useState } from 'react';\nimport {\n WizardRoot, WizardLayout,\n WizardSidebar, WizardTitle, WizardDescription, WizardMedia,\n WizardBody, WizardProgress,\n WizardContent, WizardStep, WizardHeader,\n WizardFooter,\n} from 'impact-nova/wizard';\nimport { Button } from 'impact-nova/button';\n\nexport function CreateAlertFlow() {\n const [step, setStep] = useState(1);\n\n return (\n <WizardRoot value={step} totalSteps={3} onValueChange={setStep}>\n <WizardLayout>\n <WizardSidebar>\n <WizardTitle>Create Alert</WizardTitle>\n <WizardDescription>Configure your alert step by step.</WizardDescription>\n <WizardMedia />\n </WizardSidebar>\n\n <WizardBody>\n <WizardProgress />\n <WizardContent>\n <WizardStep value={1}>\n <WizardHeader>Alert Details</WizardHeader>\n </WizardStep>\n <WizardStep value={2}>\n <WizardHeader>Configuration</WizardHeader>\n </WizardStep>\n <WizardStep value={3}>\n <WizardHeader>Review</WizardHeader>\n </WizardStep>\n </WizardContent>\n <WizardFooter>\n <Button variant=\"secondary\">Cancel</Button>\n <Button variant=\"default\">Submit</Button>\n </WizardFooter>\n </WizardBody>\n </WizardLayout>\n </WizardRoot>\n );\n}\n```\n\n### Key rules\n\n- **WizardRoot** is the context provider — every other sub-component must be a descendant.\n- Use **useWizard()** for `goNext`, `goBack`, `isFirstStep`, `isLastStep` without prop drilling.\n- **WizardStep** renders nothing when `value` doesn't match the current step — use one per step.\n- **WizardMedia** renders a default SVG when neither `src` nor `children` are provided.\n- The sidebar is hidden below the `lg` breakpoint.\n- All sub-components except **WizardRoot** are optional — compose only what you need.\n---\n\n## 9. App layout (app shell)\n\n**Use `Layout`** for the app chrome — not `DynamicLayout` (that is a grid/flex/stack utility only).\n\nFull beginner scaffold: resource **`impact-nova://layout`**.\n\n### Structure\n\n```tsx\nimport { Layout } from 'impact-nova/layout';\nimport { Sidebar, SidebarProvider } from 'impact-nova/sidebar';\nimport { Header, HeaderLeft, HeaderTitle } from 'impact-nova/header';\nimport { BreadcrumbHeader, Breadcrumb, BreadcrumbList } from 'impact-nova/breadcrumb';\nimport { FilterStrip } from 'impact-nova/filter-strip';\n\n<SidebarProvider defaultOpen={false} id=\"app-sidebar\" className=\"flex h-svh min-h-0 w-full min-w-0 overflow-hidden\">\n <Layout\n sidebar={<Sidebar collapsible=\"offcanvas\">...</Sidebar>}\n header={<Header>...</Header>}\n >\n {/* Page content — Item Smart parity */}\n <PageShell>\n <PageStickyHeader pageTitle=\"...\" filterStrip={filtersApplied ? <FilterStrip ... /> : undefined} />\n {filtersApplied ? <WorkspaceBody /> : <EmptyStateView title=\"...\" primaryActionLabel=\"Select filter\" />}\n </PageShell>\n </Layout>\n</SidebarProvider>\n```\n\n### Key rules\n\n- **`SidebarProvider` at app root** — wraps `Layout`, not inside the sidebar slot.\n- **Page background** — `PageShell` → `bg-brand-subtle` (not `bg-canvas-wash` on module pages)\n- **Filter strip** — white sticky bar via `PageStickyHeader` `filterStrip` slot (`page-filter-strip` class)\n- **Tables** — `module-table-container mx-6 flex min-h-[480px] flex-1` → white `DataTable` card with shadow\n- **Subpath imports** — `impact-nova/layout`, `impact-nova/sidebar`, `impact-nova/header`, `impact-nova/breadcrumb`, `impact-nova/filter-strip`.\n- **With React Router** — put `<Outlet />` inside `Layout` children; route pages render breadcrumb + body.\n- **With Command Palette** — `CommandPaletteProvider` at root; `<CommandPalette />` as sibling inside `SidebarProvider`. See `impact-nova://command-palette`.\n\n### Premium primitives (shipped in create-impact-nova template)\n\n| Component | Role |\n|-----------|------|\n| `PageShell` | `bg-brand-subtle` + flex fill chain |\n| `PageStickyHeader` | Breadcrumb `z-30` + white filter strip slot |\n| `EmptyStateView` | Illustration + primary/secondary CTAs |\n| `SummaryMetricCard` | Dashboard KPI tiles (`border-[#C3C8D4]`, hover shadow) |\n| `module-table-container` | Table card shadow + `min-h-[480px] flex-1` fill |\n";
@@ -1 +1 @@
1
- export default "# Impact Nova — baseline\n\nUse **Impact Nova** design-system components and tokens. Prefer subpath imports (e.g. `impact-nova/button`) when you only need a few modules. For live component lists, specs, and codegen, use the **impact-nova-mcp** MCP server (see npm `impact-nova-mcp`). Browse **Storybook**: https://impact-nova.iaproducts.ai/\n\n## Peer dependency summary\n\n```json\n{\n \"impactNova\": {\n \"package\": \"impact-nova\",\n \"recommendedVersion\": \"^2.0.5\",\n \"description\": \"Design system package — ESM with 90+ subpath exports\"\n },\n \"createImpactNova\": {\n \"package\": \"create-impact-nova\",\n \"recommendedVersion\": \"^1.0.0\",\n \"description\": \"Vite + React scaffold with recipe-based modules\"\n },\n \"localDevelopment\": {\n \"defaultScaffoldDependency\": \"auto\",\n \"description\": \"create-impact-nova auto-detects: file: link when run inside the impact-nova monorepo; npm (^2.0.5) otherwise. CLI: --from-npm or --link-monorepo to override. Rebuild impact-nova (npm run build) after DS changes when using file: link.\",\n \"cliFlagForNpm\": \"--from-npm\",\n \"cliFlagForMonorepo\": \"--link-monorepo\",\n \"mcpScaffoldFlag\": \"usePublishedPackages: true | false (omit for auto-detect)\"\n },\n \"mandatoryRules\": {\n \"componentsOnly\": \"Use Impact Nova components only — never create new custom UI components\",\n \"tables\": \"Any table/grid/spreadsheet → DataTable from impact-nova/data-table (not HTML table, not raw ag-grid-react)\",\n \"validateBeforeDone\": \"Call validate_usage on generated UI code\",\n \"resource\": \"impact-nova://design-system-mandate\"\n },\n \"requiredPeers\": [\n {\n \"package\": \"react\",\n \"recommendedVersion\": \"^19.0.0\",\n \"description\": \"React 19 required\"\n },\n {\n \"package\": \"react-dom\",\n \"recommendedVersion\": \"^19.0.0\",\n \"description\": \"React DOM 19 required\"\n },\n {\n \"package\": \"impact-nova-icons\",\n \"recommendedVersion\": \"^0.1.1\",\n \"description\": \"Icons peer — not bundled in impact-nova\"\n }\n ],\n \"optionalPeers\": [\n {\n \"package\": \"ag-grid-react\",\n \"recommendedVersion\": \"35.0.1\",\n \"description\": \"For DataTable and grid components; use exact version to match Impact Nova\"\n },\n {\n \"package\": \"ag-grid-enterprise\",\n \"recommendedVersion\": \"35.0.1\",\n \"description\": \"Required if using ag-grid-react with enterprise features\"\n },\n {\n \"package\": \"highcharts\",\n \"recommendedVersion\": \"^12.0.0\",\n \"description\": \"For Chart component\"\n },\n {\n \"package\": \"highcharts-react-official\",\n \"recommendedVersion\": \"^3.0.0\",\n \"description\": \"For Chart component\"\n },\n {\n \"package\": \"highcharts-border-radius\",\n \"recommendedVersion\": \"^0.0.4\",\n \"description\": \"Optional Highcharts plugin for rounded corners\"\n },\n {\n \"package\": \"@tanstack/react-table\",\n \"recommendedVersion\": \"^8.20.0\",\n \"description\": \"Optional table utilities\"\n }\n ]\n}\n```\n";
1
+ export default "# Impact Nova — baseline\n\nUse **Impact Nova** design-system components and tokens. Prefer subpath imports (e.g. `impact-nova/button`) when you only need a few modules. For live component lists, specs, and codegen, use the **impact-nova-mcp** MCP server (see npm `impact-nova-mcp`). Browse **Storybook**: https://impact-nova.iaproducts.ai/\n\n## Peer dependency summary\n\n```json\n{\n \"impactNova\": {\n \"package\": \"impact-nova\",\n \"recommendedVersion\": \"2.1.0-alpha.7\",\n \"recommendedDistTag\": \"alpha\",\n \"description\": \"Design system package — ESM with 90+ subpath exports. Install: npm install impact-nova@alpha\"\n },\n \"createImpactNova\": {\n \"package\": \"create-impact-nova\",\n \"recommendedVersion\": \"^1.2.0\",\n \"description\": \"Vite + React scaffold with recipe-based modules\"\n },\n \"localDevelopment\": {\n \"defaultScaffoldDependency\": \"auto\",\n \"description\": \"create-impact-nova auto-detects: file: link when run inside the impact-nova monorepo; npm (impact-nova@alpha / ^2.1.0-alpha.7) otherwise. CLI: --from-npm or --link-monorepo to override. Rebuild impact-nova (npm run build) after DS changes when using file: link.\",\n \"cliFlagForNpm\": \"--from-npm\",\n \"cliFlagForMonorepo\": \"--link-monorepo\",\n \"mcpScaffoldFlag\": \"usePublishedPackages: true | false (omit for auto-detect)\"\n },\n \"mandatoryRules\": {\n \"componentsOnly\": \"Use Impact Nova components only — never create new custom UI components\",\n \"tables\": \"Any table/grid/spreadsheet → DataTable from impact-nova/data-table (not HTML table, not raw ag-grid-react)\",\n \"validateBeforeDone\": \"Call validate_snippet on generated UI code\",\n \"resource\": \"impact-nova://design-system-mandate\"\n },\n \"requiredPeers\": [\n {\n \"package\": \"react\",\n \"recommendedVersion\": \"^19.0.0\",\n \"description\": \"React 19 required\"\n },\n {\n \"package\": \"react-dom\",\n \"recommendedVersion\": \"^19.0.0\",\n \"description\": \"React DOM 19 required\"\n },\n {\n \"package\": \"impact-nova-icons\",\n \"recommendedVersion\": \"^0.1.1\",\n \"description\": \"Icons peer — not bundled in impact-nova\"\n }\n ],\n \"optionalPeers\": [\n {\n \"package\": \"ag-grid-community\",\n \"recommendedVersion\": \"36.0.1\",\n \"description\": \"AG Grid community types/API; pin to the same version as ag-grid-react\"\n },\n {\n \"package\": \"ag-grid-react\",\n \"recommendedVersion\": \"36.0.1\",\n \"description\": \"For DataTable and grid components; use exact version to match Impact Nova\"\n },\n {\n \"package\": \"ag-grid-enterprise\",\n \"recommendedVersion\": \"36.0.1\",\n \"description\": \"Required if using ag-grid-react with enterprise features\"\n },\n {\n \"package\": \"highcharts\",\n \"recommendedVersion\": \"^12.0.0\",\n \"description\": \"For Chart component\"\n },\n {\n \"package\": \"highcharts-react-official\",\n \"recommendedVersion\": \"^3.0.0\",\n \"description\": \"For Chart component\"\n },\n {\n \"package\": \"highcharts-border-radius\",\n \"recommendedVersion\": \"^0.0.4\",\n \"description\": \"Optional Highcharts plugin for rounded corners\"\n }\n ]\n}\n```\n";
@@ -1 +1 @@
1
- export default "# Impact Nova — Troubleshooting\n\nCommon setup and runtime issues when using Impact Nova, and how to fix them.\n\n---\n\n## 1. Duplicate React or AG Grid (Vite)\n\n**Symptom:** \"Invalid hook call\", \"Multiple copies of React\", or AG Grid warnings about multiple instances.\n\n**Fix:** In Vite config, add `resolve.dedupe` so the app uses a single copy of React and AG Grid:\n\n```js\n// vite.config.js / vite.config.ts\nimport { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\n\nexport default defineConfig({\n plugins: [react()],\n resolve: {\n dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react'],\n },\n});\n```\n\n---\n\n## 2. Styles not applying\n\n**Symptom:** Components render but look unstyled or wrong.\n\n**Fix:**\n\n- Import Impact Nova CSS **once** at the app root, **before** your app component: \n `import 'impact-nova/dist/impact-nova.css';` \n Or, if you use **CSS or SCSS (no Tailwind)**, you can `@import 'impact-nova/dist/impact-nova.css';` in your main.css or main.scss. See installation **§5. Using Impact Nova with CSS or SCSS (no Tailwind)**.\n- Ensure your build includes the CSS (no rule excluding `node_modules/impact-nova`).\n- If using Tailwind, ensure the design system tokens aren’t overridden by a conflicting Tailwind theme.\n\n---\n\n## 3. Font (Manrope) not loading\n\n**Symptom:** Text renders in fallback font.\n\n**Fix:**\n\n- Add the Manrope link in `index.html`: \n `<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\" rel=\"stylesheet\" />`\n- In global CSS or Tailwind base: \n `body { font-family: 'Manrope', sans-serif; }`\n\n---\n\n## 4. Chart component not found or wrong export\n\n**Symptom:** `import { Chart } from 'impact-nova'` fails, Chart doesn't render, or dev throws:\n\n`The requested module '.../highcharts-react-official/dist/highcharts-react.min.js' does not provide an export named 'default'`\n\n**Fix:**\n\n- Use the public subpath: `import { Chart } from 'impact-nova/chart';`\n- Ensure Highcharts is installed: `npm install highcharts@^12 highcharts-react-official@^3`\n- In Vite, add `highcharts-react-official` to `optimizeDeps.include` (the `create-impact-nova` template includes it in `HIGHCHARTS_OPTIMIZE_DEPENDENCIES`). Clear `.vite` cache and restart dev after changing config.\n\n---\n\n## 5. impact-nova-icons SVG warnings in Vite dev\n\n**Symptom:** Hundreds of \"Failed to resolve import\" warnings for `.svg` files from `impact-nova-icons` on dev startup.\n\n**Fix:** Exclude icons from dependency pre-bundling:\n\n```js\noptimizeDeps: {\n exclude: ['impact-nova-icons'],\n},\n```\n\nIf using Module Federation, add an asset URL rewrite plugin for `impact-nova-icons/dist/assets/*2.svg.js` shims.\n\n---\n\n## 6. React 19 — \"Cannot access refs during render\"\n\n**Symptom:** React 19 error about updating or reading refs during render.\n\n**Fix:** Never assign to `ref.current` during render. Use refs only in event handlers, effects, or callbacks. Prefer deriving values during render instead of mirroring props into refs.\n\n---\n\n## 7. HorizontalScroller or other subpath missing\n\n**Symptom:** Import from `impact-nova/horizontal-scroller` (or similar) fails.\n\n**Fix:**\n\n- If the package doesn’t export that subpath, add a Vite alias to the component file and a small TypeScript declaration:\n\n```js\n// vite.config\nresolve: {\n alias: {\n 'impact-nova/horizontal-scroller': resolve(__dirname, 'node_modules/impact-nova/dist/components/ui/horizontal-scroller/horizontal-scroller.js'),\n },\n},\n```\n\n```ts\n// declare module 'impact-nova/horizontal-scroller'\ndeclare module 'impact-nova/horizontal-scroller' {\n const Component: React.ComponentType<{ /* props */ }>;\n export default Component;\n}\n```\n\n---\n\n## 8. AG Grid CSS not applied (legacy container conflict)\n\n**Symptom:** AG Grid in a micro-frontend (MFE) looks wrong or unstyled; the new AG Grid theme is not applied.\n\n**Cause:** The **container** (host app) is loading legacy AG Grid CSS. Those legacy style tags conflict with the new theme, so the MFE’s AG Grid doesn’t get the correct styles.\n\n**Fix:** Apply the fix in the **container** app, not in the MFE/remote repo. In the container, when you mount the remote (e.g. in a `useEffect`), remove the legacy AG Grid style tags from the document so the new theme can apply. Example:\n\n```tsx\n// In the CONTAINER app (not in the MFE repo)\nuseEffect(() => {\n const { onParentNavigate } = mount(ref.current, {\n initialPath: history.location.pathname,\n onNavigate: ({ pathname: nextPathname }) => {\n const { pathname } = history.location;\n if (pathname !== nextPathname) {\n history.push(nextPathname);\n }\n },\n containerStore,\n routes,\n defaultHistory: history,\n });\n\n history.listen(onParentNavigate);\n\n const removeAgGridStyles = () => {\n const styleTags = document.querySelectorAll('style');\n styleTags.forEach((styleTag) => {\n const content = styleTag.textContent || styleTag.innerHTML || '';\n // Legacy AG Grid styles (--ag-legacy-styles-loaded + .ag-icon)\n const isLegacyStyles =\n content.includes('--ag-legacy-styles-loaded') && content.includes('.ag-icon');\n // Generic AG Grid selectors that override the new theme\n const hasAgGridSelectors =\n content.includes('ag-grid,ag-grid-angular') ||\n content.includes('ag-grid, ag-grid-angular') ||\n content.includes('ag-grid-ng2') ||\n content.includes('ag-grid-polymer') ||\n content.includes('ag-grid-aurelia');\n if (isLegacyStyles || hasAgGridSelectors) {\n styleTag.remove();\n }\n });\n };\n\n removeAgGridStyles();\n\n const domNode = document.getElementById('itemsmart-remote'); // or your remote mount node id\n return () => {\n unmountComponentAtNode(domNode);\n };\n}, []);\n```\n\nAdjust `mount`, `ref`, `history`, `containerStore`, `routes`, and the mount node id to match your container’s setup. The important part is calling `removeAgGridStyles()` so legacy AG Grid `<style>` tags are removed and the new theme can apply.\n\n---\n\n## 9. AG Grid license or enterprise features\n\n**Symptom:** AG Grid shows watermark or enterprise features don’t work.\n\n**Fix:** Set the license key once (e.g. in root or layout):\n\n```ts\nimport { LicenseManager } from 'ag-grid-enterprise';\n\nLicenseManager.setLicenseKey('your-license-key');\n```\n\n---\n\n## 10. i18n / locale not applied\n\n**Symptom:** Date pickers, selects, or other components show wrong locale or default English.\n\n**Fix:** Wrap the app with `ImpactNovaI18nProvider` and pass the correct `locale` (and optional `messages`):\n\n```tsx\nimport { ImpactNovaI18nProvider } from 'impact-nova';\n\n<ImpactNovaI18nProvider locale=\"de\">\n <App />\n</ImpactNovaI18nProvider>\n```\n\n---\n\n## 11. React 19 compatibility\n\n**Symptom:** Peer dependency warnings or runtime errors after adding Impact Nova.\n\n**Fix:** Impact Nova targets React 19. Upgrade React and React DOM:\n\n```bash\nnpm install react@^19 react-dom@^19\n```\n\nUse `analyze_project_for_impact_nova` with your `package.json` content to get exact recommended versions and install commands.\n\n---\n\nUse `get_installation_and_config` for full setup steps and `impact-nova://install` for the installation resource.\n";
1
+ export default "# Impact Nova — Troubleshooting\n\nCommon setup and runtime issues when using Impact Nova, and how to fix them.\n\n---\n\n## 1. Duplicate React or AG Grid (Vite)\n\n**Symptom:** \"Invalid hook call\", \"Multiple copies of React\", or AG Grid warnings about multiple instances.\n\n**Fix:** In Vite config, add `resolve.dedupe` so the app uses a single copy of React and AG Grid:\n\n```js\n// vite.config.js / vite.config.ts\nimport { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\n\nexport default defineConfig({\n plugins: [react()],\n resolve: {\n dedupe: ['react', 'react-dom', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-react'],\n },\n});\n```\n\n---\n\n## 2. Styles not applying\n\n**Symptom:** Components render but look unstyled or wrong.\n\n**Fix:**\n\n- Import Impact Nova CSS **once** at the app root, **before** your app component: \n `import 'impact-nova/dist/impact-nova.css';` \n Or, if you use **CSS or SCSS (no Tailwind)**, you can `@import 'impact-nova/dist/impact-nova.css';` in your main.css or main.scss. See installation **§5. Using Impact Nova with CSS or SCSS (no Tailwind)**.\n- Ensure your build includes the CSS (no rule excluding `node_modules/impact-nova`).\n- If using Tailwind, ensure the design system tokens aren’t overridden by a conflicting Tailwind theme.\n\n---\n\n## 3. Font (Manrope) not loading\n\n**Symptom:** Text renders in fallback font.\n\n**Fix:**\n\n- Add the Manrope link in `index.html`: \n `<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\" rel=\"stylesheet\" />`\n- In global CSS or Tailwind base: \n `body { font-family: 'Manrope', sans-serif; }`\n\n---\n\n## 4. Chart component not found or wrong export\n\n**Symptom:** `import { Chart } from 'impact-nova'` fails, Chart doesn't render, or dev throws:\n\n`The requested module '.../highcharts-react-official/dist/highcharts-react.min.js' does not provide an export named 'default'`\n\n**Fix:**\n\n- Use the public subpath: `import { Chart } from 'impact-nova/chart';`\n- Ensure Highcharts is installed: `npm install highcharts@^12 highcharts-react-official@^3`\n- In Vite, add `highcharts-react-official` to `optimizeDeps.include` (the `create-impact-nova` template includes it in `HIGHCHARTS_OPTIMIZE_DEPENDENCIES`). Clear `.vite` cache and restart dev after changing config.\n\n---\n\n## 5. impact-nova-icons SVG warnings in Vite dev\n\n**Symptom:** Hundreds of \"Failed to resolve import\" warnings for `.svg` files from `impact-nova-icons` on dev startup.\n\n**Fix:** Exclude icons from dependency pre-bundling:\n\n```js\noptimizeDeps: {\n exclude: ['impact-nova-icons'],\n},\n```\n\nIf using Module Federation, add an asset URL rewrite plugin for `impact-nova-icons/dist/assets/*2.svg.js` shims.\n\n---\n\n## 6. React 19 — \"Cannot access refs during render\"\n\n**Symptom:** React 19 error about updating or reading refs during render.\n\n**Fix:** Never assign to `ref.current` during render. Use refs only in event handlers, effects, or callbacks. Prefer deriving values during render instead of mirroring props into refs.\n\n---\n\n## 7. HorizontalScroller or other subpath missing\n\n**Symptom:** Import from `impact-nova/horizontal-scroller` (or similar) fails.\n\n**Fix:**\n\n- If the package doesn’t export that subpath, add a Vite alias to the component file and a small TypeScript declaration:\n\n```js\n// vite.config\nresolve: {\n alias: {\n 'impact-nova/horizontal-scroller': resolve(__dirname, 'node_modules/impact-nova/dist/components/ui/horizontal-scroller/horizontal-scroller.js'),\n },\n},\n```\n\n```ts\n// declare module 'impact-nova/horizontal-scroller'\ndeclare module 'impact-nova/horizontal-scroller' {\n const Component: React.ComponentType<{ /* props */ }>;\n export default Component;\n}\n```\n\n---\n\n## 8. AG Grid CSS not applied (legacy container conflict)\n\n**Symptom:** AG Grid in a micro-frontend (MFE) looks wrong or unstyled; the new AG Grid theme is not applied.\n\n**Cause:** The **container** (host app) is loading legacy AG Grid CSS. Those legacy style tags conflict with the new theme, so the MFE’s AG Grid doesn’t get the correct styles.\n\n**Fix:** Apply the fix in the **container** app, not in the MFE/remote repo. In the container, when you mount the remote (e.g. in a `useEffect`), remove the legacy AG Grid style tags from the document so the new theme can apply. Example:\n\n```tsx\n// In the CONTAINER app (not in the MFE repo)\nuseEffect(() => {\n const { onParentNavigate } = mount(ref.current, {\n initialPath: history.location.pathname,\n onNavigate: ({ pathname: nextPathname }) => {\n const { pathname } = history.location;\n if (pathname !== nextPathname) {\n history.push(nextPathname);\n }\n },\n containerStore,\n routes,\n defaultHistory: history,\n });\n\n history.listen(onParentNavigate);\n\n const removeAgGridStyles = () => {\n const styleTags = document.querySelectorAll('style');\n styleTags.forEach((styleTag) => {\n const content = styleTag.textContent || styleTag.innerHTML || '';\n // Legacy AG Grid styles (--ag-legacy-styles-loaded + .ag-icon)\n const isLegacyStyles =\n content.includes('--ag-legacy-styles-loaded') && content.includes('.ag-icon');\n // Generic AG Grid selectors that override the new theme\n const hasAgGridSelectors =\n content.includes('ag-grid,ag-grid-angular') ||\n content.includes('ag-grid, ag-grid-angular') ||\n content.includes('ag-grid-ng2') ||\n content.includes('ag-grid-polymer') ||\n content.includes('ag-grid-aurelia');\n if (isLegacyStyles || hasAgGridSelectors) {\n styleTag.remove();\n }\n });\n };\n\n removeAgGridStyles();\n\n const domNode = document.getElementById('itemsmart-remote'); // or your remote mount node id\n return () => {\n unmountComponentAtNode(domNode);\n };\n}, []);\n```\n\nAdjust `mount`, `ref`, `history`, `containerStore`, `routes`, and the mount node id to match your container’s setup. The important part is calling `removeAgGridStyles()` so legacy AG Grid `<style>` tags are removed and the new theme can apply.\n\n---\n\n## 9. AG Grid license or enterprise features\n\n**Symptom:** AG Grid shows watermark or enterprise features don’t work.\n\n**Fix:** Set the license key once (e.g. in root or layout):\n\n```ts\nimport { LicenseManager } from 'ag-grid-enterprise';\n\nLicenseManager.setLicenseKey('your-license-key');\n```\n\n---\n\n## 10. i18n / locale not applied\n\n**Symptom:** Date pickers, selects, or other components show wrong locale or default English.\n\n**Fix:** Wrap the app with `ImpactNovaProviders` from `impact-nova/form` and pass the correct `locale` (and optional `messages`):\n\n```tsx\nimport { ImpactNovaProviders } from 'impact-nova/form';\nimport { de } from 'impact-nova/locale/de';\n\n<ImpactNovaProviders locale=\"de\" messages={de}>\n <App />\n</ImpactNovaProviders>\n```\n\n---\n\n## 11. React 19 compatibility\n\n**Symptom:** Peer dependency warnings or runtime errors after adding Impact Nova.\n\n**Fix:** Impact Nova targets React 19. Upgrade React and React DOM:\n\n```bash\nnpm install react@^19 react-dom@^19\n```\n\nUse `analyze_project_for_impact_nova` with your `package.json` content to get exact recommended versions and install commands.\n\n---\n\nUse `get_installation_and_config` for full setup steps and `impact-nova://install` for the installation resource.\n";
@@ -0,0 +1,13 @@
1
+ import { ImpactNovaMessages } from '../i18n/defaultMessages';
2
+ import * as React from "react";
3
+ export interface ImpactNovaProvidersProps {
4
+ children: React.ReactNode;
5
+ /** TooltipProvider delay (ms). */
6
+ tooltipDelayDuration?: number;
7
+ locale?: string;
8
+ messages?: ImpactNovaMessages;
9
+ }
10
+ /**
11
+ * App-level Impact Nova providers — mount once at root (Next.js `app/providers.tsx`).
12
+ */
13
+ export declare function ImpactNovaProviders({ children, tooltipDelayDuration, locale, messages, }: ImpactNovaProvidersProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import "react";
3
+ import { ImpactNovaI18nProvider as m } from "../i18n/impact-nova-i18n-context.js";
4
+ import { defaultMessages as p } from "../i18n/defaultMessages.js";
5
+ import { TooltipProvider as a } from "../components/feedback/tooltip/tooltip.js";
6
+ function c({
7
+ children: o,
8
+ tooltipDelayDuration: t = 200,
9
+ locale: i = "en",
10
+ messages: e = p
11
+ }) {
12
+ return /* @__PURE__ */ r(m, { locale: i, messages: e, children: /* @__PURE__ */ r(a, { delayDuration: t, children: o }) });
13
+ }
14
+ export {
15
+ c as ImpactNovaProviders
16
+ };
@@ -0,0 +1,320 @@
1
+ /** Published Tailwind preset — generated by scripts/build-tailwind-preset.mjs. Do not edit. */
2
+ // tailwind.config.js
3
+ import { dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import tailwindcssAnimate from "tailwindcss-animate";
6
+ import tailwindPlugin from "tailwindcss/plugin.js";
7
+
8
+ // src/theme/generated/tailwind-colors.js
9
+ var cssVar = (name) => `var(${name})`;
10
+ var generatedColors = {
11
+ canvas: {
12
+ DEFAULT: cssVar("--color-background"),
13
+ elevated: {
14
+ DEFAULT: cssVar("--color-surface-elevated"),
15
+ foreground: cssVar("--color-surface-elevated-foreground")
16
+ },
17
+ overlay: {
18
+ DEFAULT: cssVar("--color-surface-floating"),
19
+ foreground: cssVar("--color-surface-floating-foreground")
20
+ },
21
+ muted: cssVar("--color-surface-muted"),
22
+ wash: cssVar("--color-surface-canvas"),
23
+ disabled: cssVar("--color-surface-input-disabled"),
24
+ readonly: cssVar("--color-surface-readonly"),
25
+ accent: cssVar("--color-surface-selection-tint"),
26
+ subtle: cssVar("--color-surface-subtle"),
27
+ tint: cssVar("--color-surface-tint-blue"),
28
+ accordion: cssVar("--color-surface-accordion")
29
+ },
30
+ content: {
31
+ DEFAULT: cssVar("--color-foreground"),
32
+ secondary: cssVar("--color-foreground-secondary"),
33
+ tertiary: cssVar("--color-foreground-tertiary"),
34
+ placeholder: cssVar("--color-foreground-placeholder"),
35
+ empty: cssVar("--color-foreground-empty"),
36
+ muted: cssVar("--color-muted-foreground"),
37
+ icon: cssVar("--color-foreground-icon"),
38
+ "header-notification": cssVar("--color-header-notification-icon"),
39
+ charcoal: cssVar("--color-neutral-charcoal"),
40
+ title: cssVar("--color-foreground-title"),
41
+ badge: cssVar("--color-neutral-badge"),
42
+ heading: cssVar("--color-header-notification-icon"),
43
+ subheading: cssVar("--color-secondary")
44
+ },
45
+ brand: {
46
+ DEFAULT: cssVar("--color-primary"),
47
+ foreground: cssVar("--color-primary-foreground"),
48
+ strong: cssVar("--color-primary-strong"),
49
+ hover: cssVar("--color-primary-hover"),
50
+ subtle: cssVar("--color-primary-surface-subtle"),
51
+ "on-subtle": cssVar("--color-primary-on-surface-subtle"),
52
+ highlight: cssVar("--color-primary-selection"),
53
+ tint: cssVar("--color-primary-soft"),
54
+ "tint-hover": cssVar("--color-primary-soft-hover"),
55
+ variant: cssVar("--color-primary-variant"),
56
+ "variant-hover": cssVar("--color-primary-variant-hover")
57
+ },
58
+ secondary: {
59
+ DEFAULT: cssVar("--color-secondary"),
60
+ foreground: cssVar("--color-secondary-foreground"),
61
+ "hover-foreground": cssVar("--color-secondary-hover-foreground")
62
+ },
63
+ accent: {
64
+ DEFAULT: cssVar("--color-accent"),
65
+ foreground: cssVar("--color-accent-foreground")
66
+ },
67
+ muted: cssVar("--color-muted"),
68
+ stroke: {
69
+ DEFAULT: cssVar("--color-border"),
70
+ subtle: cssVar("--color-border-subtle"),
71
+ hairline: cssVar("--color-border-hairline"),
72
+ strong: cssVar("--color-border-strong"),
73
+ accent: cssVar("--color-border-accent-muted"),
74
+ track: cssVar("--color-track-muted"),
75
+ field: cssVar("--color-border-tertiary")
76
+ },
77
+ field: {
78
+ border: cssVar("--color-input")
79
+ },
80
+ focus: {
81
+ ring: cssVar("--color-ring")
82
+ },
83
+ disabled: {
84
+ border: cssVar("--color-disabled-border"),
85
+ surface: cssVar("--color-disabled-surface"),
86
+ foreground: cssVar("--color-disabled-foreground")
87
+ },
88
+ validation: cssVar("--color-danger-validation"),
89
+ destructive: {
90
+ DEFAULT: cssVar("--color-destructive"),
91
+ foreground: cssVar("--color-destructive-foreground"),
92
+ hover: cssVar("--color-destructive-hover")
93
+ },
94
+ success: {
95
+ DEFAULT: cssVar("--color-success"),
96
+ foreground: cssVar("--color-success-foreground")
97
+ },
98
+ warning: cssVar("--color-warning"),
99
+ danger: cssVar("--color-danger-bright"),
100
+ button: {
101
+ "primary-disabled": cssVar("--color-button-primary-disabled")
102
+ },
103
+ badge: {
104
+ neutral: {
105
+ muted: cssVar("--color-badge-neutral-muted")
106
+ },
107
+ info: {
108
+ filled: cssVar("--color-badge-info-filled"),
109
+ muted: cssVar("--color-badge-info-muted")
110
+ },
111
+ warning: {
112
+ filled: cssVar("--color-badge-warning-filled"),
113
+ muted: cssVar("--color-badge-warning-muted"),
114
+ ink: cssVar("--color-badge-warning-text")
115
+ },
116
+ error: {
117
+ filled: cssVar("--color-badge-error-filled"),
118
+ muted: cssVar("--color-badge-error-muted"),
119
+ ink: cssVar("--color-badge-error-text")
120
+ },
121
+ success: {
122
+ filled: cssVar("--color-badge-success-filled"),
123
+ muted: cssVar("--color-badge-success-muted"),
124
+ ink: cssVar("--color-badge-success-text")
125
+ }
126
+ },
127
+ feedback: {
128
+ info: {
129
+ surface: cssVar("--color-info-surface"),
130
+ border: cssVar("--color-info-border")
131
+ },
132
+ warning: {
133
+ surface: cssVar("--color-warning-surface"),
134
+ border: cssVar("--color-warning-border")
135
+ },
136
+ error: {
137
+ surface: cssVar("--color-error-surface"),
138
+ border: cssVar("--color-error-border")
139
+ },
140
+ success: {
141
+ surface: cssVar("--color-success-surface"),
142
+ border: cssVar("--color-success-border")
143
+ }
144
+ },
145
+ chart: {
146
+ "1": cssVar("--color-chart-1"),
147
+ "2": cssVar("--color-chart-2"),
148
+ "3": cssVar("--color-chart-3"),
149
+ "4": cssVar("--color-chart-4"),
150
+ "5": cssVar("--color-chart-5")
151
+ },
152
+ domain: {
153
+ cohort: cssVar("--color-data-cohort")
154
+ },
155
+ indicator: {
156
+ sort: cssVar("--color-indicator-sort"),
157
+ filter: cssVar("--color-indicator-filter")
158
+ },
159
+ pinSwitch: {
160
+ "label-active": cssVar("--color-pin-switch-label-active"),
161
+ "label-inactive": cssVar("--color-pin-switch-label-inactive"),
162
+ "track-bg": cssVar("--color-pin-switch-track-bg"),
163
+ "track-border": cssVar("--color-pin-switch-track-border"),
164
+ "track-hover": cssVar("--color-pin-switch-track-hover")
165
+ },
166
+ scrim: cssVar("--color-scrim"),
167
+ "scrim-deep": cssVar("--color-scrim-deep"),
168
+ "scrim-light": cssVar("--color-scrim-light"),
169
+ "scrim-skeleton": cssVar("--color-scrim-skeleton"),
170
+ "scrim-hover": cssVar("--color-scrim-hover"),
171
+ navigation: {
172
+ DEFAULT: cssVar("--color-sidebar-background"),
173
+ foreground: cssVar("--color-sidebar-foreground"),
174
+ surface: cssVar("--color-sidebar-surface"),
175
+ "on-surface": cssVar("--color-sidebar-on-surface"),
176
+ hover: cssVar("--color-sidebar-hover"),
177
+ "on-hover": cssVar("--color-sidebar-on-hover"),
178
+ border: cssVar("--color-sidebar-border"),
179
+ ring: cssVar("--color-sidebar-ring"),
180
+ indicator: cssVar("--color-sidebar-indicator"),
181
+ "item-hover": cssVar("--color-sidebar-item-hover"),
182
+ "item-active": cssVar("--color-sidebar-item-active"),
183
+ muted: cssVar("--color-sidebar-foreground-muted"),
184
+ canvas: cssVar("--color-sidebar-canvas")
185
+ },
186
+ background: {
187
+ DEFAULT: cssVar("--color-background"),
188
+ foreground: cssVar("--color-foreground")
189
+ }
190
+ };
191
+ var generatedBoxShadow = {
192
+ "alert-elevated": "var(--shadow-alert-elevated)",
193
+ "elevation-card": "var(--shadow-elevation-card)",
194
+ "elevation-dialog-footer": "var(--shadow-elevation-dialog-footer)",
195
+ "elevation-floating": "var(--shadow-elevation-floating)",
196
+ "elevation-header": "var(--shadow-elevation-header)",
197
+ "elevation-kbd-dark": "var(--shadow-elevation-kbd-dark)",
198
+ "elevation-menu-ag-grid": "var(--shadow-elevation-menu-ag-grid)",
199
+ "elevation-pin-switch": "var(--shadow-elevation-pin-switch)",
200
+ "elevation-select": "var(--shadow-elevation-select)",
201
+ "elevation-settings": "var(--shadow-elevation-settings)",
202
+ "elevation-toast": "var(--shadow-elevation-toast)",
203
+ "elevation-wizard-footer": "var(--shadow-elevation-wizard-footer)",
204
+ "file-upload-drag": "var(--shadow-file-upload-drag)",
205
+ "file-upload-error": "var(--shadow-file-upload-error)"
206
+ };
207
+
208
+ // tailwind.config.js
209
+ var scrollbarUtilities = tailwindPlugin(({ addUtilities }) => {
210
+ addUtilities({
211
+ ".scrollbar-hide": {
212
+ "-ms-overflow-style": "none",
213
+ "scrollbar-width": "none"
214
+ },
215
+ ".scrollbar-hide::-webkit-scrollbar": {
216
+ display: "none"
217
+ }
218
+ });
219
+ });
220
+ var baseConfig = {
221
+ darkMode: ["class"],
222
+ content: [
223
+ "./index.html",
224
+ "./src/**/*.{js,ts,jsx,tsx}",
225
+ "./src/components/ui/**/*.{js,ts,jsx,tsx}",
226
+ "./src/components/ui/stories/**/*.{js,ts,jsx,tsx}",
227
+ "./.storybook/**/*.{js,ts,jsx,tsx,mdx}"
228
+ ],
229
+ theme: {
230
+ colors: {
231
+ transparent: "transparent",
232
+ current: "currentColor",
233
+ inherit: "inherit",
234
+ ...generatedColors
235
+ },
236
+ extend: {
237
+ fontFamily: {
238
+ sans: ["Manrope", "sans-serif"]
239
+ },
240
+ borderRadius: {
241
+ lg: "calc(var(--radius) + 4px)",
242
+ md: "var(--radius)",
243
+ sm: "calc(var(--radius) - 4px)"
244
+ },
245
+ backgroundImage: {
246
+ "file-upload-drag": "var(--gradient-file-upload-drag)",
247
+ "file-upload-error": "var(--gradient-file-upload-error)"
248
+ },
249
+ boxShadow: generatedBoxShadow,
250
+ keyframes: {
251
+ "accordion-down": {
252
+ from: { height: "0" },
253
+ to: { height: "var(--radix-accordion-content-height)" }
254
+ },
255
+ "accordion-up": {
256
+ from: { height: "var(--radix-accordion-content-height)" },
257
+ to: { height: "0" }
258
+ },
259
+ "collapsible-down": {
260
+ from: { height: "0" },
261
+ to: { height: "var(--radix-collapsible-content-height)" }
262
+ },
263
+ "collapsible-up": {
264
+ from: { height: "var(--radix-collapsible-content-height)" },
265
+ to: { height: "0" }
266
+ },
267
+ "header-bot-gradient": {
268
+ "0%": { backgroundPosition: "0% 50%" },
269
+ "50%": { backgroundPosition: "100% 50%" },
270
+ "100%": { backgroundPosition: "0% 50%" }
271
+ },
272
+ "notification-waves": {
273
+ "0%": { width: "8px", height: "8px" },
274
+ "100%": { width: "16px", height: "16px" }
275
+ }
276
+ },
277
+ animation: {
278
+ "accordion-down": "accordion-down 0.2s ease-out",
279
+ "accordion-up": "accordion-up 0.2s ease-out",
280
+ "collapsible-down": "collapsible-down 0.2s ease-out",
281
+ "collapsible-up": "collapsible-up 0.2s ease-out",
282
+ "header-bot-gradient": "header-bot-gradient 5s ease infinite",
283
+ "header-bot-gradient-fast": "header-bot-gradient 2s ease infinite",
284
+ "notification-waves": "notification-waves 1.5s ease-out infinite"
285
+ }
286
+ }
287
+ },
288
+ plugins: [tailwindcssAnimate, scrollbarUtilities]
289
+ };
290
+ var tailwind_config_default = baseConfig;
291
+ function getImpactNovaContentGlob() {
292
+ const configDirectory = dirname(fileURLToPath(import.meta.url)).replace(
293
+ /\\/g,
294
+ "/"
295
+ );
296
+ if (configDirectory.endsWith("/dist")) {
297
+ return `${configDirectory}/**/*.{js,ts,jsx,tsx}`;
298
+ }
299
+ return `${configDirectory}/dist/**/*.{js,ts,jsx,tsx}`;
300
+ }
301
+ function createTailwindConfig(contentPaths) {
302
+ return {
303
+ ...baseConfig,
304
+ content: contentPaths
305
+ };
306
+ }
307
+ function createAppTailwindConfig(appRootDir, appContentPaths) {
308
+ const impactNovaSourceGlob = `${appRootDir.replace(/\\/g, "/")}/../impact-nova/src/**/*.{js,ts,jsx,tsx}`;
309
+ return createTailwindConfig([
310
+ ...appContentPaths,
311
+ impactNovaSourceGlob,
312
+ getImpactNovaContentGlob()
313
+ ]);
314
+ }
315
+ export {
316
+ createAppTailwindConfig,
317
+ createTailwindConfig,
318
+ tailwind_config_default as default,
319
+ getImpactNovaContentGlob
320
+ };