@butternutbox/pawprint-native 0.10.10 → 0.11.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/dist/index.js CHANGED
@@ -15,10 +15,9 @@ import * as AvatarPrimitive from '@rn-primitives/avatar';
15
15
  import { Text, View, Animated, Pressable, TextInput, Easing, StyleSheet, useWindowDimensions, PanResponder, Image, ScrollView, Keyboard, ActionSheetIOS, TouchableOpacity, Platform, Modal, TouchableWithoutFeedback, FlatList, Linking, Clipboard, Alert } from 'react-native';
16
16
  import Svg, { Path, Defs, LinearGradient, Stop, Rect, G, ClipPath } from 'react-native-svg';
17
17
  import * as SwitchPrimitive from '@rn-primitives/switch';
18
- import Animated10, { Keyframe, Easing as Easing$1, FadeInLeft, FadeInRight, FadeInUp, FadeInDown, FadeIn, FadeOutLeft, FadeOutRight, FadeOutUp, FadeOutDown, FadeOut, useSharedValue, useAnimatedStyle, ComplexAnimationBuilder } from 'react-native-reanimated';
18
+ import Animated10, { Keyframe, Easing as Easing$1, FadeInLeft, FadeInRight, FadeInUp, FadeInDown, FadeIn, FadeOutLeft, FadeOutRight, FadeOutUp, FadeOutDown, FadeOut, useSharedValue, useAnimatedStyle, ComplexAnimationBuilder, withSpring } from 'react-native-reanimated';
19
19
  import { Slot } from '@rn-primitives/slot';
20
20
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
21
- import * as CheckboxPrimitive from '@rn-primitives/checkbox';
22
21
  import * as ProgressPrimitive from '@rn-primitives/progress';
23
22
  import * as SelectPrimitive3 from '@rn-primitives/select';
24
23
  import * as SliderPrimitive from '@rn-primitives/slider';
