{"version":3,"sources":["../src/ListRow/ListRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport { clsx } from 'clsx';\n\nexport interface ListRowProps {\n  /**\n   * The main value/content text (required)\n   */\n  value: string;\n  /**\n   * Optional label text displayed on the left\n   */\n  label?: string;\n  /**\n   * Optional note text displayed on the right (italic)\n   */\n  note?: string;\n  /**\n   * Show the right arrow icon - enables hover state and indicates row is clickable\n   * @default false\n   */\n  icon?: boolean;\n  /**\n   * Click handler - typically used with icon prop for navigation\n   */\n  onClick?: () => void;\n  /**\n   * Additional CSS class name\n   */\n  className?: string;\n  /**\n   * Additional inline styles\n   */\n  style?: React.CSSProperties;\n}\n\n// Caret/Arrow icon - transforms on hover\nconst CaretIcon = ({ isHovered }: { isHovered: boolean }) => {\n  if (isHovered) {\n    // Arrow pointing right on hover\n    return (\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"M6 4L10 8L6 12\"\n          stroke=\"#2f2f2f\"\n          strokeWidth=\"1.2\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </svg>\n    );\n  }\n  // Default caret (chevron right)\n  return (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M6 4L10 8L6 12\"\n        stroke=\"#b3b3b3\"\n        strokeWidth=\"1.2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n};\n\n// Arbor Design System list row styles\nconst listRowStyles = {\n  container: {\n    display: 'flex',\n    alignItems: 'center',\n    width: '100%',\n    borderBottom: '1px solid #f8f8f8',\n    fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n    boxSizing: 'border-box' as const,\n    borderRadius: '8px',\n    transition: 'background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out',\n    outline: 'none',\n  },\n  containerHover: {\n    backgroundColor: '#f8f8f8',\n  },\n  containerFocus: {\n    outline: '3px solid #3cad51',\n    outlineOffset: '-3px',\n  },\n  containerClickable: {\n    cursor: 'pointer',\n  },\n  content: {\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n    width: '100%',\n    padding: '4px 8px',\n    minHeight: '28px',\n  },\n  label: {\n    fontSize: '13px',\n    fontWeight: '600',\n    color: '#2f2f2f',\n    lineHeight: '1.5',\n    width: '190px',\n    flexShrink: 0,\n  },\n  valueContainer: {\n    flex: 1,\n    display: 'flex',\n    alignItems: 'center',\n  },\n  value: {\n    fontSize: '13px',\n    fontWeight: '400',\n    color: '#2f2f2f',\n    lineHeight: '1.5',\n  },\n  rightContainer: {\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'flex-end',\n    gap: '8px',\n    flexShrink: 0,\n  },\n  note: {\n    fontSize: '13px',\n    fontWeight: '400',\n    fontStyle: 'italic',\n    color: '#2f2f2f',\n    lineHeight: '1.5',\n    textAlign: 'right' as const,\n  },\n  iconWrapper: {\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    width: '16px',\n    height: '16px',\n    flexShrink: 0,\n  },\n};\n\n/**\n * ListRow component - Arbor Design System\n *\n * A flexible list row component for displaying content within sections.\n * Supports optional label, note, and icon props.\n * Hover state is only enabled when icon is present (indicating clickable row).\n *\n * @example\n * ```tsx\n * // Basic row with just value\n * <ListRow value=\"John Smith\" />\n *\n * // With label\n * <ListRow label=\"Name\" value=\"John Smith\" />\n *\n * // With label and note\n * <ListRow label=\"Name\" value=\"John Smith\" note=\"Primary contact\" />\n *\n * // Clickable row with icon\n * <ListRow\n *   label=\"Name\"\n *   value=\"John Smith\"\n *   icon\n *   onClick={() => navigate('/user/123')}\n * />\n *\n * // All props\n * <ListRow\n *   label=\"Name\"\n *   value=\"John Smith\"\n *   note=\"View profile\"\n *   icon\n *   onClick={() => navigate('/user/123')}\n * />\n * ```\n */\nexport const ListRow = React.forwardRef<HTMLDivElement, ListRowProps>(\n  ({ value, label, note, icon = false, onClick, className, style, ...props }, ref) => {\n    const [isHovered, setIsHovered] = React.useState(false);\n    const [isFocused, setIsFocused] = React.useState(false);\n\n    // Only enable hover state when icon is present\n    const showHoverState = icon && isHovered;\n    const isClickable = icon && onClick;\n\n    const containerStyle: React.CSSProperties = {\n      ...listRowStyles.container,\n      ...(showHoverState && listRowStyles.containerHover),\n      ...(isFocused && listRowStyles.containerFocus),\n      ...(isClickable && listRowStyles.containerClickable),\n      ...style,\n    };\n\n    const handleClick = () => {\n      if (isClickable && onClick) {\n        onClick();\n      }\n    };\n\n    const handleKeyDown = (event: React.KeyboardEvent) => {\n      if (isClickable && (event.key === 'Enter' || event.key === ' ')) {\n        event.preventDefault();\n        onClick?.();\n      }\n    };\n\n    return (\n      <div\n        ref={ref}\n        className={clsx('arbor-list-row', className)}\n        style={containerStyle}\n        onClick={handleClick}\n        onMouseEnter={() => icon && setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n        onFocus={() => setIsFocused(true)}\n        onBlur={() => setIsFocused(false)}\n        onKeyDown={handleKeyDown}\n        tabIndex={isClickable ? 0 : undefined}\n        role={isClickable ? 'button' : undefined}\n        {...props}\n      >\n        <div style={listRowStyles.content}>\n          {label && <div style={listRowStyles.label}>{label}</div>}\n          <div style={listRowStyles.valueContainer}>\n            <span style={listRowStyles.value}>{value}</span>\n          </div>\n          <div style={listRowStyles.rightContainer}>\n            {note && <span style={listRowStyles.note}>{note}</span>}\n            {icon && (\n              <div style={listRowStyles.iconWrapper}>\n                <CaretIcon isHovered={isHovered} />\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\nListRow.displayName = 'ListRow';\n"],"mappings":"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","names":[]}