@ornikar/kitt-universal 27.9.1-canary.b005d681364bb7e16454f696f46b5af55d721a97.0 → 27.9.1-canary.e79ce5a70db58d281f30a0e111ad7cf70d64cdb1.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +17 -5
  2. package/dist/definitions/CardModal/CardModalBody.d.ts +1 -1
  3. package/dist/definitions/CardModal/CardModalBody.d.ts.map +1 -1
  4. package/dist/definitions/CardModal/CardModalHeader.d.ts +17 -3
  5. package/dist/definitions/CardModal/CardModalHeader.d.ts.map +1 -1
  6. package/dist/definitions/FullscreenModal/Header.d.ts +18 -3
  7. package/dist/definitions/FullscreenModal/Header.d.ts.map +1 -1
  8. package/dist/definitions/NavigationBottomSheet/NavigationBottomSheet.d.ts +7 -7
  9. package/dist/definitions/NavigationBottomSheet/NavigationBottomSheet.d.ts.map +1 -1
  10. package/dist/definitions/NavigationBottomSheet/NavigationBottomSheet.web.d.ts +1 -1
  11. package/dist/definitions/NavigationBottomSheet/NavigationBottomSheet.web.d.ts.map +1 -1
  12. package/dist/definitions/Picker/Picker.d.ts.map +1 -1
  13. package/dist/definitions/TopNavBar/TopNavBar.d.ts +1 -1
  14. package/dist/definitions/TopNavBar/TopNavBar.d.ts.map +1 -1
  15. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/ModalPlatformDateTimePicker.d.ts.map +1 -1
  16. package/dist/definitions/native-base/KittNativeBaseProvider.d.ts +12 -14
  17. package/dist/definitions/native-base/KittNativeBaseProvider.d.ts.map +1 -1
  18. package/dist/definitions/themes/default.d.ts +1 -0
  19. package/dist/definitions/themes/default.d.ts.map +1 -1
  20. package/dist/definitions/themes/late-ocean/fullscreenModal.d.ts +1 -1
  21. package/dist/definitions/themes/late-ocean/fullscreenModal.d.ts.map +1 -1
  22. package/dist/definitions/themes/late-ocean/iconButton.d.ts +6 -0
  23. package/dist/definitions/themes/late-ocean/iconButton.d.ts.map +1 -0
  24. package/dist/definitions/typography/Typography.d.ts +18 -6
  25. package/dist/definitions/typography/Typography.d.ts.map +1 -1
  26. package/dist/index-metro.es.android.js +366 -232
  27. package/dist/index-metro.es.android.js.map +1 -1
  28. package/dist/index-metro.es.ios.js +366 -232
  29. package/dist/index-metro.es.ios.js.map +1 -1
  30. package/dist/index-node-22.17.cjs.js +277 -150
  31. package/dist/index-node-22.17.cjs.js.map +1 -1
  32. package/dist/index-node-22.17.cjs.web.js +261 -142
  33. package/dist/index-node-22.17.cjs.web.js.map +1 -1
  34. package/dist/index-node-22.17.es.mjs +278 -151
  35. package/dist/index-node-22.17.es.mjs.map +1 -1
  36. package/dist/index-node-22.17.es.web.mjs +262 -143
  37. package/dist/index-node-22.17.es.web.mjs.map +1 -1
  38. package/dist/index.es.js +462 -327
  39. package/dist/index.es.js.map +1 -1
  40. package/dist/index.es.web.js +406 -280
  41. package/dist/index.es.web.js.map +1 -1
  42. package/dist/linaria-themes-metro.es.android.js +8 -2
  43. package/dist/linaria-themes-metro.es.android.js.map +1 -1
  44. package/dist/linaria-themes-metro.es.ios.js +8 -2
  45. package/dist/linaria-themes-metro.es.ios.js.map +1 -1
  46. package/dist/linaria-themes-node-22.17.cjs.js +8 -2
  47. package/dist/linaria-themes-node-22.17.cjs.js.map +1 -1
  48. package/dist/linaria-themes-node-22.17.cjs.web.js +8 -2
  49. package/dist/linaria-themes-node-22.17.cjs.web.js.map +1 -1
  50. package/dist/linaria-themes-node-22.17.es.mjs +8 -2
  51. package/dist/linaria-themes-node-22.17.es.mjs.map +1 -1
  52. package/dist/linaria-themes-node-22.17.es.web.mjs +8 -2
  53. package/dist/linaria-themes-node-22.17.es.web.mjs.map +1 -1
  54. package/dist/linaria-themes.es.js +9 -3
  55. package/dist/linaria-themes.es.js.map +1 -1
  56. package/dist/linaria-themes.es.web.js +9 -3
  57. package/dist/linaria-themes.es.web.js.map +1 -1
  58. package/dist/tsbuildinfo +1 -1
  59. package/package.json +28 -28