@@ -9833,90 +9832,85 @@ var Checkbox = React65.forwardRef(
9833
9832
  const isControlled = controlledChecked !== void 0;
9834
9833
  const [internalChecked, setInternalChecked] = React65.useState(defaultChecked);
9835
9834
  const isChecked = isControlled ? controlledChecked : internalChecked;
9836
- const handleCheckedChange = (checked) => {
9835
+ const handlePress = () => {
9836
+ if (disabled) return;
9837
+ const next = !isChecked;
9837
9838
  if (!isControlled) {
9838
- setInternalChecked(checked);
9839
+ setInternalChecked(next);
9839
9840
  }
9840
- onCheckedChange == null ? void 0 : onCheckedChange(checked);
9841
+ onCheckedChange == null ? void 0 : onCheckedChange(next);
9841
9842
  };
9842
9843
  const isTile = variant === "tile";
9843
9844
  const controlSize = parseTokenValue30(checkbox.size.control.default);
9844
- return /* @__PURE__ */ jsx(
9845
- CheckboxPrimitive.Root,
9846
- {
9847
- checked: isChecked,
9848
- onCheckedChange: handleCheckedChange,
9845
+ return /* @__PURE__ */ jsxs(
9846
+ StyledRootPressable,
9847
+ __spreadProps(__spreadValues({
9848
+ ref,
9849
+ onPress: handlePress,
9849
9850
  disabled,
9850
- asChild: true,
9851
- children: /* @__PURE__ */ jsxs(
9852
- StyledRootPressable,
9853
- __spreadProps(__spreadValues({
9854
- ref,
9855
- rootFlexAlign: isTile ? "center" : "flex-start",
9856
- rootGap: parseTokenValue30(
9857
- isTile ? checkbox.checkboxTile.spacing.gap : checkbox.spacing.gap
9858
- ),
9859
- rootOpacity: disabled ? parseFloat(theme2.tokens.primitives.opacity["40"]) : 1,
9860
- rootPaddingVertical: isTile ? parseTokenValue30(checkbox.checkboxTile.spacing.verticalPadding) : void 0,
9861
- rootPaddingHorizontal: isTile ? parseTokenValue30(checkbox.checkboxTile.spacing.horizontalPadding) : void 0,
9862
- rootMaxWidth: isTile ? parseTokenValue30(checkbox.checkboxTile.size.maxWidth) : void 0,
9863
- rootBgColor: isTile ? isChecked ? checkbox.checkboxTile.colour.background.selected : checkbox.checkboxTile.colour.background.default : void 0,
9864
- rootBorderWidth: isTile ? parseTokenValue30(checkbox.checkboxTile.borderWidth.default) : void 0,
9865
- rootBorderColor: isTile ? isChecked ? checkbox.checkboxTile.colour.border.selected : checkbox.checkboxTile.colour.border.default : void 0,
9866
- rootBorderRadius: isTile ? parseTokenValue30(checkbox.checkboxTile.borderRadius.default) : void 0,
9867
- style: typeof style === "function" ? void 0 : style
9868
- }, rest), {
9869
- children: [
9870
- /* @__PURE__ */ jsx(
9871
- StyledControl,
9872
- {
9873
- controlSize,
9874
- controlBorderWidth: parseTokenValue30(
9875
- checkbox.control.border.default
9876
- ),
9877
- controlBorderColor: isChecked ? checkbox.colour.background.selected : checkbox.colour.border.default,
9878
- controlBorderRadius: parseTokenValue30(dimensions3.borderRadius.xs),
9879
- controlBgColor: isChecked ? checkbox.colour.background.selected : "transparent",
9880
- children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { children: /* @__PURE__ */ jsx(Icon, { icon: Check_default, size: "xs", colour: "alt" }) })
9881
- }
9882
- ),
9883
- /* @__PURE__ */ jsxs(
9884
- StyledContent2,
9885
- {
9886
- contentGap: parseTokenValue30(checkbox.spacing.content.gap),
9887
- children: [
9888
- label && /* @__PURE__ */ jsx(
9889
- Typography,
9890
- {
9891
- token: checkbox.typography.label,
9892
- color: checkbox.colour.text.title,
9893
- children: label
9894
- }
9895
- ),
9896
- subText && /* @__PURE__ */ jsx(
9897
- Typography,
9898
- {
9899
- token: checkbox.typography.subText,
9900
- color: checkbox.colour.text.subtext,
9901
- children: subText
9902
- }
9903
- )
9904
- ]
9905
- }
9851
+ accessibilityRole: "checkbox",
9852
+ accessibilityState: { checked: isChecked, disabled },
9853
+ rootFlexAlign: isTile ? "center" : "flex-start",
9854
+ rootGap: parseTokenValue30(
9855
+ isTile ? checkbox.checkboxTile.spacing.gap : checkbox.spacing.gap
9856
+ ),
9857
+ rootOpacity: disabled ? parseFloat(theme2.tokens.primitives.opacity["40"]) : 1,
9858
+ rootPaddingVertical: isTile ? parseTokenValue30(checkbox.checkboxTile.spacing.verticalPadding) : void 0,
9859
+ rootPaddingHorizontal: isTile ? parseTokenValue30(checkbox.checkboxTile.spacing.horizontalPadding) : void 0,
9860
+ rootMaxWidth: isTile ? parseTokenValue30(checkbox.checkboxTile.size.maxWidth) : void 0,
9861
+ rootBgColor: isTile ? isChecked ? checkbox.checkboxTile.colour.background.selected : checkbox.checkboxTile.colour.background.default : void 0,
9862
+ rootBorderWidth: isTile ? parseTokenValue30(checkbox.checkboxTile.borderWidth.default) : void 0,
9863
+ rootBorderColor: isTile ? isChecked ? checkbox.checkboxTile.colour.border.selected : checkbox.checkboxTile.colour.border.default : void 0,
9864
+ rootBorderRadius: isTile ? parseTokenValue30(checkbox.checkboxTile.borderRadius.default) : void 0,
9865
+ style: typeof style === "function" ? void 0 : style
9866
+ }, rest), {
9867
+ children: [
9868
+ /* @__PURE__ */ jsx(
9869
+ StyledControl,
9870
+ {
9871
+ controlSize,
9872
+ controlBorderWidth: parseTokenValue30(checkbox.control.border.default),
9873
+ controlBorderColor: isChecked ? checkbox.colour.background.selected : checkbox.colour.border.default,
9874
+ controlBorderRadius: parseTokenValue30(dimensions3.borderRadius.xs),
9875
+ controlBgColor: isChecked ? checkbox.colour.background.selected : "transparent",
9876
+ children: isChecked && /* @__PURE__ */ jsx(Icon, { icon: Check_default, size: "xs", colour: "alt" })
9877
+ }
9878
+ ),
9879
+ /* @__PURE__ */ jsxs(
9880
+ StyledContent2,
9881
+ {
9882
+ contentGap: parseTokenValue30(checkbox.spacing.content.gap),
9883
+ children: [
9884
+ label && /* @__PURE__ */ jsx(
9885
+ Typography,
9886
+ {
9887
+ token: checkbox.typography.label,
9888
+ color: checkbox.colour.text.title,
9889
+ children: label
9890
+ }
9891
+ ),
9892
+ subText && /* @__PURE__ */ jsx(
9893
+ Typography,
9894
+ {
9895
+ token: checkbox.typography.subText,
9896
+ color: checkbox.colour.text.subtext,
9897
+ children: subText
9898
+ }
9899
+ )
9900
+ ]
9901
+ }
9902
+ ),
9903
+ isTile && illustration && /* @__PURE__ */ jsx(
9904
+ StyledIllustration,
9905
+ {
9906
+ illustrationSize: parseTokenValue30(
9907
+ checkbox.checkboxTile.size.illustration.default
9906
9908
  ),
9907
- isTile && illustration && /* @__PURE__ */ jsx(
9908
- StyledIllustration,
9909
- {
9910
- illustrationSize: parseTokenValue30(
9911
- checkbox.checkboxTile.size.illustration.default
9912
- ),
9913
- children: illustration
9914
- }
9915
- )
9916
- ]
9917
- })
9918
- )
9919
- }
9909
+ children: illustration
9910
+ }
9911
+ )
9912
+ ]
9913
+ })
9920
9914
  );
9921
9915
  }
9922
9916
  );
@@ -10535,7 +10529,7 @@ NumberFieldInput.displayName = "NumberField.Input";
10535
10529
  var parseTokenValue35 = (value) => parseFloat(value);
10536
10530
  var StyledRoot10 = styled50(View)(({ rootGap, fullWidth }) => __spreadValues({
10537
10531
  gap: rootGap
10538
- }, fullWidth && { width: "100%" }));
10532
+ }, fullWidth ? { width: "100%" } : { alignItems: "center" }));
10539
10533
  var StyledLabelGroup = styled50(View)(({ labelGap }) => ({
10540
10534
  gap: labelGap
10541
10535
  }));
@@ -10599,6 +10593,7 @@ var NumberField = React65.forwardRef(
10599
10593
  {
10600
10594
  token: typoTokens.label,
10601
10595
  color: tokens3.colour.text.label,
10596
+ align: "center",
10602
10597
  children: label
10603
10598
  }
10604
10599
  ),
@@ -10607,6 +10602,7 @@ var NumberField = React65.forwardRef(
10607
10602
  {
10608
10603
  token: typoTokens.smallLabel,
10609
10604
  color: tokens3.colour.text.description,
10605
+ align: "center",
10610
10606
  children: smallLabel
10611
10607
  }
10612
10608
  )
@@ -10636,6 +10632,7 @@ var NumberField = React65.forwardRef(
10636
10632
  {
10637
10633
  token: size === "lg" ? tokens3.typography.large.secondaryContent : tokens3.typography.small.smallLabel,
10638
10634
  color: tokens3.colour.text.description,
10635
+ align: "center",
10639
10636
  children: description
10640
10637
  }
10641
10638
  ),
