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-space" : "srgb",
|
||||
"components" : {
|
||||
"red" : "0.710",
|
||||
"green" : "0.396",
|
||||
"blue" : "0.114",
|
||||
"red" : "0.420",
|
||||
"green" : "0.271",
|
||||
"blue" : "0.467",
|
||||
"alpha" : "1.000"
|
||||
}
|
||||
}
|
||||
@@ -23,9 +23,9 @@
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"red" : "0.890",
|
||||
"green" : "0.635",
|
||||
"blue" : "0.357",
|
||||
"red" : "0.651",
|
||||
"green" : "0.498",
|
||||
"blue" : "0.690",
|
||||
"alpha" : "1.000"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>AutoFill.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>KeeVault.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"red" : "0.710",
|
||||
"green" : "0.396",
|
||||
"blue" : "0.114",
|
||||
"red" : "0.420",
|
||||
"green" : "0.271",
|
||||
"blue" : "0.467",
|
||||
"alpha" : "1.000"
|
||||
}
|
||||
}
|
||||
@@ -23,9 +23,9 @@
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"red" : "0.890",
|
||||
"green" : "0.635",
|
||||
"blue" : "0.357",
|
||||
"red" : "0.651",
|
||||
"green" : "0.498",
|
||||
"blue" : "0.690",
|
||||
"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 {
|
||||
List {
|
||||
if !vm.selectedGroupIds.isEmpty {
|
||||
Button("Clear Filter", action: vm.clear)
|
||||
}
|
||||
GroupFilterNode(group: rootGroup, vm: vm)
|
||||
}
|
||||
.scrollContentBackground(.hidden)
|
||||
.background(Color("VaultBackground"))
|
||||
.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 {
|
||||
VStack(spacing: 24) {
|
||||
Spacer()
|
||||
Image(systemName: "lock.shield.fill")
|
||||
.font(.system(size: 64))
|
||||
.foregroundStyle(.tint)
|
||||
Image("AppIconImage")
|
||||
.resizable()
|
||||
.frame(width: 88, height: 88)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 20, style: .continuous))
|
||||
Text("KeeVault")
|
||||
.font(.largeTitle.bold())
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>KeeVaultCore.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
|
||||