impact-nova 2.6.0-alpha.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -27
- package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +3 -28
- package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.d.ts +3 -0
- package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +38 -31
- package/dist/components/data/ag-grid-react/cell-renderers/input-display-renderer.d.ts +1 -1
- package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +65 -75
- package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.d.ts +1 -1
- package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +54 -54
- package/dist/components/data/ag-grid-react/headers/components/date-filter-picker.d.ts +1 -1
- package/dist/components/data/ag-grid-react/headers/components/header-info.d.ts +9 -3
- package/dist/components/data/ag-grid-react/headers/components/header-info.js +69 -61
- package/dist/components/data/ag-grid-react/headers/components/info-modal.js +8 -8
- package/dist/components/data/ag-grid-react/headers/header-search-input.js +119 -122
- package/dist/components/data/ag-grid-react/headers/utils/date-utils.d.ts +1 -2
- package/dist/components/data/ag-grid-react/headers/utils/date-utils.js +20 -25
- package/dist/components/data/ag-grid-react/headers/utils/filter-utils.d.ts +1 -1
- package/dist/components/data/ag-grid-react/index.d.ts +1 -1
- package/dist/components/data/ag-grid-react/index.js +254 -481
- package/dist/components/data/ag-grid-react/theme.js +2 -6
- package/dist/components/data/ag-grid-react/value-formatter.types.d.ts +0 -4
- package/dist/components/data/ag-grid-react/value-formatters.d.ts +19 -0
- package/dist/components/data/ag-grid-react/value-formatters.js +90 -88
- package/dist/components/data/data-table/build-column-tree-from-grid.d.ts +2 -0
- package/dist/components/data/data-table/build-column-tree-from-grid.js +64 -58
- package/dist/components/data/data-table/column-picker-authority.d.ts +35 -0
- package/dist/components/data/data-table/column-picker-authority.js +118 -0
- package/dist/components/data/data-table/column-picker-drop-validation.d.ts +7 -0
- package/dist/components/data/data-table/column-picker-drop-validation.js +37 -0
- package/dist/components/data/data-table/column-savability.d.ts +3 -0
- package/dist/components/data/data-table/column-savability.js +10 -0
- package/dist/components/data/data-table/data-table-column-apply.d.ts +2 -0
- package/dist/components/data/data-table/data-table-column-apply.js +84 -73
- package/dist/components/data/data-table/data-table-column-def-pin.js +31 -34
- package/dist/components/data/data-table/data-table-column-list-tree-apply.d.ts +10 -0
- package/dist/components/data/data-table/data-table-column-list-tree-apply.js +79 -0
- package/dist/components/data/data-table/data-table-column-list.js +122 -64
- package/dist/components/data/data-table/data-table-column-tree-cache.d.ts +12 -6
- package/dist/components/data/data-table/data-table-column-tree-cache.js +250 -131
- package/dist/components/data/data-table/data-table-context.js +5 -5
- package/dist/components/data/data-table/data-table-flat-column-virtual-rows.d.ts +27 -0
- package/dist/components/data/data-table/data-table-flat-column-virtual-rows.js +196 -0
- package/dist/components/data/data-table/data-table-picker-column-eligibility.d.ts +1 -0
- package/dist/components/data/data-table/data-table-picker-column-eligibility.js +7 -0
- package/dist/components/data/data-table/data-table-sheet-context.js +1 -1
- package/dist/components/data/data-table/data-table-sheet.js +1 -2
- package/dist/components/data/data-table/index.d.ts +2 -0
- package/dist/components/data/data-table/index.js +32 -28
- package/dist/components/data/data-table/patch-column-tree-indicators-from-grid.d.ts +5 -0
- package/dist/components/data/data-table/patch-column-tree-indicators-from-grid.js +28 -10
- package/dist/components/data/data-table/reconcile-column-tree-from-grid.d.ts +12 -0
- package/dist/components/data/data-table/reconcile-column-tree-from-grid.js +12 -0
- package/dist/components/data/data-table/use-data-table-column-list-sync.d.ts +10 -0
- package/dist/components/data/data-table/use-data-table-column-list-sync.js +250 -196
- package/dist/components/data/nested-list/components/NestedListContent.d.ts +10 -2
- package/dist/components/data/nested-list/components/NestedListContent.js +253 -138
- package/dist/components/data/nested-list/components/SortableItem.d.ts +2 -1
- package/dist/components/data/nested-list/components/SortableItem.js +62 -60
- package/dist/components/data/nested-list/hooks/useNestedListDragDrop.d.ts +10 -20
- package/dist/components/data/nested-list/hooks/useNestedListDragDrop.js +44 -233
- package/dist/components/data/nested-list/hooks/useVirtualNestedListDrag.d.ts +24 -0
- package/dist/components/data/nested-list/hooks/useVirtualNestedListDrag.js +128 -0
- package/dist/components/data/nested-list/nested-list-constants.d.ts +4 -1
- package/dist/components/data/nested-list/nested-list-constants.js +10 -4
- package/dist/components/data/nested-list/nested-list-display-utils.d.ts +11 -0
- package/dist/components/data/nested-list/nested-list-display-utils.js +74 -0
- package/dist/components/data/nested-list/nested-list-drop-engine.d.ts +31 -0
- package/dist/components/data/nested-list/nested-list-drop-engine.js +209 -0
- package/dist/components/data/nested-list/nested-list-flat-virtual-handlers.d.ts +26 -0
- package/dist/components/data/nested-list/nested-list-flat-virtual-handlers.js +67 -0
- package/dist/components/data/nested-list/nested-list-item-tree-mutations.d.ts +4 -0
- package/dist/components/data/nested-list/nested-list-item-tree-mutations.js +43 -0
- package/dist/components/data/nested-list/nested-list-lazy-flat-rows.d.ts +3 -0
- package/dist/components/data/nested-list/nested-list-lazy-flat-rows.js +34 -0
- package/dist/components/data/nested-list/nested-list-row-estimates.d.ts +9 -0
- package/dist/components/data/nested-list/nested-list-row-estimates.js +14 -0
- package/dist/components/data/nested-list/nested-list-scroll-anchor.d.ts +36 -0
- package/dist/components/data/nested-list/nested-list-scroll-anchor.js +47 -0
- package/dist/components/data/nested-list/nested-list-virtual-drop.d.ts +59 -0
- package/dist/components/data/nested-list/nested-list-virtual-drop.js +341 -0
- package/dist/components/data/nested-list/nested-list.js +322 -336
- package/dist/components/data/nested-list/nested-list.types.d.ts +17 -0
- package/dist/components/data-display/calendar/calendar-available-view.d.ts +6 -2
- package/dist/components/data-display/calendar/calendar-available-view.js +18 -19
- package/dist/components/data-display/calendar/calendar-config.js +21 -22
- package/dist/components/data-display/calendar/calendar-day-button.js +21 -21
- package/dist/components/data-display/calendar/calendar-day-picker-view.js +35 -36
- package/dist/components/data-display/calendar/calendar-fiscal-labels.d.ts +3 -3
- package/dist/components/data-display/calendar/calendar-fiscal-labels.js +62 -50
- package/dist/components/data-display/calendar/calendar-quarter-utils.js +12 -12
- package/dist/components/data-display/calendar/calendar-week-utils.d.ts +6 -0
- package/dist/components/data-display/calendar/calendar-week-utils.js +33 -33
- package/dist/components/data-display/calendar/calendar-year-panes.js +68 -58
- package/dist/components/data-display/calendar/calendar-year-utils.d.ts +13 -0
- package/dist/components/data-display/calendar/calendar-year-utils.js +59 -50
- package/dist/components/data-display/calendar/calendar.js +156 -153
- package/dist/components/data-display/calendar/fiscal-period-caption-select.js +22 -23
- package/dist/components/data-display/calendar/use-calendar-i18n.d.ts +0 -1
- package/dist/components/data-display/calendar/use-calendar-i18n.js +9 -10
- package/dist/components/data-display/chart/chart.js +72 -72
- package/dist/components/data-display/chart/chart.utils.d.ts +1 -1
- package/dist/components/data-display/chart/chart.utils.js +31 -40
- package/dist/components/feedback/sheet/sheet.js +1 -1
- package/dist/components/feedback/toast/toast.d.ts +1 -1
- package/dist/components/feedback/toast/toast.variants.d.ts +1 -1
- package/dist/components/flows/filter-panel/filter-panel.d.ts +1 -1
- package/dist/components/flows/filter-panel/filter-panel.js +64 -65
- package/dist/components/flows/filter-panel/filter-panel.types.d.ts +0 -1
- package/dist/components/flows/guidance/guidance-layer.js +34 -31
- package/dist/components/flows/guidance/hooks/useGuidanceOverlayGeometry.js +29 -20
- package/dist/components/flows/guidance/renderers/announcement-renderer.d.ts +1 -1
- package/dist/components/flows/guidance/renderers/announcement-renderer.js +74 -28
- package/dist/components/flows/guidance/renderers/guidance-action-tap-icon.d.ts +5 -0
- package/dist/components/flows/guidance/renderers/guidance-action-tap-icon.js +68 -0
- package/dist/components/flows/guidance/renderers/guidance-announcement-surface.d.ts +5 -0
- package/dist/components/flows/guidance/renderers/guidance-announcement-surface.js +76 -0
- package/dist/components/flows/guidance/renderers/guidance-card-shared.d.ts +43 -2
- package/dist/components/flows/guidance/renderers/guidance-card-shared.js +322 -99
- package/dist/components/flows/guidance/renderers/guidance-renderer-shared.d.ts +3 -0
- package/dist/components/flows/guidance/renderers/guidance-renderer-shared.js +189 -148
- package/dist/components/flows/guidance/renderers/guidance-shortcut-display.d.ts +9 -0
- package/dist/components/flows/guidance/renderers/guidance-shortcut-display.js +36 -0
- package/dist/components/flows/guidance/renderers/guidance-tour-overlay.d.ts +2 -1
- package/dist/components/flows/guidance/renderers/guidance-tour-overlay.js +152 -89
- package/dist/components/forms/date-picker/date-picker.js +126 -125
- package/dist/components/forms/date-picker/date-range-picker.js +192 -191
- package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +6 -6
- package/dist/components/forms/date-picker/fiscal-pass-through.js +7 -3
- package/dist/components/forms/date-picker/multi-date-picker.js +67 -66
- package/dist/components/forms/date-picker/multi-quarter-picker.js +87 -87
- package/dist/components/forms/date-picker/multi-week-picker.js +83 -82
- package/dist/components/forms/date-picker/multi-year-picker.js +81 -81
- package/dist/components/forms/date-picker/quarter-range-picker.js +84 -84
- package/dist/components/forms/date-picker/week-picker.js +175 -174
- package/dist/components/forms/date-picker/week-range-picker.js +214 -213
- package/dist/components/forms/date-picker/year-range-picker.js +79 -79
- package/dist/components/ui/local-raster-icons/rasterIcons.d.ts +0 -1
- package/dist/components/ui/local-raster-icons/rasterIcons.js +25 -27
- package/dist/form-react/Fields/ChipsField.js +49 -48
- package/dist/form-react/Fields/DateRangeField.js +25 -25
- package/dist/form-react/Fields/MonthRangeField.js +57 -57
- package/dist/form-react/Fields/MultiMonthPickerField.js +28 -26
- package/dist/form-react/Fields/MultiWeekPickerField.js +41 -38
- package/dist/form-react/Fields/MultiYearPickerField.js +45 -45
- package/dist/form-react/Fields/SelectField.js +24 -26
- package/dist/form-react/Fields/TextFieldWithBackendValidation.js +27 -26
- package/dist/form-react/Fields/WeekRangePicker.js +18 -16
- package/dist/form-react/Fields/YearPickerField.js +27 -27
- package/dist/form-react/Fields/YearRangePickerField.js +29 -29
- package/dist/form-react/fields.d.ts +3 -0
- package/dist/form-react/fields.js +35 -29
- package/dist/form-react/types/fields.types.d.ts +39 -0
- package/dist/form-react/utils/date.utils.d.ts +52 -2
- package/dist/form-react/utils/date.utils.js +198 -62
- package/dist/i18n/defaultMessages.d.ts +5 -143
- package/dist/i18n/defaultMessages.js +25 -163
- package/dist/i18n/getDateFnsLocale.d.ts +4 -5
- package/dist/i18n/getDateFnsLocale.js +16 -46
- package/dist/i18n/i18n.types.d.ts +0 -13
- package/dist/i18n/impact-nova-i18n-context.d.ts +1 -1
- package/dist/i18n/impact-nova-i18n-context.js +25 -33
- package/dist/i18n/impact-nova-i18n-defaults.js +6 -8
- package/dist/i18n/index.d.ts +1 -4
- package/dist/i18n/index.js +16 -41
- package/dist/i18n/locales/de.js +3 -141
- package/dist/i18n/locales/es.js +3 -141
- package/dist/i18n/locales/hi.js +3 -141
- package/dist/i18n/locales/kn.js +3 -141
- package/dist/impact-nova-components.css +0 -249
- package/dist/impact-nova-tokens.scss +22 -6
- package/dist/impact-nova.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +603 -622
- package/dist/lib/fiscal-calendar/index.d.ts +2 -2
- package/dist/lib/fiscal-calendar/index.js +26 -24
- package/dist/lib/fiscal-calendar/week-selection.d.ts +5 -0
- package/dist/lib/fiscal-calendar/week-selection.js +56 -49
- package/dist/lib/guidance/engine/guidance-engine.d.ts +9 -0
- package/dist/lib/guidance/engine/guidance-engine.js +127 -65
- package/dist/lib/guidance/engine/manifest-validator.js +37 -30
- package/dist/lib/guidance/targets/target-resolver.d.ts +1 -1
- package/dist/lib/guidance/targets/target-resolver.js +32 -30
- package/dist/lib/guidance/types/guidance.types.d.ts +41 -0
- package/dist/lib/hash/fnv1a128.d.ts +16 -0
- package/dist/lib/hash/fnv1a128.js +21 -0
- package/dist/llms/index.js +2 -26
- package/dist/llms/rules/ag-grid.js +1 -1
- package/dist/llms/rules/best-practices.js +1 -1
- package/dist/llms/rules/installation.js +1 -1
- package/dist/llms/rules/migration.js +1 -1
- package/dist/llms/rules/real-world-patterns.js +1 -1
- package/dist/llms/rules/requirements.js +1 -1
- package/dist/llms/rules/troubleshooting.js +1 -1
- package/dist/providers/app-providers.d.ts +1 -3
- package/dist/providers/app-providers.js +11 -22
- package/package.json +2 -13
- package/dist/components/data/ag-grid-react/chat/chat-capabilities.d.ts +0 -9
- package/dist/components/data/ag-grid-react/chat/chat-capabilities.js +0 -22
- package/dist/components/data/ag-grid-react/chat/chat-column.d.ts +0 -20
- package/dist/components/data/ag-grid-react/chat/chat-column.js +0 -81
- package/dist/components/data/ag-grid-react/chat/chat-composer.d.ts +0 -10
- package/dist/components/data/ag-grid-react/chat/chat-composer.js +0 -352
- package/dist/components/data/ag-grid-react/chat/chat-constants.d.ts +0 -17
- package/dist/components/data/ag-grid-react/chat/chat-constants.js +0 -22
- package/dist/components/data/ag-grid-react/chat/chat-format.d.ts +0 -41
- package/dist/components/data/ag-grid-react/chat/chat-format.js +0 -94
- package/dist/components/data/ag-grid-react/chat/chat-host.d.ts +0 -10
- package/dist/components/data/ag-grid-react/chat/chat-host.js +0 -651
- package/dist/components/data/ag-grid-react/chat/chat-host.types.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-html.d.ts +0 -2
- package/dist/components/data/ag-grid-react/chat/chat-html.js +0 -40
- package/dist/components/data/ag-grid-react/chat/chat-identity.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-identity.js +0 -24
- package/dist/components/data/ag-grid-react/chat/chat-menu.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-menu.js +0 -15
- package/dist/components/data/ag-grid-react/chat/chat-notify.d.ts +0 -17
- package/dist/components/data/ag-grid-react/chat/chat-notify.js +0 -124
- package/dist/components/data/ag-grid-react/chat/chat-persist.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-persist.js +0 -34
- package/dist/components/data/ag-grid-react/chat/chat-priority.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-priority.js +0 -79
- package/dist/components/data/ag-grid-react/chat/chat-summaries.d.ts +0 -2
- package/dist/components/data/ag-grid-react/chat/chat-summaries.js +0 -24
- package/dist/components/data/ag-grid-react/chat/chat-thread-ui.d.ts +0 -72
- package/dist/components/data/ag-grid-react/chat/chat-thread-ui.js +0 -713
- package/dist/components/data/ag-grid-react/chat/chat-toggle.d.ts +0 -6
- package/dist/components/data/ag-grid-react/chat/chat-toggle.js +0 -25
- package/dist/components/data/ag-grid-react/chat/chat-ui-actions.d.ts +0 -13
- package/dist/components/data/ag-grid-react/chat/chat-ui-actions.js +0 -26
- package/dist/components/data/ag-grid-react/chat/chat-window.d.ts +0 -14
- package/dist/components/data/ag-grid-react/chat/chat-window.js +0 -82
- package/dist/components/data/ag-grid-react/chat/chat-workspace.d.ts +0 -91
- package/dist/components/data/ag-grid-react/chat/chat-workspace.js +0 -555
- package/dist/components/data/ag-grid-react/chat/chat.types.d.ts +0 -319
- package/dist/components/data/ag-grid-react/chat/index.d.ts +0 -6
- package/dist/components/data/ag-grid-react/chat/index.js +0 -24
- package/dist/components/data/ag-grid-react/chat.story-data.d.ts +0 -34
- package/dist/components/data/ag-grid-react/chat.story-sources.d.ts +0 -4
- package/dist/components/data/ag-grid-react/comments/assets/comments-no-results.png.js +0 -4
- package/dist/components/data/ag-grid-react/comments/comment-mode-toggle.d.ts +0 -6
- package/dist/components/data/ag-grid-react/comments/comment-mode-toggle.js +0 -29
- package/dist/components/data/ag-grid-react/comments/comments-actions-menu.d.ts +0 -8
- package/dist/components/data/ag-grid-react/comments/comments-actions-menu.js +0 -18
- package/dist/components/data/ag-grid-react/comments/comments-ag-grid-presence.d.ts +0 -18
- package/dist/components/data/ag-grid-react/comments/comments-ag-grid-presence.js +0 -16
- package/dist/components/data/ag-grid-react/comments/comments-capabilities.d.ts +0 -11
- package/dist/components/data/ag-grid-react/comments/comments-capabilities.js +0 -26
- package/dist/components/data/ag-grid-react/comments/comments-constants.d.ts +0 -12
- package/dist/components/data/ag-grid-react/comments/comments-constants.js +0 -21
- package/dist/components/data/ag-grid-react/comments/comments-format.d.ts +0 -20
- package/dist/components/data/ag-grid-react/comments/comments-format.js +0 -49
- package/dist/components/data/ag-grid-react/comments/comments-generation.d.ts +0 -14
- package/dist/components/data/ag-grid-react/comments/comments-generation.js +0 -18
- package/dist/components/data/ag-grid-react/comments/comments-host.d.ts +0 -10
- package/dist/components/data/ag-grid-react/comments/comments-host.js +0 -343
- package/dist/components/data/ag-grid-react/comments/comments-host.types.d.ts +0 -18
- package/dist/components/data/ag-grid-react/comments/comments-identity.d.ts +0 -7
- package/dist/components/data/ag-grid-react/comments/comments-identity.js +0 -20
- package/dist/components/data/ag-grid-react/comments/comments-menu.d.ts +0 -29
- package/dist/components/data/ag-grid-react/comments/comments-menu.js +0 -35
- package/dist/components/data/ag-grid-react/comments/comments-overlay-anchor.d.ts +0 -22
- package/dist/components/data/ag-grid-react/comments/comments-overlay-anchor.js +0 -98
- package/dist/components/data/ag-grid-react/comments/comments-overlay.d.ts +0 -21
- package/dist/components/data/ag-grid-react/comments/comments-overlay.js +0 -406
- package/dist/components/data/ag-grid-react/comments/comments-panel.d.ts +0 -9
- package/dist/components/data/ag-grid-react/comments/comments-panel.js +0 -272
- package/dist/components/data/ag-grid-react/comments/comments-persist.d.ts +0 -11
- package/dist/components/data/ag-grid-react/comments/comments-persist.js +0 -19
- package/dist/components/data/ag-grid-react/comments/comments-reveal.d.ts +0 -11
- package/dist/components/data/ag-grid-react/comments/comments-reveal.js +0 -31
- package/dist/components/data/ag-grid-react/comments/comments-ui-actions.d.ts +0 -18
- package/dist/components/data/ag-grid-react/comments/comments-ui-actions.js +0 -22
- package/dist/components/data/ag-grid-react/comments/comments-window.d.ts +0 -10
- package/dist/components/data/ag-grid-react/comments/comments-window.js +0 -62
- package/dist/components/data/ag-grid-react/comments/comments.types.d.ts +0 -178
- package/dist/components/data/ag-grid-react/comments/index.d.ts +0 -5
- package/dist/components/data/ag-grid-react/comments/index.js +0 -15
- package/dist/components/data/ag-grid-react/comments-cell-renderers-showcase.d.ts +0 -25
- package/dist/components/data/ag-grid-react/comments.story-data.d.ts +0 -37
- package/dist/components/data/ag-grid-react/comments.story-sources.d.ts +0 -11
- package/dist/components/data/ag-grid-react/grid-cell-address.d.ts +0 -21
- package/dist/components/data/ag-grid-react/grid-cell-address.js +0 -21
- package/dist/components/data/ag-grid-react/grid-row-reveal.d.ts +0 -34
- package/dist/components/data/ag-grid-react/grid-row-reveal.js +0 -33
- package/dist/components/data/ag-grid-react/notes/index.d.ts +0 -2
- package/dist/components/data/ag-grid-react/notes/index.js +0 -1
- package/dist/components/data/ag-grid-react/notes/notes-ag-grid-adapter.d.ts +0 -25
- package/dist/components/data/ag-grid-react/notes/notes-ag-grid-adapter.js +0 -32
- package/dist/components/data/ag-grid-react/notes/notes-constants.d.ts +0 -2
- package/dist/components/data/ag-grid-react/notes/notes-constants.js +0 -4
- package/dist/components/data/ag-grid-react/notes/notes.types.d.ts +0 -12
- package/dist/components/data/ag-grid-react/notes.story-sources.d.ts +0 -7
- package/dist/components/data/ag-grid-react/nova-system-column.d.ts +0 -7
- package/dist/components/data/ag-grid-react/nova-system-column.js +0 -18
- package/dist/components/forms/date-picker/use-picker-i18n.d.ts +0 -6
- package/dist/components/forms/date-picker/use-picker-i18n.js +0 -11
- package/dist/components/ui/local-raster-icons/message3d.webp.js +0 -4
- package/dist/i18n/format/collator.d.ts +0 -1
- package/dist/i18n/format/collator.js +0 -7
- package/dist/i18n/format/date-pattern.d.ts +0 -5
- package/dist/i18n/format/date-pattern.js +0 -20
- package/dist/i18n/format/format-date.d.ts +0 -9
- package/dist/i18n/format/format-date.js +0 -56
- package/dist/i18n/format/format-number.d.ts +0 -20
- package/dist/i18n/format/format-number.js +0 -68
- package/dist/i18n/format/formatter-cache.d.ts +0 -9
- package/dist/i18n/format/formatter-cache.js +0 -66
- package/dist/i18n/format/index.d.ts +0 -6
- package/dist/i18n/format/parse-number.d.ts +0 -6
- package/dist/i18n/format/parse-number.js +0 -53
- package/dist/i18n/locale-config.d.ts +0 -28
- package/dist/i18n/locale-config.js +0 -32
- package/dist/i18n/week-start.d.ts +0 -6
- package/dist/i18n/week-start.js +0 -30
- package/dist/llms/rules/data-table-chat.js +0 -1
- package/dist/llms/rules/data-table-comments.js +0 -1
- package/dist/llms/rules/data-table-notes.js +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { FORMATTER_CACHE_LIMIT, getNumberFormat, getDateTimeFormat, getCollator, getRelativeTimeFormat, } from './formatter-cache';
|
|
2
|
-
export { formatNumber, formatCurrency, formatPercent, formatCompactNumber, getNumberSeparators, type CompactMagnitude, type NumberSeparators, } from './format-number';
|
|
3
|
-
export { parseNumber } from './parse-number';
|
|
4
|
-
export { formatDate, formatTime, formatDateTime, formatRelativeTime, toValidDate, SHORT_DATE_OPTIONS, SHORT_TIME_OPTIONS, SHORT_DATE_TIME_OPTIONS, } from './format-date';
|
|
5
|
-
export { getLocalizedDatePattern } from './date-pattern';
|
|
6
|
-
export { compareStrings } from './collator';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parse a localized numeric string into a canonical JavaScript number.
|
|
3
|
-
* Display formatting must never become the stored value.
|
|
4
|
-
* Returns null for empty, mixed-separator, or otherwise malformed input.
|
|
5
|
-
*/
|
|
6
|
-
export declare function parseNumber(input: string, locale: string): number | null;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { getNumberSeparators as h } from "./format-number.js";
|
|
2
|
-
const A = /[\s\u00A0\u202F\u2009\u2007\u2008\u200A]/, $ = /[\s\u00A0\u202F\u2009\u2007\u2008\u200A]/g;
|
|
3
|
-
function d(t) {
|
|
4
|
-
return t.length > 0 && A.test(t);
|
|
5
|
-
}
|
|
6
|
-
function C(t, r) {
|
|
7
|
-
if (!r || d(r) || !t.includes(r)) return !0;
|
|
8
|
-
const e = t.split(r);
|
|
9
|
-
return e.some((n) => n.length === 0 || !/^\d+$/.test(n)) ? !1 : e.slice(1).every((n) => n.length >= 2 && n.length <= 3);
|
|
10
|
-
}
|
|
11
|
-
function x(t) {
|
|
12
|
-
return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
13
|
-
}
|
|
14
|
-
function E(t) {
|
|
15
|
-
let r = t.trim().replace(new RegExp("\\p{Sc}", "gu"), "");
|
|
16
|
-
return r = r.replace(/^[A-Z]{3}\s+/u, "").replace(/\s+[A-Z]{3}$/u, ""), r.trim();
|
|
17
|
-
}
|
|
18
|
-
function S(t, r) {
|
|
19
|
-
if (typeof t != "string") return null;
|
|
20
|
-
let e = E(t);
|
|
21
|
-
if (!e) return null;
|
|
22
|
-
const { decimal: n, group: i, minus: f } = h(r);
|
|
23
|
-
let o = !1;
|
|
24
|
-
const p = [f, "-", "−", "-"];
|
|
25
|
-
for (const c of p)
|
|
26
|
-
if (c && e.startsWith(c)) {
|
|
27
|
-
o = !0, e = e.slice(c.length).trim();
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
if ((e.endsWith("-") || e.endsWith(f)) && (o = !0, e = e.slice(0, e.endsWith(f) ? -f.length : -1).trim()), !e) return null;
|
|
31
|
-
const a = n ? e.lastIndexOf(n) : -1;
|
|
32
|
-
let s, u;
|
|
33
|
-
if (a >= 0) {
|
|
34
|
-
if (s = e.slice(0, a), u = e.slice(a + n.length), u.length === 0 || !/^\d+$/.test(u)) return null;
|
|
35
|
-
} else
|
|
36
|
-
s = e, u = null;
|
|
37
|
-
if (n && u == null && s.includes(n) || i && !C(s, i)) return null;
|
|
38
|
-
let l = s;
|
|
39
|
-
if (i && !d(i)) {
|
|
40
|
-
const c = new RegExp(x(i), "g");
|
|
41
|
-
l = l.replace(c, "");
|
|
42
|
-
}
|
|
43
|
-
if (l = l.replace($, ""), l.length === 0) {
|
|
44
|
-
if (!u) return null;
|
|
45
|
-
l = "0";
|
|
46
|
-
}
|
|
47
|
-
if (!/^\d+$/.test(l)) return null;
|
|
48
|
-
const m = `${o ? "-" : ""}${l}.${u ?? "0"}`, g = Number(m);
|
|
49
|
-
return Number.isFinite(g) ? g : null;
|
|
50
|
-
}
|
|
51
|
-
export {
|
|
52
|
-
S as parseNumber
|
|
53
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_LOCALE = "en";
|
|
2
|
-
export interface LocaleConfigInput {
|
|
3
|
-
locale?: string;
|
|
4
|
-
dateLocale?: string;
|
|
5
|
-
numberLocale?: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ResolvedLocaleConfig {
|
|
8
|
-
locale: string;
|
|
9
|
-
dateLocale: string;
|
|
10
|
-
numberLocale: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Canonicalize a BCP 47 tag with Intl.Locale.
|
|
14
|
-
* Invalid/malformed tags fall back to `fallback` — the returned value is what callers must advertise.
|
|
15
|
-
*/
|
|
16
|
-
export declare function canonicalizeLocale(tag: string | undefined | null, fallback?: string): string;
|
|
17
|
-
/** Language subtag only (`de-DE` → `de`). Used for message-pack lookup, not formatting. */
|
|
18
|
-
export declare function languageFromLocale(tag: string): string;
|
|
19
|
-
/**
|
|
20
|
-
* Resolve the public locale model:
|
|
21
|
-
* language = locale ?? "en"
|
|
22
|
-
* dateLocale = dateLocale ?? locale ?? "en"
|
|
23
|
-
* numberLocale = numberLocale ?? locale ?? "en"
|
|
24
|
-
*
|
|
25
|
-
* Independent overrides that fail canonicalization fall back to the resolved language locale,
|
|
26
|
-
* not a hidden en-US rewrite.
|
|
27
|
-
*/
|
|
28
|
-
export declare function resolveLocaleConfig(input?: LocaleConfigInput): ResolvedLocaleConfig;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
const L = "en";
|
|
2
|
-
function r(e) {
|
|
3
|
-
if (e == null) return;
|
|
4
|
-
const n = e.trim();
|
|
5
|
-
return n.length > 0 ? n : void 0;
|
|
6
|
-
}
|
|
7
|
-
function t(e, n = "en") {
|
|
8
|
-
const o = r(e);
|
|
9
|
-
if (!o) return n;
|
|
10
|
-
try {
|
|
11
|
-
return new Intl.Locale(o).toString();
|
|
12
|
-
} catch {
|
|
13
|
-
return n;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function a(e) {
|
|
17
|
-
try {
|
|
18
|
-
return new Intl.Locale(e).language;
|
|
19
|
-
} catch {
|
|
20
|
-
return "en";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function l(e = {}) {
|
|
24
|
-
const n = t(e.locale, "en"), o = r(e.dateLocale) ? t(e.dateLocale, n) : n, c = r(e.numberLocale) ? t(e.numberLocale, n) : n;
|
|
25
|
-
return { locale: n, dateLocale: o, numberLocale: c };
|
|
26
|
-
}
|
|
27
|
-
export {
|
|
28
|
-
L as DEFAULT_LOCALE,
|
|
29
|
-
t as canonicalizeLocale,
|
|
30
|
-
a as languageFromLocale,
|
|
31
|
-
l as resolveLocaleConfig
|
|
32
|
-
};
|
package/dist/i18n/week-start.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { getDateFnsLocale as f } from "./getDateFnsLocale.js";
|
|
2
|
-
import { canonicalizeLocale as i } from "./locale-config.js";
|
|
3
|
-
function u(e) {
|
|
4
|
-
const t = e;
|
|
5
|
-
if (typeof t.getWeekInfo == "function")
|
|
6
|
-
try {
|
|
7
|
-
return t.getWeekInfo();
|
|
8
|
-
} catch {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (t.weekInfo && typeof t.weekInfo.firstDay == "number")
|
|
12
|
-
return t.weekInfo;
|
|
13
|
-
}
|
|
14
|
-
function c(e) {
|
|
15
|
-
return e === 7 ? 0 : e >= 1 && e <= 6 ? e : 0;
|
|
16
|
-
}
|
|
17
|
-
function k(e, t) {
|
|
18
|
-
if (t != null) return t;
|
|
19
|
-
try {
|
|
20
|
-
const o = new Intl.Locale(i(e)), n = u(o);
|
|
21
|
-
if (n && Number.isFinite(n.firstDay))
|
|
22
|
-
return c(n.firstDay);
|
|
23
|
-
} catch {
|
|
24
|
-
}
|
|
25
|
-
const r = f(e).options?.weekStartsOn;
|
|
26
|
-
return r ?? 0;
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
k as getWeekStartsOn
|
|
30
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default "> MCP resource `impact-nova://data-table-chat`. Follow this guide — do not invent APIs or put threads in `rowData`.\n\n# DataTable row Chat\n\nMCP resource: **`impact-nova://data-table-chat`**.\n\nLearning path for enabling **row Chat** on Impact Nova `DataTable`.\n\nStorybook: **Data Display / DataTable / Chat / QuickStart**.\n\nChat is **not** a cell comment and **not** an AG Grid Note.\n\n- Comment → cell `{ rowId, colId }`\n- Note → cell text\n- Chat → **row** `{ rowId }` from `getRowId`, with **many conversations** per row\n- Thread reply → `{ rowId, conversationId, parentId }`\n- Pin → a flag on a message in that conversation\n\n## 1. Opt-in\n\nOmit `chat` and the grid is unchanged: no Chat column, host, listeners, or fetch.\n\n```tsx\n<DataTableContent getRowId={(params) => params.data.id} chat={chat} />\n```\n\nRequired:\n\n| Piece | Why |\n|---|---|\n| `getRowId` | Stable row identity. Never `rowIndex` or a DOM node |\n| `hasConversation` | O(1) presence for visible Chat cells |\n| `loadConversation` | Newest window (50) for `{ rowId, conversationId }` + `before` cursor for older messages |\n| `persist` | One event (`create-conversation` or one message), not the lifetime array |\n| `getAuthor` | Name stamped on new messages |\n\nOptional: `unreadCount`, `getSummaries` (rows list + per-row chats), `locateRow` (required for app-paged / SSRM), `column: false`, `colId`, `priority(rowId)` (`high` / `medium` / `low`), `quickActions`, `messageActions` / `threadActions` / `listActions`, `composerTools`, `listPeople({ query, limit })` (directory for Add member; Nova shows 10 after excluding current members), `can(action, context)` (authorization), `renderComposer` / `renderAvatar` / `renderMessageBody` / `renderMembers` / `renderPeoplePicker`.\n\nComposer ships **attach file / image** (local `File` → object URL until persist writes it), **emoji**, **bold / italic / link**, and a **Quick action** menu from `composerTools` (omit the menu when you pass none). Nova does not own product verbs. An offer table passes “Finalize offer”, a ticket table passes “Resolve”, a request table passes “Complete” — each `onSelect` writes the row, then calls `context.close()` to dismiss Chat. Stay-in-thread tools use `context.insertText(...)` instead. The same `close()` is on `quickActions`, `messageActions`, `threadActions`, and `listActions`. Persist `set-priority` with `high` / `medium` / `low`, or `null` to clear (Normal). Message-row and composer checkmarks set priority. Conversation **⋯** is notify + mute (`set-notify`, `mute-conversation`) — not priority. Persist `set-members` when adding or removing people; omit `listPeople` for a read-only member list derived from authors.\n\n`loadConversation` may be **client-windowed** (return the full array; Nova keeps the newest 50 and `before` for older) or **server-windowed** (return only the requested page plus `hasMoreOlder`). The thread virtualizes after 32 messages, follows a new latest message when you are near the bottom (WhatsApp-style), and does not jump on load-older prepend.\n\n## 2. System column\n\nDefault injects pinned-right `iv-chat` (69px). It is excluded from the column tree, saved views, auto-size, and export. Do not persist it in consumer column state.\n\n## 3. Pagination\n\n- **Client pagination:** all rows stay in the model. Nova uses live `rowIndex`. Do not pass `locateRow`.\n- **Server / app-paged:** `getRowNode` is missing. Pass `locateRow(rowId)` and load the page (see Comments `ServerPagedCommentsDemo`). Chat opens for that `rowId` immediately.\n\nFiltered rows (`rowIndex == null`) open Chat with **Hidden by current filter**. Nova does not call `locateRow`.\n\n## 4. Panel\n\nChat uses a right **Sheet** (`impact-nova/sheet`) — not FilterPanel and not DataTableSheet. Widths are Chat-owned: catalog 840px, row-chats 340 + 640 min. Pinned/thread shares the remaining width with the main thread (up to 640px each, shrinks with the viewport). Scroll, virtualize, sort, and paginate do not retarget the open row.\n\n- Toolbar **Chats** opens unique **row names**. Click a row to see its chats.\n- Chat cell opens that row’s chats. **+ Chat** starts another conversation on the same row.\n- Back returns to the unique-row list.\n\nEmpty lists use `EmptyContainer` (`impact-nova/empty-container`).\n\nThe thread header cluster (pin + avatars, or `AddUser` when empty) opens the **Info** drawer. Thread replies open the **Thread** drawer. The drawer shares width with the main thread (up to 640px each) and shrinks with the viewport. `loadConversation` receives `purpose: \"page\" | \"thread\" | \"pinned\"`. Persist `pin-message`, `add-message` with `parentId`, `edit-message`, and `delete-message`. Do not add a WebSocket layer inside Nova.\n\nThe **Info** drawer is the WhatsApp-style panel: pinned cards and members share the height like VS Code sidebars. Each chevron has three angles: **45° split**, **90° expanded**, **0° collapsed**. Expanding one collapses the other to its header.\n\n## 5. Mapping your backend\n\nNova never sees REST URLs or vendor DTOs. `loadConversation`, `listPeople`, `getSummaries`, and `persist` **are** the adapters.\n\n```ts\ntype PeopleDto = { user_id: string; display_name: string; avatar_url?: string; role?: string }\n\nlistPeople: async ({ query, limit } = {}) => {\n const json = await api.getPeople({ query, limit })\n return json.users.map((row: PeopleDto) => ({\n id: row.user_id,\n name: row.display_name,\n avatarUrl: row.avatar_url,\n }))\n}\n```\n\nApply the same mapping in `loadConversation` for `conversation.members` and in `persist` when you write `set-members` back. Nova's member model is `{ id, name, avatarUrl? }`. Roles stay in the consumer; do not send them in for Nova to interpret.\n\n## 6. Permissions\n\nImpact Nova is not the source of truth for authorization. Pass `can(action, context)`:\n\n| Action | Default when `can` is omitted |\n|---|---|\n| `view` / `create` / `edit` / `delete` | `getCapabilities(rowId)` (`canEdit` / `canDelete` default false) |\n| `invite` / `remove-member` | `canCreate` **and** `listPeople` is provided |\n\nReturn `true` or `false` to override one action. Return `undefined` to use the default.\n\n```ts\ncan: (action, context) => {\n if (action === \"invite\" || action === \"remove-member\") return isAdmin(context.rowId)\n if (action === \"edit\") return context.message?.author === currentUser\n return undefined\n}\n```\n\nA visible button is not a grant. If `persist` throws `{ status: 403 }` or `{ status: 401 }`, Nova rolls back optimistic member changes and toasts permission denied.\n\nLeave / transfer-ownership are not Chat domain verbs. Put them on `listActions` and call your API, then `context.close()` if the user left.\n\n## 7. Composition\n\nChat is a DataTable opt-in, same as Comments — not a Radix `<Chat><ChatHeader/></Chat>` tree. Zero-config is `chat={config}`. Escape hatches replace one piece:\n\n| Slot | Replaces |\n|---|---|\n| `renderAvatar` | Author glyph (`{ author, member? }`) |\n| `renderMessageBody` | Message text |\n| `renderComposer` | Reply box (host still owns draft + persist) |\n| `renderMembers` | Info-drawer roster |\n| `renderPeoplePicker` | Add-member directory |\n| `renderMessageActions` / `renderThreadActions` | `…` menus |\n| `messageActions` / `threadActions` / `listActions` / `quickActions` / `composerTools` | Extra actions Nova does not understand |\n\nDo not rebuild Chat to add “Open purchase order”. Add a `ChatUiAction` and handle it in `onSelect`.\n\n## 8. Members UX\n\n**Add member** is the first row in the members list. It opens a full-panel directory (search, first 10 people, multi-select). Persist `set-members` plus `add-message` with `system: true` so the thread shows “{{name}} was added” / “{{name}} was removed”. If the toolbar has no members yet, it shows `AddUser` from `impact-nova-icons`.\n\nThe on-screen roster is bounded (40, then Show more). `listPeople` runs when the picker opens — never once per grid row.\n\n## Related\n\n- [data-table-comments.md](impact-nova://data-table-comments)\n- [data-table-notes.md](impact-nova://data-table-notes)\n";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default "> MCP resource `impact-nova://data-table-comments`. Follow this guide — do not invent APIs or put threads in `rowData`.\n\n# DataTable cell comments\n\nMCP resource: **`impact-nova://data-table-comments`**.\n\nLearning path for enabling Google Sheets–style **cell comments** on Impact Nova `DataTable`.\n\nStorybook: **Data Display / DataTable / Comments / QuickStart**.\n\nThis is **not** AG Grid Notes, and there is **no** read/unread model.\n\n## 1. What is a comment?\n\nA comment is a conversation attached to a **logical cell**:\n\n```\ngrid + getRowId(row) + colId → CellAddress { rowId, colId }\n```\n\nThe thread lives in **your** store (or API). It is not a field on `rowData`. The cell triangle is only painted when that cell is currently rendered.\n\nThe overlay is shown only while that logical cell intersects the usable grid viewport (below the header, not under a pinned column). Scroll it fully away and the overlay hides; scroll it back and the same thread restores, including an unsaved draft. Explicit close (X / Escape / click outside) ends the session. Use the Comments panel to keep a list while navigating.\n\n## 2. What is not a comment?\n\n- AG Grid Notes — a separate opt-in on `notes={...}`; see [data-table-notes.md](impact-nova://data-table-notes)\n- Read/unread, badges, or per-cell React widgets\n- Storing `page` or frozen `rowIndex` on the thread (filters change the live index)\n\n## 3. Quick start (required)\n\nStart at Storybook **QuickStart**. Copy the Docs source.\n\nRequired:\n\n| Piece | Why |\n|---|---|\n| `getRowId` | Stable row identity |\n| `comments.hasIndicator` | O(1). `true` only for **unresolved** threads that should show the triangle |\n| `comments.loadThread` | Fetch the thread for an address |\n| `comments.persist` | Create / reply / edit / delete / resolve |\n| `comments.getAuthor` | Name stamped on new messages |\n\nOptional:\n\n| Piece | Why |\n|---|---|\n| `getSummaries` | Comments list in `DataTableSheet` |\n| `locateRow` | Row is **not** in the current grid model (SSRM / app-paged `rowData`) |\n| `getCapabilities` | View-only vs edit per cell |\n| `commentMode` / `CommentModeToggle` | Click empty cells to compose |\n| `loadThread` `request` | Windowed thread history (`preview` \\| `page`) |\n\n```tsx\nimport { DataTable, DataTableContent, DataTableToolbar } from \"impact-nova/data-table\";\nimport {\n CommentModeToggle,\n defaultGetThreadId,\n type DataTableCommentsConfig,\n} from \"impact-nova/ag-grid-react/comments\";\n\n<DataTable className=\"h-[640px]\">\n <DataTableToolbar>\n <CommentModeToggle pressed={commentMode} onPressedChange={setCommentMode} />\n </DataTableToolbar>\n <DataTableContent\n getRowId={(params) => params.data.id}\n columnDefs={columnDefs}\n rowData={rowData}\n comments={comments}\n />\n</DataTable>\n```\n\nOmit `comments` entirely to disable the feature. Nova will not mount the comments host.\n\n## 4. Right-click → Add comment\n\nWith `comments` set, the grid context menu includes **Add comment** (native AG Grid note items are stripped). Comment mode is **not** required.\n\nStory: **AddComment**. Persist event: `{ type: \"add-message\", threadId, address, message }`.\n\n## 5. Client-side grid\n\nAll rows in `rowData` (CSRM). Optional AG Grid `pagination` only changes what is painted.\n\n- Comment store is still separate\n- Panel click: `getRowNode(rowId)` → live `rowIndex` → `paginationGoToPage` → `ensureIndexVisible`\n- Do **not** implement `locateRow`\n\nStory: **ClientSidePagination**.\n\n## 6. Server-side / app-paged grid\n\nOnly the current page/block is in the grid model. The comment still exists.\n\n1. Panel (or your UI) identifies `{ rowId, colId }`\n2. `getRowNode(rowId)` misses\n3. `comments.locateRow(address)` loads that page into the grid (your API)\n4. Return `{ status: \"ready\" }` or `{ status: \"ready\", rowIndex }`\n5. Nova reveals the cell and opens the overlay\n\nFiltered-out rows (`rowIndex == null`) stay **Not in current view**. `locateRow` is not called for those.\n\nStory: **ServerSidePagination**.\n\n## 7. Three different “pages”\n\n| Kind | What it pages | Config |\n|---|---|---|\n| Grid | Which rows AG Grid has loaded/painted | `pagination` / SSRM / your `rowData` slice |\n| Comments list | Which thread **summaries** are in the sheet | `getSummaries({ cursor, limit, query })` |\n| Thread history | Which **messages** are in the overlay | `loadThread(..., { purpose, limit, before })` |\n\nThese are independent. A 10,000-message thread is still one cell.\n\n## 8. Cell identity\n\nUse `getRowId` + stable `colId`. Default thread id is `rowId + \"\\\\0\" + colId` (`defaultGetThreadId`). Override `getThreadId` only if column ids regenerate.\n\nDo not key comments by DOM nodes, rendered cell components, or array indexes.\n\n## 9. Thread lifecycle\n\nCreate → reply → resolve → reopen. Indicator is on **unresolved** threads only.\n\nStories: **Lifecycle**, **Loading**, **PersistError**, **ReadOnly**.\n\n## 10. Large scale\n\n`hasIndicator` must be O(1). Overlay holds **one** windowed thread. Panel virtualizes summaries. Story: **LargeScale** (50k columns) — architecture proof, not the copy-paste starter.\n\n## 11. Appearance (optional)\n\nThe default UI is already production-ready. Omit every field below to keep it.\n\n**Level 1 — CSS.** Set variables on a wrapper (they inherit):\n\n```css\n.planning-grid {\n --iv-comment-indicator-color: var(--color-success);\n --iv-comment-indicator-size: 12px;\n}\n```\n\nStable hooks (popover is portaled): `[data-iv-comments]`, `[data-slot=\"comments-popover\"]`, `[data-slot=\"comments-header\"]`, `[data-slot=\"comments-message\"]`, `[data-slot=\"comments-composer\"]`, `[data-slot=\"comments-panel\"]`.\n\nIndicator shape stays CSS `::after` (no per-cell React).\n\n**Level 2 — extra menu items.** Append after Edit/Delete without replacing the menu:\n\n```tsx\ncomments={{\n hasIndicator,\n loadThread,\n persist,\n getAuthor,\n messageActions: [\n {\n id: \"open\",\n label: \"Open\",\n onSelect: ({ address, message }) => openRecord(address, message.id),\n },\n ],\n}}\n```\n\n`threadActions` appends after Delete thread on the overlay and panel `…` menus.\n\n**Level 3 — replace one piece.** Unspecified slots keep Nova defaults:\n\n```tsx\ncomments={{\n hasIndicator,\n loadThread,\n persist,\n getAuthor,\n renderAvatar: ({ author }) => <YourAvatar name={author} />,\n}}\n```\n\nAlso available: `renderMessageBody`, `renderComposer`, `renderMessageActions` (receives Edit/Delete plus `messageActions`), `renderThreadActions`.\n\nThese render only while the overlay or panel is open. They do not run per cell.\n\n**Not customizable (intentionally):** overlay anchoring, cell identity, persistence, virtualization, AG Grid presence, Comment indicator as a React component.\n\n## 12. API reference\n\nTypes and helpers: `impact-nova/ag-grid-react/comments`.\n\nSee `DataTableCommentsConfig` in that subpath. Contributor tripwire: `src/components/data/ag-grid-react/comments/comments.decisions.md`.\n\n## 13. Testing\n\nStorybook `play` functions under **Data Display / DataTable / Comments** are the behavioural suite (`npm run test:storybook`). Unit tests live next to `comments/*.ts`.\n";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default "> MCP resource `impact-nova://data-table-notes`. Follow this guide — do not invent APIs or put threads in `rowData`.\n\n# DataTable cell notes\n\nMCP resource: **`impact-nova://data-table-notes`**.\n\nAG Grid **Notes** on Impact Nova `DataTable`. A note is short text on a logical cell. A **comment** is a conversation. They can coexist.\n\nStorybook: **Data Display / DataTable / Notes / QuickStart**.\n\n## When to use Notes vs Comments\n\n- **Note** — cell-specific text (override reason, reminder). AG Grid owns the popup and menu.\n- **Comment** — thread with replies, resolve/reopen. Nova owns the overlay.\n\n## Enable Notes\n\n```tsx\nimport { DataTable, DataTableContent } from \"impact-nova/data-table\";\nimport type { DataTableNotesConfig } from \"impact-nova/ag-grid-react/notes\";\n\n<DataTableContent\n getRowId={(params) => params.data.id}\n notes={notes}\n columnDefs={columnDefs}\n rowData={rowData}\n/>\n```\n\n`getNote` / `setNote` are keyed by `{ rowId, colId }`. Omit `notes` for zero Notes work.\n\n## Same cell\n\nBlue triangle = Comment. Yellow = Note. Split blue/yellow = both. Hover opens the AG Grid note. Context menu keeps comment actions and native note actions.\n\n## Appearance (optional)\n\nUnset variables keep the Nova yellow default. No Notes component map.\n\n```css\n.planning-grid {\n --iv-note-indicator-color: var(--color-destructive);\n --iv-note-indicator-size: 12px;\n --iv-note-popup-background: var(--color-warning-surface);\n --iv-note-popup-text: var(--color-foreground);\n --iv-note-popup-input-background: var(--color-background);\n --iv-note-popup-border: 1px solid var(--color-warning-border);\n}\n```\n\nThe popup shell is AG Grid’s `.ag-notes-popup`. Nova only tokenises it via `--ag-note-*` mapped from the `--iv-note-*` knobs above. Do not replace the native editor with a React slot. Extra Comment `messageActions` still work on the same grid — they are Comment overlay items, not AG Grid note menu items.\n\n## Performance\n\nOpt-in. `getNote` runs for painted cells only. No per-cell React. 50,000+ columns use AG Grid column virtualization.\n";
|