@@ -5,7 +5,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import Animated, { useSharedValue, useAnimatedStyle, interpolateColor, withSpring, withTiming, Easing as Easing$1, runOnJS, useDerivedValue, useAnimatedProps, withDelay, withRepeat, interpolate } from 'react-native-reanimated';
6
6
  import { Platform, Animated as Animated$1, Easing, StyleSheet, Modal, ScrollView as ScrollView$2, View as View$2, Linking, Pressable as Pressable$2, Keyboard, Text as Text$1, useWindowDimensions, PixelRatio } from 'react-native';
7
7
  export { useWindowDimensions as useWindowSize } from 'react-native';
8
- import { SpinnerGapRegularIcon, UserRegularIcon, XRegularIcon, ArrowLeftRegularIcon, CaretUpFillIcon, CaretDownFillIcon, MapPinRegularIcon, EyeClosedRegularIcon, EyeRegularIcon, CheckCircleFillIcon, CaretDownRegularIcon, CaretRightRegularIcon, InfoRegularIcon, WarningRegularIcon, CheckRegularIcon, WarningCircleRegularIcon, ArrowCounterClockwiseRegularIcon, InfoFillIcon, WarningCircleFillIcon, WarningFillIcon } from '@ornikar/kitt-icons/phosphor';
8
+ import { SpinnerGapRegularIcon, UserRegularIcon, CaretUpFillIcon, CaretDownFillIcon, MapPinRegularIcon, EyeClosedRegularIcon, EyeRegularIcon, CheckCircleFillIcon, CaretDownRegularIcon, XRegularIcon, CaretRightRegularIcon, InfoRegularIcon, WarningRegularIcon, CheckRegularIcon, WarningCircleRegularIcon, ArrowCounterClockwiseRegularIcon, InfoFillIcon, WarningCircleFillIcon, WarningFillIcon, ArrowLeftRegularIcon } from '@ornikar/kitt-icons/phosphor';
9
9
  import { BottomSheetView, BottomSheetScrollView, BottomSheetSectionList, BottomSheetFlatList, BottomSheetHandle, BottomSheetBackdrop, BottomSheetFooter, BottomSheetTextInput, BottomSheetModal, useBottomSheetModal } from '@gorhom/bottom-sheet';
10
10
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
11
11
  import { parse } from '@twemoji/parser';