@@ -10644,6 +10641,7 @@ var NumberField = React65.forwardRef(
10644
10641
  {
10645
10642
  token: size === "lg" ? tokens3.typography.large.secondaryContent : tokens3.typography.small.smallLabel,
10646
10643
  color: theme2.tokens.components.inputs.colour.description.error,
10644
+ align: "center",
10647
10645
  children: error
10648
10646
  }
10649
10647
  )
@@ -13195,6 +13193,127 @@ var Notification = React65.forwardRef(
13195
13193
  );
13196
13194
  Notification.displayName = "Notification";
13197
13195
  var parseTokenValue50 = (value) => parseFloat(value);
13196
+ var SCALE_STEP = 0.06;
13197
+ var SPRING_CONFIG = { damping: 20, stiffness: 260, mass: 0.5 };
13198
+ var CARD_ENTERING = FadeInDown.duration(200).easing(Easing$1.inOut(Easing$1.quad));
13199
+ var CARD_EXITING = FadeOutDown.duration(200);
13200
+ var CARD_BASE_STYLE = {
13201
+ position: "absolute",
13202
+ bottom: 0,
13203
+ left: 0,
13204
+ right: 0,
13205
+ transformOrigin: "50% 100%"
13206
+ };
13207
+ var StyledRoot15 = styled50(View)(({ rootBottom, rootPaddingH }) => ({
13208
+ position: "absolute",
13209
+ left: 0,
13210
+ right: 0,
13211
+ bottom: rootBottom,
13212
+ paddingHorizontal: rootPaddingH,
13213
+ alignItems: "stretch"
13214
+ }));
13215
+ var StyledStack = styled50(View)({
13216
+ position: "relative",
13217
+ width: "100%"
13218
+ });
13219
+ var StackedCard = ({
13220
+ item,
13221
+ depth,
13222
+ revealStep,
13223
+ onDismiss
13224
+ }) => {
13225
+ const depthSV = useSharedValue(depth);
13226
+ React65.useEffect(() => {
13227
+ depthSV.value = withSpring(depth, SPRING_CONFIG);
13228
+ }, [depth, depthSV]);
13229
+ const animatedStyle = useAnimatedStyle(() => ({
13230
+ transform: [
13231
+ { translateY: depthSV.value * revealStep },
13232
+ { scale: 1 - depthSV.value * SCALE_STEP }
13233
+ ]
13234
+ }));
13235
+ const isFront = depth === 0;
13236
+ return /* @__PURE__ */ jsx(
13237
+ Animated10.View,
13238
+ {
13239
+ entering: CARD_ENTERING,
13240
+ exiting: CARD_EXITING,
13241
+ pointerEvents: isFront ? "auto" : "none",
13242
+ accessibilityElementsHidden: !isFront,
13243
+ importantForAccessibility: isFront ? "auto" : "no-hide-descendants",
13244
+ style: [CARD_BASE_STYLE, { zIndex: -depth }, animatedStyle],
13245
+ children: /* @__PURE__ */ jsx(
13246
+ Notification,
13247
+ {
13248
+ variant: "toast",
13249
+ type: item.type,
13250
+ onClose: isFront ? () => onDismiss == null ? void 0 : onDismiss(item.id) : void 0,
13251
+ children: item.message
13252
+ }
13253
+ )
13254
+ }
13255
+ );
13256
+ };
13257
+ var StackedNotifications = React65.forwardRef((_a, ref) => {
13258
+ var _b = _a, { items, onDismiss, bottomOffset } = _b, rest = __objRest(_b, ["items", "onDismiss", "bottomOffset"]);
13259
+ const theme2 = useTheme();
13260
+ const { spacing } = theme2.tokens.semantics.dimensions;
13261
+ const [dismissed, setDismissed] = React65.useState(/* @__PURE__ */ new Set());
13262
+ const idsKey = items.map((item) => item.id).join("|");
13263
+ React65.useEffect(() => {
13264
+ setDismissed((prev) => {
13265
+ if (prev.size === 0) return prev;
13266
+ const present = new Set(items.map((item) => item.id));
13267
+ let changed = false;
13268
+ const next = /* @__PURE__ */ new Set();
13269
+ prev.forEach((id) => {
13270
+ if (present.has(id)) next.add(id);
13271
+ else changed = true;
13272
+ });
13273
+ return changed ? next : prev;
13274
+ });
13275
+ }, [idsKey]);
13276
+ const activeItems = React65.useMemo(
13277
+ () => items.filter((item) => !dismissed.has(item.id)),
13278
+ [items, dismissed]
13279
+ );
13280
+ const layers = React65.useMemo(
13281
+ () => activeItems.slice(-3).reverse(),
13282
+ [activeItems]
13283
+ );
13284
+ const handleDismiss = (id) => {
13285
+ setDismissed((prev) => {
13286
+ const next = new Set(prev);
13287
+ next.add(id);
13288
+ return next;
13289
+ });
13290
+ onDismiss == null ? void 0 : onDismiss(id);
13291
+ };
13292
+ const rootBottom = bottomOffset != null ? bottomOffset : parseTokenValue50(spacing.lg);
13293
+ const peekStep = parseTokenValue50(spacing.xs);
13294
+ return /* @__PURE__ */ jsx(
13295
+ StyledRoot15,
13296
+ __spreadProps(__spreadValues({
13297
+ ref,
13298
+ pointerEvents: "box-none",
13299
+ rootBottom,
13300
+ rootPaddingH: parseTokenValue50(spacing.md)
13301
+ }, rest), {
13302
+ children: /* @__PURE__ */ jsx(StyledStack, { children: layers.map((item, depth) => /* @__PURE__ */ jsx(
13303
+ StackedCard,
13304
+ {
13305
+ item,
13306
+ depth,
13307
+ revealStep: peekStep,
13308
+ onDismiss: handleDismiss
13309
+ },
13310
+ item.id
13311
+ )) })
13312
+ })
13313
+ );
13314
+ });
13315
+ StackedNotifications.displayName = "StackedNotifications";
13316
+ var parseTokenValue51 = (value) => parseFloat(value);
13198
13317
  var NIB_OFFSET = {
13199
13318
  left: 24,
13200
13319
  middle: 146,
@@ -13316,9 +13435,9 @@ var Tooltip = React65.forwardRef(
13316
13435
  width
13317
13436
  } = theme2.tokens.components.tooltip;
13318
13437
  const [open, setOpen] = useState(false);
13319
- const tooltipWidth = parseTokenValue50(width);
13320
- const nibWidth = parseTokenValue50(nibToken.width);
13321
- const nibHeight = parseTokenValue50(nibToken.height);
13438
+ const tooltipWidth = parseTokenValue51(width);
13439
+ const nibWidth = parseTokenValue51(nibToken.width);
13440
+ const nibHeight = parseTokenValue51(nibToken.height);
13322
13441
  const nibHalfWidth = nibWidth / 2;
13323
13442
  const nibOuterHeight = nibHeight + 1;
13324
13443
  const nibX = NIB_OFFSET[alignment];
@@ -13327,11 +13446,11 @@ var Tooltip = React65.forwardRef(
13327
13446
  const side = position === "bottom" ? "top" : "bottom";
13328
13447
  const bgColor = colour.background.default;
13329
13448
  const borderColor = colour.border.default;
13330
- const borderW = parseTokenValue50(borderWidth.default);
13331
- const borderR = parseTokenValue50(borderRadius.default);
13332
- const topPad = parseTokenValue50(spacing.topPadding);
13333
- const bottomPad = parseTokenValue50(spacing.bottomPadding);
13334
- const horizontalPad = parseTokenValue50(spacing.horizontalPading);
13449
+ const borderW = parseTokenValue51(borderWidth.default);
13450
+ const borderR = parseTokenValue51(borderRadius.default);
13451
+ const topPad = parseTokenValue51(spacing.topPadding);
13452
+ const bottomPad = parseTokenValue51(spacing.bottomPadding);
13453
+ const horizontalPad = parseTokenValue51(spacing.horizontalPading);
13335
13454
  const nibRow = /* @__PURE__ */ jsx(View, { style: { height: nibOuterHeight, position: "relative", zIndex: 2 }, children: /* @__PURE__ */ jsx(
13336
13455
  NibTriangle,
13337
13456
  {
@@ -13432,7 +13551,7 @@ var Tooltip = React65.forwardRef(
13432
13551
  }
13433
13552
  );
13434
13553
  Tooltip.displayName = "Tooltip";
13435
- var parseTokenValue51 = (value) => parseFloat(value);
13554
+ var parseTokenValue52 = (value) => parseFloat(value);
13436
13555
  var StyledInsightRoot = styled50(View)(
13437
13556
  ({
13438
13557
  rootGap,
@@ -13477,26 +13596,26 @@ var MessageCardInsight = React65.forwardRef(
13477
13596
  const isSupporting = variant === "supporting";
13478
13597
  const supporting = insightCard.spacing.supporting;
13479
13598
  const standalone = insightCard.spacing.standalone;
13480
- const radiusStandalone = parseTokenValue51(
13599
+ const radiusStandalone = parseTokenValue52(
13481
13600
  insightCard.borderRadius.standalone.default
13482
13601
  );
13483
- const radiusSupporting = parseTokenValue51(
13602
+ const radiusSupporting = parseTokenValue52(
13484
13603
  insightCard.borderRadius.supporting.bottom
13485
13604
  );
13486
13605
  return /* @__PURE__ */ jsxs(
13487
13606
  StyledInsightRoot,
13488
13607
  __spreadProps(__spreadValues({
13489
13608
  ref,
13490
- rootGap: parseTokenValue51(
13609
+ rootGap: parseTokenValue52(
13491
13610
  isSupporting ? supporting.gap : standalone.gap
13492
13611
  ),
13493
- rootPaddingH: parseTokenValue51(
13612
+ rootPaddingH: parseTokenValue52(
13494
13613
  isSupporting ? semanticSpacing.md : standalone.horizontalPadding
13495
13614
  ),
13496
- rootPaddingTop: parseTokenValue51(
13615
+ rootPaddingTop: parseTokenValue52(
13497
13616
  isSupporting ? supporting.topPadding : standalone.verticalPadding
13498
13617
  ),
13499
- rootPaddingBottom: parseTokenValue51(
13618
+ rootPaddingBottom: parseTokenValue52(
13500
13619
  isSupporting ? supporting.bottomPadding : standalone.verticalPadding
13501
13620
  ),
13502
13621
  rootBorderTopLeftRadius: isSupporting ? 0 : radiusStandalone,
@@ -13504,7 +13623,7 @@ var MessageCardInsight = React65.forwardRef(
13504
13623
  rootBorderBottomLeftRadius: isSupporting ? radiusSupporting : radiusStandalone,
13505
13624
  rootBorderBottomRightRadius: isSupporting ? radiusSupporting : radiusStandalone,
13506
13625
  rootBgColor: insightCard.colour.background.default,
13507
- rootMinWidth: parseTokenValue51(insightCard.size.minWidth),
13626
+ rootMinWidth: parseTokenValue52(insightCard.size.minWidth),
13508
13627
  accessible: true,
13509
13628
  accessibilityRole: "summary"
13510
13629
  }, rest), {
@@ -13513,7 +13632,7 @@ var MessageCardInsight = React65.forwardRef(
13513
13632
  /* @__PURE__ */ jsxs(
13514
13633
  StyledInsightContent,
13515
13634
  {
13516
- contentGap: parseTokenValue51(standalone.content.gap),
13635
+ contentGap: parseTokenValue52(standalone.content.gap),
13517
13636
  children: [
13518
13637
  title && /* @__PURE__ */ jsx(
13519
13638
  Typography,
@@ -13605,9 +13724,9 @@ var MessageCardBanner = React65.forwardRef(
13605
13724
  StyledBannerRoot,
13606
13725
  __spreadProps(__spreadValues({
13607
13726
  ref,
13608
- rootGap: parseTokenValue51(dimensions3.spacing.md),
13609
- rootPadding: parseTokenValue51(dimensions3.spacing.md),
13610
- rootBorderRadius: parseTokenValue51(dimensions3.borderRadius.md),
13727
+ rootGap: parseTokenValue52(dimensions3.spacing.md),
13728
+ rootPadding: parseTokenValue52(dimensions3.spacing.md),
13729
+ rootBorderRadius: parseTokenValue52(dimensions3.borderRadius.md),
13611
13730
  rootBgColor: bgColor,
13612
13731
  accessible: true,
13613
13732
  accessibilityRole: "summary"
@@ -13619,7 +13738,7 @@ var MessageCardBanner = React65.forwardRef(
13619
13738
  }) }) : (media == null ? void 0 : media.type) === "image" ? /* @__PURE__ */ jsx(
13620
13739
  StyledBannerImage,
13621
13740
  {
13622
- imageRadius: parseTokenValue51(dimensions3.borderRadius.sm),
13741
+ imageRadius: parseTokenValue52(dimensions3.borderRadius.sm),
13623
13742
  imageBgColor: colour.background.surface.secondary,
13624
13743
  children: /* @__PURE__ */ jsx(
13625
13744
  Image,
@@ -13635,12 +13754,12 @@ var MessageCardBanner = React65.forwardRef(
13635
13754
  /* @__PURE__ */ jsxs(
13636
13755
  StyledBannerContents,
13637
13756
  {
13638
- contentsGap: parseTokenValue51(dimensions3.spacing.xs),
13757
+ contentsGap: parseTokenValue52(dimensions3.spacing.xs),
13639
13758
  children: [
13640
13759
  /* @__PURE__ */ jsxs(
13641
13760
  StyledBannerCopy,
13642
13761
  {
13643
- copyGap: parseTokenValue51(dimensions3.spacing["3xs"]),
13762
+ copyGap: parseTokenValue52(dimensions3.spacing["3xs"]),
13644
13763
  children: [
13645
13764
  title && /* @__PURE__ */ jsx(Typography, { variant: "heading", size: "xs", color: "primary", children: title }),
13646
13765
  /* @__PURE__ */ jsx(Typography, { variant: "body", size: "md", color: "secondary", children })
@@ -13671,7 +13790,7 @@ var MessageCard = {
13671
13790
  Insight: MessageCardInsight,
13672
13791
  Banner: MessageCardBanner
13673
13792
  };
13674
- var parseTokenValue52 = (value) => parseFloat(value);
13793
+ var parseTokenValue53 = (value) => parseFloat(value);
13675
13794
  var slideEaseOut = Easing$1.out(Easing$1.quad);
13676
13795
  var MONTH_SLIDE_ENTERING = {
13677
13796
  forward: FadeInRight.duration(250).easing(slideEaseOut),
@@ -13832,17 +13951,17 @@ var DatePicker = React65.forwardRef(
13832
13951
  } = useMemo(
13833
13952
  () => ({
13834
13953
  // Gap between the week-day header and the month header.
13835
- weekGap: parseTokenValue52(datePicker.spacing.gap),
13954
+ weekGap: parseTokenValue53(datePicker.spacing.gap),
13836
13955
  // Gap between the month header and the dates grid.
13837
- datesGap: parseTokenValue52(theme2.tokens.semantics.dimensions.spacing.md),
13838
- containerMaxWidth: parseTokenValue52(dt.size.width) * 7,
13839
- headerGap: parseTokenValue52(datePicker.month.spacing.gap),
13840
- cellHeight: parseTokenValue52(dt.size.height),
13841
- indicatorSize: parseTokenValue52(dt.size.indicator),
13842
- indicatorBorderRadius: parseTokenValue52(dt.borderRadius.indicator),
13843
- selectedBorderWidth: parseTokenValue52(dt.borderWidth.indicator.selected),
13844
- disabledOpacity: parseTokenValue52(dt.opacity.disabled),
13845
- rowGap: parseTokenValue52(datePicker.dates.spacing.gap)
13956
+ datesGap: parseTokenValue53(theme2.tokens.semantics.dimensions.spacing.md),
13957
+ containerMaxWidth: parseTokenValue53(dt.size.width) * 7,
13958
+ headerGap: parseTokenValue53(datePicker.month.spacing.gap),
13959
+ cellHeight: parseTokenValue53(dt.size.height),
13960
+ indicatorSize: parseTokenValue53(dt.size.indicator),
13961
+ indicatorBorderRadius: parseTokenValue53(dt.borderRadius.indicator),
13962
+ selectedBorderWidth: parseTokenValue53(dt.borderWidth.indicator.selected),
13963
+ disabledOpacity: parseTokenValue53(dt.opacity.disabled),
13964
+ rowGap: parseTokenValue53(datePicker.dates.spacing.gap)
13846
13965
  }),
13847
13966
  [datePicker, dt, theme2]
13848
13967
  );
@@ -14120,8 +14239,8 @@ var buildPointerPath = (r) => {
14120
14239
  "Z"
14121
14240
  ].join(" ");
14122
14241
  };
14123
- var parseTokenValue53 = (value) => parseFloat(value);
14124
- var StyledRoot15 = styled50(View)(({ rootGap }) => ({
14242
+ var parseTokenValue54 = (value) => parseFloat(value);
14243
+ var StyledRoot16 = styled50(View)(({ rootGap }) => ({
14125
14244
  flexDirection: "column",
14126
14245
  gap: rootGap,
14127
14246
  width: "100%"
@@ -14210,24 +14329,24 @@ var PictureSelector = React65.forwardRef(
14210
14329
  if (!isControlled) setInternalValue(nextValue);
14211
14330
  onValueChange == null ? void 0 : onValueChange(nextValue);
14212
14331
  };
14213
- const rootGap = parseTokenValue53(pictureSelector.spacing.container.gap);
14214
- const rowGap = parseTokenValue53(pictureSelector.spacing.buttons.gap);
14215
- const stackGap = parseTokenValue53(pictureButton.spacing.container.gap);
14216
- const buttonPadding = parseTokenValue53(pictureButton.spacing.padding);
14217
- const buttonBorderRadius = parseTokenValue53(
14332
+ const rootGap = parseTokenValue54(pictureSelector.spacing.container.gap);
14333
+ const rowGap = parseTokenValue54(pictureSelector.spacing.buttons.gap);
14334
+ const stackGap = parseTokenValue54(pictureButton.spacing.container.gap);
14335
+ const buttonPadding = parseTokenValue54(pictureButton.spacing.padding);
14336
+ const buttonBorderRadius = parseTokenValue54(
14218
14337
  pictureButton.borderRadius.default
14219
14338
  );
14220
- const borderWidthDefault = parseTokenValue53(
14339
+ const borderWidthDefault = parseTokenValue54(
14221
14340
  pictureButton.borderWidth.default
14222
14341
  );
14223
- const borderWidthActive = parseTokenValue53(pictureButton.borderWidth.active);
14342
+ const borderWidthActive = parseTokenValue54(pictureButton.borderWidth.active);
14224
14343
  const pointerPath = buildPointerPath(
14225
- parseTokenValue53(pictureButton.pointer.borderRadius.default)
14344
+ parseTokenValue54(pictureButton.pointer.borderRadius.default)
14226
14345
  );
14227
- const resolvedMinWidth = itemMinWidth != null ? itemMinWidth : parseTokenValue53(pictureButton.size.minWidth);
14346
+ const resolvedMinWidth = itemMinWidth != null ? itemMinWidth : parseTokenValue54(pictureButton.size.minWidth);
14228
14347
  const resolvedMinHeight = itemMinHeight != null ? itemMinHeight : resolvedMinWidth;
14229
14348
  return /* @__PURE__ */ jsxs(
14230
- StyledRoot15,
14349
+ StyledRoot16,
14231
14350
  __spreadProps(__spreadValues({
14232
14351
  ref,
14233
14352
  rootGap,
@@ -14317,7 +14436,7 @@ var DEFAULT_UNIT_LABELS = {
14317
14436
  seconds: { singular: "sec", plural: "secs" }
14318
14437
  };
14319
14438
  var resolveLabel = (label, value) => typeof label === "string" ? label : value === 1 ? label.singular : label.plural;
14320
- var parseTokenValue54 = (value) => parseFloat(value);
14439
+ var parseTokenValue55 = (value) => parseFloat(value);
14321
14440
  var pad = (value) => String(Math.max(0, Math.floor(value))).padStart(2, "0");
14322
14441
  var StackedRoot = styled50(View)(({ rootGap }) => ({
14323
14442
  flexDirection: "row",
@@ -14447,28 +14566,28 @@ var Countdown = React65.forwardRef(
14447
14566
  InlineRoot,
14448
14567
  __spreadProps(__spreadValues({
14449
14568
  ref,
14450
- rootGap: parseTokenValue54(countdown.spacing.gap),
14451
- rootVerticalPadding: parseTokenValue54(
14569
+ rootGap: parseTokenValue55(countdown.spacing.gap),
14570
+ rootVerticalPadding: parseTokenValue55(
14452
14571
  countdown.spacing.verticalPadding
14453
14572
  ),
14454
- rootHorizontalPadding: parseTokenValue54(
14573
+ rootHorizontalPadding: parseTokenValue55(
14455
14574
  countdown.spacing.horizontalPadding
14456
14575
  ),
14457
14576
  rootBgColor: countdown.colour.background.default,
14458
- rootBorderRadius: parseTokenValue54(countdown.borderRadius.default)
14577
+ rootBorderRadius: parseTokenValue55(countdown.borderRadius.default)
14459
14578
  }, rest), {
14460
14579
  children: [
14461
14580
  label != null && /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "bold", size: "md", color: "primary", children: label }),
14462
14581
  /* @__PURE__ */ jsx(
14463
14582
  InlineGroup,
14464
14583
  {
14465
- groupGap: parseTokenValue54(countdown.countdownGroup.spacing.gap),
14584
+ groupGap: parseTokenValue55(countdown.countdownGroup.spacing.gap),
14466
14585
  children: units.map((unit, index) => /* @__PURE__ */ jsxs(React65.Fragment, { children: [
14467
14586
  index > 0 && colon(`colon-${unit.key}`),
14468
14587
  /* @__PURE__ */ jsxs(
14469
14588
  InlineCount,
14470
14589
  {
14471
- countGap: parseTokenValue54(countdown.count.spacing.gap),
14590
+ countGap: parseTokenValue55(countdown.count.spacing.gap),
14472
14591
  children: [
14473
14592
  /* @__PURE__ */ jsx(
14474
14593
  Typography,
@@ -14504,33 +14623,33 @@ var Countdown = React65.forwardRef(
14504
14623
  StackedRoot,
14505
14624
  __spreadProps(__spreadValues({
14506
14625
  ref,
14507
- rootGap: parseTokenValue54(countdown.spacing.gap)
14626
+ rootGap: parseTokenValue55(countdown.spacing.gap)
14508
14627
  }, rest), {
14509
14628
  children: units.map((unit, index) => /* @__PURE__ */ jsxs(React65.Fragment, { children: [
14510
14629
  index > 0 && colon(`colon-${unit.key}`),
14511
14630
  /* @__PURE__ */ jsxs(
14512
14631
  StackedItem,
14513
14632
  {
14514
- itemGap: parseTokenValue54(countdownItem.spacing.gap),
14515
- itemVerticalPadding: parseTokenValue54(
14633
+ itemGap: parseTokenValue55(countdownItem.spacing.gap),
14634
+ itemVerticalPadding: parseTokenValue55(
14516
14635
  countdownItem.spacing.verticalPadding
14517
14636
  ),
14518
- itemHorizontalPadding: parseTokenValue54(
14637
+ itemHorizontalPadding: parseTokenValue55(
14519
14638
  countdownItem.spacing.horizontalPadding
14520
14639
  ),
14521
14640
  itemBgColor: countdownItem.colour.background.default,
14522
- itemBorderRadius: parseTokenValue54(
14641
+ itemBorderRadius: parseTokenValue55(
14523
14642
  countdownItem.borderRadius.default
14524
14643
  ),
14525
14644
  children: [
14526
14645
  /* @__PURE__ */ jsx(
14527
14646
  StackedCountBox,
14528
14647
  {
14529
- countPaddingTop: parseTokenValue54(
14648
+ countPaddingTop: parseTokenValue55(
14530
14649
  countdownItem.count.spacing.paddingTop
14531
14650
  ),
14532
14651
  countBgColor: countdownItem.count.colour.background.default,
14533
- countBorderRadius: parseTokenValue54(
14652
+ countBorderRadius: parseTokenValue55(
14534
14653
  countdownItem.count.borderRadius.default
14535
14654
  ),
14536
14655
  children: /* @__PURE__ */ jsx(
@@ -14560,7 +14679,7 @@ var Countdown = React65.forwardRef(
14560
14679
  }
14561
14680
  );
14562
14681
  Countdown.displayName = "Countdown";
14563
- var parseTokenValue55 = (value) => {
14682
+ var parseTokenValue56 = (value) => {
14564
14683
  if (typeof value === "number") return value;
14565
14684
  return parseFloat(value);
14566
14685
  };
@@ -14571,14 +14690,14 @@ var BadgeContainer = styled50(View)(({ theme: theme2 }) => {
14571
14690
  return {
14572
14691
  display: "flex",
14573
14692
  flexDirection: "row",
14574
- gap: parseTokenValue55(spacing["2xs"]),
14693
+ gap: parseTokenValue56(spacing["2xs"]),
14575
14694
  alignItems: "center",
14576
14695
  justifyContent: "center",
14577
- height: parseTokenValue55(sizing["2xl"]),
14578
- paddingRight: parseTokenValue55(spacing.xs),
14696
+ height: parseTokenValue56(sizing["2xl"]),
14697
+ paddingRight: parseTokenValue56(spacing.xs),
14579
14698
  backgroundColor: colour.background.container.brand,
14580
- borderTopRightRadius: parseTokenValue55(borderRadius.xs),
14581
- borderBottomRightRadius: parseTokenValue55(borderRadius.xs)
14699
+ borderTopRightRadius: parseTokenValue56(borderRadius.xs),
14700
+ borderBottomRightRadius: parseTokenValue56(borderRadius.xs)
14582
14701
  };
14583
14702
  });
14584
14703
  var BadgeIcon = styled50(View)(({ theme: theme2 }) => {
@@ -14588,9 +14707,9 @@ var BadgeIcon = styled50(View)(({ theme: theme2 }) => {
14588
14707
  display: "flex",
14589
14708
  alignItems: "center",
14590
14709
  justifyContent: "center",
14591
- width: parseTokenValue55(sizing.md),
14592
- height: parseTokenValue55(sizing.md),
14593
- marginLeft: parseTokenValue55(spacing.xs),
14710
+ width: parseTokenValue56(sizing.md),
14711
+ height: parseTokenValue56(sizing.md),
14712
+ marginLeft: parseTokenValue56(spacing.xs),
14594
14713
  flexShrink: 0
14595
14714
  };
14596
14715
  });
@@ -14639,16 +14758,16 @@ var Grid = React65.forwardRef(
14639
14758
  }
14640
14759
  );
14641
14760
  Grid.displayName = "ProductListingCard.Grid";
14642
- var parseTokenValue56 = (value) => {
14761
+ var parseTokenValue57 = (value) => {
14643
14762
  if (typeof value === "number") return value;
14644
14763
  return parseFloat(value);
14645
14764
  };
14646
- var StyledRoot16 = styled50(Pressable)(({ theme: theme2 }) => {
14765
+ var StyledRoot17 = styled50(Pressable)(({ theme: theme2 }) => {
14647
14766
  const spacing = theme2.tokens.semantics.dimensions.spacing;
14648
14767
  return {
14649
14768
  display: "flex",
14650
14769
  flexDirection: "column",
14651
- gap: parseTokenValue56(spacing.md),
14770
+ gap: parseTokenValue57(spacing.md),
14652
14771
  alignItems: "flex-start",
14653
14772
  width: "100%"
14654
14773
  };
@@ -14658,7 +14777,7 @@ var ImageContainer = styled50(View)(({ theme: theme2 }) => ({
14658
14777
  width: "100%",
14659
14778
  aspectRatio: 1,
14660
14779
  overflow: "hidden",
14661
- borderRadius: parseTokenValue56(
14780
+ borderRadius: parseTokenValue57(
14662
14781
  theme2.tokens.semantics.dimensions.borderRadius.md
14663
14782
  )
14664
14783
  }));
@@ -14669,7 +14788,7 @@ var StyledImage2 = styled50(Image)({
14669
14788
  });
14670
14789
  var BadgeContainer2 = styled50(View)(({ theme: theme2 }) => ({
14671
14790
  position: "absolute",
14672
- top: parseTokenValue56(theme2.tokens.semantics.dimensions.spacing.md),
14791
+ top: parseTokenValue57(theme2.tokens.semantics.dimensions.spacing.md),
14673
14792
  left: 0
14674
14793
  }));
14675
14794
  var ContentContainer = styled50(View)(({ theme: theme2 }) => {
@@ -14677,7 +14796,7 @@ var ContentContainer = styled50(View)(({ theme: theme2 }) => {
14677
14796
  return {
14678
14797
  display: "flex",
14679
14798
  flexDirection: "column",
14680
- gap: parseTokenValue56(spacing.md),
14799
+ gap: parseTokenValue57(spacing.md),
14681
14800
  alignItems: "flex-start",
14682
14801
  width: "100%"
14683
14802
  };
@@ -14691,7 +14810,7 @@ var DetailsContainer = styled50(View)({
14691
14810
  var CategoryWrapper = styled50(View)(({ theme: theme2 }) => {
14692
14811
  const spacing = theme2.tokens.semantics.dimensions.spacing;
14693
14812
  return {
14694
- marginBottom: parseTokenValue56(spacing["3xs"])
14813
+ marginBottom: parseTokenValue57(spacing["3xs"])
14695
14814
  };
14696
14815
  });
14697
14816
  var TitleContainer = styled50(View)({
@@ -14744,7 +14863,7 @@ var _ProductListingCard = React65.forwardRef(
14744
14863
  "showPrice",
14745
14864
  "onPress"
14746
14865
  ]);
14747
- return /* @__PURE__ */ jsxs(StyledRoot16, __spreadProps(__spreadValues({ ref, onPress }, rest), { children: [
14866
+ return /* @__PURE__ */ jsxs(StyledRoot17, __spreadProps(__spreadValues({ ref, onPress }, rest), { children: [
14748
14867
  /* @__PURE__ */ jsxs(ImageContainer, { children: [
14749
14868
  image && /* @__PURE__ */ jsx(View, { style: { flex: 1, width: "100%", height: "100%" }, children: typeof image === "string" ? /* @__PURE__ */ jsx(
14750
14869
  StyledImage2,
@@ -15039,7 +15158,7 @@ var useTabNavigationContext = () => {
15039
15158
  }
15040
15159
  return context;
15041
15160
  };
15042
- var parseTokenValue57 = (value) => parseFloat(value);
15161
+ var parseTokenValue58 = (value) => parseFloat(value);
15043
15162
  var StyledFixedList = styled50(View)({
15044
15163
  flexDirection: "row",
15045
15164
  alignItems: "stretch",
@@ -15105,13 +15224,13 @@ var TabNavigationTab = React65.forwardRef(
15105
15224
  StyledTab,
15106
15225
  __spreadProps(__spreadValues({
15107
15226
  ref,
15108
- tabHeight: parseTokenValue57(tabitem.size.height),
15109
- tabMinWidth: parseTokenValue57(tabitem.size.minWidth),
15110
- tabPaddingTop: parseTokenValue57(spacing.topPadding),
15111
- tabPaddingBottom: parseTokenValue57(spacing.bottomPadding),
15112
- tabPaddingHorizontal: parseTokenValue57(spacing.horizontalPadding),
15113
- tabGap: parseTokenValue57(spacing.gap),
15114
- tabBorderWidth: parseTokenValue57(borderWidth.default),
15227
+ tabHeight: parseTokenValue58(tabitem.size.height),
15228
+ tabMinWidth: parseTokenValue58(tabitem.size.minWidth),
15229
+ tabPaddingTop: parseTokenValue58(spacing.topPadding),
15230
+ tabPaddingBottom: parseTokenValue58(spacing.bottomPadding),
15231
+ tabPaddingHorizontal: parseTokenValue58(spacing.horizontalPadding),
15232
+ tabGap: parseTokenValue58(spacing.gap),
15233
+ tabBorderWidth: parseTokenValue58(borderWidth.default),
15115
15234
  tabBorderColor: borderColour,
15116
15235
  tabFlex: layout === "fixed" ? 1 : void 0
15117
15236
  }, rest), {
@@ -15193,6 +15312,6 @@ var TabNavigation = Object.assign(TabNavigationRoot, {
15193
15312
  Panel: TabNavigationPanel
15194
15313
  });
15195
15314
 
15196
- export { Accordion, Animated5 as Animated, Avatar, BRAND_FONTS, Badge, Button, ButtonDock, ButtonGroup, CarouselControls, Checkbox, CheckboxGroup, CopyField, CopyFieldInput, Countdown, DatePicker, Drawer, FilterTab, Hint, Icon, IconButton, Illustration, Input, InputDescription, InputError, InputField, InputLabel, InputText, Link, Logo, MessageCard, MessageCardBanner, MessageCardInsight, NativeSelectPicker, Notification, NumberField, NumberInput, NumberInputField, PasswordField, PasswordFieldInput, PasswordFieldRequirements, PawprintProvider, PictureSelector, ProductDisplayCard, ProductListingCardWithBadgeAndGrid as ProductListingCard, Progress, Radio, RadioGroup, RadioTile, SearchField, SearchFieldInput, SegmentedControl, SelectField, SelectFieldContent, SelectFieldItem, SelectFieldTrigger, SelectFieldValue, Slider, Spinner, Switch, TabNavigation, Tag, TextArea, TextAreaField, TextAreaLabel, ThemeProvider, Tooltip, Typography, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
15315
+ export { Accordion, Animated5 as Animated, Avatar, BRAND_FONTS, Badge, Button, ButtonDock, ButtonGroup, CarouselControls, Checkbox, CheckboxGroup, CopyField, CopyFieldInput, Countdown, DatePicker, Drawer, FilterTab, Hint, Icon, IconButton, Illustration, Input, InputDescription, InputError, InputField, InputLabel, InputText, Link, Logo, MessageCard, MessageCardBanner, MessageCardInsight, NativeSelectPicker, Notification, NumberField, NumberInput, NumberInputField, PasswordField, PasswordFieldInput, PasswordFieldRequirements, PawprintProvider, PictureSelector, ProductDisplayCard, ProductListingCardWithBadgeAndGrid as ProductListingCard, Progress, Radio, RadioGroup, RadioTile, SearchField, SearchFieldInput, SegmentedControl, SelectField, SelectFieldContent, SelectFieldItem, SelectFieldTrigger, SelectFieldValue, Slider, Spinner, StackedNotifications, Switch, TabNavigation, Tag, TextArea, TextAreaField, TextAreaLabel, ThemeProvider, Tooltip, Typography, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
15197
15316
  //# sourceMappingURL=index.js.map
15198
15317
  //# sourceMappingURL=index.js.map