@a-type/ui 3.0.13 → 3.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/colors.stories.js +1 -1
- package/dist/cjs/colors.stories.js.map +1 -1
- package/dist/cjs/components/actions/ActionButton.js +1 -1
- package/dist/cjs/components/actions/ActionButton.js.map +1 -1
- package/dist/cjs/components/button/classes.js +1 -1
- package/dist/cjs/components/button/classes.js.map +1 -1
- package/dist/cjs/components/layouts/PageRoot.d.ts +5 -1
- package/dist/cjs/components/layouts/PageRoot.js +22 -2
- package/dist/cjs/components/layouts/PageRoot.js.map +1 -1
- package/dist/cjs/hooks/useTitleBarColor.d.ts +4 -5
- package/dist/cjs/hooks/useTitleBarColor.js +8 -12
- package/dist/cjs/hooks/useTitleBarColor.js.map +1 -1
- package/dist/cjs/uno/logic/color.d.ts +1 -1
- package/dist/cjs/uno/logic/color.js +13 -4
- package/dist/cjs/uno/logic/color.js.map +1 -1
- package/dist/cjs/uno/logic/color.test.js +5 -14
- package/dist/cjs/uno/logic/color.test.js.map +1 -1
- package/dist/cjs/uno/logic/palettes.d.ts +1 -1
- package/dist/cjs/uno/logic/palettes.js +1 -1
- package/dist/cjs/uno/logic/palettes.js.map +1 -1
- package/dist/cjs/uno/preflights/colors.js +2 -2
- package/dist/cjs/uno/preflights/colors.js.map +1 -1
- package/dist/cjs/uno/theme/colors.js +2 -2
- package/dist/cjs/uno/theme/colors.js.map +1 -1
- package/dist/cjs/uno/theme/sizes.js +2 -2
- package/dist/css/main.css +2 -2
- package/dist/esm/colors.stories.js +1 -1
- package/dist/esm/colors.stories.js.map +1 -1
- package/dist/esm/components/actions/ActionButton.js +1 -1
- package/dist/esm/components/actions/ActionButton.js.map +1 -1
- package/dist/esm/components/button/classes.js +1 -1
- package/dist/esm/components/button/classes.js.map +1 -1
- package/dist/esm/components/layouts/PageRoot.d.ts +5 -1
- package/dist/esm/components/layouts/PageRoot.js +19 -2
- package/dist/esm/components/layouts/PageRoot.js.map +1 -1
- package/dist/esm/hooks/useTitleBarColor.d.ts +4 -5
- package/dist/esm/hooks/useTitleBarColor.js +8 -12
- package/dist/esm/hooks/useTitleBarColor.js.map +1 -1
- package/dist/esm/uno/logic/color.d.ts +1 -1
- package/dist/esm/uno/logic/color.js +13 -4
- package/dist/esm/uno/logic/color.js.map +1 -1
- package/dist/esm/uno/logic/color.test.js +6 -15
- package/dist/esm/uno/logic/color.test.js.map +1 -1
- package/dist/esm/uno/logic/palettes.d.ts +1 -1
- package/dist/esm/uno/logic/palettes.js +1 -1
- package/dist/esm/uno/logic/palettes.js.map +1 -1
- package/dist/esm/uno/preflights/colors.js +2 -2
- package/dist/esm/uno/preflights/colors.js.map +1 -1
- package/dist/esm/uno/theme/colors.js +2 -2
- package/dist/esm/uno/theme/colors.js.map +1 -1
- package/dist/esm/uno/theme/sizes.js +2 -2
- package/package.json +1 -1
- package/src/colors.stories.tsx +1 -1
- package/src/components/actions/ActionButton.tsx +1 -1
- package/src/components/button/classes.tsx +2 -1
- package/src/components/layouts/PageRoot.tsx +29 -8
- package/src/hooks/useTitleBarColor.ts +10 -20
- package/src/uno/logic/color.test.ts +6 -16
- package/src/uno/logic/color.ts +15 -7
- package/src/uno/logic/palettes.ts +1 -1
- package/src/uno/preflights/colors.ts +2 -2
- package/src/uno/theme/colors.ts +2 -2
- package/src/uno/theme/sizes.ts +2 -2
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useCallback, useEffect } from 'react';
|
|
2
2
|
import { useResolvedColorMode } from '../colorMode.js';
|
|
3
3
|
import { snapshotColorContext } from '../uno/logic/color.js';
|
|
4
4
|
import {
|
|
5
5
|
ColorLogicalPaletteDefinitions,
|
|
6
|
+
PaletteName,
|
|
6
7
|
palettes,
|
|
7
8
|
} from '../uno/logic/palettes.js';
|
|
8
9
|
|
|
@@ -62,41 +63,30 @@ export function useSetTitleBarColor() {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
export function useThemedTitleBar(
|
|
65
|
-
paletteName:
|
|
66
|
+
paletteName: PaletteName,
|
|
66
67
|
value: keyof ColorLogicalPaletteDefinitions,
|
|
67
|
-
|
|
68
|
+
/** If not provided, will inherit from app */
|
|
69
|
+
mode?: 'light' | 'dark',
|
|
70
|
+
skip?: boolean,
|
|
68
71
|
) {
|
|
69
72
|
const { setColor } = useSetTitleBarColor();
|
|
70
73
|
|
|
71
74
|
useEffect(() => {
|
|
75
|
+
if (skip) return;
|
|
72
76
|
const previousColor = getCurrentColor();
|
|
73
77
|
|
|
74
78
|
function update() {
|
|
75
|
-
const palette = palettes[paletteName];
|
|
76
|
-
const context = snapshotColorContext(
|
|
77
|
-
options?.contextElement?.current,
|
|
78
|
-
paletteName,
|
|
79
|
-
);
|
|
79
|
+
const palette = palettes[paletteName] ?? palettes.primary;
|
|
80
|
+
const context = snapshotColorContext(paletteName, mode);
|
|
80
81
|
const color = palette.definitions[value].computeOklch(context);
|
|
81
82
|
setColor(color);
|
|
82
83
|
}
|
|
83
84
|
update();
|
|
84
85
|
|
|
85
|
-
const observer = new MutationObserver(() => {
|
|
86
|
-
update();
|
|
87
|
-
});
|
|
88
|
-
observer.observe(
|
|
89
|
-
options?.contextElement?.current ?? document.documentElement,
|
|
90
|
-
{
|
|
91
|
-
attributes: true,
|
|
92
|
-
attributeFilter: ['class'],
|
|
93
|
-
},
|
|
94
|
-
);
|
|
95
|
-
|
|
96
86
|
if (previousColor) {
|
|
97
87
|
return () => {
|
|
98
88
|
setColor(previousColor);
|
|
99
89
|
};
|
|
100
90
|
}
|
|
101
|
-
}, [setColor, paletteName, value,
|
|
91
|
+
}, [setColor, paletteName, value, mode, skip]);
|
|
102
92
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import {
|
|
3
3
|
ColorEvaluationContext,
|
|
4
4
|
livePropertyColorContext,
|
|
@@ -6,19 +6,9 @@ import {
|
|
|
6
6
|
} from './color.js';
|
|
7
7
|
import { palettes } from './palettes.js';
|
|
8
8
|
|
|
9
|
-
let contextElement: HTMLElement;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
contextElement = document.createElement('div');
|
|
12
|
-
contextElement.classList.add('palette-leek');
|
|
13
|
-
document.body.appendChild(contextElement);
|
|
14
|
-
});
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
document.body.removeChild(contextElement);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
9
|
describe('context snapshot evaluation', () => {
|
|
20
10
|
it('should snapshot color context from element properties', () => {
|
|
21
|
-
const context = snapshotColorContext(
|
|
11
|
+
const context = snapshotColorContext('leek');
|
|
22
12
|
expect(context).toEqual({
|
|
23
13
|
sourceHue: '165.88',
|
|
24
14
|
localLightnessSpread: '1',
|
|
@@ -41,7 +31,7 @@ describe('oklch color evaluation tools', () => {
|
|
|
41
31
|
const { wash, default: DEFAULT } = palettes.main.definitions;
|
|
42
32
|
|
|
43
33
|
it('should resolve lch values', () => {
|
|
44
|
-
const ctx = snapshotColorContext(
|
|
34
|
+
const ctx = snapshotColorContext('leek');
|
|
45
35
|
const { l, c, h } = wash.raw(ctx);
|
|
46
36
|
expect(l.value).toBeCloseTo(100, 1);
|
|
47
37
|
expect(l.unit).toBe('%');
|
|
@@ -59,7 +49,7 @@ describe('oklch color evaluation tools', () => {
|
|
|
59
49
|
);
|
|
60
50
|
});
|
|
61
51
|
it('should evaluate a valid oklch color value using element property values', () => {
|
|
62
|
-
const context = snapshotColorContext(
|
|
52
|
+
const context = snapshotColorContext('leek');
|
|
63
53
|
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
64
54
|
`"rgb(100% 100% 100%)"`,
|
|
65
55
|
);
|
|
@@ -77,7 +67,7 @@ describe('oklch color evaluation tools', () => {
|
|
|
77
67
|
);
|
|
78
68
|
});
|
|
79
69
|
it('should evaluate different named palettes in addition to main', () => {
|
|
80
|
-
const context = snapshotColorContext(
|
|
70
|
+
const context = snapshotColorContext('attention');
|
|
81
71
|
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
82
72
|
`"rgb(100% 100% 100%)"`,
|
|
83
73
|
);
|
|
@@ -98,7 +88,7 @@ describe('oklch color evaluation tools', () => {
|
|
|
98
88
|
const darkMode = document.createElement('div');
|
|
99
89
|
darkMode.classList.add('override-dark', 'palette-leek');
|
|
100
90
|
document.body.appendChild(darkMode);
|
|
101
|
-
const context = snapshotColorContext(
|
|
91
|
+
const context = snapshotColorContext('leek', 'dark');
|
|
102
92
|
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
103
93
|
`"rgb(0% 14.06% 7.3466%)"`,
|
|
104
94
|
);
|
package/src/uno/logic/color.ts
CHANGED
|
@@ -117,16 +117,24 @@ function evaluatePropertiesRecursively(
|
|
|
117
117
|
* Defaults to body.
|
|
118
118
|
*/
|
|
119
119
|
export function snapshotColorContext(
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
palette: PaletteName,
|
|
121
|
+
mode?: 'light' | 'dark',
|
|
122
122
|
): ColorEvaluationContext {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
const scopeElement = document.createElement('div');
|
|
124
|
+
scopeElement.classList.add(`palette-${palette}`);
|
|
125
|
+
if (mode) {
|
|
126
|
+
scopeElement.classList.add(`override-${mode}`);
|
|
127
|
+
}
|
|
128
|
+
scopeElement.style.position = 'absolute';
|
|
129
|
+
scopeElement.style.visibility = 'hidden';
|
|
130
|
+
document.body.appendChild(scopeElement);
|
|
131
|
+
const styles = getComputedStyle(scopeElement);
|
|
132
|
+
const evaluated = evaluatePropertiesRecursively(
|
|
127
133
|
styles,
|
|
128
|
-
livePropertyColorContext(
|
|
134
|
+
livePropertyColorContext(`var(--l-main-hue)`),
|
|
129
135
|
) as ColorEvaluationContext;
|
|
136
|
+
document.body.removeChild(scopeElement);
|
|
137
|
+
return evaluated;
|
|
130
138
|
}
|
|
131
139
|
|
|
132
140
|
export interface OklchColorEquation {
|
|
@@ -253,7 +253,7 @@ export const palettes = {
|
|
|
253
253
|
sourceHue: paletteHues.main,
|
|
254
254
|
saturation: graySaturation,
|
|
255
255
|
}),
|
|
256
|
-
|
|
256
|
+
['high-contrast']: createColorLogicalPalette({
|
|
257
257
|
sourceHue: paletteHues.main,
|
|
258
258
|
saturation: highContrastSaturation,
|
|
259
259
|
}),
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
import { preflight } from './_util.js';
|
|
8
8
|
|
|
9
9
|
const baseThemeCSS = `
|
|
10
|
-
--v-color: ${palettes.
|
|
10
|
+
--v-color: ${palettes['high-contrast'].styles.ink};
|
|
11
11
|
color: var(--v-color);
|
|
12
|
-
--v-bg: ${palettes.
|
|
12
|
+
--v-bg: ${palettes['high-contrast'].styles.wash};
|
|
13
13
|
background-color: var(--v-bg);
|
|
14
14
|
`;
|
|
15
15
|
|
package/src/uno/theme/colors.ts
CHANGED
|
@@ -8,8 +8,8 @@ export const colors = {
|
|
|
8
8
|
transparent: 'transparent',
|
|
9
9
|
current: 'currentColor',
|
|
10
10
|
|
|
11
|
-
black: palettes.
|
|
12
|
-
white: palettes.
|
|
11
|
+
black: palettes['high-contrast'].styles.ink,
|
|
12
|
+
white: palettes['high-contrast'].styles.wash,
|
|
13
13
|
wash: palettes.gray.styles.wash,
|
|
14
14
|
|
|
15
15
|
// magic tokens
|
package/src/uno/theme/sizes.ts
CHANGED
|
@@ -5,11 +5,11 @@ export const width: Theme['width'] = {
|
|
|
5
5
|
full: '100%',
|
|
6
6
|
'min-content': 'min-content',
|
|
7
7
|
'max-content': 'max-content',
|
|
8
|
-
touch: '
|
|
8
|
+
touch: '30px',
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export const height: Theme['height'] = {
|
|
12
12
|
'min-content': 'min-content',
|
|
13
13
|
'max-content': 'max-content',
|
|
14
|
-
touch: '
|
|
14
|
+
touch: '30px',
|
|
15
15
|
};
|