@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 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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","ignoreList":[]}
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.22.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.22.0",
70
- "@hzblj/kara-sx": "^0.22.0",
71
- "@hzblj/kara-theme": "^0.22.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. */