feat: switch accent to Plum, finalize vault-door app icon, group filter Clear button
- Replace Copper accent with Plum (light #6B4577 / dark #A67FB0) across the main
app and AutoFill extension.
- Replace the padlock app icon with a vault-door design (ring, hub, locking
handle) in Plum, plus all macOS sizes.
- Add an AppIconImage asset (separate from the AppIcon icon-set, which SwiftUI
can't reference directly at runtime) and show it on the unlock screen instead
of a generic SF Symbol.
- GroupFilterView: move "Clear Filter" out of the list and into a leading
toolbar button ("Clear", disabled when no filter is active), mirroring the
trailing "Done" button.
@@ -5,9 +5,9 @@
|
|||||||
"color" : {
|
"color" : {
|
||||||
"color-space" : "srgb",
|
"color-space" : "srgb",
|
||||||
"components" : {
|
"components" : {
|
||||||
"red" : "0.710",
|
"red" : "0.420",
|
||||||
"green" : "0.396",
|
"green" : "0.271",
|
||||||
"blue" : "0.114",
|
"blue" : "0.467",
|
||||||
"alpha" : "1.000"
|
"alpha" : "1.000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
"color" : {
|
"color" : {
|
||||||
"color-space" : "srgb",
|
"color-space" : "srgb",
|
||||||
"components" : {
|
"components" : {
|
||||||
"red" : "0.890",
|
"red" : "0.651",
|
||||||
"green" : "0.635",
|
"green" : "0.498",
|
||||||
"blue" : "0.357",
|
"blue" : "0.690",
|
||||||
"alpha" : "1.000"
|
"alpha" : "1.000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<key>AutoFill.xcscheme_^#shared#^_</key>
|
<key>AutoFill.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>0</integer>
|
<integer>2</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>KeeVault.xcscheme_^#shared#^_</key>
|
<key>KeeVault.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
"color" : {
|
"color" : {
|
||||||
"color-space" : "srgb",
|
"color-space" : "srgb",
|
||||||
"components" : {
|
"components" : {
|
||||||
"red" : "0.710",
|
"red" : "0.420",
|
||||||
"green" : "0.396",
|
"green" : "0.271",
|
||||||
"blue" : "0.114",
|
"blue" : "0.467",
|
||||||
"alpha" : "1.000"
|
"alpha" : "1.000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
"color" : {
|
"color" : {
|
||||||
"color-space" : "srgb",
|
"color-space" : "srgb",
|
||||||
"components" : {
|
"components" : {
|
||||||
"red" : "0.890",
|
"red" : "0.651",
|
||||||
"green" : "0.635",
|
"green" : "0.498",
|
||||||
"blue" : "0.357",
|
"blue" : "0.690",
|
||||||
"alpha" : "1.000"
|
"alpha" : "1.000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 964 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 138 KiB |
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "icon-light.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appearances" : [
|
||||||
|
{
|
||||||
|
"appearance" : "luminosity",
|
||||||
|
"value" : "dark"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filename" : "icon-dark.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 138 KiB |
@@ -7,14 +7,17 @@ struct GroupFilterView: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
List {
|
List {
|
||||||
if !vm.selectedGroupIds.isEmpty {
|
|
||||||
Button("Clear Filter", action: vm.clear)
|
|
||||||
}
|
|
||||||
GroupFilterNode(group: rootGroup, vm: vm)
|
GroupFilterNode(group: rootGroup, vm: vm)
|
||||||
}
|
}
|
||||||
.scrollContentBackground(.hidden)
|
.scrollContentBackground(.hidden)
|
||||||
.background(Color("VaultBackground"))
|
.background(Color("VaultBackground"))
|
||||||
.navigationTitle("Groups")
|
.navigationTitle("Groups")
|
||||||
|
.toolbar {
|
||||||
|
ToolbarItem(placement: .cancellationAction) {
|
||||||
|
Button("Clear", action: vm.clear)
|
||||||
|
.disabled(vm.selectedGroupIds.isEmpty)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,10 @@ struct UnlockView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 24) {
|
VStack(spacing: 24) {
|
||||||
Spacer()
|
Spacer()
|
||||||
Image(systemName: "lock.shield.fill")
|
Image("AppIconImage")
|
||||||
.font(.system(size: 64))
|
.resizable()
|
||||||
.foregroundStyle(.tint)
|
.frame(width: 88, height: 88)
|
||||||
|
.clipShape(RoundedRectangle(cornerRadius: 20, style: .continuous))
|
||||||
Text("KeeVault")
|
Text("KeeVault")
|
||||||
.font(.largeTitle.bold())
|
.font(.largeTitle.bold())
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<key>KeeVaultCore.xcscheme_^#shared#^_</key>
|
<key>KeeVaultCore.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>2</integer>
|
<integer>3</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||