LCOV - code coverage report
Current view: top level - dashql-app/src/ui/foundations - action_list.tsx Coverage Total Hit
Test: DashQL 915828b Lines: 100.0 % 49 49
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : import * as React from "react";
       2              : 
       3              : import * as styles from "./action_list.module.css";
       4              : import { classNames } from '../../utils/classnames.js';
       5              : 
       6              : export interface ListProps extends React.HTMLAttributes<HTMLDivElement> {
       7              :     children?: React.ReactElement | React.ReactElement[];
       8              :     leading?: boolean;
       9              :     trailing?: boolean;
      10              : }
      11              : 
      12            1 : export function List(props: ListProps) {
      13            1 :     const { children, className, leading: _leading, trailing: _trailing, ...rest } = props;
      14            1 :     return (
      15            1 :         <div {...rest} className={classNames(styles.list_container, className)}>
      16            1 :             {children}
      17            1 :         </div>
      18              :     );
      19            1 : }
      20              : 
      21              : export interface ListItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
      22              :     children?: React.ReactElement | React.ReactElement[];
      23              :     selected?: boolean;
      24              :     'data-item'?: string;
      25              : }
      26              : 
      27            1 : export const ListItem = React.forwardRef<HTMLButtonElement, ListItemProps>((props, ref) => {
      28            1 :     const { children, className, selected, ...rest } = props;
      29            1 :     return (
      30            1 :         <button
      31            1 :             {...rest}
      32            1 :             ref={ref}
      33            1 :             type="button"
      34            1 :             className={classNames(styles.item_container, className, {
      35            1 :                 [styles.disabled]: props.disabled,
      36            1 :                 [styles.selected]: selected
      37            1 :             })}
      38            1 :             aria-selected={selected}
      39              :         >
      40            1 :             {children}
      41            1 :         </button>
      42              :     );
      43            1 : });
      44              : 
      45              : export interface LeadingProps {
      46              :     children?: React.ReactElement | string;
      47              : }
      48              : 
      49            1 : export function Leading(props: LeadingProps) {
      50            1 :     return (
      51            1 :         <span className={styles.leading_container}>
      52            1 :             {props.children}
      53            1 :         </span>
      54              :     );
      55            1 : }
      56              : 
      57              : export interface TrailingProps {
      58              :     children?: React.ReactElement | string;
      59              : }
      60              : 
      61            1 : export function Trailing(props: TrailingProps) {
      62            1 :     return (
      63            1 :         <span className={styles.trailing_container}>
      64            1 :             {props.children}
      65            1 :         </span>
      66              :     );
      67            1 : }
      68              : 
      69              : export interface GroupHeadingProps {
      70              :     children?: string;
      71              : }
      72              : 
      73            1 : export function GroupHeading(props: GroupHeadingProps) {
      74            1 :     return (
      75            1 :         <span className={styles.group_heading_container}>
      76            1 :             {props.children}
      77            1 :         </span>
      78              :     );
      79            1 : }
      80              : 
      81              : export interface ItemTextProps {
      82              :     children?: undefined | string | React.ReactElement | (undefined | string | React.ReactElement)[];
      83              : }
      84              : 
      85            1 : export function ItemText(props: ItemTextProps) {
      86            1 :     return <span className={styles.text_container}>{props.children}</span>;
      87            1 : }
      88            1 : export function ItemTextTitle(props: ItemTextProps) {
      89            1 :     return <span className={styles.text_title}>{props.children}</span>;
      90            1 : }
      91            1 : export function ItemTextDescription(props: ItemTextProps) {
      92            1 :     return <span className={styles.text_description}>{props.children}</span>;
      93            1 : }
      94              : 
      95              : export function Divider() {
      96              :     return <div className={styles.divider} />;
      97              : }
        

Generated by: LCOV version 2.0-1