@@ -1802,12 +1802,12 @@ const fullscreenModal = {
1802
1802
  header: {
1803
1803
  height: 56
1804
1804
  },
1805
- horizontalPadding: 16,
1805
+ sharedHorizontalPadding: 16,
1806
1806
  footer: {
1807
1807
  verticalPadding: 12
1808
1808
  },
1809
1809
  body: {
1810
- verticalPadding: 16
1810
+ verticalPadding: 24
1811
1811
  },
1812
1812
  animation: {
1813
1813
  overlay: {
@@ -1894,6 +1894,11 @@ const icon = {
1894
1894
  defaultSize: 20
1895
1895
  };
1896
1896
 
1897
+ const iconButton = {
1898
+ width: button.height.medium,
1899
+ height: button.height.medium
1900
+ };
1901
+
1897
1902
  const listItem = {
1898
1903
  padding: '12px 16px',
1899
1904
  verticalPadding: 12,
@@ -2623,6 +2628,7 @@ const theme = {
2623
2628
  highlight,
2624
2629
  icon,
2625
2630
  buttonBadge,
2631
+ iconButton,
2626
2632
  listItem,
2627
2633
  pageLoader,
2628
2634
  picker,
@@ -4329,13 +4335,21 @@ function CardModalBehaviour({
4329
4335
 
4330
4336
  function CardModalBody({
4331
4337
  children,
4332
- padding = 'kitt.4',
4338
+ paddingX = {
4339
+ base: 'kitt.4',
4340
+ medium: 'kitt.6'
4341
+ },
4342
+ paddingY = {
4343
+ base: 'kitt.4',
4344
+ medium: 'kitt.6'
4345
+ },
4333
4346
  ...props
4334
4347
  }) {
4335
4348
  return /*#__PURE__*/jsx(ScrollView, {
4336
4349
  showsVerticalScrollIndicator: false,
4337
4350
  _contentContainerStyle: {
4338
- padding
4351
+ paddingX,
4352
+ paddingY
4339
4353
  },
4340
4354
  ...props,
4341
4355
  children: children
@@ -4365,145 +4379,53 @@ function CardModalFooter({
4365
4379
  });
4366
4380
  }
4367
4381
 
4368
- const getButtonTypeAndVariant = iconColor => {
4369
- switch (iconColor) {
4370
- case 'black':
4371
- return {
4372
- type: 'tertiary'
4373
- };
4374
- case 'secondary':
4375
- return {
4376
- type: 'secondary'
4377
- };
4378
- case 'primary':
4379
- return {
4380
- type: 'primary'
4381
- };
4382
- case 'primary-plain':
4383
- return {
4384
- type: 'primary'
4385
- };
4386
- case 'ghost':
4387
- return {
4388
- type: 'tertiary',
4389
- variant: 'revert'
4390
- };
4391
- default:
4392
- return {
4393
- type: 'secondary'
4394
- };
4395
- }
4396
- };
4397
-
4398
- /**
4399
- * @deprecated IconButton should only be used as a navigation button
4400
- * Other use cases should use a <Button> component with an icon
4401
- */
4402
- function IconButton({
4403
- color = 'black',
4404
- ariaLabel,
4405
- ...props
4406
- }) {
4407
- const {
4408
- type: legacyColorToType,
4409
- variant: legacyColorToVariant
4410
- } = getButtonTypeAndVariant(color);
4411
- return /*#__PURE__*/jsx(Button, {
4412
- variant: legacyColorToVariant,
4413
- type: legacyColorToType,
4414
- ...props
4415
- });
4416
- }
4417
- function CloseIconButton(props) {
4418
- return /*#__PURE__*/jsx(IconButton, {
4419
- icon: /*#__PURE__*/jsx(XRegularIcon, {}),
4420
- ...props
4421
- });
4422
- }
4423
-
4424
- function TopNavBar({
4425
- left,
4426
- right,
4382
+ function CardModalHeader({
4383
+ children,
4427
4384
  title,
4428
- titleAlign = 'center',
4429
- stickers,
4430
- mode = 'default',
4431
- hasSeparator = true
4385
+ paddingBottom = {
4386
+ base: 'kitt.4',
4387
+ medium: 'kitt.2'
4388
+ },
4389
+ hasSeparator = true,
4390
+ right,
4391
+ left,
4392
+ ...props
4432
4393
  }) {
4433
- const isLargeTitleMode = mode === 'largeTitle';
4434
- const leftEmptySpace = !left && titleAlign === 'left' ? null : /*#__PURE__*/jsx(View, {
4435
- width: "kitt.button.minWidth"
4436
- });
4437
- return /*#__PURE__*/jsxs(VStack, {
4438
- space: isLargeTitleMode ? 'kitt.2' : undefined,
4439
- width: "100%",
4440
- height: mode === 'default' ? 56 : undefined,
4441
- justifyContent: "center",
4442
- paddingX: "kitt.2",
4443
- paddingTop: isLargeTitleMode ? 'kitt.2' : 'kitt.3',
4444
- paddingBottom: "kitt.3",
4445
- borderBottomWidth: hasSeparator && mode === 'default' ? 1 : 0,
4394
+ const defaultContainerPadding = {
4395
+ base: 'kitt.4',
4396
+ medium: 'kitt.6'
4397
+ };
4398
+ return /*#__PURE__*/jsx(View, {
4399
+ ...props,
4400
+ padding: paddingBottom,
4401
+ borderBottomWidth: hasSeparator ? 'kitt.cardModal.footer.borderWidth' : 0,
4446
4402
  borderColor: "kitt.separator",
4447
- children: [/*#__PURE__*/jsxs(HStack, {
4403
+ justifyContent: "center",
4404
+ width: "100%",
4405
+ height: "kitt.cardModal.header.height",
4406
+ paddingRight: right ? 'kitt.2' : defaultContainerPadding,
4407
+ paddingLeft: left ? 'kitt.2' : defaultContainerPadding,
4408
+ children: /*#__PURE__*/jsxs(View, {
4448
4409
  alignItems: "center",
4449
- justifyContent: !title && !left ? 'flex-end' : 'space-between',
4450
- children: [left ?? leftEmptySpace, mode === 'default' ? /*#__PURE__*/jsx(View, {
4410
+ flexDirection: "row",
4411
+ justifyContent: !children && !left ? 'flex-end' : 'space-between',
4412
+ children: [left ? /*#__PURE__*/jsx(View, {
4413
+ width: "kitt.iconButton.width",
4414
+ children: left
4415
+ }) : null, /*#__PURE__*/jsxs(View, {
4451
4416
  flexGrow: "1",
4452
- flexShrink: 1,
4453
- paddingRight: "kitt.2",
4454
- paddingLeft: "kitt.2",
4455
- children: title ? /*#__PURE__*/jsx(Typography.Text, {
4456
- textAlign: titleAlign,
4417
+ paddingRight: right ? 'kitt.2' : 0,
4418
+ paddingLeft: left ? 'kitt.2' : 0,
4419
+ children: [title ? /*#__PURE__*/jsx(Typography.Text, {
4420
+ textAlign: !left && right ? 'left' : 'center',
4457
4421
  variant: "bold",
4458
- ellipsizeMode: "tail",
4459
- numberOfLines: 1,
4460
4422
  children: title
4461
- }) : null
4462
- }) : null, right ?? /*#__PURE__*/jsx(View, {
4463
- width: "kitt.button.minWidth"
4464
- })]
4465
- }), mode === 'largeTitle' ? /*#__PURE__*/jsxs(VStack, {
4466
- space: "kitt.4",
4467
- paddingX: "kitt.2",
4468
- children: [stickers ? /*#__PURE__*/jsx(HStack, {
4469
- width: "100%",
4470
- space: "kitt.1",
4471
- flexShrink: 1,
4472
- flexWrap: "wrap",
4473
- style: {
4474
- rowGap: theme.getSpacing(1)
4475
- },
4476
- children: stickers.map((sticker, index) =>
4477
- /*#__PURE__*/
4478
- // eslint-disable-next-line react/no-array-index-key
4479
- jsx(View, {
4480
- children: sticker
4481
- }, index))
4482
- }) : null, /*#__PURE__*/jsx(Typography.Text, {
4483
- base: "heading-m",
4484
- children: title
4485
- })]
4486
- }) : null]
4487
- });
4488
- }
4489
- function CloseButton(props) {
4490
- return /*#__PURE__*/jsx(IconButton, {
4491
- icon: /*#__PURE__*/jsx(XRegularIcon, {}),
4492
- ...props
4493
- });
4494
- }
4495
- function BackButton(props) {
4496
- return /*#__PURE__*/jsx(IconButton, {
4497
- icon: /*#__PURE__*/jsx(ArrowLeftRegularIcon, {}),
4498
- ...props
4499
- });
4500
- }
4501
- TopNavBar.CloseButton = CloseButton;
4502
- TopNavBar.BackButton = BackButton;
4503
-
4504
- function CardModalHeader(props) {
4505
- return /*#__PURE__*/jsx(TopNavBar, {
4506
- ...props
4423
+ }) : null, children]
4424
+ }), right ? /*#__PURE__*/jsx(View, {
4425
+ width: "kitt.iconButton.width",
4426
+ children: right
4427
+ }) : null]
4428
+ })
4507
4429
  });
4508
4430
  }
4509
4431
 
@@ -6355,7 +6277,11 @@ function ModalTitle({
6355
6277
  children
6356
6278
  }) {
6357
6279
  return /*#__PURE__*/jsx(CardModal.Header, {
6358
- title: children
6280
+ children: /*#__PURE__*/jsx(Typography.Text, {
6281
+ base: "body-m",
6282
+ variant: "bold",
6283
+ children: children
6284
+ })
6359
6285
  });
6360
6286
  }
6361
6287
  function ModalPlatformDateTimePicker({
@@ -8287,16 +8213,60 @@ function FullscreenModalContainer({
8287
8213
  }
8288
8214
 
8289
8215
  function FullscreenModalHeader({
8216
+ hasSeparator = true,
8217
+ isTransparent,
8218
+ title,
8219
+ children,
8220
+ right,
8221
+ left,
8290
8222
  shouldHandleTopNotch = true,
8291
8223
  ...props
8292
8224
  }) {
8293
8225
  const {
8294
8226
  top
8295
8227
  } = useSafeAreaInsets();
8228
+ const hasRight = Boolean(right);
8229
+ const hasLeft = Boolean(left);
8230
+ const hasContent = Boolean(title || children);
8296
8231
  return /*#__PURE__*/jsx(View, {
8232
+ backgroundColor: isTransparent ? 'kitt.transparent' : 'kitt.uiBackgroundLight',
8233
+ minHeight: "kitt.fullscreenModal.header.height",
8234
+ width: "100%",
8235
+ justifyContent: "center",
8297
8236
  paddingTop: shouldHandleTopNotch ? top : undefined,
8298
- children: /*#__PURE__*/jsx(TopNavBar, {
8299
- ...props
8237
+ paddingRight: hasRight ? 'kitt.2' : 'kitt.fullscreenModal.horizontalPadding',
8238
+ paddingLeft: hasLeft ? 'kitt.2' : 'kitt.fullscreenModal.horizontalPadding',
8239
+ borderBottomColor: "kitt.separator",
8240
+ borderBottomWidth: hasSeparator ? 1 : undefined,
8241
+ ...props,
8242
+ children: /*#__PURE__*/jsxs(View, {
8243
+ flexDirection: "row",
8244
+ alignItems: "center",
8245
+ justifyContent: !hasContent && !hasLeft ? 'flex-end' : 'space-between',
8246
+ children: [left ? /*#__PURE__*/jsx(View, {
8247
+ width: "kitt.iconButton.width",
8248
+ children: left
8249
+ }) : null, title ? /*#__PURE__*/jsx(View, {
8250
+ flexGrow: 1,
8251
+ flexShrink: 1,
8252
+ paddingLeft: hasLeft ? 'kitt.2' : undefined,
8253
+ paddingRight: hasRight ? 'kitt.2' : 0,
8254
+ children: /*#__PURE__*/jsx(Typography.Text, {
8255
+ variant: "bold",
8256
+ textAlign: !hasLeft && hasRight ? 'left' : 'center',
8257
+ children: title
8258
+ })
8259
+ }) : null, children ? /*#__PURE__*/jsx(View, {
8260
+ flexGrow: 1,
8261
+ flexShrink: 1,
8262
+ alignItems: "center",
8263
+ paddingLeft: hasLeft ? 'kitt.2' : undefined,
8264
+ paddingRight: hasRight ? 'kitt.2' : undefined,
8265
+ children: children
8266
+ }) : null, right || left ? /*#__PURE__*/jsx(View, {
8267
+ width: "kitt.iconButton.width",
8268
+ children: right
8269
+ }) : null]
8300
8270
  })
8301
8271
  });
8302
8272
  }
@@ -8592,6 +8562,62 @@ function Highlight({
8592
8562
  });
8593
8563
  }
8594
8564
 
8565
+ const getButtonTypeAndVariant = iconColor => {
8566
+ switch (iconColor) {
8567
+ case 'black':
8568
+ return {
8569
+ type: 'tertiary'
8570
+ };
8571
+ case 'secondary':
8572
+ return {
8573
+ type: 'secondary'
8574
+ };
8575
+ case 'primary':
8576
+ return {
8577
+ type: 'primary'
8578
+ };
8579
+ case 'primary-plain':
8580
+ return {
8581
+ type: 'primary'
8582
+ };
8583
+ case 'ghost':
8584
+ return {
8585
+ type: 'tertiary',
8586
+ variant: 'revert'
8587
+ };
8588
+ default:
8589
+ return {
8590
+ type: 'secondary'
8591
+ };
8592
+ }
8593
+ };
8594
+
8595
+ /**
8596
+ * @deprecated IconButton should only be used as a navigation button
8597
+ * Other use cases should use a <Button> component with an icon
8598
+ */
8599
+ function IconButton({
8600
+ color = 'black',
8601
+ ariaLabel,
8602
+ ...props
8603
+ }) {
8604
+ const {
8605
+ type: legacyColorToType,
8606
+ variant: legacyColorToVariant
8607
+ } = getButtonTypeAndVariant(color);
8608
+ return /*#__PURE__*/jsx(Button, {
8609
+ variant: legacyColorToVariant,
8610
+ type: legacyColorToType,
8611
+ ...props
8612
+ });
8613
+ }
8614
+ function CloseIconButton(props) {
8615
+ return /*#__PURE__*/jsx(IconButton, {
8616
+ icon: /*#__PURE__*/jsx(XRegularIcon, {}),
8617
+ ...props
8618
+ });
8619
+ }
8620
+
8595
8621
  function InfoCard({
8596
8622
  title,
8597
8623
  action,
@@ -10317,6 +10343,9 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
10317
10343
  },
10318
10344
  icon: theme.icon,
10319
10345
  cardModal: {
10346
+ header: {
10347
+ height: theme.cardModal.header.height
10348
+ },
10320
10349
  maxWidth: theme.cardModal.maxWidth,
10321
10350
  maxWidthWithPadding: theme.cardModal.maxWidthWithPadding,
10322
10351
  minHeight: theme.cardModal.minHeight
@@ -10617,6 +10646,15 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
10617
10646
  }
10618
10647
  }
10619
10648
  },
10649
+ iconButton: {
10650
+ width: theme.iconButton.width,
10651
+ height: theme.iconButton.height
10652
+ },
10653
+ fullscreenModal: {
10654
+ header: {
10655
+ height: theme.fullscreenModal.header.height
10656
+ }
10657
+ },
10620
10658
  pageLoader: {
10621
10659
  size: theme.pageLoader.size
10622
10660
  },
@@ -10714,7 +10752,7 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
10714
10752
  }
10715
10753
  },
10716
10754
  fullscreenModal: {
10717
- horizontalPadding: theme.fullscreenModal.horizontalPadding,
10755
+ horizontalPadding: theme.fullscreenModal.sharedHorizontalPadding,
10718
10756
  body: {
10719
10757
  verticalPadding: theme.fullscreenModal.body.verticalPadding
10720
10758
  },
@@ -11570,14 +11608,19 @@ function NavigationBottomSheet({
11570
11608
  })
11571
11609
  });
11572
11610
  }
11573
-
11574
- /**
11575
- * Web only: display right CloseButton
11576
- */
11577
-
11578
- function NavigationBottomSheetHeader(props) {
11579
- return /*#__PURE__*/jsx(TopNavBar, {
11580
- ...props
11611
+ function NavigationBottomSheetHeader({
11612
+ children,
11613
+ left
11614
+ }) {
11615
+ return /*#__PURE__*/jsx(HStack, {
11616
+ marginBottom: "kitt.6",
11617
+ children: /*#__PURE__*/jsx(Typography.Text, {
11618
+ flexGrow: 1,
11619
+ flexShrink: 1,
11620
+ variant: "bold",
11621
+ textAlign: "center",
11622
+ children: children
11623
+ })
11581
11624
  });
11582
11625
  }
11583
11626
  function NavigationBottomSheetBody(props) {
@@ -12032,9 +12075,14 @@ function Picker({
12032
12075
  onClose: handleClose,
12033
12076
  children: /*#__PURE__*/jsxs(CardModal, {
12034
12077
  children: [/*#__PURE__*/jsx(CardModal.Header, {
12035
- title: title,
12036
- right: /*#__PURE__*/jsx(TopNavBar.CloseButton, {
12078
+ right: /*#__PURE__*/jsx(IconButton, {
12079
+ icon: /*#__PURE__*/jsx(XRegularIcon, {}),
12037
12080
  onPress: handleClose
12081
+ }),
12082
+ children: /*#__PURE__*/jsx(Typography.Text, {
12083
+ base: "body-m",
12084
+ variant: "bold",
12085
+ children: title
12038
12086
  })
12039
12087
  }), Platform.OS === 'ios' && shouldDisplayNativePickerOnIOS ? /*#__PURE__*/jsx(Picker$1, {
12040
12088
  testID: testID,
@@ -13578,6 +13626,85 @@ function Tooltip({
13578
13626
  Tooltip.Arrow = Arrow;
13579
13627
  Tooltip.Content = TooltipContent;
13580
13628
 
13629
+ function TopNavBar({
13630
+ left,
13631
+ right,
13632
+ title,
13633
+ titleAlign = 'center',
13634
+ stickers,
13635
+ mode = 'default',
13636
+ hasSeparator = true
13637
+ }) {
13638
+ const isLargeTitleMode = mode === 'largeTitle';
13639
+ return /*#__PURE__*/jsxs(VStack, {
13640
+ space: isLargeTitleMode ? 'kitt.2' : undefined,
13641
+ width: "100%",
13642
+ height: mode === 'default' ? 56 : undefined,
13643
+ justifyContent: "center",
13644
+ paddingX: "kitt.2",
13645
+ paddingTop: isLargeTitleMode ? 'kitt.2' : 'kitt.3',
13646
+ paddingBottom: "kitt.3",
13647
+ borderBottomWidth: hasSeparator && mode === 'default' ? 1 : 0,
13648
+ borderColor: "kitt.separator",
13649
+ children: [/*#__PURE__*/jsxs(HStack, {
13650
+ alignItems: "center",
13651
+ justifyContent: !title && !left ? 'flex-end' : 'space-between',
13652
+ children: [left ?? /*#__PURE__*/jsx(View, {
13653
+ width: "kitt.button.minWidth"
13654
+ }), mode === 'default' ? /*#__PURE__*/jsx(View, {
13655
+ flexGrow: "1",
13656
+ flexShrink: 1,
13657
+ paddingRight: "kitt.2",
13658
+ paddingLeft: "kitt.2",
13659
+ children: title ? /*#__PURE__*/jsx(Typography.Text, {
13660
+ textAlign: titleAlign,
13661
+ variant: "bold",
13662
+ ellipsizeMode: "tail",
13663
+ numberOfLines: 1,
13664
+ children: title
13665
+ }) : null
13666
+ }) : null, right ?? /*#__PURE__*/jsx(View, {
13667
+ width: "kitt.button.minWidth"
13668
+ })]
13669
+ }), mode === 'largeTitle' ? /*#__PURE__*/jsxs(VStack, {
13670
+ space: "kitt.4",
13671
+ paddingX: "kitt.2",
13672
+ children: [stickers ? /*#__PURE__*/jsx(HStack, {
13673
+ width: "100%",
13674
+ space: "kitt.1",
13675
+ flexShrink: 1,
13676
+ flexWrap: "wrap",
13677
+ style: {
13678
+ rowGap: theme.getSpacing(1)
13679
+ },
13680
+ children: stickers.map((sticker, index) =>
13681
+ /*#__PURE__*/
13682
+ // eslint-disable-next-line react/no-array-index-key
13683
+ jsx(View, {
13684
+ children: sticker
13685
+ }, index))
13686
+ }) : null, /*#__PURE__*/jsx(Typography.Text, {
13687
+ base: "heading-m",
13688
+ children: title
13689
+ })]
13690
+ }) : null]
13691
+ });
13692
+ }
13693
+ function CloseButton(props) {
13694
+ return /*#__PURE__*/jsx(IconButton, {
13695
+ icon: /*#__PURE__*/jsx(XRegularIcon, {}),
13696
+ ...props
13697
+ });
13698
+ }
13699
+ function BackButton(props) {
13700
+ return /*#__PURE__*/jsx(IconButton, {
13701
+ icon: /*#__PURE__*/jsx(ArrowLeftRegularIcon, {}),
13702
+ ...props
13703
+ });
13704
+ }
13705
+ TopNavBar.CloseButton = CloseButton;
13706
+ TopNavBar.BackButton = BackButton;
13707
+
13581
13708
  function getTypographyTypeConfig(type, theme) {
13582
13709
  const {
13583
13710
  configs