@butternutbox/pawprint-native 0.4.0 → 0.5.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.d.cts CHANGED
@@ -1892,6 +1892,21 @@ type PictureSelectorProps = PictureSelectorOwnProps & Omit<ViewProps, keyof Pict
1892
1892
  declare const PictureSelector: React.ForwardRefExoticComponent<PictureSelectorOwnProps & Omit<ViewProps, keyof PictureSelectorOwnProps> & React.RefAttributes<View>>;
1893
1893
 
1894
1894
  type CountdownLayout = "stacked" | "inline";
1895
+ /**
1896
+ * A unit label. Pass a plain string to use it regardless of count, or a
1897
+ * `{ singular, plural }` pair to pluralise based on the unit's value
1898
+ * (`singular` when the value is exactly 1, `plural` otherwise).
1899
+ */
1900
+ type CountdownUnitLabel = string | {
1901
+ singular: string;
1902
+ plural: string;
1903
+ };
1904
+ type CountdownLabels = {
1905
+ days?: CountdownUnitLabel;
1906
+ hours?: CountdownUnitLabel;
1907
+ minutes?: CountdownUnitLabel;
1908
+ seconds?: CountdownUnitLabel;
1909
+ };
1895
1910
  type CountdownOwnProps = {
1896
1911
  layout?: CountdownLayout;
1897
1912
  days?: number;
@@ -1901,6 +1916,7 @@ type CountdownOwnProps = {
1901
1916
  showDays?: boolean;
1902
1917
  showSeconds?: boolean;
1903
1918
  label?: React.ReactNode;
1919
+ labels?: CountdownLabels;
1904
1920
  };
1905
1921
  type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProps>;
1906
1922
  /**
@@ -1932,6 +1948,7 @@ type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProp
1932
1948
  * @param {boolean} [showDays=true] - Whether to render the days unit and its separator.
1933
1949
  * @param {boolean} [showSeconds=true] - Whether to render the seconds unit and its separator.
1934
1950
  * @param {React.ReactNode} [label] - Customizable prefix label, rendered in the `inline` layout only.
1951
+ * @param {CountdownLabels} [labels] - Overrides the per-unit labels (`days`/`hours`/`minutes`/`seconds`). Each label is either a plain string or a `{ singular, plural }` pair that resolves against the unit's value. Pass translated strings here; any omitted unit falls back to its English default.
1935
1952
  *
1936
1953
  * @example
1937
1954
  * ```tsx
@@ -1939,6 +1956,14 @@ type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProp
1939
1956
  *
1940
1957
  * <Countdown layout="stacked" days={2} hours={9} minutes={48} seconds={38} />
1941
1958
  * <Countdown layout="inline" label="Sale ends:" showDays={false} hours={3} minutes={49} seconds={38} />
1959
+ * <Countdown
1960
+ * labels={{
1961
+ * days: { singular: "jour", plural: "jours" },
1962
+ * hours: { singular: "heure", plural: "heures" }
1963
+ * }}
1964
+ * days={1}
1965
+ * hours={2}
1966
+ * />
1942
1967
  * ```
1943
1968
  */
1944
1969
  declare const Countdown: React.ForwardRefExoticComponent<CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProps> & React.RefAttributes<View>>;
@@ -1980,11 +2005,9 @@ declare const ProductListingCardWithBadgeAndGrid: typeof _ProductListingCard & {
1980
2005
  Grid: typeof Grid;
1981
2006
  };
1982
2007
 
1983
- type ProductDisplayCardDevice = "desktop" | "mobile";
1984
2008
  type ProductDisplayCardProps = ViewProps & {
1985
- device?: ProductDisplayCardDevice;
1986
2009
  title: string;
1987
- subtext?: string;
2010
+ subtext?: string | React.ReactNode;
1988
2011
  showSubtext?: boolean;
1989
2012
  quantity?: number;
1990
2013
  onQuantityChange?: (quantity: number) => void;
@@ -1995,7 +2018,12 @@ type ProductDisplayCardProps = ViewProps & {
1995
2018
  showDecrementButton?: boolean;
1996
2019
  incrementDisabled?: boolean;
1997
2020
  decrementDisabled?: boolean;
1998
- image?: React.ReactNode;
2021
+ image?: string | React.ReactNode;
2022
+ imageBackgroundColor?: string;
2023
+ thumbnailWidth?: number;
2024
+ thumbnailBackgroundColor?: string;
2025
+ showImageQuantityBadge?: boolean;
2026
+ borderless?: boolean;
1999
2027
  banner?: React.ReactNode;
2000
2028
  showBanner?: boolean;
2001
2029
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2009,7 +2037,6 @@ type ProductDisplayCardProps = ViewProps & {
2009
2037
  * import { ProductDisplayCard } from "@butternutbox/pawprint-native"
2010
2038
  *
2011
2039
  * <ProductDisplayCard
2012
- * device="mobile"
2013
2040
  * title="Premium Recipe"
2014
2041
  * subtext="+£0.00/pouch"
2015
2042
  * quantity={1}
@@ -2017,7 +2044,6 @@ type ProductDisplayCardProps = ViewProps & {
2017
2044
  * />
2018
2045
  * ```
2019
2046
  *
2020
- * @param device - *(optional)* Device variant: "desktop" or "mobile" (default)
2021
2047
  * @param title - Product title
2022
2048
  * @param subtext - *(optional)* Subtitle text (e.g. price)
2023
2049
  * @param showSubtext - *(optional)* Show/hide subtext
@@ -2031,9 +2057,8 @@ type ProductDisplayCardProps = ViewProps & {
2031
2057
  * @param showBannerIcon - *(optional)* Show/hide banner notification icon
2032
2058
  */
2033
2059
  declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2034
- device?: ProductDisplayCardDevice;
2035
2060
  title: string;
2036
- subtext?: string;
2061
+ subtext?: string | React.ReactNode;
2037
2062
  showSubtext?: boolean;
2038
2063
  quantity?: number;
2039
2064
  onQuantityChange?: (quantity: number) => void;
@@ -2044,7 +2069,12 @@ declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2044
2069
  showDecrementButton?: boolean;
2045
2070
  incrementDisabled?: boolean;
2046
2071
  decrementDisabled?: boolean;
2047
- image?: React.ReactNode;
2072
+ image?: string | React.ReactNode;
2073
+ imageBackgroundColor?: string;
2074
+ thumbnailWidth?: number;
2075
+ thumbnailBackgroundColor?: string;
2076
+ showImageQuantityBadge?: boolean;
2077
+ borderless?: boolean;
2048
2078
  banner?: React.ReactNode;
2049
2079
  showBanner?: boolean;
2050
2080
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2116,4 +2146,4 @@ type TabNavigationComponent = React.ForwardRefExoticComponent<TabNavigationProps
2116
2146
  };
2117
2147
  declare const TabNavigation: TabNavigationComponent;
2118
2148
 
2119
- export { Accordion, type AccordionItemProps, type AccordionProps, type AccordionSize, Animated, type AnimatedProps, type AnimatedVariant, Avatar, type AvatarFallbackType, type AvatarProps, type AvatarSize, BRAND_FONTS, Badge$1 as Badge, type BadgeProps, Button, type ButtonColour, ButtonDock, type ButtonDockProps, type ButtonDockVariant, ButtonGroup, type ButtonGroupLayout, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, CarouselControls, type CarouselControlsProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariant, CopyField, CopyFieldInput, type CopyFieldProps, Countdown, type CountdownProps, type DateItemState, DatePicker, type DatePickerProps, Drawer, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerGrabberProps, type DrawerHeaderProps, type DrawerHeaderVariant, type DrawerOverlayProps, type DrawerProps, type DrawerTitleProps, type DrawerTriggerProps, FilterTab, type FilterTabItemProps, type FilterTabProps, Hint, type HintProps, Icon, IconButton, type IconButtonColour, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconCategory, type IconColour, type IconProps, type IconSize, Illustration, type IllustrationProps, type IllustrationSize, Input, InputDescription, type InputDescriptionProps, InputError, type InputErrorProps, InputField, type InputFieldProps, InputLabel, type InputLabelProps, type InputProps, Link, type LinkProps, type LinkSize, type LinkWeight, Logo, type LogoBrand, type LogoProps, type LogoSvgComponent, type LogoVariant, MessageCard, MessageCardBanner, type MessageCardBannerMedia, type MessageCardBannerProps, MessageCardInsight, type MessageCardInsightProps, Notification, type NotificationProps, NumberField, type NumberFieldProps, NumberInput, NumberInputField, type NumberInputFieldProps, type NumberInputProps, PasswordField, PasswordFieldInput, type PasswordFieldProps, PasswordFieldRequirements, type PasswordFieldRequirementsProps, type PasswordRequirement, type PasswordValidationRule, type PawprintIcon, type PawprintIllustration$2 as PawprintIllustration, PawprintProvider, type PawprintProviderProps, PictureSelector, type PictureSelectorItem, type PictureSelectorProps, ProductDisplayCard, type ProductDisplayCardDevice, type ProductDisplayCardProps, ProductListingCardWithBadgeAndGrid as ProductListingCard, type ProductListingCardProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioOwnProps, type RadioProps, SearchField, SearchFieldInput, type SearchFieldProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlProps, SelectField, SelectFieldContent, SelectFieldItem, type SelectFieldItemProps, type SelectFieldProps, SelectFieldTrigger, type SelectFieldTriggerProps, SelectFieldValue, type SelectValidationRule, Slider, type SliderProps, Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, Switch, type SwitchProps, TabNavigation, type TabNavigationListProps, type TabNavigationPanelProps, type TabNavigationProps, type TabNavigationTabProps, Tag, type TagProps, TextArea, TextAreaField, type TextAreaFieldProps, TextAreaLabel, type TextAreaLabelProps, type TextAreaProps, ThemeProvider, Tooltip, type TooltipProps, Typography, type TypographyProps, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
2149
+ export { Accordion, type AccordionItemProps, type AccordionProps, type AccordionSize, Animated, type AnimatedProps, type AnimatedVariant, Avatar, type AvatarFallbackType, type AvatarProps, type AvatarSize, BRAND_FONTS, Badge$1 as Badge, type BadgeProps, Button, type ButtonColour, ButtonDock, type ButtonDockProps, type ButtonDockVariant, ButtonGroup, type ButtonGroupLayout, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, CarouselControls, type CarouselControlsProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariant, CopyField, CopyFieldInput, type CopyFieldProps, Countdown, type CountdownLabels, type CountdownProps, type CountdownUnitLabel, type DateItemState, DatePicker, type DatePickerProps, Drawer, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerGrabberProps, type DrawerHeaderProps, type DrawerHeaderVariant, type DrawerOverlayProps, type DrawerProps, type DrawerTitleProps, type DrawerTriggerProps, FilterTab, type FilterTabItemProps, type FilterTabProps, Hint, type HintProps, Icon, IconButton, type IconButtonColour, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconCategory, type IconColour, type IconProps, type IconSize, Illustration, type IllustrationProps, type IllustrationSize, Input, InputDescription, type InputDescriptionProps, InputError, type InputErrorProps, InputField, type InputFieldProps, InputLabel, type InputLabelProps, type InputProps, Link, type LinkProps, type LinkSize, type LinkWeight, Logo, type LogoBrand, type LogoProps, type LogoSvgComponent, type LogoVariant, MessageCard, MessageCardBanner, type MessageCardBannerMedia, type MessageCardBannerProps, MessageCardInsight, type MessageCardInsightProps, Notification, type NotificationProps, NumberField, type NumberFieldProps, NumberInput, NumberInputField, type NumberInputFieldProps, type NumberInputProps, PasswordField, PasswordFieldInput, type PasswordFieldProps, PasswordFieldRequirements, type PasswordFieldRequirementsProps, type PasswordRequirement, type PasswordValidationRule, type PawprintIcon, type PawprintIllustration$2 as PawprintIllustration, PawprintProvider, type PawprintProviderProps, PictureSelector, type PictureSelectorItem, type PictureSelectorProps, ProductDisplayCard, type ProductDisplayCardProps, ProductListingCardWithBadgeAndGrid as ProductListingCard, type ProductListingCardProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioOwnProps, type RadioProps, SearchField, SearchFieldInput, type SearchFieldProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlProps, SelectField, SelectFieldContent, SelectFieldItem, type SelectFieldItemProps, type SelectFieldProps, SelectFieldTrigger, type SelectFieldTriggerProps, SelectFieldValue, type SelectValidationRule, Slider, type SliderProps, Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, Switch, type SwitchProps, TabNavigation, type TabNavigationListProps, type TabNavigationPanelProps, type TabNavigationProps, type TabNavigationTabProps, Tag, type TagProps, TextArea, TextAreaField, type TextAreaFieldProps, TextAreaLabel, type TextAreaLabelProps, type TextAreaProps, ThemeProvider, Tooltip, type TooltipProps, Typography, type TypographyProps, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
package/dist/index.d.ts CHANGED
@@ -1892,6 +1892,21 @@ type PictureSelectorProps = PictureSelectorOwnProps & Omit<ViewProps, keyof Pict
1892
1892
  declare const PictureSelector: React.ForwardRefExoticComponent<PictureSelectorOwnProps & Omit<ViewProps, keyof PictureSelectorOwnProps> & React.RefAttributes<View>>;
1893
1893
 
1894
1894
  type CountdownLayout = "stacked" | "inline";
1895
+ /**
1896
+ * A unit label. Pass a plain string to use it regardless of count, or a
1897
+ * `{ singular, plural }` pair to pluralise based on the unit's value
1898
+ * (`singular` when the value is exactly 1, `plural` otherwise).
1899
+ */
1900
+ type CountdownUnitLabel = string | {
1901
+ singular: string;
1902
+ plural: string;
1903
+ };
1904
+ type CountdownLabels = {
1905
+ days?: CountdownUnitLabel;
1906
+ hours?: CountdownUnitLabel;
1907
+ minutes?: CountdownUnitLabel;
1908
+ seconds?: CountdownUnitLabel;
1909
+ };
1895
1910
  type CountdownOwnProps = {
1896
1911
  layout?: CountdownLayout;
1897
1912
  days?: number;
@@ -1901,6 +1916,7 @@ type CountdownOwnProps = {
1901
1916
  showDays?: boolean;
1902
1917
  showSeconds?: boolean;
1903
1918
  label?: React.ReactNode;
1919
+ labels?: CountdownLabels;
1904
1920
  };
1905
1921
  type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProps>;
1906
1922
  /**
@@ -1932,6 +1948,7 @@ type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProp
1932
1948
  * @param {boolean} [showDays=true] - Whether to render the days unit and its separator.
1933
1949
  * @param {boolean} [showSeconds=true] - Whether to render the seconds unit and its separator.
1934
1950
  * @param {React.ReactNode} [label] - Customizable prefix label, rendered in the `inline` layout only.
1951
+ * @param {CountdownLabels} [labels] - Overrides the per-unit labels (`days`/`hours`/`minutes`/`seconds`). Each label is either a plain string or a `{ singular, plural }` pair that resolves against the unit's value. Pass translated strings here; any omitted unit falls back to its English default.
1935
1952
  *
1936
1953
  * @example
1937
1954
  * ```tsx
@@ -1939,6 +1956,14 @@ type CountdownProps = CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProp
1939
1956
  *
1940
1957
  * <Countdown layout="stacked" days={2} hours={9} minutes={48} seconds={38} />
1941
1958
  * <Countdown layout="inline" label="Sale ends:" showDays={false} hours={3} minutes={49} seconds={38} />
1959
+ * <Countdown
1960
+ * labels={{
1961
+ * days: { singular: "jour", plural: "jours" },
1962
+ * hours: { singular: "heure", plural: "heures" }
1963
+ * }}
1964
+ * days={1}
1965
+ * hours={2}
1966
+ * />
1942
1967
  * ```
1943
1968
  */
1944
1969
  declare const Countdown: React.ForwardRefExoticComponent<CountdownOwnProps & Omit<ViewProps, keyof CountdownOwnProps> & React.RefAttributes<View>>;
@@ -1980,11 +2005,9 @@ declare const ProductListingCardWithBadgeAndGrid: typeof _ProductListingCard & {
1980
2005
  Grid: typeof Grid;
1981
2006
  };
1982
2007
 
1983
- type ProductDisplayCardDevice = "desktop" | "mobile";
1984
2008
  type ProductDisplayCardProps = ViewProps & {
1985
- device?: ProductDisplayCardDevice;
1986
2009
  title: string;
1987
- subtext?: string;
2010
+ subtext?: string | React.ReactNode;
1988
2011
  showSubtext?: boolean;
1989
2012
  quantity?: number;
1990
2013
  onQuantityChange?: (quantity: number) => void;
@@ -1995,7 +2018,12 @@ type ProductDisplayCardProps = ViewProps & {
1995
2018
  showDecrementButton?: boolean;
1996
2019
  incrementDisabled?: boolean;
1997
2020
  decrementDisabled?: boolean;
1998
- image?: React.ReactNode;
2021
+ image?: string | React.ReactNode;
2022
+ imageBackgroundColor?: string;
2023
+ thumbnailWidth?: number;
2024
+ thumbnailBackgroundColor?: string;
2025
+ showImageQuantityBadge?: boolean;
2026
+ borderless?: boolean;
1999
2027
  banner?: React.ReactNode;
2000
2028
  showBanner?: boolean;
2001
2029
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2009,7 +2037,6 @@ type ProductDisplayCardProps = ViewProps & {
2009
2037
  * import { ProductDisplayCard } from "@butternutbox/pawprint-native"
2010
2038
  *
2011
2039
  * <ProductDisplayCard
2012
- * device="mobile"
2013
2040
  * title="Premium Recipe"
2014
2041
  * subtext="+£0.00/pouch"
2015
2042
  * quantity={1}
@@ -2017,7 +2044,6 @@ type ProductDisplayCardProps = ViewProps & {
2017
2044
  * />
2018
2045
  * ```
2019
2046
  *
2020
- * @param device - *(optional)* Device variant: "desktop" or "mobile" (default)
2021
2047
  * @param title - Product title
2022
2048
  * @param subtext - *(optional)* Subtitle text (e.g. price)
2023
2049
  * @param showSubtext - *(optional)* Show/hide subtext
@@ -2031,9 +2057,8 @@ type ProductDisplayCardProps = ViewProps & {
2031
2057
  * @param showBannerIcon - *(optional)* Show/hide banner notification icon
2032
2058
  */
2033
2059
  declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2034
- device?: ProductDisplayCardDevice;
2035
2060
  title: string;
2036
- subtext?: string;
2061
+ subtext?: string | React.ReactNode;
2037
2062
  showSubtext?: boolean;
2038
2063
  quantity?: number;
2039
2064
  onQuantityChange?: (quantity: number) => void;
@@ -2044,7 +2069,12 @@ declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2044
2069
  showDecrementButton?: boolean;
2045
2070
  incrementDisabled?: boolean;
2046
2071
  decrementDisabled?: boolean;
2047
- image?: React.ReactNode;
2072
+ image?: string | React.ReactNode;
2073
+ imageBackgroundColor?: string;
2074
+ thumbnailWidth?: number;
2075
+ thumbnailBackgroundColor?: string;
2076
+ showImageQuantityBadge?: boolean;
2077
+ borderless?: boolean;
2048
2078
  banner?: React.ReactNode;
2049
2079
  showBanner?: boolean;
2050
2080
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2116,4 +2146,4 @@ type TabNavigationComponent = React.ForwardRefExoticComponent<TabNavigationProps
2116
2146
  };
2117
2147
  declare const TabNavigation: TabNavigationComponent;
2118
2148
 
2119
- export { Accordion, type AccordionItemProps, type AccordionProps, type AccordionSize, Animated, type AnimatedProps, type AnimatedVariant, Avatar, type AvatarFallbackType, type AvatarProps, type AvatarSize, BRAND_FONTS, Badge$1 as Badge, type BadgeProps, Button, type ButtonColour, ButtonDock, type ButtonDockProps, type ButtonDockVariant, ButtonGroup, type ButtonGroupLayout, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, CarouselControls, type CarouselControlsProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariant, CopyField, CopyFieldInput, type CopyFieldProps, Countdown, type CountdownProps, type DateItemState, DatePicker, type DatePickerProps, Drawer, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerGrabberProps, type DrawerHeaderProps, type DrawerHeaderVariant, type DrawerOverlayProps, type DrawerProps, type DrawerTitleProps, type DrawerTriggerProps, FilterTab, type FilterTabItemProps, type FilterTabProps, Hint, type HintProps, Icon, IconButton, type IconButtonColour, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconCategory, type IconColour, type IconProps, type IconSize, Illustration, type IllustrationProps, type IllustrationSize, Input, InputDescription, type InputDescriptionProps, InputError, type InputErrorProps, InputField, type InputFieldProps, InputLabel, type InputLabelProps, type InputProps, Link, type LinkProps, type LinkSize, type LinkWeight, Logo, type LogoBrand, type LogoProps, type LogoSvgComponent, type LogoVariant, MessageCard, MessageCardBanner, type MessageCardBannerMedia, type MessageCardBannerProps, MessageCardInsight, type MessageCardInsightProps, Notification, type NotificationProps, NumberField, type NumberFieldProps, NumberInput, NumberInputField, type NumberInputFieldProps, type NumberInputProps, PasswordField, PasswordFieldInput, type PasswordFieldProps, PasswordFieldRequirements, type PasswordFieldRequirementsProps, type PasswordRequirement, type PasswordValidationRule, type PawprintIcon, type PawprintIllustration$2 as PawprintIllustration, PawprintProvider, type PawprintProviderProps, PictureSelector, type PictureSelectorItem, type PictureSelectorProps, ProductDisplayCard, type ProductDisplayCardDevice, type ProductDisplayCardProps, ProductListingCardWithBadgeAndGrid as ProductListingCard, type ProductListingCardProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioOwnProps, type RadioProps, SearchField, SearchFieldInput, type SearchFieldProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlProps, SelectField, SelectFieldContent, SelectFieldItem, type SelectFieldItemProps, type SelectFieldProps, SelectFieldTrigger, type SelectFieldTriggerProps, SelectFieldValue, type SelectValidationRule, Slider, type SliderProps, Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, Switch, type SwitchProps, TabNavigation, type TabNavigationListProps, type TabNavigationPanelProps, type TabNavigationProps, type TabNavigationTabProps, Tag, type TagProps, TextArea, TextAreaField, type TextAreaFieldProps, TextAreaLabel, type TextAreaLabelProps, type TextAreaProps, ThemeProvider, Tooltip, type TooltipProps, Typography, type TypographyProps, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
2149
+ export { Accordion, type AccordionItemProps, type AccordionProps, type AccordionSize, Animated, type AnimatedProps, type AnimatedVariant, Avatar, type AvatarFallbackType, type AvatarProps, type AvatarSize, BRAND_FONTS, Badge$1 as Badge, type BadgeProps, Button, type ButtonColour, ButtonDock, type ButtonDockProps, type ButtonDockVariant, ButtonGroup, type ButtonGroupLayout, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, CarouselControls, type CarouselControlsProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariant, CopyField, CopyFieldInput, type CopyFieldProps, Countdown, type CountdownLabels, type CountdownProps, type CountdownUnitLabel, type DateItemState, DatePicker, type DatePickerProps, Drawer, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerGrabberProps, type DrawerHeaderProps, type DrawerHeaderVariant, type DrawerOverlayProps, type DrawerProps, type DrawerTitleProps, type DrawerTriggerProps, FilterTab, type FilterTabItemProps, type FilterTabProps, Hint, type HintProps, Icon, IconButton, type IconButtonColour, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconCategory, type IconColour, type IconProps, type IconSize, Illustration, type IllustrationProps, type IllustrationSize, Input, InputDescription, type InputDescriptionProps, InputError, type InputErrorProps, InputField, type InputFieldProps, InputLabel, type InputLabelProps, type InputProps, Link, type LinkProps, type LinkSize, type LinkWeight, Logo, type LogoBrand, type LogoProps, type LogoSvgComponent, type LogoVariant, MessageCard, MessageCardBanner, type MessageCardBannerMedia, type MessageCardBannerProps, MessageCardInsight, type MessageCardInsightProps, Notification, type NotificationProps, NumberField, type NumberFieldProps, NumberInput, NumberInputField, type NumberInputFieldProps, type NumberInputProps, PasswordField, PasswordFieldInput, type PasswordFieldProps, PasswordFieldRequirements, type PasswordFieldRequirementsProps, type PasswordRequirement, type PasswordValidationRule, type PawprintIcon, type PawprintIllustration$2 as PawprintIllustration, PawprintProvider, type PawprintProviderProps, PictureSelector, type PictureSelectorItem, type PictureSelectorProps, ProductDisplayCard, type ProductDisplayCardProps, ProductListingCardWithBadgeAndGrid as ProductListingCard, type ProductListingCardProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioOwnProps, type RadioProps, SearchField, SearchFieldInput, type SearchFieldProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlProps, SelectField, SelectFieldContent, SelectFieldItem, type SelectFieldItemProps, type SelectFieldProps, SelectFieldTrigger, type SelectFieldTriggerProps, SelectFieldValue, type SelectValidationRule, Slider, type SliderProps, Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, Switch, type SwitchProps, TabNavigation, type TabNavigationListProps, type TabNavigationPanelProps, type TabNavigationProps, type TabNavigationTabProps, Tag, type TagProps, TextArea, TextAreaField, type TextAreaFieldProps, TextAreaLabel, type TextAreaLabelProps, type TextAreaProps, ThemeProvider, Tooltip, type TooltipProps, Typography, type TypographyProps, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
package/dist/index.js CHANGED
@@ -10157,28 +10157,20 @@ var StyledFieldWrapper = styled60(View)(
10157
10157
  overflow: "hidden"
10158
10158
  })
10159
10159
  );
10160
- var StyledTextInput = styled60(TextInput)(
10161
- ({
10162
- inputColor,
10163
- inputFontFamily,
10164
- inputFontWeight,
10165
- inputFontSize,
10166
- inputLineHeight
10167
- }) => __spreadProps(__spreadValues({
10168
- textAlign: "center",
10169
- outlineStyle: "none",
10170
- padding: 0,
10171
- minWidth: 0,
10172
- minHeight: 0,
10173
- width: "100%",
10174
- height: "100%",
10175
- color: inputColor,
10176
- fontFamily: inputFontFamily
10177
- }, inputFontWeight ? { fontWeight: inputFontWeight } : {}), {
10178
- fontSize: inputFontSize,
10179
- lineHeight: inputLineHeight
10180
- })
10181
- );
10160
+ var StyledTextInput = styled60(TextInput)(({ inputColor, inputFontFamily, inputFontWeight, inputFontSize }) => __spreadProps(__spreadValues({
10161
+ textAlign: "center",
10162
+ outlineStyle: "none",
10163
+ padding: 0,
10164
+ minWidth: 0,
10165
+ minHeight: 0,
10166
+ width: "100%",
10167
+ height: "100%",
10168
+ color: inputColor,
10169
+ fontFamily: inputFontFamily
10170
+ }, inputFontWeight ? { fontWeight: inputFontWeight } : {}), {
10171
+ fontSize: inputFontSize,
10172
+ lineHeight: 0
10173
+ }));
10182
10174
  var StyledRow = styled60(View)(({ rowGap }) => ({
10183
10175
  flexDirection: "row",
10184
10176
  alignItems: "center",
@@ -10312,7 +10304,6 @@ var NumberFieldInput = React60.forwardRef(
10312
10304
  inputFontFamily: resolvedInputFontFamily,
10313
10305
  inputFontWeight: resolvedInputFontFamily === typographyToken.fontFamily ? typographyToken.fontWeight : void 0,
10314
10306
  inputFontSize: parseTokenValue34(typographyToken.fontSize),
10315
- inputLineHeight: parseTokenValue34(typographyToken.lineHeight),
10316
10307
  keyboardType: "numeric",
10317
10308
  editable: !disabled,
10318
10309
  onFocus: handleFocus,
@@ -13659,12 +13650,13 @@ var PictureSelector = React60.forwardRef(
13659
13650
  }
13660
13651
  );
13661
13652
  PictureSelector.displayName = "PictureSelector";
13662
- var UNIT_LABELS = {
13663
- days: "days",
13664
- hours: "hrs",
13665
- minutes: "min",
13666
- seconds: "secs"
13653
+ var DEFAULT_UNIT_LABELS = {
13654
+ days: { singular: "day", plural: "days" },
13655
+ hours: { singular: "hr", plural: "hrs" },
13656
+ minutes: { singular: "min", plural: "min" },
13657
+ seconds: { singular: "sec", plural: "secs" }
13667
13658
  };
13659
+ var resolveLabel = (label, value) => typeof label === "string" ? label : value === 1 ? label.singular : label.plural;
13668
13660
  var parseTokenValue54 = (value) => parseFloat(value);
13669
13661
  var pad = (value) => String(Math.max(0, Math.floor(value))).padStart(2, "0");
13670
13662
  var StackedRoot = styled60(View)(({ rootGap }) => ({
@@ -13742,7 +13734,8 @@ var Countdown = React60.forwardRef(
13742
13734
  seconds = 0,
13743
13735
  showDays = true,
13744
13736
  showSeconds = true,
13745
- label
13737
+ label,
13738
+ labels
13746
13739
  } = _b, rest = __objRest(_b, [
13747
13740
  "layout",
13748
13741
  "days",
@@ -13751,23 +13744,33 @@ var Countdown = React60.forwardRef(
13751
13744
  "seconds",
13752
13745
  "showDays",
13753
13746
  "showSeconds",
13754
- "label"
13747
+ "label",
13748
+ "labels"
13755
13749
  ]);
13756
13750
  const theme2 = useTheme();
13757
13751
  const { countdown } = theme2.tokens.components;
13758
13752
  const { countdownItem } = countdown;
13753
+ const unitLabels = __spreadValues(__spreadValues({}, DEFAULT_UNIT_LABELS), labels);
13759
13754
  const units = [
13760
13755
  showDays && {
13761
13756
  key: "days",
13762
13757
  value: days,
13763
- label: UNIT_LABELS.days
13758
+ label: resolveLabel(unitLabels.days, days)
13759
+ },
13760
+ {
13761
+ key: "hours",
13762
+ value: hours,
13763
+ label: resolveLabel(unitLabels.hours, hours)
13764
+ },
13765
+ {
13766
+ key: "minutes",
13767
+ value: minutes,
13768
+ label: resolveLabel(unitLabels.minutes, minutes)
13764
13769
  },
13765
- { key: "hours", value: hours, label: UNIT_LABELS.hours },
13766
- { key: "minutes", value: minutes, label: UNIT_LABELS.minutes },
13767
13770
  showSeconds && {
13768
13771
  key: "seconds",
13769
13772
  value: seconds,
13770
- label: UNIT_LABELS.seconds
13773
+ label: resolveLabel(unitLabels.seconds, seconds)
13771
13774
  }
13772
13775
  ].filter(Boolean);
13773
13776
  const colon = (key) => /* @__PURE__ */ jsx(
@@ -14141,42 +14144,78 @@ var ProductListingCardWithBadgeAndGrid = Object.assign(_ProductListingCard, {
14141
14144
  Badge: Badge2,
14142
14145
  Grid
14143
14146
  });
14144
- var StyledCardContainer = styled60(View)(({ theme: theme2 }) => {
14147
+ var StyledCardContainer = styled60(View)(({
14148
+ theme: theme2,
14149
+ borderless
14150
+ }) => {
14145
14151
  const { spacing, borderRadius } = theme2.tokens.semantics.dimensions;
14146
14152
  const { colour } = theme2.tokens.semantics;
14147
14153
  const spacingMd = parseTokenValue8(spacing.md);
14148
14154
  const spacingXl = parseTokenValue8(spacing.xl);
14149
- return {
14155
+ return __spreadProps(__spreadValues({
14150
14156
  flexDirection: "row",
14151
14157
  width: "100%",
14152
- height: "100%",
14158
+ height: borderless ? void 0 : "100%",
14153
14159
  maxHeight: spacingXl * 6 + spacingMd,
14154
- backgroundColor: colour.background.surface.default,
14160
+ backgroundColor: colour.background.surface.default
14161
+ }, borderless ? {} : {
14155
14162
  borderWidth: 1,
14156
14163
  borderColor: colour.border.default,
14157
- borderRadius: parseTokenValue8(borderRadius.md),
14158
- overflow: "hidden",
14159
14164
  shadowColor: "#522a10",
14160
14165
  shadowOffset: { width: 0, height: spacingMd / 4 },
14161
14166
  shadowOpacity: 0.05,
14162
14167
  shadowRadius: spacingXl - 4,
14163
- elevation: 5,
14168
+ elevation: 5
14169
+ }), {
14170
+ borderRadius: parseTokenValue8(borderRadius.md),
14171
+ overflow: "hidden",
14164
14172
  zIndex: 1
14173
+ });
14174
+ });
14175
+ var StyledImage3 = styled60(View)(
14176
+ ({
14177
+ theme: theme2,
14178
+ imageBackgroundColor,
14179
+ thumbnailWidth = 100,
14180
+ thumbnailBackgroundColor
14181
+ }) => ({
14182
+ flexShrink: 0,
14183
+ backgroundColor: thumbnailBackgroundColor || imageBackgroundColor || theme2.tokens.semantics.colour.background.container.secondary,
14184
+ overflow: "hidden",
14185
+ aspectRatio: "1 / 1",
14186
+ width: thumbnailWidth,
14187
+ height: thumbnailWidth,
14188
+ position: "relative"
14189
+ })
14190
+ );
14191
+ var StyledQuantityBadge = styled60(View)(({ theme: theme2 }) => {
14192
+ const spacing = theme2.tokens.semantics.dimensions.spacing;
14193
+ const borderRadius = theme2.tokens.semantics.dimensions.borderRadius;
14194
+ const { colour } = theme2.tokens.semantics;
14195
+ return {
14196
+ position: "absolute",
14197
+ top: parseTokenValue8(spacing["2xs"]),
14198
+ right: parseTokenValue8(spacing["2xs"]),
14199
+ backgroundColor: colour.background.container.brand,
14200
+ borderRadius: parseTokenValue8(borderRadius.xs),
14201
+ paddingHorizontal: parseTokenValue8(spacing.sm),
14202
+ height: parseTokenValue8(spacing["2xl"]),
14203
+ minWidth: parseTokenValue8(spacing["2xl"]),
14204
+ alignItems: "center",
14205
+ justifyContent: "center",
14206
+ zIndex: 2
14165
14207
  };
14166
14208
  });
14167
- var StyledImage3 = styled60(View)(() => ({
14168
- flexShrink: 0,
14169
- backgroundColor: "#f5f5f5",
14170
- overflow: "hidden",
14171
- aspectRatio: "1 / 1",
14172
- height: "100%"
14173
- }));
14174
- var StyledContentArea = styled60(View)(({ theme: theme2 }) => {
14209
+ var StyledContentArea = styled60(View)(({
14210
+ theme: theme2,
14211
+ borderless
14212
+ }) => {
14175
14213
  const { spacing } = theme2.tokens.semantics.dimensions;
14214
+ const paddingValue = parseTokenValue8(spacing.md);
14176
14215
  return {
14177
14216
  flex: 1,
14178
- paddingHorizontal: parseTokenValue8(spacing.md),
14179
- paddingVertical: parseTokenValue8(spacing.md),
14217
+ paddingHorizontal: paddingValue,
14218
+ paddingVertical: borderless ? 0 : paddingValue,
14180
14219
  gap: parseTokenValue8(spacing.xs),
14181
14220
  justifyContent: "space-between"
14182
14221
  };
@@ -14208,7 +14247,6 @@ var StyledNotification = styled60(Notification)(({ theme: theme2 }) => {
14208
14247
  var ProductDisplayCard = React60.forwardRef(
14209
14248
  (_a, ref) => {
14210
14249
  var _b = _a, {
14211
- device = "mobile",
14212
14250
  title,
14213
14251
  subtext,
14214
14252
  showSubtext = true,
@@ -14222,12 +14260,16 @@ var ProductDisplayCard = React60.forwardRef(
14222
14260
  incrementDisabled = false,
14223
14261
  decrementDisabled = false,
14224
14262
  image,
14263
+ imageBackgroundColor,
14264
+ thumbnailWidth,
14265
+ thumbnailBackgroundColor,
14266
+ showImageQuantityBadge = false,
14267
+ borderless = false,
14225
14268
  banner,
14226
14269
  showBanner = false,
14227
14270
  bannerType = "info",
14228
14271
  showBannerIcon = false
14229
14272
  } = _b, rest = __objRest(_b, [
14230
- "device",
14231
14273
  "title",
14232
14274
  "subtext",
14233
14275
  "showSubtext",
@@ -14241,6 +14283,11 @@ var ProductDisplayCard = React60.forwardRef(
14241
14283
  "incrementDisabled",
14242
14284
  "decrementDisabled",
14243
14285
  "image",
14286
+ "imageBackgroundColor",
14287
+ "thumbnailWidth",
14288
+ "thumbnailBackgroundColor",
14289
+ "showImageQuantityBadge",
14290
+ "borderless",
14244
14291
  "banner",
14245
14292
  "showBanner",
14246
14293
  "bannerType",
@@ -14251,11 +14298,28 @@ var ProductDisplayCard = React60.forwardRef(
14251
14298
  onQuantityChange == null ? void 0 : onQuantityChange(newQuantity);
14252
14299
  }
14253
14300
  };
14254
- const cardContent = /* @__PURE__ */ jsxs(StyledCardContainer, __spreadProps(__spreadValues({ ref, cardDevice: device }, rest), { children: [
14255
- image && /* @__PURE__ */ jsx(StyledImage3, { children: image }),
14256
- /* @__PURE__ */ jsxs(StyledContentArea, { contentDevice: device, children: [
14301
+ const cardContent = /* @__PURE__ */ jsxs(StyledCardContainer, __spreadProps(__spreadValues({ ref, borderless }, rest), { children: [
14302
+ image && /* @__PURE__ */ jsxs(
14303
+ StyledImage3,
14304
+ {
14305
+ imageBackgroundColor,
14306
+ thumbnailWidth,
14307
+ thumbnailBackgroundColor,
14308
+ children: [
14309
+ typeof image === "string" ? /* @__PURE__ */ jsx(
14310
+ Image,
14311
+ {
14312
+ source: { uri: image },
14313
+ style: { width: "100%", height: "100%" }
14314
+ }
14315
+ ) : image,
14316
+ showImageQuantityBadge && quantity && /* @__PURE__ */ jsx(StyledQuantityBadge, { children: /* @__PURE__ */ jsx(Typography, { variant: "body", size: "sm", weight: "bold", children: quantity }) })
14317
+ ]
14318
+ }
14319
+ ),
14320
+ /* @__PURE__ */ jsxs(StyledContentArea, { borderless, children: [
14257
14321
  /* @__PURE__ */ jsxs(StyledTextContainer, { children: [
14258
- /* @__PURE__ */ jsx(Typography, { variant: "heading", size: "xs", color: "primary", children: title }),
14322
+ /* @__PURE__ */ jsx(Typography, { variant: "heading", size: "2xs", color: "primary", children: title }),
14259
14323
  showSubtext && subtext && /* @__PURE__ */ jsx(Typography, { variant: "body", size: "sm", color: "secondary", children: subtext })
14260
14324
  ] }),
14261
14325
  showQuantityPicker && /* @__PURE__ */ jsx(View, { style: { marginLeft: "auto" }, children: /* @__PURE__ */ jsx(