@hzblj/kara-components 0.22.0 → 0.23.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 +15 -0
- package/lib/module/molecules/navigation-bar/navigation-bar.ios.js +1 -0
- package/lib/module/molecules/navigation-bar/navigation-bar.ios.js.map +1 -1
- package/lib/typescript/molecules/navigation-bar/navigation-bar.types.d.ts +10 -1
- package/package.json +4 -4
- package/src/molecules/navigation-bar/navigation-bar.ios.tsx +1 -0
- package/src/molecules/navigation-bar/navigation-bar.types.ts +11 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @hzblj/kara-components
|
|
2
2
|
|
|
3
|
+
## 0.23.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#74](https://github.com/hzblj/kara-ui/pull/74) [`874778c`](https://github.com/hzblj/kara-ui/commit/874778c94b9757942e7466aff6e00bc791cb2481) Thanks [@hzblj](https://github.com/hzblj)! - `NavigationBar`'s integrated search (`placement: 'integratedButton'`) opens the way the system's own does on iOS 26: the search button grows into the field with the bar's Liquid Glass morph and the cancel splits off its end, then merges back and the field shrinks into the button on close. `search.buttonPlacement: 'leading'` puts the button after the leading items.
|
|
8
|
+
|
|
9
|
+
- [#72](https://github.com/hzblj/kara-ui/pull/72) [`71631d9`](https://github.com/hzblj/kara-ui/commit/71631d98ca18a4793773df8b8ca974e8e58b90e1) Thanks [@hzblj](https://github.com/hzblj)! - A search field's `voice` takes `sizes`: the clear and microphone glyphs, the stop button and the waveform (its width, height and bars, `barRadius: 0` for flat ones), each keeping its default when left out. New bars grow in from the middle as they come in at the edge, and the waveform keeps flowing while the main thread is busy (`@hzblj/expo-waveform` 0.4.0).
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`874778c`](https://github.com/hzblj/kara-ui/commit/874778c94b9757942e7466aff6e00bc791cb2481), [`71631d9`](https://github.com/hzblj/kara-ui/commit/71631d98ca18a4793773df8b8ca974e8e58b90e1), [`83e36b8`](https://github.com/hzblj/kara-ui/commit/83e36b82e136e450303a34ca47df3fe2732133ae)]:
|
|
14
|
+
- @hzblj/kara-native@0.23.0
|
|
15
|
+
- @hzblj/kara-sx@0.23.0
|
|
16
|
+
- @hzblj/kara-theme@0.23.0
|
|
17
|
+
|
|
3
18
|
## 0.22.0
|
|
4
19
|
|
|
5
20
|
### Minor Changes
|
|
@@ -76,6 +76,7 @@ export const NavigationBar = ({
|
|
|
76
76
|
ref: barRef,
|
|
77
77
|
searchButtonImageName: toImageName(search?.buttonIcon),
|
|
78
78
|
searchButtonLabel: search ? search.buttonLabel ?? DEFAULT_LABELS.search : undefined,
|
|
79
|
+
searchButtonPlacement: search?.buttonPlacement,
|
|
79
80
|
searchCancelImageName: toImageName(search?.cancelIcon),
|
|
80
81
|
searchCancelLabel: search ? search.cancelLabel ?? DEFAULT_LABELS.cancel : undefined,
|
|
81
82
|
searchClearImageName: toImageName(clearIcon),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["iconResourceName","NavigationBar","NativeNavigationBar","useAppTheme","useImperativeHandle","useMemo","useRef","StyleSheet","SEARCH_ROW_HEIGHT","jsx","_jsx","BAR_HEIGHT","styles","create","bar","height","width","stackedSearchBar","DEFAULT_LABELS","back","cancel","close","search","toImageName","icon","undefined","toNativeItem","item","type","imageName","label","ignoreDetachedView","inverted","leadingItems","testID","title","titleAlignment","titleVisible","trailingItems","theme","barRef","font","typography","headline","color","ref","clear","current","clearSearchText","catch","setText","text","setSearchText","voice","clearIcon","nativeVoice","clearImageName","microphoneImageName","microphoneIcon","stopImageName","stopIcon","nativeLeadingItems","map","nativeTrailingItems","isStackedSearch","placement","fontFamily","fontSize","itemColor","onSearchFocusChange","onFocusChange","onSearchTextChange","onChangeText","searchButtonImageName","buttonIcon","searchButtonLabel","buttonLabel","searchCancelImageName","cancelIcon","searchCancelLabel","cancelLabel","searchClearImageName","searchPlaceholder","placeholder","searchPlacement","searchTestID","searchVoice","style","titleColor"],"sourceRoot":"../../../../src","sources":["molecules/navigation-bar/navigation-bar.ios.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["iconResourceName","NavigationBar","NativeNavigationBar","useAppTheme","useImperativeHandle","useMemo","useRef","StyleSheet","SEARCH_ROW_HEIGHT","jsx","_jsx","BAR_HEIGHT","styles","create","bar","height","width","stackedSearchBar","DEFAULT_LABELS","back","cancel","close","search","toImageName","icon","undefined","toNativeItem","item","type","imageName","label","ignoreDetachedView","inverted","leadingItems","testID","title","titleAlignment","titleVisible","trailingItems","theme","barRef","font","typography","headline","color","ref","clear","current","clearSearchText","catch","setText","text","setSearchText","voice","clearIcon","nativeVoice","clearImageName","microphoneImageName","microphoneIcon","stopImageName","stopIcon","nativeLeadingItems","map","nativeTrailingItems","isStackedSearch","placement","fontFamily","fontSize","itemColor","onSearchFocusChange","onFocusChange","onSearchTextChange","onChangeText","searchButtonImageName","buttonIcon","searchButtonLabel","buttonLabel","searchButtonPlacement","buttonPlacement","searchCancelImageName","cancelIcon","searchCancelLabel","cancelLabel","searchClearImageName","searchPlaceholder","placeholder","searchPlacement","searchTestID","searchVoice","style","titleColor"],"sourceRoot":"../../../../src","sources":["molecules/navigation-bar/navigation-bar.ios.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SearchVoiceMeter } from '@hzblj/kara-native';
|
|
1
|
+
import type { SearchVoiceMeter, SearchVoiceSizes } from '@hzblj/kara-native';
|
|
2
2
|
import type { ReactNode, Ref } from 'react';
|
|
3
3
|
import type { ColorValue } from 'react-native';
|
|
4
4
|
import type { IconName } from '../../atoms/icon';
|
|
@@ -32,6 +32,8 @@ export type SearchFieldVoice = {
|
|
|
32
32
|
onStart: () => void;
|
|
33
33
|
/** The stop button was pressed. */
|
|
34
34
|
onStop: () => void;
|
|
35
|
+
/** The glyphs, the stop button and the waveform, each the platform's own size unless set. */
|
|
36
|
+
sizes?: SearchVoiceSizes;
|
|
35
37
|
/** The glyph in the stop button. */
|
|
36
38
|
stopIcon?: IconName;
|
|
37
39
|
/** The stop button's accessibility label. */
|
|
@@ -74,6 +76,11 @@ export type NavigationBarSearchRef = {
|
|
|
74
76
|
* the title, `integratedButton` as a search item beside the trailing items that turns the bar into the field.
|
|
75
77
|
*/
|
|
76
78
|
export type NavigationBarSearchPlacement = 'integratedButton' | 'stacked';
|
|
79
|
+
/**
|
|
80
|
+
* Where `integratedButton` puts its search button: beside the trailing items, or after the leading ones. On iOS 26 the
|
|
81
|
+
* button grows into the field and the cancel splits off its end, the way the system's own search does.
|
|
82
|
+
*/
|
|
83
|
+
export type NavigationBarSearchButtonPlacement = 'leading' | 'trailing';
|
|
77
84
|
/**
|
|
78
85
|
* A search field in the bar. iOS only for now; Android keeps the title. A focused field gets a cancel item that
|
|
79
86
|
* empties it and ends the search, a bar item like the others.
|
|
@@ -83,6 +90,8 @@ export type NavigationBarSearch = {
|
|
|
83
90
|
buttonIcon?: IconName;
|
|
84
91
|
/** `integratedButton`: the search item's label for VoiceOver. `Search` by default. */
|
|
85
92
|
buttonLabel?: string;
|
|
93
|
+
/** `integratedButton`: `trailing` by default. */
|
|
94
|
+
buttonPlacement?: NavigationBarSearchButtonPlacement;
|
|
86
95
|
/** The cancel item's icon, one of the app's icons; the system cross unset. */
|
|
87
96
|
cancelIcon?: IconName;
|
|
88
97
|
/** The cancel item's label for VoiceOver. `Cancel` by default. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hzblj/kara-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "The atoms, molecules, organisms and templates of @hzblj/kara-ui — real SwiftUI and Jetpack Compose views through @expo/ui.",
|
|
5
5
|
"author": "Jan Blazej",
|
|
6
6
|
"license": "MIT",
|
|
@@ -66,9 +66,9 @@
|
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@hzblj/expo-native-icons": "^0.1.0",
|
|
68
68
|
"@hzblj/expo-rich-haptics": "^0.1.0",
|
|
69
|
-
"@hzblj/kara-native": "^0.
|
|
70
|
-
"@hzblj/kara-sx": "^0.
|
|
71
|
-
"@hzblj/kara-theme": "^0.
|
|
69
|
+
"@hzblj/kara-native": "^0.23.0",
|
|
70
|
+
"@hzblj/kara-sx": "^0.23.0",
|
|
71
|
+
"@hzblj/kara-theme": "^0.23.0",
|
|
72
72
|
"sf-symbols-typescript": "^2.2.0"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
@@ -83,6 +83,7 @@ export const NavigationBar: NavigationBarComponent = ({
|
|
|
83
83
|
ref={barRef}
|
|
84
84
|
searchButtonImageName={toImageName(search?.buttonIcon)}
|
|
85
85
|
searchButtonLabel={search ? (search.buttonLabel ?? DEFAULT_LABELS.search) : undefined}
|
|
86
|
+
searchButtonPlacement={search?.buttonPlacement}
|
|
86
87
|
searchCancelImageName={toImageName(search?.cancelIcon)}
|
|
87
88
|
searchCancelLabel={search ? (search.cancelLabel ?? DEFAULT_LABELS.cancel) : undefined}
|
|
88
89
|
searchClearImageName={toImageName(clearIcon)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {SearchVoiceMeter} from '@hzblj/kara-native'
|
|
1
|
+
import type {SearchVoiceMeter, SearchVoiceSizes} from '@hzblj/kara-native'
|
|
2
2
|
import type {ReactNode, Ref} from 'react'
|
|
3
3
|
import type {ColorValue} from 'react-native'
|
|
4
4
|
|
|
@@ -34,6 +34,8 @@ export type SearchFieldVoice = {
|
|
|
34
34
|
onStart: () => void
|
|
35
35
|
/** The stop button was pressed. */
|
|
36
36
|
onStop: () => void
|
|
37
|
+
/** The glyphs, the stop button and the waveform, each the platform's own size unless set. */
|
|
38
|
+
sizes?: SearchVoiceSizes
|
|
37
39
|
/** The glyph in the stop button. */
|
|
38
40
|
stopIcon?: IconName
|
|
39
41
|
/** The stop button's accessibility label. */
|
|
@@ -75,6 +77,12 @@ export type NavigationBarSearchRef = {
|
|
|
75
77
|
*/
|
|
76
78
|
export type NavigationBarSearchPlacement = 'integratedButton' | 'stacked'
|
|
77
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Where `integratedButton` puts its search button: beside the trailing items, or after the leading ones. On iOS 26 the
|
|
82
|
+
* button grows into the field and the cancel splits off its end, the way the system's own search does.
|
|
83
|
+
*/
|
|
84
|
+
export type NavigationBarSearchButtonPlacement = 'leading' | 'trailing'
|
|
85
|
+
|
|
78
86
|
/**
|
|
79
87
|
* A search field in the bar. iOS only for now; Android keeps the title. A focused field gets a cancel item that
|
|
80
88
|
* empties it and ends the search, a bar item like the others.
|
|
@@ -84,6 +92,8 @@ export type NavigationBarSearch = {
|
|
|
84
92
|
buttonIcon?: IconName
|
|
85
93
|
/** `integratedButton`: the search item's label for VoiceOver. `Search` by default. */
|
|
86
94
|
buttonLabel?: string
|
|
95
|
+
/** `integratedButton`: `trailing` by default. */
|
|
96
|
+
buttonPlacement?: NavigationBarSearchButtonPlacement
|
|
87
97
|
/** The cancel item's icon, one of the app's icons; the system cross unset. */
|
|
88
98
|
cancelIcon?: IconName
|
|
89
99
|
/** The cancel item's label for VoiceOver. `Cancel` by default. */
|