[OpenNMS/opennms] d2a3b8: NMS-19981: PrimeVue migration: Replace Feather ico...

Scott Theleman via opennms-cvs <[email protected]>
Newsgroups gmane.network.opennms.cvs
Message-ID <OpenNMS/opennms/push/refs/heads/release-36.x/[email protected]>
  Branch: refs/heads/release-36.x
  Home:   https://github.com/OpenNMS/opennms
  Commit: d2a3b830e19da855eaac19015043696aac003e9d
      https://github.com/OpenNMS/opennms/commit/d2a3b830e19da855eaac19015043696aac003e9d
  Author: Scott Theleman <[email protected]>
  Date:   2026-07-21 (Tue, 21 Jul 2026)

  Changed paths:
    M ui/DEVELOPMENT.md
    M ui/MENU_TEMPLATES.md
    M ui/README.md
    A ui/THIRD-PARTY-LICENSE.md
    M ui/copilot-instructions.md
    M ui/eslint.config.js
    M ui/package.json
    M ui/pnpm-lock.yaml
    A ui/scripts/generate-icons.mjs
    M ui/src/assets/Backup.vue
    M ui/src/assets/Compare.vue
    M ui/src/assets/Endpoints.vue
    M ui/src/assets/FileEditor.vue
    M ui/src/assets/Logs.vue
    M ui/src/assets/Speed.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationCronSelector.vue
    M ui/src/components/Configuration/ConfigurationDrawer.vue
    M ui/src/components/Configuration/ConfigurationEmptyTable.vue
    M ui/src/components/Configuration/ConfigurationGeneratedUrl.vue
    M ui/src/components/Configuration/ConfigurationHeader.vue
    M ui/src/components/Configuration/ConfigurationHelpPanel.vue
    M ui/src/components/Configuration/ConfigurationHelper.ts
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ConfigurationTableWrapper.vue
    M ui/src/components/Configuration/ConfigurationThreadPools.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBGroupFilters.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBSearch.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Device/DCBTableStatusDropdown.vue
    M ui/src/components/EventConfigEventCreate/AlarmDataInfo.vue
    M ui/src/components/EventConfigEventCreate/BasicInformation.vue
    M ui/src/components/EventConfigEventCreate/MaskElements.vue
    M ui/src/components/EventConfigEventCreate/MaskVarbinds.vue
    M ui/src/components/EventConfigEventCreate/VarbindsDecode.vue
    M ui/src/components/EventConfigEventCreate/constants.ts
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/EventConfigurationDetail/EventConfigEventTable.vue
    M ui/src/components/FileEditor/Console.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/FileTreeItem.vue
    M ui/src/components/FileEditor/Help.vue
    M ui/src/components/FileEditor/Search.vue
    M ui/src/components/FileEditor/TopBar.vue
    M ui/src/components/Layout/BreadCrumbs.vue
    A ui/src/components/Layout/OnmsAppLayout.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Map/LeafletMap.vue
    M ui/src/components/Map/MapAlarmsGrid.vue
    M ui/src/components/Map/MapNodesGrid.vue
    M ui/src/components/Map/MapSearch.vue
    M ui/src/components/Map/MarkerClusterPopupContent.vue
    M ui/src/components/Map/MarkerPopup.vue
    M ui/src/components/Map/SeverityFilter.vue
    M ui/src/components/Map/SortableTh.vue
    M ui/src/components/Map/utils.ts
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SearchResult.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserNotificationsMenuItem.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/useMenuIcons.ts
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/NodeActionsDropdown.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/Nodes/NodeDownloadDropdown.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Nodes/hooks/useNodeQuery.ts
    R ui/src/components/PrimeVueTest.vue
    M ui/src/components/Resources/Graph.vue
    M ui/src/components/Resources/GraphContainer.vue
    M ui/src/components/Resources/GraphDataTable.vue
    M ui/src/components/Resources/TimeControls.vue
    M ui/src/components/SCV/SCVAttribute.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SCV/SCVList.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SCV/ScvSearchDrawer.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefaultsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDetailsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigPairedFieldInputs.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfileBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigUploadDownloadTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileDetailsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileRrdSettingsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileSourcesTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/SnmpDataCollectionProfileDetails.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfilesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/MibGroupCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/ResourceTypeCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/SnmpDataCollectionSourceProfilesDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/SystemDefinitionCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/MibGroupsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/ResourceTypesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/SystemDefinitionsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceImport.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    M ui/src/components/TrapdConfiguration/CreateSnmpV3User.vue
    M ui/src/components/TrapdConfiguration/GeneralConfiguration.vue
    M ui/src/components/TrapdConfiguration/SnmpV3UserManagement.vue
    M ui/src/components/TrapdConfiguration/TrapdAdvancedConfiguration.vue
    M ui/src/components/UsageStatistics/UsageStatisticsHeader.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegister.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegisterResult.vue
    M ui/src/components/ZenithConnect/ZenithConnectView.vue
    A ui/src/components/icons/OnmsIcon.vue
    A ui/src/components/icons/account/Group.vue
    A ui/src/components/icons/action/AccountCircle.vue
    A ui/src/components/icons/action/Add.vue
    A ui/src/components/icons/action/AddCircleAlt.vue
    A ui/src/components/icons/action/AddComment.vue
    A ui/src/components/icons/action/AddNote.vue
    A ui/src/components/icons/action/AddUser.vue
    A ui/src/components/icons/action/Archive.vue
    A ui/src/components/icons/action/AssignTo.vue
    A ui/src/components/icons/action/AttachEmail.vue
    A ui/src/components/icons/action/AttachFile.vue
    A ui/src/components/icons/action/Build.vue
    A ui/src/components/icons/action/Business.vue
    A ui/src/components/icons/action/Calendar.vue
    A ui/src/components/icons/action/CalendarEndDate.vue
    A ui/src/components/icons/action/CalendarStartDate.vue
    A ui/src/components/icons/action/Cancel.vue
    A ui/src/components/icons/action/ChangeOwner.vue
    A ui/src/components/icons/action/CheckCircle.vue
    A ui/src/components/icons/action/Cloud.vue
    A ui/src/components/icons/action/CloudDownload.vue
    A ui/src/components/icons/action/CloudUpload.vue
    A ui/src/components/icons/action/Code.vue
    A ui/src/components/icons/action/Comment.vue
    A ui/src/components/icons/action/ContactSupport.vue
    A ui/src/components/icons/action/ContentCopy.vue
    A ui/src/components/icons/action/ContentPaste.vue
    A ui/src/components/icons/action/Cycle.vue
    A ui/src/components/icons/action/Dashboard.vue
    A ui/src/components/icons/action/DateRange.vue
    A ui/src/components/icons/action/Delete.vue
    A ui/src/components/icons/action/DownloadFile.vue
    A ui/src/components/icons/action/Edit.vue
    A ui/src/components/icons/action/EditMode.vue
    A ui/src/components/icons/action/Email.vue
    A ui/src/components/icons/action/EmailDraft.vue
    A ui/src/components/icons/action/EmailInbox.vue
    A ui/src/components/icons/action/EmailSecure.vue
    A ui/src/components/icons/action/ExitToApp.vue
    A ui/src/components/icons/action/Expand.vue
    A ui/src/components/icons/action/Feedback.vue
    A ui/src/components/icons/action/FeedbackAlt.vue
    A ui/src/components/icons/action/FileCopy.vue
    A ui/src/components/icons/action/FilterAlt.vue
    A ui/src/components/icons/action/Group.vue
    A ui/src/components/icons/action/Help.vue
    A ui/src/components/icons/action/Hide.vue
    A ui/src/components/icons/action/Home.vue
    A ui/src/components/icons/action/Info.vue
    A ui/src/components/icons/action/InformationExchange.vue
    A ui/src/components/icons/action/LightDarkMode.vue
    A ui/src/components/icons/action/Link.vue
    A ui/src/components/icons/action/List.vue
    A ui/src/components/icons/action/Location.vue
    A ui/src/components/icons/action/LocationCity.vue
    A ui/src/components/icons/action/Lock.vue
    A ui/src/components/icons/action/LockPasswordProtected.vue
    A ui/src/components/icons/action/LogIn.vue
    A ui/src/components/icons/action/LogOut.vue
    A ui/src/components/icons/action/LoggerConfigs.vue
    A ui/src/components/icons/action/ManageProfile.vue
    A ui/src/components/icons/action/MarkComplete.vue
    A ui/src/components/icons/action/MarkIncomplete.vue
    A ui/src/components/icons/action/MarkRead.vue
    A ui/src/components/icons/action/MarkUnread.vue
    A ui/src/components/icons/action/Notifications.vue
    A ui/src/components/icons/action/Options.vue
    A ui/src/components/icons/action/Person.vue
    A ui/src/components/icons/action/Pin.vue
    A ui/src/components/icons/action/PlayCircle.vue
    A ui/src/components/icons/action/Print.vue
    A ui/src/components/icons/action/Remove.vue
    A ui/src/components/icons/action/RemoveUser.vue
    A ui/src/components/icons/action/Reporting.vue
    A ui/src/components/icons/action/Restore.vue
    A ui/src/components/icons/action/Search.vue
    A ui/src/components/icons/action/Send.vue
    A ui/src/components/icons/action/SendWorkflow.vue
    A ui/src/components/icons/action/Settings.vue
    A ui/src/components/icons/action/Share.vue
    A ui/src/components/icons/action/Sort.vue
    A ui/src/components/icons/action/Subscriptions.vue
    A ui/src/components/icons/action/SupportCenter.vue
    A ui/src/components/icons/action/Unlock.vue
    A ui/src/components/icons/action/UpdateSchedules.vue
    A ui/src/components/icons/action/UpdateUtilities.vue
    A ui/src/components/icons/action/UploadFile.vue
    A ui/src/components/icons/action/VerifedUser.vue
    A ui/src/components/icons/action/View.vue
    A ui/src/components/icons/action/ViewDetails.vue
    A ui/src/components/icons/action/Workflow.vue
    A ui/src/components/icons/communication/Certificate.vue
    A ui/src/components/icons/communication/CertificateAlt.vue
    A ui/src/components/icons/communication/Chat.vue
    A ui/src/components/icons/communication/Contacts.vue
    A ui/src/components/icons/communication/Documentation.vue
    A ui/src/components/icons/communication/IdCard.vue
    A ui/src/components/icons/communication/Phone.vue
    A ui/src/components/icons/content/BlogArticle.vue
    A ui/src/components/icons/content/Video.vue
    A ui/src/components/icons/datavis/AreaChart.vue
    A ui/src/components/icons/datavis/BarChart.vue
    A ui/src/components/icons/datavis/ColumnChart.vue
    A ui/src/components/icons/datavis/DonutChart.vue
    A ui/src/components/icons/datavis/Gauge.vue
    A ui/src/components/icons/datavis/LineChart.vue
    A ui/src/components/icons/datavis/PieChart.vue
    A ui/src/components/icons/datavis/PolarChart.vue
    A ui/src/components/icons/datavis/Reporting.vue
    A ui/src/components/icons/datavis/StackedBarChart.vue
    A ui/src/components/icons/datavis/StackedColumnChart.vue
    A ui/src/components/icons/datavis/TreeDiagram.vue
    A ui/src/components/icons/file/Attachment.vue
    A ui/src/components/icons/file/Folder.vue
    A ui/src/components/icons/file/FolderAdd.vue
    A ui/src/components/icons/file/FolderLocked.vue
    A ui/src/components/icons/file/FolderOpen.vue
    A ui/src/components/icons/file/Generic.vue
    A ui/src/components/icons/file/Image.vue
    A ui/src/components/icons/file/Pdf.vue
    A ui/src/components/icons/file/Text.vue
    A ui/src/components/icons/file/WordDoc.vue
    A ui/src/components/icons/file/Xls.vue
    A ui/src/components/icons/file/Zip.vue
    A ui/src/components/icons/hardware/ApplianceProfiles.vue
    A ui/src/components/icons/hardware/Appliances.vue
    A ui/src/components/icons/hardware/AppliancesAlt.vue
    A ui/src/components/icons/hardware/DesktopWindows.vue
    A ui/src/components/icons/hardware/Instances.vue
    A ui/src/components/icons/hardware/KeyboardArrowDown.vue
    A ui/src/components/icons/hardware/KeyboardArrowUp.vue
    A ui/src/components/icons/hardware/Laptop.vue
    A ui/src/components/icons/hardware/MinionProfiles.vue
    A ui/src/components/icons/hardware/Network.vue
    A ui/src/components/icons/hardware/NetworkProfiles.vue
    A ui/src/components/icons/hardware/Router.vue
    A ui/src/components/icons/hardware/Security.vue
    A ui/src/components/icons/hardware/Server.vue
    A ui/src/components/icons/hardware/VirtualMachine.vue
    A ui/src/components/icons/hardware/VirtualMachineAlt.vue
    A ui/src/components/icons/medical/Ambulance.vue
    A ui/src/components/icons/medical/CostSavings.vue
    A ui/src/components/icons/medical/Drug.vue
    A ui/src/components/icons/medical/DrugGroupId.vue
    A ui/src/components/icons/medical/Hospital.vue
    A ui/src/components/icons/medical/Patient.vue
    A ui/src/components/icons/medical/Payor.vue
    A ui/src/components/icons/medical/Provider.vue
    A ui/src/components/icons/medical/ProviderOffice.vue
    A ui/src/components/icons/medical/Treatment.vue
    A ui/src/components/icons/medical/TreatmentCycle.vue
    A ui/src/components/icons/medical/TreatmentSchedule.vue
    A ui/src/components/icons/medical/Vitals.vue
    A ui/src/components/icons/navigation/Apps.vue
    A ui/src/components/icons/navigation/AppsGetMore.vue
    A ui/src/components/icons/navigation/ArrowBack.vue
    A ui/src/components/icons/navigation/ArrowDropDown.vue
    A ui/src/components/icons/navigation/Cancel.vue
    A ui/src/components/icons/navigation/ChevronLeft.vue
    A ui/src/components/icons/navigation/ChevronRight.vue
    A ui/src/components/icons/navigation/ExpandLess.vue
    A ui/src/components/icons/navigation/ExpandMore.vue
    A ui/src/components/icons/navigation/FirstPage.vue
    A ui/src/components/icons/navigation/Fullscreen.vue
    A ui/src/components/icons/navigation/FullscreenExit.vue
    A ui/src/components/icons/navigation/GridView.vue
    A ui/src/components/icons/navigation/LastPage.vue
    A ui/src/components/icons/navigation/Menu.vue
    A ui/src/components/icons/navigation/MenuClose.vue
    A ui/src/components/icons/navigation/MenuOpen.vue
    A ui/src/components/icons/navigation/MoreHoriz.vue
    A ui/src/components/icons/navigation/MoreVert.vue
    A ui/src/components/icons/navigation/Refresh.vue
    A ui/src/components/icons/navigation/SubdirectoryArrowLeft.vue
    A ui/src/components/icons/navigation/SubdirectoryArrowRight.vue
    A ui/src/components/icons/navigation/UnfoldLess.vue
    A ui/src/components/icons/navigation/UnfoldMore.vue
    A ui/src/components/icons/network/AggregationLayer.vue
    A ui/src/components/icons/network/AggregationLayerAlt1.vue
    A ui/src/components/icons/network/AggregationLayerAlt2.vue
    A ui/src/components/icons/network/AggregationLayerAlt3.vue
    A ui/src/components/icons/network/AggregationLayerAlt4.vue
    A ui/src/components/icons/network/AggregationLayerAlt5.vue
    A ui/src/components/icons/network/ApiConfig.vue
    A ui/src/components/icons/network/ApiEndpoints.vue
    A ui/src/components/icons/network/ApplianceProfiles.vue
    A ui/src/components/icons/network/Appliances.vue
    A ui/src/components/icons/network/AppliancesAlt.vue
    A ui/src/components/icons/network/Build.vue
    A ui/src/components/icons/network/CertificateAlt.vue
    A ui/src/components/icons/network/Cloud.vue
    A ui/src/components/icons/network/CloudBackUp.vue
    A ui/src/components/icons/network/CloudDownload.vue
    A ui/src/components/icons/network/CloudService.vue
    A ui/src/components/icons/network/CloudUpload.vue
    A ui/src/components/icons/network/Code.vue
    A ui/src/components/icons/network/Compare.vue
    A ui/src/components/icons/network/Compare1.vue
    A ui/src/components/icons/network/Compliance.vue
    A ui/src/components/icons/network/Configuration.vue
    A ui/src/components/icons/network/Connection.vue
    A ui/src/components/icons/network/ContainerAdd.vue
    A ui/src/components/icons/network/ContainerTransient.vue
    A ui/src/components/icons/network/ContainerUnknown.vue
    A ui/src/components/icons/network/Database.vue
    A ui/src/components/icons/network/Desktop.vue
    A ui/src/components/icons/network/Digitize.vue
    A ui/src/components/icons/network/DistributedMonitoring.vue
    A ui/src/components/icons/network/ElectricalServices.vue
    A ui/src/components/icons/network/EndUser.vue
    A ui/src/components/icons/network/ExitCompare.vue
    A ui/src/components/icons/network/ExitCompareModeAlt.vue
    A ui/src/components/icons/network/ExtractData.vue
    A ui/src/components/icons/network/Firewall.vue
    A ui/src/components/icons/network/Instances.vue
    A ui/src/components/icons/network/Inventory.vue
    A ui/src/components/icons/network/InventoryAdd.vue
    A ui/src/components/icons/network/InventoryAlt.vue
    A ui/src/components/icons/network/InventoryConfirm.vue
    A ui/src/components/icons/network/InventoryDelete.vue
    A ui/src/components/icons/network/Laptop.vue
    A ui/src/components/icons/network/LogFile.vue
    A ui/src/components/icons/network/LoggerConfigs.vue
    A ui/src/components/icons/network/Logs.vue
    A ui/src/components/icons/network/LogsAlt.vue
    A ui/src/components/icons/network/Microservices.vue
    A ui/src/components/icons/network/Minion.vue
    A ui/src/components/icons/network/MinionProfiles.vue
    A ui/src/components/icons/network/Monitoring.vue
    A ui/src/components/icons/network/NetworkProfiles.vue
    A ui/src/components/icons/network/Nodes.vue
    A ui/src/components/icons/network/Policy.vue
    A ui/src/components/icons/network/Power.vue
    A ui/src/components/icons/network/RouterLan.vue
    A ui/src/components/icons/network/RouterWan.vue
    A ui/src/components/icons/network/Security.vue
    A ui/src/components/icons/network/SecurityScan.vue
    A ui/src/components/icons/network/Server.vue
    A ui/src/components/icons/network/ServerClock.vue
    A ui/src/components/icons/network/Switch.vue
    A ui/src/components/icons/network/Terminal.vue
    A ui/src/components/icons/network/UpdateUtilities.vue
    A ui/src/components/icons/network/Utilities.vue
    A ui/src/components/icons/network/ViewCode.vue
    A ui/src/components/icons/network/VirtualMachine.vue
    A ui/src/components/icons/network/VirtualMachineAlt.vue
    A ui/src/components/icons/network/VirtualMachineAlt2.vue
    A ui/src/components/icons/network/WifiRouter.vue
    A ui/src/components/icons/notification/Connected.vue
    A ui/src/components/icons/notification/Error.vue
    A ui/src/components/icons/notification/NotificationSelected.vue
    A ui/src/components/icons/notification/NotificationSoundSelected.vue
    A ui/src/components/icons/notification/NotificationsOff.vue
    A ui/src/components/icons/notification/Unconnected.vue
    A ui/src/components/icons/notification/Warning.vue
    A ui/src/components/icons/notification/Wifi.vue
    A ui/src/components/icons/notification/WifiNoConnection.vue
    A ui/src/components/icons/notification/WifiOff.vue
    A ui/src/components/icons/notification/WifiSignalBad.vue
    A ui/src/components/icons/notification/WifiStatusBar.vue
    A ui/src/components/icons/status/Available.vue
    A ui/src/components/icons/status/Unavailable.vue
    A ui/src/composables/useOutsideClick.ts
    M ui/src/composables/useQueryParams.ts
    M ui/src/containers/DeviceConfigBackup.vue
    M ui/src/containers/EventConfigEventCreate.vue
    M ui/src/containers/EventConfigurationDetail.vue
    M ui/src/containers/FileEditor.vue
    M ui/src/containers/Home.vue
    M ui/src/containers/Logs.vue
    M ui/src/containers/Nodes.vue
    M ui/src/containers/ProvisionDConfig.vue
    M ui/src/containers/ResourceGraphs.vue
    M ui/src/containers/SnmpDataCollection.vue
    M ui/src/containers/SnmpDataCollectionSourceDetail.vue
    M ui/src/containers/UsageStatistics.vue
    M ui/src/containers/ZenithConnectSuccess.vue
    M ui/src/lib/constants.ts
    M ui/src/lib/sorting.ts
    M ui/src/lib/trapdValidator.ts
    M ui/src/main/App.vue
    M ui/src/main/index.html
    M ui/src/main/main.ts
    M ui/src/main/router/index.ts
    M ui/src/menu/index.html
    M ui/src/menu/main.ts
    M ui/src/stores/mapStore.ts
    M ui/src/stores/nodeStructureStore.ts
    A ui/src/styles/_onms-color-utils.scss
    A ui/src/styles/_onms-elevation.scss
    A ui/src/styles/_onms-table.scss
    A ui/src/styles/_onms-tokens.scss
    A ui/src/styles/_onms-typography.scss
    M ui/src/styles/_severities.scss
    M ui/src/styles/_transitionDataTable.scss
    A ui/src/styles/onms-base.scss
    M ui/src/styles/onms-grid.scss
    A ui/src/styles/onms-theme.scss
    R ui/src/styles/opennms-feather-styles.scss
    A ui/src/styles/opennms-styles.scss
    M ui/src/styles/themes.scss
    M ui/src/theme/opennms-preset.ts
    M ui/src/types/index.ts
    M ui/src/types/snmpConfig.ts
    M ui/tests/components/Menu/utils.test.ts
    M ui/tests/components/Nodes/AssetFilterPanel.test.ts
    M ui/tests/components/Nodes/ExtendedSearchPanel.test.ts
    M ui/tests/components/Nodes/NodesTable.test.ts
    M ui/tests/components/TrapdConfiguration/CreateSnmpV3User.test.ts
    M ui/tests/components/TrapdConfiguration/SnmpV3UserManagement.test.ts
    M ui/tests/components/TrapdConfiguration/TrapdAdvancedConfiguration.test.ts
    M ui/tests/lib/sorting.test.ts
    M ui/vite.config.menu.ts
    M ui/vite.config.ts

  Log Message:
  -----------
  NMS-19981: PrimeVue migration: Replace Feather icons, completely remove Feather (#8636)

* NMS-19981: Vendor all FeatherDS icons as local OnmsIcon components

Generate local template-only SFCs for all 262 @featherds/icon glyphs into
src/components/icons/<category>/<Name>.vue (SVG geometry copied verbatim via a
one-time render-to-string generator, scripts/generate-icons.mjs), plus a
self-contained OnmsIcon wrapper (depends only on vue) replacing FeatherIcon
with the same :icon/flex/title API. No app code wired to these yet.

* NMS-19981: Repoint icon usage to vendored OnmsIcon

Rewrite all @featherds/icon imports across src to the local vendored icons +
OnmsIcon wrapper (<FeatherIcon> -> <OnmsIcon>; deep icon imports ->
@/components/icons/<cat>/<Name>.vue). Rename the .feather-icon CSS class to
.onms-icon in the 5 consuming components; retype icon components from
typeof FeatherIcon/DefineComponent to vue Component in Menu/utils.ts and
UserSelfServiceMenuItem.vue; convert SideMenu's PrimeIcons toggle/submenu
chevron to OnmsIcon (ChevronLeft/ChevronRight); rename 5 test stubs; ignore
scripts/ in eslint.

No @featherds/icon imports remain in src. The package stays in package.json:
other still-present @featherds/* packages (@featherds/input-helper source)
import it transitively and rely on it being hoisted; it will be removed when
those packages are dropped later in Phase 6.

* NMS-19981: Vendor FeatherDS typography mixins as onms- mixins

Replace @featherds/styles/mixins/typography with local, self-contained
src/styles/_onms-typography.scss (all 15 typography mixins as onms-*, Feather
metrics inlined, Inter/OpenSans literals, color via var(--p-text-color)).
Repoint all 54 consumers (both @import and @use forms) and rename @include
sites to onms-. Other @featherds/styles imports remain for later Phase 6 steps.

* NMS-19981: Migrate FeatherDS grid classes to onms-grid

Replace the remaining feather-row/feather-col-12 (Home, UsageStatistics)
with onms-row/onms-col-12, and feather-container (ProvisionDConfig) with a
new .onms-container in onms-grid.scss (max-width 75rem + 1.5rem padding,
matching FeatherDS). Remove the now-unused @featherds/styles/lib/grid import
from App.vue. No responsive/offset variants were in use.

* NMS-19981: Vendor FeatherDS elevation mixin as onms-elevation

Replace @featherds/styles/mixins/elevation with local self-contained
src/styles/_onms-elevation.scss: parameterized onms-elevation($level) with the
Material box-shadow ramp inlined as literals (levels 0-4; app uses 1/2) and the
elevated surface via var(--p-content-background). Rewrite the 9 @include sites
(incl. one namespaced @use) and remove the dead elevation import from 7 files
that imported but never used it.

* NMS-19981: Vendor FeatherDS type/enum shims into @/types

Define SORT (enum; asc/desc/none values preserved), ISelectItemType and
IAutocompleteItemType (loose index-signature interfaces) locally in
src/types/index.ts, and repoint all imports from @featherds/{table,select,
autocomplete} to @/types (8 SORT + 13 ISelectItemType + 6 IAutocompleteItemType
sites). @featherds/select and @featherds/autocomplete now have no source usage;
@featherds/table remains only via its table SCSS (separate cleanup).

* NMS-19981: Vendor FeatherDS table SCSS as onms-table

Add src/styles/_onms-table.scss with onms-table()/onms-table-condensed() mixins
(the only two the app used) copied verbatim from @featherds/table, typography via
onms-typography and border/text tokens mapped to --p-*. Rewrite the 4 @include
consumers (GraphDataTable, Map alarm/node grids, MarkerClusterPopupContent) and
remove the dead @use import from 4 files (NodeAdvancedFiltersDrawer, 3 SnmpConfig
tabs). @featherds/table now has no source usage.

* NMS-19981: Fix Geographical Map overlay controls

- Search box: reposition top-left (was hidden under the fixed menu bar), add a
  magnifying-glass icon + a translucent light panel/padding, white input.
- Show Severity: drop the '>=' from the label, force dark-on-white so it reads
  over the always-light map in dark mode, translucent panel/padding.
- Push Leaflet zoom/layer controls below the fixed menu bar; drop the layers
  control's expanded list below its icon so it no longer overlaps Show Severity.
- Stop the map + controls shifting up on first click: disable Leaflet keyboard
  focus and drop the container tabindex (the browser was scrolling the
  focus-target container into view from under the fixed menu bar).

* NMS-19981: Fix Map table sticky header (CSS position:sticky, drop JS scroll-transform hack)

* NMS-19981: Lock Map sticky header immediately (move top gap to scroll container)

* NMS-19981: Make Map Search & Show Severity controls theme-aware (dark mode)

* NMS-19981: Lay Alarm Action label + dropdown on one line inline with tabs

* NMS-19981: Keep Map popups below top menu on open (menu-aware autoPan), fix double scroll

* NMS-19981: Remove remaining Feather components; vendor OnmsAppLayout + useOutsideClick; drop 40 @featherds packages

* NMS-19981: Add themes/variables token-migration implementation plan

* NMS-19981: Add owned onms- token layer (tokens, theme, color-utils)

* NMS-19981: Wire onms- theme into SPA + menu builds; migrate global style files off Feather tokens

* NMS-19981: Repoint var($token) consumers (~30 files) to onms-tokens; add primary-text-on-surface

* NMS-19981: Repoint raw var(--feather-*) literals to var(--onms-*)

* NMS-19981: Convert local feather severity overrides + preset comment to onms

* NMS-19981: Vendor base reset (onms-base); drop Feather theme + @featherds/styles; FeatherDS fully removed from UI

* NMS-19981: Update docs for FeatherDS removal (PrimeVue + onms- layer)

* NMS-19981: De-Feather cleanup (comments, class/type renames, dead code, opennms-styles rename) + fix SPA content top-offset below fixed menubar

* Small version updates !smoke

* Remove design docs

* NMS-19981: Add Apache-2.0 attribution for vendored FeatherDS code

Add ui/THIRD-PARTY-LICENSE.md documenting the FeatherDS (@featherds/*
0.12.x, (C) NantHealth, Apache-2.0) code vendored during the de-Feather
work: the 262 icon SFCs plus the derived composable, styles, types, and
layout files, marked verbatim vs modified, with the full Apache-2.0 text
(satisfies Apache-2.0 section 4). Reference it from ui/README.md and add a
source-level attribution note to useOutsideClick.ts reconciling the AGPLv3
header with the upstream Apache-2.0 grant.

* NMS-19981: Restore Leaflet keyboard nav (WCAG 2.1.1); handle focus-scroll via CSS

Re-enable Leaflet keyboard support on the map (arrow-key pan / +- zoom) that
was previously disabled to stop a click-focus scroll shift under the fixed
menu bar; removing it failed WCAG 2.1.1. Instead reserve the menu-bar height
with scroll-margin-top on the .leaflet-container so the focus-triggered
scroll-into-view stops below the bar rather than sliding the map under it.

* NMS-19981: Open map popups below the marker; stop autoPan map-jump

Marker and cluster popups previously opened above the marker with autoPan on,
so clicking a marker in the upper part of the map (under the fixed menu bar)
panned the whole map down to fit the popup. Turn autoPan off and, in a
popupopen handler, offset each popup below its marker by the popup's own
measured height (Leaflet has no popup direction option). Hide the now-pointless
tip via .onms-popup-below. Bottom-edge markers, where a below-popup would run
past the map's lower edge, get a one-directional pan-up nudge to reveal it;
top markers never shift.

Also close the open popup on Esc regardless of focus: Leaflet's own Esc-to-close
only fires while the map container is focused, so tabbing into the popup's links
blurred it and broke Esc. A document keydown listener, attached only while a
popup is open and running in the bubble phase, closes the popup without
competing with the menu search's Esc handler (which stops propagation first).

* NMS-19981: Keep legacy JSP text/link colors readable in dark mode

The standalone menu bundle applies the .open-light/.open-dark theme class to
<html>/<body> of legacy JSP pages, but those pages are not dark-theme aware
(their background stays light). In dark mode the themed tokens then flipped to
their on-dark values, making legacy content unreadable: links
(--onms-clickable-normal, light blue) and all text via the typography mixins'
--p-text-color (white) on a light page.

Pin both tokens to their light-theme values on the legacy content containers
(#content, breadcrumb nav, footer). Elements keep using the shared tokens, so
links, headings, footer and table text are all covered. The Vue menu mounts
inside #content and legitimately tracks the theme (inline Popovers use
--p-text-color), so it is re-asserted to the dark values under .open-dark and
renders unchanged.

* NMS-19981: Force native <select> to light rendering on legacy pages

In dark mode PrimeVue sets color-scheme: dark on the document, so the browser
painted native <select> controls (e.g. the Alarm/Event/Outage list filters,
select.form-control.custom-select) with a dark background — while their text is
pinned to the light-theme --p-text-color, leaving dark-on-dark and unreadable.
Legacy JSP pages are light-only, so set color-scheme: light on <select> to
render native controls (and their option popups) light in both modes. The Vue
menu uses PrimeVue components rather than native <select>, so it is unaffected.



To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications


_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list

To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.