@@ -212,22 +216,30 @@ function updateActivePreview(): void {
{{ phone.t('Apps.appStore.details.preview') }}
{{ activePreviewIndex + 1 }} / {{ previewCount }}
-
-
+
{
)
expect(source).toContain('calculator-history__nav-button--edit')
expect(source).toContain('calculator-history__nav-button--close')
- expect(source).toContain('background: rgb(255 255 255 / 9%);')
+ expect(source.match(/ {
expect(source).toContain('place-items: center;')
expect(source).toContain('padding: 0;')
expect(source).toMatch(
- /\.calculator-history__nav-button:hover:not\(:disabled\)[^}]*background: rgb\(255 255 255 \/ 15%\);[^}]*transform: none;[^}]*filter: none;/s,
+ /\.calculator-history__nav-button:hover:not\(:disabled\)[^}]*transform: none;[^}]*filter: brightness\(1\.08\);/s,
)
expect(source).not.toContain('class="calculator-history__edit"')
expect(source).not.toContain('class="calculator-history__close"')
diff --git a/frontend/src/views/apps/CalculatorApp.vue b/frontend/src/views/apps/CalculatorApp.vue
index 5dabf8b..ec2960f 100644
--- a/frontend/src/views/apps/CalculatorApp.vue
+++ b/frontend/src/views/apps/CalculatorApp.vue
@@ -378,6 +378,7 @@ watch([() => calculator.display, expression], async () => {
>
calculator.display, expression], async () => {
calculator.display, expression], async () => {
}
.calculator-history__navbar :deep(.calculator-history__nav-button) {
+ --sky-glass: rgb(44 44 46 / 62%);
+ --sky-hairline: rgb(255 255 255 / 14%);
height: 44px;
min-height: 44px;
- background: rgb(255 255 255 / 9%);
color: #fff;
- box-shadow: none;
}
.calculator-history__navbar :deep(.calculator-history__nav-button:active) {
- background: rgb(255 255 255 / 14%);
- filter: none;
+ filter: brightness(0.94);
}
.calculator-history__navbar :deep(.calculator-history__nav-button--edit) {
@@ -757,9 +758,8 @@ watch([() => calculator.display, expression], async () => {
@media (hover: hover) {
.calculator-history__navbar
:deep(.calculator-history__nav-button:hover:not(:disabled)) {
- background: rgb(255 255 255 / 15%);
transform: none;
- filter: none;
+ filter: brightness(1.08);
}
}
diff --git a/frontend/src/views/apps/CameraApp.contract.test.ts b/frontend/src/views/apps/CameraApp.contract.test.ts
index c0bee65..6dc41e2 100644
--- a/frontend/src/views/apps/CameraApp.contract.test.ts
+++ b/frontend/src/views/apps/CameraApp.contract.test.ts
@@ -31,6 +31,14 @@ const cameraAnimations = readFileSync(
)
describe('Camera app controls', () => {
+ it('uses shared liquid glass for camera interaction buttons', () => {
+ expect(cameraView.match(/variant="glass"/g)).toHaveLength(5)
+ expect(cameraView).toMatch(
+ / {
expect(cameraView).toContain('SkySegmented')
expect(cameraView).toContain(':active-index="mode === \'photo\' ? 0 : 1"')
diff --git a/frontend/src/views/apps/CameraApp.vue b/frontend/src/views/apps/CameraApp.vue
index 3be9103..1b10071 100644
--- a/frontend/src/views/apps/CameraApp.vue
+++ b/frontend/src/views/apps/CameraApp.vue
@@ -1,5 +1,5 @@