@butternutbox/pawprint-native 0.4.1 → 0.5.1

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,9 +2005,7 @@ 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
2010
  subtext?: string | React.ReactNode;
1988
2011
  showSubtext?: boolean;
@@ -1997,7 +2020,10 @@ type ProductDisplayCardProps = ViewProps & {
1997
2020
  decrementDisabled?: boolean;
1998
2021
  image?: string | React.ReactNode;
1999
2022
  imageBackgroundColor?: string;
2023
+ thumbnailWidth?: number;
2024
+ thumbnailBackgroundColor?: string;
2000
2025
  showImageQuantityBadge?: boolean;
2026
+ borderless?: boolean;
2001
2027
  banner?: React.ReactNode;
2002
2028
  showBanner?: boolean;
2003
2029
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2011,7 +2037,6 @@ type ProductDisplayCardProps = ViewProps & {
2011
2037
  * import { ProductDisplayCard } from "@butternutbox/pawprint-native"
2012
2038
  *
2013
2039
  * <ProductDisplayCard
2014
- * device="mobile"
2015
2040
  * title="Premium Recipe"
2016
2041
  * subtext="+£0.00/pouch"
2017
2042
  * quantity={1}
@@ -2019,23 +2044,19 @@ type ProductDisplayCardProps = ViewProps & {
2019
2044
  * />
2020
2045
  * ```
2021
2046
  *
2022
- * @param device - *(optional)* Device variant: "desktop" or "mobile" (default)
2023
2047
  * @param title - Product title
2024
- * @param subtext - *(optional)* Subtitle text or JSX element (e.g. price)
2048
+ * @param subtext - *(optional)* Subtitle text (e.g. price)
2025
2049
  * @param showSubtext - *(optional)* Show/hide subtext
2026
2050
  * @param quantity - *(optional)* Current quantity value
2027
2051
  * @param onQuantityChange - *(optional)* Callback when quantity changes
2028
2052
  * @param showQuantityPicker - *(optional)* Show/hide quantity picker
2029
- * @param image - *(optional)* Image URL string or React element/JSX content
2030
- * @param imageBackgroundColor - *(optional)* Background color for image container (default: theme background.container.secondary)
2031
- * @param showImageQuantityBadge - *(optional)* Show/hide quantity badge overlay on image
2053
+ * @param image - *(optional)* Image element or content
2032
2054
  * @param banner - *(optional)* Banner content to show below card
2033
2055
  * @param showBanner - *(optional)* Show/hide banner
2034
2056
  * @param bannerType - *(optional)* Banner notification type: "error", "success", "warning", or "info" (default)
2035
2057
  * @param showBannerIcon - *(optional)* Show/hide banner notification icon
2036
2058
  */
2037
2059
  declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2038
- device?: ProductDisplayCardDevice;
2039
2060
  title: string;
2040
2061
  subtext?: string | React.ReactNode;
2041
2062
  showSubtext?: boolean;
@@ -2050,7 +2071,10 @@ declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2050
2071
  decrementDisabled?: boolean;
2051
2072
  image?: string | React.ReactNode;
2052
2073
  imageBackgroundColor?: string;
2074
+ thumbnailWidth?: number;
2075
+ thumbnailBackgroundColor?: string;
2053
2076
  showImageQuantityBadge?: boolean;
2077
+ borderless?: boolean;
2054
2078
  banner?: React.ReactNode;
2055
2079
  showBanner?: boolean;
2056
2080
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2122,4 +2146,4 @@ type TabNavigationComponent = React.ForwardRefExoticComponent<TabNavigationProps
2122
2146
  };
2123
2147
  declare const TabNavigation: TabNavigationComponent;
2124
2148
 
2125
- 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,9 +2005,7 @@ 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
2010
  subtext?: string | React.ReactNode;
1988
2011
  showSubtext?: boolean;
@@ -1997,7 +2020,10 @@ type ProductDisplayCardProps = ViewProps & {
1997
2020
  decrementDisabled?: boolean;
1998
2021
  image?: string | React.ReactNode;
1999
2022
  imageBackgroundColor?: string;
2023
+ thumbnailWidth?: number;
2024
+ thumbnailBackgroundColor?: string;
2000
2025
  showImageQuantityBadge?: boolean;
2026
+ borderless?: boolean;
2001
2027
  banner?: React.ReactNode;
2002
2028
  showBanner?: boolean;
2003
2029
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2011,7 +2037,6 @@ type ProductDisplayCardProps = ViewProps & {
2011
2037
  * import { ProductDisplayCard } from "@butternutbox/pawprint-native"
2012
2038
  *
2013
2039
  * <ProductDisplayCard
2014
- * device="mobile"
2015
2040
  * title="Premium Recipe"
2016
2041
  * subtext="+£0.00/pouch"
2017
2042
  * quantity={1}
@@ -2019,23 +2044,19 @@ type ProductDisplayCardProps = ViewProps & {
2019
2044
  * />
2020
2045
  * ```
2021
2046
  *
2022
- * @param device - *(optional)* Device variant: "desktop" or "mobile" (default)
2023
2047
  * @param title - Product title
2024
- * @param subtext - *(optional)* Subtitle text or JSX element (e.g. price)
2048
+ * @param subtext - *(optional)* Subtitle text (e.g. price)
2025
2049
  * @param showSubtext - *(optional)* Show/hide subtext
2026
2050
  * @param quantity - *(optional)* Current quantity value
2027
2051
  * @param onQuantityChange - *(optional)* Callback when quantity changes
2028
2052
  * @param showQuantityPicker - *(optional)* Show/hide quantity picker
2029
- * @param image - *(optional)* Image URL string or React element/JSX content
2030
- * @param imageBackgroundColor - *(optional)* Background color for image container (default: theme background.container.secondary)
2031
- * @param showImageQuantityBadge - *(optional)* Show/hide quantity badge overlay on image
2053
+ * @param image - *(optional)* Image element or content
2032
2054
  * @param banner - *(optional)* Banner content to show below card
2033
2055
  * @param showBanner - *(optional)* Show/hide banner
2034
2056
  * @param bannerType - *(optional)* Banner notification type: "error", "success", "warning", or "info" (default)
2035
2057
  * @param showBannerIcon - *(optional)* Show/hide banner notification icon
2036
2058
  */
2037
2059
  declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2038
- device?: ProductDisplayCardDevice;
2039
2060
  title: string;
2040
2061
  subtext?: string | React.ReactNode;
2041
2062
  showSubtext?: boolean;
@@ -2050,7 +2071,10 @@ declare const ProductDisplayCard: React.ForwardRefExoticComponent<ViewProps & {
2050
2071
  decrementDisabled?: boolean;
2051
2072
  image?: string | React.ReactNode;
2052
2073
  imageBackgroundColor?: string;
2074
+ thumbnailWidth?: number;
2075
+ thumbnailBackgroundColor?: string;
2053
2076
  showImageQuantityBadge?: boolean;
2077
+ borderless?: boolean;
2054
2078
  banner?: React.ReactNode;
2055
2079
  showBanner?: boolean;
2056
2080
  bannerType?: "error" | "success" | "warning" | "info";
@@ -2122,4 +2146,4 @@ type TabNavigationComponent = React.ForwardRefExoticComponent<TabNavigationProps
2122
2146
  };
2123
2147
  declare const TabNavigation: TabNavigationComponent;
2124
2148
 
2125
- 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
@@ -8756,6 +8756,7 @@ DrawerOverlay.displayName = "Drawer.Overlay";
8756
8756
  var DrawerDragContext = React60.createContext(null);
8757
8757
  var useDrawerDragContext = () => React60.useContext(DrawerDragContext);
8758
8758
  var DrawerFooterContext = React60.createContext(false);
8759
+ var useDrawerFooterContext = () => React60.useContext(DrawerFooterContext);
8759
8760
  var DrawerHeaderContext = React60.createContext(null);
8760
8761
  var useDrawerHeaderContext = () => React60.useContext(DrawerHeaderContext);
8761
8762
  var OPEN_DURATION = 320;
@@ -9282,12 +9283,22 @@ var DrawerDescription = React60.forwardRef(
9282
9283
  );
9283
9284
  DrawerDescription.displayName = "Drawer.Description";
9284
9285
  var parseTokenValue26 = (value) => parseFloat(value);
9285
- var StyledScrollView = styled60(ScrollView)(({ bodyPaddingHorizontal, bodyPaddingRight, bodyGap }) => ({
9286
- flex: 1,
9287
- paddingLeft: bodyPaddingHorizontal,
9288
- paddingRight: bodyPaddingRight,
9289
- gap: bodyGap
9290
- }));
9286
+ var StyledScrollView = styled60(ScrollView)(
9287
+ ({
9288
+ bodyPaddingHorizontal,
9289
+ bodyPaddingRight,
9290
+ bodyGap,
9291
+ bodyMaxHeight,
9292
+ bodyPaddingBottom
9293
+ }) => ({
9294
+ flex: 1,
9295
+ paddingLeft: bodyPaddingHorizontal,
9296
+ paddingRight: bodyPaddingRight,
9297
+ gap: bodyGap,
9298
+ maxHeight: bodyMaxHeight,
9299
+ paddingBottom: bodyPaddingBottom
9300
+ })
9301
+ );
9291
9302
  var DrawerBody = React60.forwardRef(
9292
9303
  (_a, ref) => {
9293
9304
  var _b = _a, { children, contentContainerStyle } = _b, props = __objRest(_b, ["children", "contentContainerStyle"]);
@@ -9296,10 +9307,14 @@ var DrawerBody = React60.forwardRef(
9296
9307
  const { buttons } = theme2.tokens.components;
9297
9308
  const { content } = spacing;
9298
9309
  const headerContext = useDrawerHeaderContext();
9310
+ const footerContext = useDrawerFooterContext();
9311
+ const { height: windowHeight } = useWindowDimensions();
9299
9312
  const gap = parseTokenValue26(content.slot.gap);
9300
9313
  const horizontalPadding = parseTokenValue26(content.slot.horizontalPadding);
9301
9314
  const topPadding = parseTokenValue26(content.slot.verticalPadding);
9315
+ const bodyMaxHeight = windowHeight - 300;
9302
9316
  const paddingRight = headerContext === null ? parseTokenValue26(spacing.close.right.md) + parseTokenValue26(buttons.size.sm.height) : horizontalPadding;
9317
+ const bodyPaddingBottom = !footerContext ? parseTokenValue26(theme2.tokens.semantics.dimensions.spacing["2xl"]) : 0;
9303
9318
  return /* @__PURE__ */ jsx(
9304
9319
  StyledScrollView,
9305
9320
  __spreadProps(__spreadValues({
@@ -9307,6 +9322,8 @@ var DrawerBody = React60.forwardRef(
9307
9322
  bodyPaddingHorizontal: horizontalPadding,
9308
9323
  bodyPaddingRight: paddingRight,
9309
9324
  bodyGap: gap,
9325
+ bodyMaxHeight,
9326
+ bodyPaddingBottom,
9310
9327
  contentContainerStyle: [
9311
9328
  {
9312
9329
  gap,
@@ -13650,12 +13667,13 @@ var PictureSelector = React60.forwardRef(
13650
13667
  }
13651
13668
  );
13652
13669
  PictureSelector.displayName = "PictureSelector";
13653
- var UNIT_LABELS = {
13654
- days: "days",
13655
- hours: "hrs",
13656
- minutes: "min",
13657
- seconds: "secs"
13670
+ var DEFAULT_UNIT_LABELS = {
13671
+ days: { singular: "day", plural: "days" },
13672
+ hours: { singular: "hr", plural: "hrs" },
13673
+ minutes: { singular: "min", plural: "min" },
13674
+ seconds: { singular: "sec", plural: "secs" }
13658
13675
  };
13676
+ var resolveLabel = (label, value) => typeof label === "string" ? label : value === 1 ? label.singular : label.plural;
13659
13677
  var parseTokenValue54 = (value) => parseFloat(value);
13660
13678
  var pad = (value) => String(Math.max(0, Math.floor(value))).padStart(2, "0");
13661
13679
  var StackedRoot = styled60(View)(({ rootGap }) => ({
@@ -13733,7 +13751,8 @@ var Countdown = React60.forwardRef(
13733
13751
  seconds = 0,
13734
13752
  showDays = true,
13735
13753
  showSeconds = true,
13736
- label
13754
+ label,
13755
+ labels
13737
13756
  } = _b, rest = __objRest(_b, [
13738
13757
  "layout",
13739
13758
  "days",
@@ -13742,23 +13761,33 @@ var Countdown = React60.forwardRef(
13742
13761
  "seconds",
13743
13762
  "showDays",
13744
13763
  "showSeconds",
13745
- "label"
13764
+ "label",
13765
+ "labels"
13746
13766
  ]);
13747
13767
  const theme2 = useTheme();
13748
13768
  const { countdown } = theme2.tokens.components;
13749
13769
  const { countdownItem } = countdown;
13770
+ const unitLabels = __spreadValues(__spreadValues({}, DEFAULT_UNIT_LABELS), labels);
13750
13771
  const units = [
13751
13772
  showDays && {
13752
13773
  key: "days",
13753
13774
  value: days,
13754
- label: UNIT_LABELS.days
13775
+ label: resolveLabel(unitLabels.days, days)
13776
+ },
13777
+ {
13778
+ key: "hours",
13779
+ value: hours,
13780
+ label: resolveLabel(unitLabels.hours, hours)
13781
+ },
13782
+ {
13783
+ key: "minutes",
13784
+ value: minutes,
13785
+ label: resolveLabel(unitLabels.minutes, minutes)
13755
13786
  },
13756
- { key: "hours", value: hours, label: UNIT_LABELS.hours },
13757
- { key: "minutes", value: minutes, label: UNIT_LABELS.minutes },
13758
13787
  showSeconds && {
13759
13788
  key: "seconds",
13760
13789
  value: seconds,
13761
- label: UNIT_LABELS.seconds
13790
+ label: resolveLabel(unitLabels.seconds, seconds)
13762
13791
  }
13763
13792
  ].filter(Boolean);
13764
13793
  const colon = (key) => /* @__PURE__ */ jsx(
@@ -14132,36 +14161,47 @@ var ProductListingCardWithBadgeAndGrid = Object.assign(_ProductListingCard, {
14132
14161
  Badge: Badge2,
14133
14162
  Grid
14134
14163
  });
14135
- var StyledCardContainer = styled60(View)(({ theme: theme2 }) => {
14164
+ var StyledCardContainer = styled60(View)(({
14165
+ theme: theme2,
14166
+ borderless
14167
+ }) => {
14136
14168
  const { spacing, borderRadius } = theme2.tokens.semantics.dimensions;
14137
14169
  const { colour } = theme2.tokens.semantics;
14138
14170
  const spacingMd = parseTokenValue8(spacing.md);
14139
14171
  const spacingXl = parseTokenValue8(spacing.xl);
14140
- return {
14172
+ return __spreadProps(__spreadValues({
14141
14173
  flexDirection: "row",
14142
14174
  width: "100%",
14143
- height: "100%",
14175
+ height: borderless ? void 0 : "100%",
14144
14176
  maxHeight: spacingXl * 6 + spacingMd,
14145
- backgroundColor: colour.background.surface.default,
14177
+ backgroundColor: colour.background.surface.default
14178
+ }, borderless ? {} : {
14146
14179
  borderWidth: 1,
14147
14180
  borderColor: colour.border.default,
14148
- borderRadius: parseTokenValue8(borderRadius.md),
14149
- overflow: "hidden",
14150
14181
  shadowColor: "#522a10",
14151
14182
  shadowOffset: { width: 0, height: spacingMd / 4 },
14152
14183
  shadowOpacity: 0.05,
14153
14184
  shadowRadius: spacingXl - 4,
14154
- elevation: 5,
14185
+ elevation: 5
14186
+ }), {
14187
+ borderRadius: parseTokenValue8(borderRadius.md),
14188
+ overflow: "hidden",
14155
14189
  zIndex: 1
14156
- };
14190
+ });
14157
14191
  });
14158
14192
  var StyledImage3 = styled60(View)(
14159
- ({ theme: theme2, imageBackgroundColor }) => ({
14193
+ ({
14194
+ theme: theme2,
14195
+ imageBackgroundColor,
14196
+ thumbnailWidth = 100,
14197
+ thumbnailBackgroundColor
14198
+ }) => ({
14160
14199
  flexShrink: 0,
14161
- backgroundColor: imageBackgroundColor || theme2.tokens.semantics.colour.background.container.secondary,
14200
+ backgroundColor: thumbnailBackgroundColor || imageBackgroundColor || theme2.tokens.semantics.colour.background.container.secondary,
14162
14201
  overflow: "hidden",
14163
14202
  aspectRatio: "1 / 1",
14164
- height: "100%",
14203
+ width: thumbnailWidth,
14204
+ height: thumbnailWidth,
14165
14205
  position: "relative"
14166
14206
  })
14167
14207
  );
@@ -14183,12 +14223,16 @@ var StyledQuantityBadge = styled60(View)(({ theme: theme2 }) => {
14183
14223
  zIndex: 2
14184
14224
  };
14185
14225
  });
14186
- var StyledContentArea = styled60(View)(({ theme: theme2 }) => {
14226
+ var StyledContentArea = styled60(View)(({
14227
+ theme: theme2,
14228
+ borderless
14229
+ }) => {
14187
14230
  const { spacing } = theme2.tokens.semantics.dimensions;
14231
+ const paddingValue = parseTokenValue8(spacing.md);
14188
14232
  return {
14189
14233
  flex: 1,
14190
- paddingHorizontal: parseTokenValue8(spacing.md),
14191
- paddingVertical: parseTokenValue8(spacing.md),
14234
+ paddingHorizontal: paddingValue,
14235
+ paddingVertical: borderless ? 0 : paddingValue,
14192
14236
  gap: parseTokenValue8(spacing.xs),
14193
14237
  justifyContent: "space-between"
14194
14238
  };
@@ -14220,7 +14264,6 @@ var StyledNotification = styled60(Notification)(({ theme: theme2 }) => {
14220
14264
  var ProductDisplayCard = React60.forwardRef(
14221
14265
  (_a, ref) => {
14222
14266
  var _b = _a, {
14223
- device = "mobile",
14224
14267
  title,
14225
14268
  subtext,
14226
14269
  showSubtext = true,
@@ -14235,13 +14278,15 @@ var ProductDisplayCard = React60.forwardRef(
14235
14278
  decrementDisabled = false,
14236
14279
  image,
14237
14280
  imageBackgroundColor,
14281
+ thumbnailWidth,
14282
+ thumbnailBackgroundColor,
14238
14283
  showImageQuantityBadge = false,
14284
+ borderless = false,
14239
14285
  banner,
14240
14286
  showBanner = false,
14241
14287
  bannerType = "info",
14242
14288
  showBannerIcon = false
14243
14289
  } = _b, rest = __objRest(_b, [
14244
- "device",
14245
14290
  "title",
14246
14291
  "subtext",
14247
14292
  "showSubtext",
@@ -14256,7 +14301,10 @@ var ProductDisplayCard = React60.forwardRef(
14256
14301
  "decrementDisabled",
14257
14302
  "image",
14258
14303
  "imageBackgroundColor",
14304
+ "thumbnailWidth",
14305
+ "thumbnailBackgroundColor",
14259
14306
  "showImageQuantityBadge",
14307
+ "borderless",
14260
14308
  "banner",
14261
14309
  "showBanner",
14262
14310
  "bannerType",
@@ -14267,20 +14315,28 @@ var ProductDisplayCard = React60.forwardRef(
14267
14315
  onQuantityChange == null ? void 0 : onQuantityChange(newQuantity);
14268
14316
  }
14269
14317
  };
14270
- const cardContent = /* @__PURE__ */ jsxs(StyledCardContainer, __spreadProps(__spreadValues({ ref, cardDevice: device }, rest), { children: [
14271
- image && /* @__PURE__ */ jsxs(StyledImage3, { imageBackgroundColor, children: [
14272
- typeof image === "string" ? /* @__PURE__ */ jsx(
14273
- Image,
14274
- {
14275
- source: { uri: image },
14276
- style: { width: "100%", height: "100%" }
14277
- }
14278
- ) : image,
14279
- showImageQuantityBadge && quantity && /* @__PURE__ */ jsx(StyledQuantityBadge, { children: /* @__PURE__ */ jsx(Typography, { variant: "body", size: "sm", weight: "bold", children: quantity }) })
14280
- ] }),
14281
- /* @__PURE__ */ jsxs(StyledContentArea, { contentDevice: device, children: [
14318
+ const cardContent = /* @__PURE__ */ jsxs(StyledCardContainer, __spreadProps(__spreadValues({ ref, borderless }, rest), { children: [
14319
+ image && /* @__PURE__ */ jsxs(
14320
+ StyledImage3,
14321
+ {
14322
+ imageBackgroundColor,
14323
+ thumbnailWidth,
14324
+ thumbnailBackgroundColor,
14325
+ children: [
14326
+ typeof image === "string" ? /* @__PURE__ */ jsx(
14327
+ Image,
14328
+ {
14329
+ source: { uri: image },
14330
+ style: { width: "100%", height: "100%" }
14331
+ }
14332
+ ) : image,
14333
+ showImageQuantityBadge && quantity && /* @__PURE__ */ jsx(StyledQuantityBadge, { children: /* @__PURE__ */ jsx(Typography, { variant: "body", size: "sm", weight: "bold", children: quantity }) })
14334
+ ]
14335
+ }
14336
+ ),
14337
+ /* @__PURE__ */ jsxs(StyledContentArea, { borderless, children: [
14282
14338
  /* @__PURE__ */ jsxs(StyledTextContainer, { children: [
14283
- /* @__PURE__ */ jsx(Typography, { variant: "heading", size: "xs", color: "primary", children: title }),
14339
+ /* @__PURE__ */ jsx(Typography, { variant: "heading", size: "2xs", color: "primary", children: title }),
14284
14340
  showSubtext && subtext && /* @__PURE__ */ jsx(Typography, { variant: "body", size: "sm", color: "secondary", children: subtext })
14285
14341
  ] }),
14286
14342
  showQuantityPicker && /* @__PURE__ */ jsx(View, { style: { marginLeft: "auto" }, children: /* @__PURE__ */ jsx(