{"version":3,"file":"index112.mjs","sources":["../src/components/card/base/index.tsx"],"sourcesContent":["import React, { FunctionComponent, ReactNode, useState } from \"react\";\nimport { useFocusHandling } from \"../../../hooks/useFocusHandling\";\nimport verticalStyles from \"./styles/CardBasicVertical.module.css\";\nimport horizontalStyles from \"./styles/CardBasicHorizontal.module.css\";\nimport { BasicButtonType } from \"../../buttons/basic\";\n\nexport type CardLayout = \"vertical\" | \"horizontal\";\n\nexport type BaseCardProps = {\n  className?: string;\n  title?: string;\n  subtitle?: string;\n  description?: string;\n  image?: string;\n  showFocusRing?: boolean;\n  linkLabel?: string;\n  linkIcon?: ReactNode;\n  linkOnClick?: () => void;\n  iconLeft?: ReactNode;\n  iconRight?: ReactNode;\n\n  /** Button props */\n  primaryVerticalButton?: BasicButtonType;\n  secondaryVerticalButton?: BasicButtonType;\n  primaryHorizontalButton?: BasicButtonType;\n  secondaryHorizontalButton?: BasicButtonType;\n\n  /** Variant props */\n  size?: \"sm\" | \"md\" | \"lg\";\n  state?: \"default\" | \"disabled\";\n  type?: \"elevate\" | \"outline\" | \"fill\" | \"ghost\";\n\n  /** Layout props */\n  layout: CardLayout;\n  renderLayout: (props: BaseCardRenderProps) => React.ReactElement;\n};\n\nexport type BaseCardRenderProps = {\n  cardId: string;\n  className: string;\n  size: \"sm\" | \"md\" | \"lg\";\n  state: \"default\" | \"disabled\";\n  type: \"elevate\" | \"outline\" | \"fill\" | \"ghost\";\n  focus: boolean;\n  handleFocus: () => void;\n  handleBlur: () => void;\n  isClickable: boolean;\n  title?: string;\n  subtitle?: string;\n  description?: string;\n  image?: string;\n  iconLeft?: ReactNode;\n  iconRight?: ReactNode;\n  linkLabel?: string;\n  linkIcon?: ReactNode;\n  linkOnClick?: () => void;\n  primaryVerticalButton?: BasicButtonType;\n  secondaryVerticalButton?: BasicButtonType;\n  primaryHorizontalButton?: BasicButtonType;\n  secondaryHorizontalButton?: BasicButtonType;\n};\n\nconst BaseCard: FunctionComponent<BaseCardProps> = ({\n  className = \"\",\n  size = \"sm\",\n  state = \"default\",\n  type = \"elevate\",\n  title,\n  subtitle,\n  description = \"Your description goes here.\",\n  image,\n  showFocusRing = false,\n  iconLeft,\n  iconRight,\n  linkLabel,\n  linkIcon,\n  linkOnClick,\n  primaryVerticalButton,\n  secondaryVerticalButton,\n  primaryHorizontalButton,\n  secondaryHorizontalButton,\n  layout,\n  renderLayout,\n}) => {\n  const cardId = `quill-card-${layout}-${size}-${state}-${type}`;\n  const [focus, setFocus] = useState(showFocusRing);\n  const isClickable = state !== \"disabled\";\n\n  // Select the appropriate styles based on layout\n  const styles = layout === \"vertical\" ? verticalStyles : horizontalStyles;\n\n  const { handleFocus, handleBlur } = useFocusHandling({\n    isDisabled: !isClickable,\n    setHighlight: setFocus,\n  });\n\n  // Prepare render props with all necessary data\n  const renderProps: BaseCardRenderProps = {\n    cardId,\n    className,\n    size,\n    state,\n    type,\n    focus,\n    handleFocus,\n    handleBlur,\n    isClickable,\n    title,\n    subtitle,\n    description,\n    image,\n    iconLeft,\n    iconRight,\n    linkLabel,\n    linkIcon,\n    linkOnClick,\n    primaryVerticalButton,\n    secondaryVerticalButton,\n    primaryHorizontalButton,\n    secondaryHorizontalButton,\n  };\n\n  // Delegate rendering to the layout component\n  return renderLayout(renderProps);\n};\n\nexport default BaseCard;\n"],"names":[],"mappings":";;AA8DA,MAAM,WAA6C,CAAC;AAAA,EAClD,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,SAAS,cAAc,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;AAC5D,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,aAAa;AAChD,QAAM,cAAc,UAAU;AAK9B,QAAM,EAAE,aAAa,WAAW,IAAI,iBAAiB;AAAA,IACnD,YAAY,CAAC;AAAA,IACb,cAAc;AAAA,EAAA,CACf;AAGD,QAAM,cAAmC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,SAAO,aAAa,WAAW;AACjC;"}