nosignal-shell/modules/nexus/PageCompRegistry.qml
28allday cf3c0d823d feat(nosignal): Nerd Font icon remap — nexus (Settings)
Convert caelestia's nexus Settings to Nerd Font icons (drop-in NsIcon).

- NsIcon hardened into a MaterialIcon drop-in: accepts fontStyle (sizes from
  it, keeps the NF Mono family), plus no-op fill/grade/animate for API parity.
- Glyphs map extended with caelestia core names: nexus static icons, nav/page
  icons (palette, wallpaper, dashboard, devices_other, extension, globe, info,
  monitor, shuffle, workspaces, ...), weather + app/device icons.
- Converted all MaterialIcon in modules/nexus/ to NsIcon; fixed icon aliases
  (NavRow/SliderRow .text -> .icon); reverted IconButton font: (it has font,
  not fontStyle, and renders its own icon).

Remaining core surfaces still Material Symbols (no breakage): launcher, osd,
lock, sidebar, utilities — to convert next with any further Glyphs entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:16:01 +01:00

190 lines
4.6 KiB
QML

pragma Singleton
import QtQuick
import QtQuick.Layouts
import Caelestia.Config
import qs.components
import qs.services
import qs.modules.nexus.common
import qs.modules.nexus.pages
import qs.modules.nexus.pages.audio
import qs.modules.nexus.pages.bluetooth
import qs.modules.nexus.pages.panels
import qs.modules.nexus.pages.wallandstyle
import qs.modules.nexus.pages.panels.taskbar
QtObject {
id: root
readonly property list<Component> pageComps: [
// Appearance
Component {
// Wallpaper & style
StackPage {
Component {
WallpaperAndStyle {}
}
Component {
WallpaperSelect {}
}
Component {
WallpaperCategory {}
}
Component {
ColourSelect {}
}
}
},
// Connectivity
Component {
// Network
StackPage {
Component {
NetworkPage {}
}
}
},
Component {
// Bluetooth
StackPage {
Component {
BluetoothPage {}
}
Component {
BtDeviceInfo {}
}
Component {
BluetoothPairing {}
}
}
},
Component {
// Audio
StackPage {
Component {
AudioPage {}
}
Component {
AppVolumes {}
}
}
},
// System
Component {
// Updates (NoSignal)
StackPage {
Component {
UpdatesPage {}
}
}
},
Component {
// Additions (NoSignal)
StackPage {
Component {
AdditionsPage {}
}
}
},
// Shell
Component {
// Panels
StackPage {
Component {
PanelsPage {}
}
Component {
DashboardPanel {}
}
Component {
TaskbarPanel {}
}
Component {
LauncherPanel {}
}
Component {
SidebarPanel {}
}
// Taskbar component sub-pages
Component {
BarWorkspaces {}
}
Component {
BarActiveWindow {}
}
Component {
BarTray {}
}
Component {
BarStatusIcons {}
}
Component {
BarClock {}
}
}
},
Component {
// Services
StackPage {
Component {
ServicesPage {}
}
}
},
Component {
// Language & region
StackPage {
Component {
LanguageAndRegion {}
}
}
},
// About
Component {
StackPage {
Component {
AboutPage {}
}
}
}
]
readonly property Component placeholderComp: Component {
PlaceholderComp {}
}
component PlaceholderComp: Item {
property NexusState nState // To avoid the warning from non-existent property
ColumnLayout {
anchors.centerIn: parent
spacing: Tokens.padding.extraSmall
NsIcon {
Layout.alignment: Qt.AlignHCenter
icon: "handyman"
color: Colours.palette.m3outlineVariant
fontStyle: Tokens.font.icon.extraLarge
}
StyledText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("Page under construction")
color: Colours.palette.m3outlineVariant
font: Tokens.font.title.large
}
StyledText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("This page will be available in a future update.")
color: Colours.palette.m3outlineVariant
font: Tokens.font.body.large
}
}
}
}