@hzblj/kara-components 0.21.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,33 @@
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
+
18
+ ## 0.22.0
19
+
20
+ ### Minor Changes
21
+
22
+ - [#70](https://github.com/hzblj/kara-ui/pull/70) [`877e43c`](https://github.com/hzblj/kara-ui/commit/877e43cc26be5029af3c3b7c2f4cb9059c14f202) Thanks [@hzblj](https://github.com/hzblj)! - `HeaderLargeTitleFade` (`@hzblj/kara-ui/header`) fades content under the header, like segments or chips, out and back with the large title while the header search is open, in step with UIKit's animation (iOS). `ScrollViewZPosition` is removed: a large title stays in the bar when the screen's first view is not a scroll view, so the empty anchor scroll view it kept visible is no longer needed.
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [[`877e43c`](https://github.com/hzblj/kara-ui/commit/877e43cc26be5029af3c3b7c2f4cb9059c14f202)]:
27
+ - @hzblj/kara-native@0.22.0
28
+ - @hzblj/kara-sx@0.22.0
29
+ - @hzblj/kara-theme@0.22.0
30
+
3
31
  ## 0.21.0
4
32
 
5
33
  ### 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":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export const HeaderLargeTitleFade = ({
4
+ children
5
+ }) => children;
6
+ //# sourceMappingURL=header-large-title-fade.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HeaderLargeTitleFade","children"],"sourceRoot":"../../../../src","sources":["organisms/header/header-large-title-fade.android.tsx"],"mappings":";;AAEA,OAAO,MAAMA,oBAAmD,GAAGA,CAAC;EAACC;AAAmC,CAAC,KAAKA,QAAQ","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import { LargeTitleFade } from '@hzblj/kara-native/swift-ui';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ /**
6
+ * Fades its content out and back with the large title when the header search opens and closes, in step with UIKit's
7
+ * own animation. Keep the content mounted while searching: a `HeaderInset` moves with the bar's animation, and content
8
+ * mounted into it mid-animation draws off its place until the animation ends.
9
+ */
10
+ export const HeaderLargeTitleFade = ({
11
+ children
12
+ }) => /*#__PURE__*/_jsx(LargeTitleFade, {
13
+ children: children
14
+ });
15
+ //# sourceMappingURL=header-large-title-fade.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LargeTitleFade","jsx","_jsx","HeaderLargeTitleFade","children"],"sourceRoot":"../../../../src","sources":["organisms/header/header-large-title-fade.ios.tsx"],"mappings":";;AAAA,SAAQA,cAAc,QAAO,6BAA6B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI1D;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAmD,GAAGA,CAAC;EAACC;AAAmC,CAAC,kBACvGF,IAAA,CAACF,cAAc;EAAAI,QAAA,EAAEA;AAAQ,CAAiB,CAC3C","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  export * from "./header.types.js";
4
4
  export * from './header-inset';
5
+ export * from './header-large-title-fade';
5
6
  export { useIsTitleRevealed } from "./header-title.js";
6
7
  export * from './sheet-grabber';
7
8
  export * from "./use-header.js";
@@ -1 +1 @@
1
- {"version":3,"names":["useIsTitleRevealed"],"sourceRoot":"../../../../src","sources":["organisms/header/index.ts"],"mappings":";;AAAA,cAAc,mBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,SAAQA,kBAAkB,QAAO,mBAAgB;AACjD,cAAc,iBAAiB;AAE/B,cAAc,iBAAc;AAC5B,cAAc,wBAAwB;AACtC,cAAc,+BAA4B;AAC1C,cAAc,wBAAqB;AACnC,cAAc,sBAAmB;AACjC,cAAc,+BAA4B","ignoreList":[]}
1
+ {"version":3,"names":["useIsTitleRevealed"],"sourceRoot":"../../../../src","sources":["organisms/header/index.ts"],"mappings":";;AAAA,cAAc,mBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,2BAA2B;AACzC,SAAQA,kBAAkB,QAAO,mBAAgB;AACjD,cAAc,iBAAiB;AAE/B,cAAc,iBAAc;AAC5B,cAAc,wBAAwB;AACtC,cAAc,+BAA4B;AAC1C,cAAc,wBAAqB;AACnC,cAAc,sBAAmB;AACjC,cAAc,+BAA4B","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. */
@@ -0,0 +1 @@
1
+ export * from './header-large-title-fade.ios';
@@ -0,0 +1,7 @@
1
+ import type { HeaderLargeTitleFadeComponent } from './header.types';
2
+ /**
3
+ * Fades its content out and back with the large title when the header search opens and closes, in step with UIKit's
4
+ * own animation. Keep the content mounted while searching: a `HeaderInset` moves with the bar's animation, and content
5
+ * mounted into it mid-animation draws off its place until the animation ends.
6
+ */
7
+ export declare const HeaderLargeTitleFade: HeaderLargeTitleFadeComponent;
@@ -437,4 +437,9 @@ export type HeaderInsetProps = {
437
437
  children?: ReactNode;
438
438
  };
439
439
  export type HeaderInsetComponent = (props: HeaderInsetProps) => ReactNode;
440
+ export type HeaderLargeTitleFadeProps = {
441
+ /** Content under the header (segments, chips) that leaves with the large title while the header search is open. */
442
+ children?: ReactNode;
443
+ };
444
+ export type HeaderLargeTitleFadeComponent = (props: HeaderLargeTitleFadeProps) => ReactNode;
440
445
  export {};
@@ -1,5 +1,6 @@
1
1
  export * from './header.types';
2
2
  export * from './header-inset';
3
+ export * from './header-large-title-fade';
3
4
  export { useIsTitleRevealed } from './header-title';
4
5
  export * from './sheet-grabber';
5
6
  export type { SheetGrabberProps } from './sheet-grabber.types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzblj/kara-components",
3
- "version": "0.21.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.21.0",
70
- "@hzblj/kara-sx": "^0.21.0",
71
- "@hzblj/kara-theme": "^0.21.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. */
@@ -0,0 +1,3 @@
1
+ import type {HeaderLargeTitleFadeComponent, HeaderLargeTitleFadeProps} from './header.types'
2
+
3
+ export const HeaderLargeTitleFade: HeaderLargeTitleFadeComponent = ({children}: HeaderLargeTitleFadeProps) => children
@@ -0,0 +1,12 @@
1
+ import {LargeTitleFade} from '@hzblj/kara-native/swift-ui'
2
+
3
+ import type {HeaderLargeTitleFadeComponent, HeaderLargeTitleFadeProps} from './header.types'
4
+
5
+ /**
6
+ * Fades its content out and back with the large title when the header search opens and closes, in step with UIKit's
7
+ * own animation. Keep the content mounted while searching: a `HeaderInset` moves with the bar's animation, and content
8
+ * mounted into it mid-animation draws off its place until the animation ends.
9
+ */
10
+ export const HeaderLargeTitleFade: HeaderLargeTitleFadeComponent = ({children}: HeaderLargeTitleFadeProps) => (
11
+ <LargeTitleFade>{children}</LargeTitleFade>
12
+ )
@@ -414,3 +414,10 @@ export type HeaderInsetProps = {
414
414
  }
415
415
 
416
416
  export type HeaderInsetComponent = (props: HeaderInsetProps) => ReactNode
417
+
418
+ export type HeaderLargeTitleFadeProps = {
419
+ /** Content under the header (segments, chips) that leaves with the large title while the header search is open. */
420
+ children?: ReactNode
421
+ }
422
+
423
+ export type HeaderLargeTitleFadeComponent = (props: HeaderLargeTitleFadeProps) => ReactNode
@@ -1,5 +1,6 @@
1
1
  export * from './header.types'
2
2
  export * from './header-inset'
3
+ export * from './header-large-title-fade'
3
4
  export {useIsTitleRevealed} from './header-title'
4
5
  export * from './sheet-grabber'
5
6
  export type {SheetGrabberProps} from './sheet-grabber.types'