@ankhorage/zora 2.9.3 → 2.10.0
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/CHANGELOG.md +6 -0
- package/dist/theme/ThemeModeToggle.d.ts +3 -0
- package/dist/theme/ThemeModeToggle.d.ts.map +1 -0
- package/dist/theme/ThemeModeToggle.js +9 -0
- package/dist/theme/ThemeModeToggle.js.map +1 -0
- package/dist/theme/ThemeModeToggleProps.d.ts +3 -0
- package/dist/theme/ThemeModeToggleProps.d.ts.map +1 -0
- package/dist/theme/ThemeModeToggleProps.js +2 -0
- package/dist/theme/ThemeModeToggleProps.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/resolveThemeModeToggleState.d.ts +9 -0
- package/dist/theme/resolveThemeModeToggleState.d.ts.map +1 -0
- package/dist/theme/resolveThemeModeToggleState.js +14 -0
- package/dist/theme/resolveThemeModeToggleState.js.map +1 -0
- package/package.json +1 -1
- package/src/theme/ThemeModeToggle.tsx +22 -0
- package/src/theme/ThemeModeToggleProps.ts +3 -0
- package/src/theme/index.ts +2 -0
- package/src/theme/resolveThemeModeToggleState.test.ts +21 -0
- package/src/theme/resolveThemeModeToggleState.ts +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModeToggle.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeModeToggle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAU,EAAE,MAAM,EAAE,EAAE,oBAAoB,+BAgBrF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IconButton } from '../components/icon-button';
|
|
2
|
+
import { resolveThemeModeToggleState } from './resolveThemeModeToggleState';
|
|
3
|
+
import { useZoraTheme } from './useZoraTheme';
|
|
4
|
+
export function ThemeModeToggle({ disabled, size = 'm', testID }) {
|
|
5
|
+
const { mode, setMode } = useZoraTheme();
|
|
6
|
+
const state = resolveThemeModeToggleState(mode);
|
|
7
|
+
return (<IconButton color="neutral" disabled={disabled} icon={{ name: state.iconName }} label={state.label} onPress={() => setMode(state.nextMode)} size={size} testID={testID} variant="ghost"/>);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ThemeModeToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModeToggle.js","sourceRoot":"","sources":["../../src/theme/ThemeModeToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,EAAwB;IACpF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,CAAC,UAAU,CACT,KAAK,CAAC,SAAS,CACf,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAC/B,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CACnB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACvC,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,OAAO,CAAC,OAAO,EACf,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { IconButton } from '../components/icon-button';\nimport { resolveThemeModeToggleState } from './resolveThemeModeToggleState';\nimport type { ThemeModeToggleProps } from './ThemeModeToggleProps';\nimport { useZoraTheme } from './useZoraTheme';\n\nexport function ThemeModeToggle({ disabled, size = 'm', testID }: ThemeModeToggleProps) {\n const { mode, setMode } = useZoraTheme();\n const state = resolveThemeModeToggleState(mode);\n\n return (\n <IconButton\n color=\"neutral\"\n disabled={disabled}\n icon={{ name: state.iconName }}\n label={state.label}\n onPress={() => setMode(state.nextMode)}\n size={size}\n testID={testID}\n variant=\"ghost\"\n />\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModeToggleProps.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeModeToggleProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeModeToggleProps.js","sourceRoot":"","sources":["../../src/theme/ThemeModeToggleProps.ts"],"names":[],"mappings":"","sourcesContent":["import type { IconButtonProps } from '../components/icon-button';\n\nexport type ThemeModeToggleProps = Pick<IconButtonProps, 'disabled' | 'size' | 'testID'>;\n"]}
|
package/dist/theme/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { createZoraThemeConfig } from './createZoraThemeConfig';
|
|
2
|
+
export { ThemeModeToggle } from './ThemeModeToggle';
|
|
3
|
+
export type { ThemeModeToggleProps } from './ThemeModeToggleProps';
|
|
2
4
|
export type { ZoraComputedTheme, ZoraComputedThemeMode, ZoraTheme, ZoraThemeId, ZoraThemeMode, } from './types';
|
|
3
5
|
export { useZoraTheme } from './useZoraTheme';
|
|
4
6
|
export { withZoraThemeScope } from './withZoraThemeScope';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/theme/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { createZoraThemeConfig } from './createZoraThemeConfig';
|
|
2
|
+
export { ThemeModeToggle } from './ThemeModeToggle';
|
|
2
3
|
export { useZoraTheme } from './useZoraTheme';
|
|
3
4
|
export { withZoraThemeScope } from './withZoraThemeScope';
|
|
4
5
|
export { zoraDefaultTheme } from './zoraDefaultTheme';
|
package/dist/theme/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AASpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { createZoraThemeConfig } from './createZoraThemeConfig';\nexport { ThemeModeToggle } from './ThemeModeToggle';\nexport type { ThemeModeToggleProps } from './ThemeModeToggleProps';\nexport type {\n ZoraComputedTheme,\n ZoraComputedThemeMode,\n ZoraTheme,\n ZoraThemeId,\n ZoraThemeMode,\n} from './types';\nexport { useZoraTheme } from './useZoraTheme';\nexport { withZoraThemeScope } from './withZoraThemeScope';\nexport type { ZoraBaseProps } from './ZoraBaseProps';\nexport { zoraDefaultTheme } from './zoraDefaultTheme';\nexport type { ZoraProviderProps } from './ZoraProvider';\nexport { ZoraProvider } from './ZoraProvider';\nexport type { ZoraThemeScopeProps } from './ZoraThemeScope';\nexport { ZoraThemeScope } from './ZoraThemeScope';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ZoraThemeMode } from './types';
|
|
2
|
+
interface ThemeModeToggleState {
|
|
3
|
+
readonly iconName: 'moon-outline' | 'sunny-outline';
|
|
4
|
+
readonly label: 'Use dark mode' | 'Use light mode';
|
|
5
|
+
readonly nextMode: ZoraThemeMode;
|
|
6
|
+
}
|
|
7
|
+
export declare function resolveThemeModeToggleState(mode: ZoraThemeMode): ThemeModeToggleState;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=resolveThemeModeToggleState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveThemeModeToggleState.d.ts","sourceRoot":"","sources":["../../src/theme/resolveThemeModeToggleState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,aAAa,GAAG,oBAAoB,CAYrF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function resolveThemeModeToggleState(mode) {
|
|
2
|
+
return mode === 'dark'
|
|
3
|
+
? {
|
|
4
|
+
iconName: 'sunny-outline',
|
|
5
|
+
label: 'Use light mode',
|
|
6
|
+
nextMode: 'light',
|
|
7
|
+
}
|
|
8
|
+
: {
|
|
9
|
+
iconName: 'moon-outline',
|
|
10
|
+
label: 'Use dark mode',
|
|
11
|
+
nextMode: 'dark',
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=resolveThemeModeToggleState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveThemeModeToggleState.js","sourceRoot":"","sources":["../../src/theme/resolveThemeModeToggleState.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,2BAA2B,CAAC,IAAmB;IAC7D,OAAO,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;YACE,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE,OAAO;SAClB;QACH,CAAC,CAAC;YACE,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,MAAM;SACjB,CAAC;AACR,CAAC","sourcesContent":["import type { ZoraThemeMode } from './types';\n\ninterface ThemeModeToggleState {\n readonly iconName: 'moon-outline' | 'sunny-outline';\n readonly label: 'Use dark mode' | 'Use light mode';\n readonly nextMode: ZoraThemeMode;\n}\n\nexport function resolveThemeModeToggleState(mode: ZoraThemeMode): ThemeModeToggleState {\n return mode === 'dark'\n ? {\n iconName: 'sunny-outline',\n label: 'Use light mode',\n nextMode: 'light',\n }\n : {\n iconName: 'moon-outline',\n label: 'Use dark mode',\n nextMode: 'dark',\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/zora",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.10.0",
|
|
5
5
|
"description": "Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/zora#readme",
|
|
7
7
|
"bugs": {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IconButton } from '../components/icon-button';
|
|
2
|
+
import { resolveThemeModeToggleState } from './resolveThemeModeToggleState';
|
|
3
|
+
import type { ThemeModeToggleProps } from './ThemeModeToggleProps';
|
|
4
|
+
import { useZoraTheme } from './useZoraTheme';
|
|
5
|
+
|
|
6
|
+
export function ThemeModeToggle({ disabled, size = 'm', testID }: ThemeModeToggleProps) {
|
|
7
|
+
const { mode, setMode } = useZoraTheme();
|
|
8
|
+
const state = resolveThemeModeToggleState(mode);
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<IconButton
|
|
12
|
+
color="neutral"
|
|
13
|
+
disabled={disabled}
|
|
14
|
+
icon={{ name: state.iconName }}
|
|
15
|
+
label={state.label}
|
|
16
|
+
onPress={() => setMode(state.nextMode)}
|
|
17
|
+
size={size}
|
|
18
|
+
testID={testID}
|
|
19
|
+
variant="ghost"
|
|
20
|
+
/>
|
|
21
|
+
);
|
|
22
|
+
}
|
package/src/theme/index.ts
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
|
|
3
|
+
import { resolveThemeModeToggleState } from './resolveThemeModeToggleState';
|
|
4
|
+
|
|
5
|
+
describe('resolveThemeModeToggleState', () => {
|
|
6
|
+
test('offers dark mode while light mode is active', () => {
|
|
7
|
+
expect(resolveThemeModeToggleState('light')).toEqual({
|
|
8
|
+
iconName: 'moon-outline',
|
|
9
|
+
label: 'Use dark mode',
|
|
10
|
+
nextMode: 'dark',
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('offers light mode while dark mode is active', () => {
|
|
15
|
+
expect(resolveThemeModeToggleState('dark')).toEqual({
|
|
16
|
+
iconName: 'sunny-outline',
|
|
17
|
+
label: 'Use light mode',
|
|
18
|
+
nextMode: 'light',
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ZoraThemeMode } from './types';
|
|
2
|
+
|
|
3
|
+
interface ThemeModeToggleState {
|
|
4
|
+
readonly iconName: 'moon-outline' | 'sunny-outline';
|
|
5
|
+
readonly label: 'Use dark mode' | 'Use light mode';
|
|
6
|
+
readonly nextMode: ZoraThemeMode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function resolveThemeModeToggleState(mode: ZoraThemeMode): ThemeModeToggleState {
|
|
10
|
+
return mode === 'dark'
|
|
11
|
+
? {
|
|
12
|
+
iconName: 'sunny-outline',
|
|
13
|
+
label: 'Use light mode',
|
|
14
|
+
nextMode: 'light',
|
|
15
|
+
}
|
|
16
|
+
: {
|
|
17
|
+
iconName: 'moon-outline',
|
|
18
|
+
label: 'Use dark mode',
|
|
19
|
+
nextMode: 'dark',
|
|
20
|
+
};
|
|
21
|
+
}
|