@a-type/ui 3.0.12 → 3.0.14
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/__tests__/setup.d.ts +1 -0
- package/dist/cjs/__tests__/setup.js +5 -0
- package/dist/cjs/__tests__/setup.js.map +1 -0
- package/dist/cjs/colors.stories.d.ts +1 -8
- package/dist/cjs/colors.stories.js +36 -26
- package/dist/cjs/colors.stories.js.map +1 -1
- package/dist/cjs/components/box/Box.d.ts +1 -1
- package/dist/cjs/components/box/Box.stories.js +2 -2
- package/dist/cjs/components/box/Box.stories.js.map +1 -1
- package/dist/cjs/components/button/Button.d.ts +1 -1
- package/dist/cjs/components/button/Button.stories.js +9 -9
- package/dist/cjs/components/button/Button.stories.js.map +1 -1
- package/dist/cjs/components/button/classes.d.ts +1 -1
- package/dist/cjs/components/card/Card.d.ts +1 -1
- package/dist/cjs/components/chip/Chip.d.ts +1 -1
- package/dist/cjs/components/colorPicker/ColorPicker.d.ts +1 -1
- package/dist/cjs/components/colorPicker/ColorPicker.js +2 -2
- package/dist/cjs/components/colorPicker/ColorPicker.js.map +1 -1
- package/dist/cjs/components/datePicker/DatePicker.d.ts +1 -1
- package/dist/cjs/components/dropdownMenu/DropdownMenu.d.ts +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/components/note/Note.d.ts +1 -1
- package/dist/cjs/components/progress/Progress.d.ts +1 -1
- package/dist/cjs/components/slider/Slider.d.ts +1 -1
- package/dist/cjs/hooks/useOverrideTheme.d.ts +1 -1
- package/dist/cjs/hooks/useTitleBarColor.d.ts +4 -0
- package/dist/cjs/hooks/useTitleBarColor.js +33 -3
- package/dist/cjs/hooks/useTitleBarColor.js.map +1 -1
- package/dist/cjs/hooks/useTitleBarColor.stories.js +1 -1
- package/dist/cjs/hooks/useTitleBarColor.stories.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/uno/index.d.ts +1 -0
- package/dist/cjs/uno/index.js +8 -0
- package/dist/cjs/uno/index.js.map +1 -0
- package/dist/cjs/uno/logic/color.d.ts +100 -27
- package/dist/cjs/uno/logic/color.js +259 -42
- package/dist/cjs/uno/logic/color.js.map +1 -1
- package/dist/cjs/uno/logic/color.test.d.ts +1 -0
- package/dist/cjs/uno/logic/color.test.js +74 -0
- package/dist/cjs/uno/logic/color.test.js.map +1 -0
- package/dist/cjs/uno/logic/oklch.d.ts +3 -0
- package/dist/cjs/uno/logic/oklch.js +96 -0
- package/dist/cjs/uno/logic/oklch.js.map +1 -0
- package/dist/cjs/uno/logic/palettes.d.ts +63 -0
- package/dist/cjs/uno/logic/palettes.js +99 -0
- package/dist/cjs/uno/logic/palettes.js.map +1 -0
- package/dist/cjs/uno/preflights/colors.js +18 -42
- package/dist/cjs/uno/preflights/colors.js.map +1 -1
- package/dist/cjs/uno/preflights/fonts.d.ts +4 -0
- package/dist/cjs/uno/preflights/fonts.js +20 -0
- package/dist/cjs/uno/preflights/fonts.js.map +1 -0
- package/dist/cjs/uno/preflights/index.d.ts +2 -1
- package/dist/cjs/uno/preflights/index.js +2 -0
- package/dist/cjs/uno/preflights/index.js.map +1 -1
- package/dist/cjs/uno/theme/colors.d.ts +17 -53
- package/dist/cjs/uno/theme/colors.js +11 -13
- package/dist/cjs/uno/theme/colors.js.map +1 -1
- package/dist/cjs/uno/uno.preset.d.ts +2 -1
- package/dist/cjs/uno/uno.preset.js +3 -1
- package/dist/cjs/uno/uno.preset.js.map +1 -1
- package/dist/css/main.css +9 -8
- package/dist/esm/__tests__/setup.d.ts +1 -0
- package/dist/esm/__tests__/setup.js +3 -0
- package/dist/esm/__tests__/setup.js.map +1 -0
- package/dist/esm/colors.stories.d.ts +1 -8
- package/dist/esm/colors.stories.js +33 -26
- package/dist/esm/colors.stories.js.map +1 -1
- package/dist/esm/components/box/Box.d.ts +1 -1
- package/dist/esm/components/box/Box.stories.js +1 -1
- package/dist/esm/components/box/Box.stories.js.map +1 -1
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.js +1 -1
- package/dist/esm/components/button/Button.stories.js.map +1 -1
- package/dist/esm/components/button/classes.d.ts +1 -1
- package/dist/esm/components/card/Card.d.ts +1 -1
- package/dist/esm/components/chip/Chip.d.ts +1 -1
- package/dist/esm/components/colorPicker/ColorPicker.d.ts +1 -1
- package/dist/esm/components/colorPicker/ColorPicker.js +1 -1
- package/dist/esm/components/colorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/components/datePicker/DatePicker.d.ts +1 -1
- package/dist/esm/components/dropdownMenu/DropdownMenu.d.ts +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/components/note/Note.d.ts +1 -1
- package/dist/esm/components/progress/Progress.d.ts +1 -1
- package/dist/esm/components/slider/Slider.d.ts +1 -1
- package/dist/esm/hooks/useOverrideTheme.d.ts +1 -1
- package/dist/esm/hooks/useTitleBarColor.d.ts +4 -0
- package/dist/esm/hooks/useTitleBarColor.js +32 -3
- package/dist/esm/hooks/useTitleBarColor.js.map +1 -1
- package/dist/esm/hooks/useTitleBarColor.stories.js +2 -2
- package/dist/esm/hooks/useTitleBarColor.stories.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/uno/index.d.ts +1 -0
- package/dist/esm/uno/index.js +3 -0
- package/dist/esm/uno/index.js.map +1 -0
- package/dist/esm/uno/logic/color.d.ts +100 -27
- package/dist/esm/uno/logic/color.js +256 -38
- package/dist/esm/uno/logic/color.js.map +1 -1
- package/dist/esm/uno/logic/color.test.d.ts +1 -0
- package/dist/esm/uno/logic/color.test.js +72 -0
- package/dist/esm/uno/logic/color.test.js.map +1 -0
- package/dist/esm/uno/logic/oklch.d.ts +3 -0
- package/dist/esm/uno/logic/oklch.js +90 -0
- package/dist/esm/uno/logic/oklch.js.map +1 -0
- package/dist/esm/uno/logic/palettes.d.ts +63 -0
- package/dist/esm/uno/logic/palettes.js +95 -0
- package/dist/esm/uno/logic/palettes.js.map +1 -0
- package/dist/esm/uno/preflights/colors.js +17 -41
- package/dist/esm/uno/preflights/colors.js.map +1 -1
- package/dist/esm/uno/preflights/fonts.d.ts +4 -0
- package/dist/esm/uno/preflights/fonts.js +16 -0
- package/dist/esm/uno/preflights/fonts.js.map +1 -0
- package/dist/esm/uno/preflights/index.d.ts +2 -1
- package/dist/esm/uno/preflights/index.js +2 -0
- package/dist/esm/uno/preflights/index.js.map +1 -1
- package/dist/esm/uno/theme/colors.d.ts +17 -53
- package/dist/esm/uno/theme/colors.js +11 -13
- package/dist/esm/uno/theme/colors.js.map +1 -1
- package/dist/esm/uno/uno.preset.d.ts +2 -1
- package/dist/esm/uno/uno.preset.js +3 -1
- package/dist/esm/uno/uno.preset.js.map +1 -1
- package/package.json +132 -125
- package/src/__tests__/setup.ts +1 -0
- package/src/colors.stories.tsx +94 -71
- package/src/components/box/Box.stories.tsx +1 -1
- package/src/components/box/Box.tsx +1 -1
- package/src/components/button/Button.stories.tsx +1 -1
- package/src/components/button/Button.tsx +1 -1
- package/src/components/button/classes.tsx +1 -1
- package/src/components/chip/Chip.tsx +1 -1
- package/src/components/colorPicker/ColorPicker.tsx +1 -1
- package/src/components/datePicker/DatePicker.tsx +1 -1
- package/src/components/dropdownMenu/DropdownMenu.tsx +1 -1
- package/src/components/layouts/PageRoot.tsx +29 -8
- package/src/components/note/Note.tsx +1 -1
- package/src/components/progress/Progress.tsx +1 -1
- package/src/components/slider/Slider.tsx +1 -1
- package/src/hooks/useOverrideTheme.ts +1 -1
- package/src/hooks/useTitleBarColor.stories.tsx +2 -2
- package/src/hooks/useTitleBarColor.ts +41 -3
- package/src/index.ts +1 -5
- package/src/themes.stories.tsx +1 -1
- package/src/uno/index.ts +5 -0
- package/src/uno/logic/color.test.ts +109 -0
- package/src/uno/logic/color.ts +428 -80
- package/src/uno/logic/oklch.ts +120 -0
- package/src/uno/logic/palettes.ts +266 -0
- package/src/uno/preflights/colors.ts +22 -41
- package/src/uno/preflights/fonts.ts +23 -0
- package/src/uno/preflights/index.ts +3 -1
- package/src/uno/theme/colors.ts +13 -18
- package/src/uno/uno.preset.ts +8 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import classNames from 'clsx';
|
|
2
2
|
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
-
import { PaletteName } from '../../uno/
|
|
3
|
+
import { PaletteName } from '../../uno/index.js';
|
|
4
4
|
|
|
5
5
|
export interface NoteProps extends HTMLAttributes<HTMLDivElement> {
|
|
6
6
|
children?: ReactNode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { withClassName } from '../../hooks.js';
|
|
4
|
-
import { PaletteName } from '../../uno/
|
|
4
|
+
import { PaletteName } from '../../uno/index.js';
|
|
5
5
|
|
|
6
6
|
export const ProgressRoot = withClassName(
|
|
7
7
|
ProgressPrimitive.Root,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { withClassName } from '../../hooks.js';
|
|
4
|
-
import { PaletteName } from '../../uno/
|
|
4
|
+
import { PaletteName } from '../../uno/index.js';
|
|
5
5
|
|
|
6
6
|
export const SliderRoot = withClassName(
|
|
7
7
|
SliderPrimitive.Root,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import { Box, Button, Dialog, Icon, Provider } from '../components/index.js';
|
|
4
|
-
import { useTitleBarColor } from './useTitleBarColor.js';
|
|
4
|
+
import { useThemedTitleBar, useTitleBarColor } from './useTitleBarColor.js';
|
|
5
5
|
|
|
6
6
|
const meta = {
|
|
7
7
|
title: 'Hooks/useTitleBarColor',
|
|
@@ -95,6 +95,6 @@ function MockTitleBar() {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
function Overrider() {
|
|
98
|
-
|
|
98
|
+
useThemedTitleBar('primary', 'dark');
|
|
99
99
|
return null;
|
|
100
100
|
}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { useCallback, useEffect } from 'react';
|
|
2
2
|
import { useResolvedColorMode } from '../colorMode.js';
|
|
3
|
+
import { snapshotColorContext } from '../uno/logic/color.js';
|
|
4
|
+
import {
|
|
5
|
+
ColorLogicalPaletteDefinitions,
|
|
6
|
+
PaletteName,
|
|
7
|
+
palettes,
|
|
8
|
+
} from '../uno/logic/palettes.js';
|
|
3
9
|
|
|
4
10
|
let defaultColor = '#ffffff';
|
|
11
|
+
function getCurrentColor() {
|
|
12
|
+
return document
|
|
13
|
+
.querySelector('meta[name=theme-color]')
|
|
14
|
+
?.getAttribute('content');
|
|
15
|
+
}
|
|
5
16
|
if (typeof document !== 'undefined') {
|
|
6
|
-
defaultColor =
|
|
7
|
-
document.querySelector('meta[name=theme-color]')?.getAttribute('content') ??
|
|
8
|
-
defaultColor;
|
|
17
|
+
defaultColor = getCurrentColor() ?? defaultColor;
|
|
9
18
|
}
|
|
10
19
|
|
|
11
20
|
function changeThemeColor(color: string) {
|
|
@@ -52,3 +61,32 @@ export function useSetTitleBarColor() {
|
|
|
52
61
|
const resetColor = useCallback(() => changeThemeColor(defaultColor), []);
|
|
53
62
|
return { setColor, resetColor };
|
|
54
63
|
}
|
|
64
|
+
|
|
65
|
+
export function useThemedTitleBar(
|
|
66
|
+
paletteName: PaletteName,
|
|
67
|
+
value: keyof ColorLogicalPaletteDefinitions,
|
|
68
|
+
/** If not provided, will inherit from app */
|
|
69
|
+
mode?: 'light' | 'dark',
|
|
70
|
+
skip?: boolean,
|
|
71
|
+
) {
|
|
72
|
+
const { setColor } = useSetTitleBarColor();
|
|
73
|
+
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (skip) return;
|
|
76
|
+
const previousColor = getCurrentColor();
|
|
77
|
+
|
|
78
|
+
function update() {
|
|
79
|
+
const palette = palettes[paletteName] ?? palettes.primary;
|
|
80
|
+
const context = snapshotColorContext(paletteName, mode);
|
|
81
|
+
const color = palette.definitions[value].computeOklch(context);
|
|
82
|
+
setColor(color);
|
|
83
|
+
}
|
|
84
|
+
update();
|
|
85
|
+
|
|
86
|
+
if (previousColor) {
|
|
87
|
+
return () => {
|
|
88
|
+
setColor(previousColor);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}, [setColor, paletteName, value, mode, skip]);
|
|
92
|
+
}
|
package/src/index.ts
CHANGED
package/src/themes.stories.tsx
CHANGED
|
@@ -43,7 +43,7 @@ import { Input } from './components/input/index.js';
|
|
|
43
43
|
import { Tabs } from './components/tabs/tabs.js';
|
|
44
44
|
import { TextArea } from './components/textArea/index.js';
|
|
45
45
|
import { useOverrideTheme } from './hooks/useOverrideTheme.js';
|
|
46
|
-
import { PaletteName } from './uno/
|
|
46
|
+
import { PaletteName } from './uno/index.js';
|
|
47
47
|
|
|
48
48
|
const meta = {
|
|
49
49
|
title: 'Theme Demo',
|
package/src/uno/index.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import {
|
|
3
|
+
ColorEvaluationContext,
|
|
4
|
+
livePropertyColorContext,
|
|
5
|
+
snapshotColorContext,
|
|
6
|
+
} from './color.js';
|
|
7
|
+
import { palettes } from './palettes.js';
|
|
8
|
+
|
|
9
|
+
describe('context snapshot evaluation', () => {
|
|
10
|
+
it('should snapshot color context from element properties', () => {
|
|
11
|
+
const context = snapshotColorContext('leek');
|
|
12
|
+
expect(context).toEqual({
|
|
13
|
+
sourceHue: '165.88',
|
|
14
|
+
localLightnessSpread: '1',
|
|
15
|
+
localSaturation: '1',
|
|
16
|
+
globalSaturation: '0.5',
|
|
17
|
+
mode: {
|
|
18
|
+
lNeutral: '90%',
|
|
19
|
+
lRangeUp: '10%',
|
|
20
|
+
lRangeDown: '70%',
|
|
21
|
+
sNeutral: '75%',
|
|
22
|
+
sRangeUp: '-55%',
|
|
23
|
+
sRangeDown: '20%',
|
|
24
|
+
mult: '1',
|
|
25
|
+
},
|
|
26
|
+
} satisfies ColorEvaluationContext);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe('oklch color evaluation tools', () => {
|
|
31
|
+
const { wash, default: DEFAULT } = palettes.main.definitions;
|
|
32
|
+
|
|
33
|
+
it('should resolve lch values', () => {
|
|
34
|
+
const ctx = snapshotColorContext('leek');
|
|
35
|
+
const { l, c, h } = wash.raw(ctx);
|
|
36
|
+
expect(l.value).toBeCloseTo(100, 1);
|
|
37
|
+
expect(l.unit).toBe('%');
|
|
38
|
+
expect(c.value).toBeCloseTo(10, 1);
|
|
39
|
+
expect(c.unit).toBe('%');
|
|
40
|
+
expect(h.value).toBe(165.88);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('should print a valid oklch color string', () => {
|
|
44
|
+
const colorString = wash.print(
|
|
45
|
+
livePropertyColorContext('var(--p-main-hue, 91.8)'),
|
|
46
|
+
);
|
|
47
|
+
expect(colorString).toMatchInlineSnapshot(
|
|
48
|
+
`"oklch(calc(clamp(0%, (var(--mode-l-neutral) + (var(--mode-l-range-up) * var(--mode-mult, 1) * var(--l-lightness-spread, 1))), 100%)) calc(clamp(0%, (1 * var(--l-saturation, 1) * var(--global-saturation, 1) * (var(--mode-s-neutral) + (var(--mode-s-range-up) * var(--mode-mult, 1)))), 100%)) calc(var(--p-main-hue, 91.8)))"`,
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
it('should evaluate a valid oklch color value using element property values', () => {
|
|
52
|
+
const context = snapshotColorContext('leek');
|
|
53
|
+
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
54
|
+
`"rgb(100% 100% 100%)"`,
|
|
55
|
+
);
|
|
56
|
+
expect(wash.computeHex(context)).toMatchInlineSnapshot(`"#fff"`);
|
|
57
|
+
expect(wash.computeOklch(context)).toMatchInlineSnapshot(
|
|
58
|
+
`"oklch(100% 10% 165.88)"`,
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
expect(DEFAULT.computeSrgb(context)).toMatchInlineSnapshot(
|
|
62
|
+
`"rgb(40.747% 99.344% 77.98%)"`,
|
|
63
|
+
);
|
|
64
|
+
expect(DEFAULT.computeHex(context)).toMatchInlineSnapshot(`"#68fdc7"`);
|
|
65
|
+
expect(DEFAULT.computeOklch(context)).toMatchInlineSnapshot(
|
|
66
|
+
`"oklch(90% 37.5% 165.88)"`,
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
it('should evaluate different named palettes in addition to main', () => {
|
|
70
|
+
const context = snapshotColorContext('attention');
|
|
71
|
+
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
72
|
+
`"rgb(100% 100% 100%)"`,
|
|
73
|
+
);
|
|
74
|
+
expect(wash.computeHex(context)).toMatchInlineSnapshot(`"#fff"`);
|
|
75
|
+
expect(wash.computeOklch(context)).toMatchInlineSnapshot(
|
|
76
|
+
`"oklch(100% 10% 30)"`,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
expect(DEFAULT.computeSrgb(context)).toMatchInlineSnapshot(
|
|
80
|
+
`"rgb(100% 80.069% 75.637%)"`,
|
|
81
|
+
);
|
|
82
|
+
expect(DEFAULT.computeHex(context)).toMatchInlineSnapshot(`"#ffccc1"`);
|
|
83
|
+
expect(DEFAULT.computeOklch(context)).toMatchInlineSnapshot(
|
|
84
|
+
`"oklch(90% 37.5% 30)"`,
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
it('works in dark mode', () => {
|
|
88
|
+
const darkMode = document.createElement('div');
|
|
89
|
+
darkMode.classList.add('override-dark', 'palette-leek');
|
|
90
|
+
document.body.appendChild(darkMode);
|
|
91
|
+
const context = snapshotColorContext('leek', 'dark');
|
|
92
|
+
expect(wash.computeSrgb(context)).toMatchInlineSnapshot(
|
|
93
|
+
`"rgb(0% 14.06% 7.3466%)"`,
|
|
94
|
+
);
|
|
95
|
+
expect(wash.computeHex(context)).toMatchInlineSnapshot(`"#002413"`);
|
|
96
|
+
expect(wash.computeOklch(context)).toMatchInlineSnapshot(
|
|
97
|
+
`"oklch(22% 20% 165.88)"`,
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
expect(DEFAULT.computeSrgb(context)).toMatchInlineSnapshot(
|
|
101
|
+
`"rgb(0% 60.697% 41.999%)"`,
|
|
102
|
+
);
|
|
103
|
+
expect(DEFAULT.computeHex(context)).toMatchInlineSnapshot(`"#009b6b"`);
|
|
104
|
+
expect(DEFAULT.computeOklch(context)).toMatchInlineSnapshot(
|
|
105
|
+
`"oklch(60% 40% 165.88)"`,
|
|
106
|
+
);
|
|
107
|
+
document.body.removeChild(darkMode);
|
|
108
|
+
});
|
|
109
|
+
});
|