@brycks/core-front 0.3.6 → 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/components/data/Table/Table.cjs +1 -1
- package/dist/components/data/Table/Table.cjs.map +1 -1
- package/dist/components/data/Table/Table.js +145 -132
- package/dist/components/data/Table/Table.js.map +1 -1
- package/dist/components/data.cjs +1 -1
- package/dist/components/data.js +23 -21
- package/dist/components/feedback/Banner/Banner.cjs +2 -0
- package/dist/components/feedback/Banner/Banner.cjs.map +1 -0
- package/dist/components/feedback/Banner/Banner.js +77 -0
- package/dist/components/feedback/Banner/Banner.js.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs +2 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.cjs.map +1 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js +68 -0
- package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js.map +1 -0
- package/dist/components/feedback/Modal/Modal.cjs +1 -1
- package/dist/components/feedback/Modal/Modal.cjs.map +1 -1
- package/dist/components/feedback/Modal/Modal.js +91 -83
- package/dist/components/feedback/Modal/Modal.js.map +1 -1
- package/dist/components/feedback/Popover/Popover.cjs +2 -2
- package/dist/components/feedback/Popover/Popover.cjs.map +1 -1
- package/dist/components/feedback/Popover/Popover.js +43 -44
- package/dist/components/feedback/Popover/Popover.js.map +1 -1
- package/dist/components/feedback.cjs +1 -1
- package/dist/components/feedback.js +17 -13
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/form/Combobox/Combobox.cjs +2 -2
- package/dist/components/form/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/form/Combobox/Combobox.js +166 -146
- package/dist/components/form/Combobox/Combobox.js.map +1 -1
- package/dist/components/form/SearchInput/SearchInput.cjs +2 -0
- package/dist/components/form/SearchInput/SearchInput.cjs.map +1 -0
- package/dist/components/form/SearchInput/SearchInput.js +68 -0
- package/dist/components/form/SearchInput/SearchInput.js.map +1 -0
- package/dist/components/form.cjs +1 -1
- package/dist/components/form.js +15 -13
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout/Card/Card.cjs +1 -1
- package/dist/components/layout/Card/Card.cjs.map +1 -1
- package/dist/components/layout/Card/Card.js +7 -5
- package/dist/components/layout/Card/Card.js.map +1 -1
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs +2 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.cjs.map +1 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js +90 -0
- package/dist/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/navigation.cjs +1 -1
- package/dist/components/navigation.js +25 -23
- package/dist/components/navigation.js.map +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs +1 -1
- package/dist/components/utility/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/utility/Avatar/Avatar.js +18 -18
- package/dist/components/utility/Avatar/Avatar.js.map +1 -1
- package/dist/components/utility/Badge/Badge.cjs +1 -1
- package/dist/components/utility/Badge/Badge.cjs.map +1 -1
- package/dist/components/utility/Badge/Badge.js +31 -23
- package/dist/components/utility/Badge/Badge.js.map +1 -1
- package/dist/components/utility/Kbd/Kbd.cjs +2 -0
- package/dist/components/utility/Kbd/Kbd.cjs.map +1 -0
- package/dist/components/utility/Kbd/Kbd.js +20 -0
- package/dist/components/utility/Kbd/Kbd.js.map +1 -0
- package/dist/components/utility/Logo/Logo.cjs +1 -1
- package/dist/components/utility/Logo/Logo.cjs.map +1 -1
- package/dist/components/utility/Logo/Logo.js +19 -19
- package/dist/components/utility/Logo/Logo.js.map +1 -1
- package/dist/components/utility.cjs +1 -1
- package/dist/components/utility.js +9 -7
- package/dist/components/utility.js.map +1 -1
- package/dist/data.d.ts +34 -1
- package/dist/feedback.d.ts +67 -2
- package/dist/form.d.ts +31 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +184 -3
- package/dist/index.js +177 -165
- package/dist/index.js.map +1 -1
- package/dist/navigation.d.ts +39 -0
- package/dist/styles.css +1 -1
- package/dist/utility.d.ts +19 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),b=require("react"),u=require("../../../utils/styles.cjs"),M=require("../../utility/EmptyState/EmptyState.cjs"),B=require("../../utility/Skeleton/Skeleton.cjs"),g=require("../../../design-system/tokens/motion.cjs"),c=require("../../../design-system/primitives/sizing.cjs"),T=require("../../../design-system/tokens/spacing.cjs"),m=require("../../../design-system/tokens/typography.cjs"),N=b.createContext({size:"md",variant:"default",stickyHeader:!1});function x(){return b.useContext(N)}const v={sm:{fontSize:m.fontSizes.base-1,paddingY:c.componentPaddingY.md,paddingX:c.componentPaddingX.sm,headerPaddingY:c.componentPaddingY.md,headerPaddingX:c.componentPaddingX.sm},md:{fontSize:m.fontSizes.base,paddingY:c.componentPaddingX.sm,paddingX:c.componentPaddingX.md,headerPaddingY:c.componentPaddingX.sm,headerPaddingX:c.componentPaddingX.md},lg:{fontSize:m.fontSizes.base+1,paddingY:c.componentPaddingX.md,paddingX:c.componentPaddingX.lg,headerPaddingY:T.spacing[3.5],headerPaddingX:c.componentPaddingX.lg}},P=b.forwardRef(function({size:a="md",variant:e="default",stickyHeader:s=!1,loading:o=!1,className:n,style:r,children:d,testId:l,...p},y){const f={position:"relative",width:"100%",overflow:"auto",...r},h={width:"100%",borderCollapse:e==="bordered"?"separate":"collapse",borderSpacing:0,fontSize:v[a].fontSize,fontVariantNumeric:"tabular-nums",opacity:o?.6:1,transition:`opacity ${g.durations.quick}ms ${g.easings.easeOut}`};return t.jsx(N.Provider,{value:{size:a,variant:e,stickyHeader:s},children:t.jsx("div",{className:"brycks-table-container",style:f,children:t.jsx("table",{ref:y,className:u.cx("brycks-table",`brycks-table--${a}`,`brycks-table--${e}`,n),style:h,"aria-busy":o||void 0,"data-testid":l,...p,children:d})})})});P.displayName="Table";const X=b.forwardRef(function({sticky:a=!1,className:e,style:s,children:o,...n},r){const{stickyHeader:d}=x(),l=a||d,p={backgroundColor:"var(--brycks-background-muted)",position:l?"sticky":void 0,top:l?0:void 0,zIndex:l?1:void 0,...s};return t.jsx("thead",{ref:r,className:u.cx("brycks-table-head",l&&"brycks-table-head--sticky",e),style:p,...n,children:o})});X.displayName="TableHead";const R=b.forwardRef(function({className:a,style:e,children:s,...o},n){const r={...e};return t.jsx("tbody",{ref:n,className:u.cx("brycks-table-body",a),style:r,...o,children:s})});R.displayName="TableBody";const S=b.forwardRef(function({selected:a=!1,clickable:e=!1,className:s,style:o,children:n,...r},d){const{variant:l}=x(),p={backgroundColor:a?"var(--brycks-primary-muted)":"transparent",borderBottom:l!=="bordered"?"1px solid var(--brycks-border-muted)":void 0,cursor:e?"pointer":void 0,transition:`background-color ${g.durations.quick}ms ${g.easings.easeOut}`,...o};return t.jsx("tr",{ref:d,className:u.cx("brycks-table-row",a&&"brycks-table-row--selected",e&&"brycks-table-row--clickable",s),style:p,onMouseEnter:y=>{e&&!a&&(y.currentTarget.style.backgroundColor="var(--brycks-background-muted)")},onMouseLeave:y=>{a||(y.currentTarget.style.backgroundColor="transparent")},...r,children:n})});S.displayName="TableRow";function E({direction:i}){return i?t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none","aria-hidden":"true",children:i==="asc"?t.jsx("path",{d:"M7 3L10 6H4L7 3Z",fill:"currentColor"}):t.jsx("path",{d:"M7 11L4 8H10L7 11Z",fill:"currentColor"})}):t.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",style:{opacity:.4},"aria-hidden":"true",children:[t.jsx("path",{d:"M7 3L10 6H4L7 3Z",fill:"currentColor"}),t.jsx("path",{d:"M7 11L4 8H10L7 11Z",fill:"currentColor"})]})}const z=b.forwardRef(function({sortable:a=!1,sortDirection:e=null,onSort:s,align:o="left",className:n,style:r,children:d,...l},p){const{size:y}=x(),f=v[y],h={padding:`${f.headerPaddingY}px ${f.headerPaddingX}px`,fontWeight:600,color:"var(--brycks-foreground-muted)",textAlign:o,whiteSpace:"nowrap",transition:`color ${g.durations.quick}ms ${g.easings.easeOut}`,...r},j={display:"flex",alignItems:"center",gap:c.componentGap.sm,justifyContent:o==="right"?"flex-end":o==="center"?"center":"flex-start"},Y={...j,width:"100%",padding:0,background:"transparent",border:"none",font:"inherit",fontWeight:"inherit",color:"inherit",cursor:"pointer",userSelect:"none"};return t.jsx("th",{ref:p,"aria-sort":a?e==="asc"?"ascending":e==="desc"?"descending":"none":void 0,className:u.cx("brycks-table-header",a&&"brycks-table-header--sortable",n),style:h,...l,children:a?t.jsxs("button",{type:"button",style:Y,onClick:()=>s?.(),onMouseEnter:k=>{k.currentTarget.style.color="var(--brycks-foreground-default)"},onMouseLeave:k=>{k.currentTarget.style.color="inherit"},children:[d,t.jsx(E,{direction:e})]}):t.jsx("span",{style:j,children:d})})});z.displayName="TableHeader";const w=b.forwardRef(function({align:a="left",truncate:e=!1,className:s,style:o,children:n,...r},d){const{size:l,variant:p}=x(),y=v[l],f={padding:`${y.paddingY}px ${y.paddingX}px`,color:"var(--brycks-foreground-default)",textAlign:a,verticalAlign:"middle",border:p==="bordered"?"1px solid var(--brycks-border-muted)":void 0,maxWidth:e?200:void 0,overflow:e?"hidden":void 0,textOverflow:e?"ellipsis":void 0,whiteSpace:e?"nowrap":void 0,...o};return t.jsx("td",{ref:d,className:u.cx("brycks-table-cell",e&&"brycks-table-cell--truncate",s),style:f,title:e&&typeof n=="string"?n:void 0,...r,children:n})});w.displayName="TableCell";const H=b.forwardRef(function({className:a,style:e,children:s,...o},n){const r={backgroundColor:"var(--brycks-background-muted)",fontWeight:500,...e};return t.jsx("tfoot",{ref:n,className:u.cx("brycks-table-foot",a),style:r,...o,children:s})});H.displayName="TableFoot";const $=b.forwardRef(function({placement:a="bottom",className:e,style:s,children:o,...n},r){const d={captionSide:a,padding:`${T.spacing[3]}px ${T.spacing[4]}px`,fontSize:m.fontSizes.base-1,color:"var(--brycks-foreground-muted)",textAlign:"left",...s};return t.jsx("caption",{ref:r,className:u.cx("brycks-table-caption",e),style:d,...n,children:o})});$.displayName="TableCaption";const q=b.forwardRef(function({colSpan:a,icon:e,title:s,description:o,action:n,className:r},d){return t.jsx("tr",{ref:d,className:u.cx("brycks-table-empty",r),children:t.jsx("td",{colSpan:a,style:{padding:0},children:t.jsx(M.EmptyState,{icon:e,title:s,description:o,action:n})})})});q.displayName="TableEmpty";const C=["70%","45%","85%","55%","60%","40%"];function L({rows:i=5,columns:a,className:e}){return t.jsx(t.Fragment,{children:Array.from({length:i}).map((s,o)=>t.jsx(S,{className:u.cx("brycks-table-skeleton-row",e),"aria-hidden":"true",children:Array.from({length:a}).map((n,r)=>t.jsx(w,{children:t.jsx(B.Skeleton,{variant:"text",width:C[r%C.length]})},r))},o))})}L.displayName="TableSkeleton";exports.Table=P;exports.TableBody=R;exports.TableCaption=$;exports.TableCell=w;exports.TableEmpty=q;exports.TableFoot=H;exports.TableHead=X;exports.TableHeader=z;exports.TableRow=S;exports.TableSkeleton=L;
|
|
2
2
|
//# sourceMappingURL=Table.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.cjs","sources":["../../../../src/components/data/Table/Table.tsx"],"sourcesContent":["/**\n * Table Component\n *\n * A flexible table component with sorting, selection, and responsive support.\n * Follows design system patterns for consistent styling.\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type HTMLAttributes,\n type ThHTMLAttributes,\n type TdHTMLAttributes,\n} from 'react'\nimport { cx } from '../../../utils/styles'\nimport { spacing, fontSizes, durations, easings } from '../../../design-system'\nimport { componentGap, componentPaddingX, componentPaddingY } from '../../../design-system/primitives'\n\nexport type TableSize = 'sm' | 'md' | 'lg'\nexport type TableVariant = 'default' | 'striped' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n stickyHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue>({ size: 'md', variant: 'default', stickyHeader: false })\n\nfunction useTableContext() {\n return useContext(TableContext)\n}\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Table size */\n size?: TableSize\n /** Table variant */\n variant?: TableVariant\n /** Whether the table has a sticky header */\n stickyHeader?: boolean\n /** Whether the table is in a loading state */\n loading?: boolean\n /** Custom class name */\n className?: string\n /** Test ID */\n testId?: string\n}\n\nconst sizeConfig: Record<TableSize, { fontSize: number; paddingY: number; paddingX: number; headerPaddingY: number; headerPaddingX: number }> = {\n sm: { fontSize: fontSizes.base - 1, paddingY: componentPaddingY.md, paddingX: componentPaddingX.sm, headerPaddingY: componentPaddingY.md, headerPaddingX: componentPaddingX.sm },\n md: { fontSize: fontSizes.base, paddingY: componentPaddingX.sm, paddingX: componentPaddingX.md, headerPaddingY: componentPaddingX.sm, headerPaddingX: componentPaddingX.md },\n lg: { fontSize: fontSizes.base + 1, paddingY: componentPaddingX.md, paddingX: componentPaddingX.lg, headerPaddingY: spacing[3.5], headerPaddingX: componentPaddingX.lg },\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n size = 'md',\n variant = 'default',\n stickyHeader = false,\n loading = false,\n className,\n style,\n children,\n testId,\n ...props\n },\n ref\n) {\n const containerStyle: CSSProperties = {\n position: 'relative',\n width: '100%',\n overflow: 'auto',\n ...style,\n }\n\n const tableStyle: CSSProperties = {\n width: '100%',\n borderCollapse: variant === 'bordered' ? 'separate' : 'collapse',\n borderSpacing: 0,\n fontSize: sizeConfig[size].fontSize,\n fontVariantNumeric: 'tabular-nums',\n opacity: loading ? 0.6 : 1,\n transition: `opacity ${durations.quick}ms ${easings.easeOut}`,\n }\n\n return (\n <TableContext.Provider value={{ size, variant, stickyHeader }}>\n <div className=\"brycks-table-container\" style={containerStyle}>\n <table\n ref={ref}\n className={cx('brycks-table', `brycks-table--${size}`, `brycks-table--${variant}`, className)}\n style={tableStyle}\n aria-busy={loading || undefined}\n data-testid={testId}\n {...props}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n )\n})\n\nTable.displayName = 'Table'\n\n// TableHead\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Whether the header is sticky */\n sticky?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(function TableHead(\n { sticky = false, className, style, children, ...props },\n ref\n) {\n const { stickyHeader } = useTableContext()\n const isSticky = sticky || stickyHeader\n\n const headStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n position: isSticky ? 'sticky' : undefined,\n top: isSticky ? 0 : undefined,\n zIndex: isSticky ? 1 : undefined,\n ...style,\n }\n\n return (\n <thead\n ref={ref}\n className={cx('brycks-table-head', isSticky && 'brycks-table-head--sticky', className)}\n style={headStyle}\n {...props}\n >\n {children}\n </thead>\n )\n})\n\nTableHead.displayName = 'TableHead'\n\n// TableBody\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, style, children, ...props },\n ref\n) {\n const bodyStyle: CSSProperties = {\n ...style,\n }\n\n return (\n <tbody\n ref={ref}\n className={cx('brycks-table-body', className)}\n style={bodyStyle}\n {...props}\n >\n {children}\n </tbody>\n )\n})\n\nTableBody.displayName = 'TableBody'\n\n// TableRow\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Whether the row is selected */\n selected?: boolean\n /** Whether the row is clickable */\n clickable?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { selected = false, clickable = false, className, style, children, ...props },\n ref\n) {\n const { variant } = useTableContext()\n\n const rowStyle: CSSProperties = {\n backgroundColor: selected\n ? 'var(--brycks-primary-muted)'\n : 'transparent',\n borderBottom: variant !== 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n cursor: clickable ? 'pointer' : undefined,\n transition: `background-color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n return (\n <tr\n ref={ref}\n className={cx(\n 'brycks-table-row',\n selected && 'brycks-table-row--selected',\n clickable && 'brycks-table-row--clickable',\n className\n )}\n style={rowStyle}\n onMouseEnter={(e) => {\n if (clickable && !selected) {\n e.currentTarget.style.backgroundColor = 'var(--brycks-background-muted)'\n }\n }}\n onMouseLeave={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = 'transparent'\n }\n }}\n {...props}\n >\n {children}\n </tr>\n )\n})\n\nTableRow.displayName = 'TableRow'\n\n// TableHeader (th)\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /** Whether the column is sortable */\n sortable?: boolean\n /** Sort direction */\n sortDirection?: 'asc' | 'desc' | null\n /** Callback when sort is requested */\n onSort?: () => void\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Custom class name */\n className?: string\n}\n\nfunction SortIcon({ direction }: { direction: 'asc' | 'desc' | null }) {\n if (!direction) {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" style={{ opacity: 0.4 }} aria-hidden=\"true\">\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n </svg>\n )\n }\n\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n {direction === 'asc' ? (\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n ) : (\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n )}\n </svg>\n )\n}\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(function TableHeader(\n {\n sortable = false,\n sortDirection = null,\n onSort,\n align = 'left',\n className,\n style,\n children,\n ...props\n },\n ref\n) {\n const { size } = useTableContext()\n const config = sizeConfig[size]\n\n const headerStyle: CSSProperties = {\n padding: `${config.headerPaddingY}px ${config.headerPaddingX}px`,\n fontWeight: 600,\n color: 'var(--brycks-foreground-muted)',\n textAlign: align,\n whiteSpace: 'nowrap',\n transition: `color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n const contentStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: componentGap.sm,\n justifyContent: align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n }\n\n // Sorting happens through a real button so it is reachable by keyboard\n const sortButtonStyle: CSSProperties = {\n ...contentStyle,\n width: '100%',\n padding: 0,\n background: 'transparent',\n border: 'none',\n font: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n cursor: 'pointer',\n userSelect: 'none',\n }\n\n return (\n <th\n ref={ref}\n aria-sort={\n sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined\n }\n className={cx('brycks-table-header', sortable && 'brycks-table-header--sortable', className)}\n style={headerStyle}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n style={sortButtonStyle}\n onClick={() => onSort?.()}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = 'var(--brycks-foreground-default)'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = 'inherit'\n }}\n >\n {children}\n <SortIcon direction={sortDirection} />\n </button>\n ) : (\n <span style={contentStyle}>{children}</span>\n )}\n </th>\n )\n})\n\nTableHeader.displayName = 'TableHeader'\n\n// TableCell (td)\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Whether to truncate text */\n truncate?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = 'left', truncate = false, className, style, children, ...props },\n ref\n) {\n const { size, variant } = useTableContext()\n const config = sizeConfig[size]\n\n const cellStyle: CSSProperties = {\n padding: `${config.paddingY}px ${config.paddingX}px`,\n color: 'var(--brycks-foreground-default)',\n textAlign: align,\n verticalAlign: 'middle',\n border: variant === 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n maxWidth: truncate ? 200 : undefined,\n overflow: truncate ? 'hidden' : undefined,\n textOverflow: truncate ? 'ellipsis' : undefined,\n whiteSpace: truncate ? 'nowrap' : undefined,\n ...style,\n }\n\n return (\n <td\n ref={ref}\n className={cx('brycks-table-cell', truncate && 'brycks-table-cell--truncate', className)}\n style={cellStyle}\n title={truncate && typeof children === 'string' ? children : undefined}\n {...props}\n >\n {children}\n </td>\n )\n})\n\nTableCell.displayName = 'TableCell'\n\n// TableFoot\nexport interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableFoot = forwardRef<HTMLTableSectionElement, TableFootProps>(function TableFoot(\n { className, style, children, ...props },\n ref\n) {\n const footStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n fontWeight: 500,\n ...style,\n }\n\n return (\n <tfoot\n ref={ref}\n className={cx('brycks-table-foot', className)}\n style={footStyle}\n {...props}\n >\n {children}\n </tfoot>\n )\n})\n\nTableFoot.displayName = 'TableFoot'\n\n// TableCaption\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n /** Caption placement */\n placement?: 'top' | 'bottom'\n /** Custom class name */\n className?: string\n}\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(function TableCaption(\n { placement = 'bottom', className, style, children, ...props },\n ref\n) {\n const captionStyle: CSSProperties = {\n captionSide: placement,\n padding: `${spacing[3]}px ${spacing[4]}px`,\n fontSize: fontSizes.base - 1,\n color: 'var(--brycks-foreground-muted)',\n textAlign: 'left',\n ...style,\n }\n\n return (\n <caption\n ref={ref}\n className={cx('brycks-table-caption', className)}\n style={captionStyle}\n {...props}\n >\n {children}\n </caption>\n )\n})\n\nTableCaption.displayName = 'TableCaption'\n"],"names":["TableContext","createContext","useTableContext","useContext","sizeConfig","fontSizes","componentPaddingY","componentPaddingX","spacing","Table","forwardRef","size","variant","stickyHeader","loading","className","style","children","testId","props","ref","containerStyle","tableStyle","durations","easings","jsx","cx","TableHead","sticky","isSticky","headStyle","TableBody","bodyStyle","TableRow","selected","clickable","rowStyle","e","SortIcon","direction","TableHeader","sortable","sortDirection","onSort","align","config","headerStyle","contentStyle","componentGap","sortButtonStyle","jsxs","TableCell","truncate","cellStyle","TableFoot","footStyle","TableCaption","placement","captionStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.cjs","sources":["../../../../src/components/data/Table/Table.tsx"],"sourcesContent":["/**\n * Table Component\n *\n * A flexible table component with sorting, selection, and responsive support.\n * Follows design system patterns for consistent styling.\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type CSSProperties,\n type HTMLAttributes,\n type ThHTMLAttributes,\n type TdHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { cx } from '../../../utils/styles'\nimport { spacing, fontSizes, durations, easings } from '../../../design-system'\nimport { componentGap, componentPaddingX, componentPaddingY } from '../../../design-system/primitives'\nimport { EmptyState } from '../../utility/EmptyState'\nimport { Skeleton } from '../../utility/Skeleton'\n\nexport type TableSize = 'sm' | 'md' | 'lg'\n// `striped` was dead API (no CSS, incompatible with inline row styling) — removed in 0.5.0.\nexport type TableVariant = 'default' | 'bordered'\n\ninterface TableContextValue {\n size: TableSize\n variant: TableVariant\n stickyHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue>({ size: 'md', variant: 'default', stickyHeader: false })\n\nfunction useTableContext() {\n return useContext(TableContext)\n}\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Table size */\n size?: TableSize\n /** Table variant */\n variant?: TableVariant\n /** Whether the table has a sticky header */\n stickyHeader?: boolean\n /** Whether the table is in a loading state */\n loading?: boolean\n /** Custom class name */\n className?: string\n /** Test ID */\n testId?: string\n}\n\nconst sizeConfig: Record<TableSize, { fontSize: number; paddingY: number; paddingX: number; headerPaddingY: number; headerPaddingX: number }> = {\n sm: { fontSize: fontSizes.base - 1, paddingY: componentPaddingY.md, paddingX: componentPaddingX.sm, headerPaddingY: componentPaddingY.md, headerPaddingX: componentPaddingX.sm },\n md: { fontSize: fontSizes.base, paddingY: componentPaddingX.sm, paddingX: componentPaddingX.md, headerPaddingY: componentPaddingX.sm, headerPaddingX: componentPaddingX.md },\n lg: { fontSize: fontSizes.base + 1, paddingY: componentPaddingX.md, paddingX: componentPaddingX.lg, headerPaddingY: spacing[3.5], headerPaddingX: componentPaddingX.lg },\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n {\n size = 'md',\n variant = 'default',\n stickyHeader = false,\n loading = false,\n className,\n style,\n children,\n testId,\n ...props\n },\n ref\n) {\n const containerStyle: CSSProperties = {\n position: 'relative',\n width: '100%',\n overflow: 'auto',\n ...style,\n }\n\n const tableStyle: CSSProperties = {\n width: '100%',\n borderCollapse: variant === 'bordered' ? 'separate' : 'collapse',\n borderSpacing: 0,\n fontSize: sizeConfig[size].fontSize,\n fontVariantNumeric: 'tabular-nums',\n opacity: loading ? 0.6 : 1,\n transition: `opacity ${durations.quick}ms ${easings.easeOut}`,\n }\n\n return (\n <TableContext.Provider value={{ size, variant, stickyHeader }}>\n <div className=\"brycks-table-container\" style={containerStyle}>\n <table\n ref={ref}\n className={cx('brycks-table', `brycks-table--${size}`, `brycks-table--${variant}`, className)}\n style={tableStyle}\n aria-busy={loading || undefined}\n data-testid={testId}\n {...props}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n )\n})\n\nTable.displayName = 'Table'\n\n// TableHead\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Whether the header is sticky */\n sticky?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(function TableHead(\n { sticky = false, className, style, children, ...props },\n ref\n) {\n const { stickyHeader } = useTableContext()\n const isSticky = sticky || stickyHeader\n\n const headStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n position: isSticky ? 'sticky' : undefined,\n top: isSticky ? 0 : undefined,\n zIndex: isSticky ? 1 : undefined,\n ...style,\n }\n\n return (\n <thead\n ref={ref}\n className={cx('brycks-table-head', isSticky && 'brycks-table-head--sticky', className)}\n style={headStyle}\n {...props}\n >\n {children}\n </thead>\n )\n})\n\nTableHead.displayName = 'TableHead'\n\n// TableBody\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, style, children, ...props },\n ref\n) {\n const bodyStyle: CSSProperties = {\n ...style,\n }\n\n return (\n <tbody\n ref={ref}\n className={cx('brycks-table-body', className)}\n style={bodyStyle}\n {...props}\n >\n {children}\n </tbody>\n )\n})\n\nTableBody.displayName = 'TableBody'\n\n// TableRow\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Whether the row is selected */\n selected?: boolean\n /** Whether the row is clickable */\n clickable?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { selected = false, clickable = false, className, style, children, ...props },\n ref\n) {\n const { variant } = useTableContext()\n\n const rowStyle: CSSProperties = {\n backgroundColor: selected\n ? 'var(--brycks-primary-muted)'\n : 'transparent',\n borderBottom: variant !== 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n cursor: clickable ? 'pointer' : undefined,\n transition: `background-color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n return (\n <tr\n ref={ref}\n className={cx(\n 'brycks-table-row',\n selected && 'brycks-table-row--selected',\n clickable && 'brycks-table-row--clickable',\n className\n )}\n style={rowStyle}\n onMouseEnter={(e) => {\n if (clickable && !selected) {\n e.currentTarget.style.backgroundColor = 'var(--brycks-background-muted)'\n }\n }}\n onMouseLeave={(e) => {\n if (!selected) {\n e.currentTarget.style.backgroundColor = 'transparent'\n }\n }}\n {...props}\n >\n {children}\n </tr>\n )\n})\n\nTableRow.displayName = 'TableRow'\n\n// TableHeader (th)\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /** Whether the column is sortable */\n sortable?: boolean\n /** Sort direction */\n sortDirection?: 'asc' | 'desc' | null\n /** Callback when sort is requested */\n onSort?: () => void\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Custom class name */\n className?: string\n}\n\nfunction SortIcon({ direction }: { direction: 'asc' | 'desc' | null }) {\n if (!direction) {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" style={{ opacity: 0.4 }} aria-hidden=\"true\">\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n </svg>\n )\n }\n\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n {direction === 'asc' ? (\n <path d=\"M7 3L10 6H4L7 3Z\" fill=\"currentColor\" />\n ) : (\n <path d=\"M7 11L4 8H10L7 11Z\" fill=\"currentColor\" />\n )}\n </svg>\n )\n}\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(function TableHeader(\n {\n sortable = false,\n sortDirection = null,\n onSort,\n align = 'left',\n className,\n style,\n children,\n ...props\n },\n ref\n) {\n const { size } = useTableContext()\n const config = sizeConfig[size]\n\n const headerStyle: CSSProperties = {\n padding: `${config.headerPaddingY}px ${config.headerPaddingX}px`,\n fontWeight: 600,\n color: 'var(--brycks-foreground-muted)',\n textAlign: align,\n whiteSpace: 'nowrap',\n transition: `color ${durations.quick}ms ${easings.easeOut}`,\n ...style,\n }\n\n const contentStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: componentGap.sm,\n justifyContent: align === 'right' ? 'flex-end' : align === 'center' ? 'center' : 'flex-start',\n }\n\n // Sorting happens through a real button so it is reachable by keyboard\n const sortButtonStyle: CSSProperties = {\n ...contentStyle,\n width: '100%',\n padding: 0,\n background: 'transparent',\n border: 'none',\n font: 'inherit',\n fontWeight: 'inherit',\n color: 'inherit',\n cursor: 'pointer',\n userSelect: 'none',\n }\n\n return (\n <th\n ref={ref}\n aria-sort={\n sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined\n }\n className={cx('brycks-table-header', sortable && 'brycks-table-header--sortable', className)}\n style={headerStyle}\n {...props}\n >\n {sortable ? (\n <button\n type=\"button\"\n style={sortButtonStyle}\n onClick={() => onSort?.()}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = 'var(--brycks-foreground-default)'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = 'inherit'\n }}\n >\n {children}\n <SortIcon direction={sortDirection} />\n </button>\n ) : (\n <span style={contentStyle}>{children}</span>\n )}\n </th>\n )\n})\n\nTableHeader.displayName = 'TableHeader'\n\n// TableCell (td)\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right'\n /** Whether to truncate text */\n truncate?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = 'left', truncate = false, className, style, children, ...props },\n ref\n) {\n const { size, variant } = useTableContext()\n const config = sizeConfig[size]\n\n const cellStyle: CSSProperties = {\n padding: `${config.paddingY}px ${config.paddingX}px`,\n color: 'var(--brycks-foreground-default)',\n textAlign: align,\n verticalAlign: 'middle',\n border: variant === 'bordered' ? '1px solid var(--brycks-border-muted)' : undefined,\n maxWidth: truncate ? 200 : undefined,\n overflow: truncate ? 'hidden' : undefined,\n textOverflow: truncate ? 'ellipsis' : undefined,\n whiteSpace: truncate ? 'nowrap' : undefined,\n ...style,\n }\n\n return (\n <td\n ref={ref}\n className={cx('brycks-table-cell', truncate && 'brycks-table-cell--truncate', className)}\n style={cellStyle}\n title={truncate && typeof children === 'string' ? children : undefined}\n {...props}\n >\n {children}\n </td>\n )\n})\n\nTableCell.displayName = 'TableCell'\n\n// TableFoot\nexport interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {\n /** Custom class name */\n className?: string\n}\n\nexport const TableFoot = forwardRef<HTMLTableSectionElement, TableFootProps>(function TableFoot(\n { className, style, children, ...props },\n ref\n) {\n const footStyle: CSSProperties = {\n backgroundColor: 'var(--brycks-background-muted)',\n fontWeight: 500,\n ...style,\n }\n\n return (\n <tfoot\n ref={ref}\n className={cx('brycks-table-foot', className)}\n style={footStyle}\n {...props}\n >\n {children}\n </tfoot>\n )\n})\n\nTableFoot.displayName = 'TableFoot'\n\n// TableCaption\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n /** Caption placement */\n placement?: 'top' | 'bottom'\n /** Custom class name */\n className?: string\n}\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(function TableCaption(\n { placement = 'bottom', className, style, children, ...props },\n ref\n) {\n const captionStyle: CSSProperties = {\n captionSide: placement,\n padding: `${spacing[3]}px ${spacing[4]}px`,\n fontSize: fontSizes.base - 1,\n color: 'var(--brycks-foreground-muted)',\n textAlign: 'left',\n ...style,\n }\n\n return (\n <caption\n ref={ref}\n className={cx('brycks-table-caption', className)}\n style={captionStyle}\n {...props}\n >\n {children}\n </caption>\n )\n})\n\nTableCaption.displayName = 'TableCaption'\n\n// TableEmpty — a full-width empty state row, drop inside <TableBody>\nexport interface TableEmptyProps {\n /** Number of columns to span (match the table's column count) */\n colSpan: number\n /** Icon or illustration */\n icon?: ReactNode\n /** Title text */\n title?: ReactNode\n /** Description text */\n description?: ReactNode\n /** Action element (button, link) */\n action?: ReactNode\n /** Custom class name */\n className?: string\n}\n\nexport const TableEmpty = forwardRef<HTMLTableRowElement, TableEmptyProps>(function TableEmpty(\n { colSpan, icon, title, description, action, className },\n ref\n) {\n return (\n <tr ref={ref} className={cx('brycks-table-empty', className)}>\n <td colSpan={colSpan} style={{ padding: 0 }}>\n <EmptyState icon={icon} title={title} description={description} action={action} />\n </td>\n </tr>\n )\n})\n\nTableEmpty.displayName = 'TableEmpty'\n\n// TableSkeleton — placeholder rows shown while data loads, drop inside <TableBody>\nexport interface TableSkeletonProps {\n /** Number of skeleton rows */\n rows?: number\n /** Number of columns per row (match the table's column count) */\n columns: number\n /** Custom class name applied to each row */\n className?: string\n}\n\n// Deterministic per-column widths so the placeholder reads like real data\nconst skeletonWidths = ['70%', '45%', '85%', '55%', '60%', '40%']\n\nexport function TableSkeleton({ rows = 5, columns, className }: TableSkeletonProps) {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex} className={cx('brycks-table-skeleton-row', className)} aria-hidden=\"true\">\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton variant=\"text\" width={skeletonWidths[colIndex % skeletonWidths.length]} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n )\n}\n\nTableSkeleton.displayName = 'TableSkeleton'\n"],"names":["TableContext","createContext","useTableContext","useContext","sizeConfig","fontSizes","componentPaddingY","componentPaddingX","spacing","Table","forwardRef","size","variant","stickyHeader","loading","className","style","children","testId","props","ref","containerStyle","tableStyle","durations","easings","jsx","cx","TableHead","sticky","isSticky","headStyle","TableBody","bodyStyle","TableRow","selected","clickable","rowStyle","e","SortIcon","direction","TableHeader","sortable","sortDirection","onSort","align","config","headerStyle","contentStyle","componentGap","sortButtonStyle","jsxs","TableCell","truncate","cellStyle","TableFoot","footStyle","TableCaption","placement","captionStyle","TableEmpty","colSpan","icon","title","description","action","EmptyState","skeletonWidths","TableSkeleton","rows","columns","Fragment","_","rowIndex","colIndex","Skeleton"],"mappings":"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"}
|
|
@@ -1,155 +1,157 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { cx as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { jsx as o, jsxs as $, Fragment as X } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as m, createContext as Y, useContext as M } from "react";
|
|
3
|
+
import { cx as b } from "../../../utils/styles.js";
|
|
4
|
+
import { EmptyState as B } from "../../utility/EmptyState/EmptyState.js";
|
|
5
|
+
import { Skeleton as A } from "../../utility/Skeleton/Skeleton.js";
|
|
6
|
+
import { durations as T, easings as S } from "../../../design-system/tokens/motion.js";
|
|
7
|
+
import { componentPaddingX as p, componentPaddingY as C, componentGap as E } from "../../../design-system/primitives/sizing.js";
|
|
6
8
|
import { spacing as v } from "../../../design-system/tokens/spacing.js";
|
|
7
|
-
import { fontSizes as
|
|
8
|
-
const
|
|
9
|
+
import { fontSizes as f } from "../../../design-system/tokens/typography.js";
|
|
10
|
+
const H = Y({ size: "md", variant: "default", stickyHeader: !1 });
|
|
9
11
|
function g() {
|
|
10
|
-
return
|
|
12
|
+
return M(H);
|
|
11
13
|
}
|
|
12
|
-
const
|
|
13
|
-
sm: { fontSize:
|
|
14
|
-
md: { fontSize:
|
|
15
|
-
lg: { fontSize:
|
|
16
|
-
},
|
|
14
|
+
const x = {
|
|
15
|
+
sm: { fontSize: f.base - 1, paddingY: C.md, paddingX: p.sm, headerPaddingY: C.md, headerPaddingX: p.sm },
|
|
16
|
+
md: { fontSize: f.base, paddingY: p.sm, paddingX: p.md, headerPaddingY: p.sm, headerPaddingX: p.md },
|
|
17
|
+
lg: { fontSize: f.base + 1, paddingY: p.md, paddingX: p.lg, headerPaddingY: v[3.5], headerPaddingX: p.lg }
|
|
18
|
+
}, W = m(function({
|
|
17
19
|
size: t = "md",
|
|
18
20
|
variant: e = "default",
|
|
19
|
-
stickyHeader:
|
|
20
|
-
loading:
|
|
21
|
-
className:
|
|
22
|
-
style:
|
|
23
|
-
children:
|
|
21
|
+
stickyHeader: l = !1,
|
|
22
|
+
loading: a = !1,
|
|
23
|
+
className: r,
|
|
24
|
+
style: n,
|
|
25
|
+
children: d,
|
|
24
26
|
testId: s,
|
|
25
|
-
...
|
|
27
|
+
...y
|
|
26
28
|
}, c) {
|
|
27
|
-
const
|
|
29
|
+
const u = {
|
|
28
30
|
position: "relative",
|
|
29
31
|
width: "100%",
|
|
30
32
|
overflow: "auto",
|
|
31
|
-
...
|
|
33
|
+
...n
|
|
32
34
|
}, h = {
|
|
33
35
|
width: "100%",
|
|
34
36
|
borderCollapse: e === "bordered" ? "separate" : "collapse",
|
|
35
37
|
borderSpacing: 0,
|
|
36
|
-
fontSize:
|
|
38
|
+
fontSize: x[t].fontSize,
|
|
37
39
|
fontVariantNumeric: "tabular-nums",
|
|
38
|
-
opacity:
|
|
39
|
-
transition: `opacity ${T.quick}ms ${
|
|
40
|
+
opacity: a ? 0.6 : 1,
|
|
41
|
+
transition: `opacity ${T.quick}ms ${S.easeOut}`
|
|
40
42
|
};
|
|
41
|
-
return /* @__PURE__ */
|
|
43
|
+
return /* @__PURE__ */ o(H.Provider, { value: { size: t, variant: e, stickyHeader: l }, children: /* @__PURE__ */ o("div", { className: "brycks-table-container", style: u, children: /* @__PURE__ */ o(
|
|
42
44
|
"table",
|
|
43
45
|
{
|
|
44
46
|
ref: c,
|
|
45
|
-
className:
|
|
47
|
+
className: b("brycks-table", `brycks-table--${t}`, `brycks-table--${e}`, r),
|
|
46
48
|
style: h,
|
|
47
|
-
"aria-busy":
|
|
49
|
+
"aria-busy": a || void 0,
|
|
48
50
|
"data-testid": s,
|
|
49
|
-
...
|
|
50
|
-
children:
|
|
51
|
+
...y,
|
|
52
|
+
children: d
|
|
51
53
|
}
|
|
52
54
|
) }) });
|
|
53
55
|
});
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
const { stickyHeader:
|
|
56
|
+
W.displayName = "Table";
|
|
57
|
+
const F = m(function({ sticky: t = !1, className: e, style: l, children: a, ...r }, n) {
|
|
58
|
+
const { stickyHeader: d } = g(), s = t || d, y = {
|
|
57
59
|
backgroundColor: "var(--brycks-background-muted)",
|
|
58
60
|
position: s ? "sticky" : void 0,
|
|
59
61
|
top: s ? 0 : void 0,
|
|
60
62
|
zIndex: s ? 1 : void 0,
|
|
61
|
-
...
|
|
63
|
+
...l
|
|
62
64
|
};
|
|
63
|
-
return /* @__PURE__ */
|
|
65
|
+
return /* @__PURE__ */ o(
|
|
64
66
|
"thead",
|
|
65
67
|
{
|
|
66
|
-
ref:
|
|
67
|
-
className:
|
|
68
|
-
style:
|
|
69
|
-
...
|
|
70
|
-
children:
|
|
68
|
+
ref: n,
|
|
69
|
+
className: b("brycks-table-head", s && "brycks-table-head--sticky", e),
|
|
70
|
+
style: y,
|
|
71
|
+
...r,
|
|
72
|
+
children: a
|
|
71
73
|
}
|
|
72
74
|
);
|
|
73
75
|
});
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
const
|
|
76
|
+
F.displayName = "TableHead";
|
|
77
|
+
const O = m(function({ className: t, style: e, children: l, ...a }, r) {
|
|
78
|
+
const n = {
|
|
77
79
|
...e
|
|
78
80
|
};
|
|
79
|
-
return /* @__PURE__ */
|
|
81
|
+
return /* @__PURE__ */ o(
|
|
80
82
|
"tbody",
|
|
81
83
|
{
|
|
82
|
-
ref:
|
|
83
|
-
className:
|
|
84
|
-
style:
|
|
85
|
-
...
|
|
86
|
-
children:
|
|
84
|
+
ref: r,
|
|
85
|
+
className: b("brycks-table-body", t),
|
|
86
|
+
style: n,
|
|
87
|
+
...a,
|
|
88
|
+
children: l
|
|
87
89
|
}
|
|
88
90
|
);
|
|
89
91
|
});
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
const { variant: s } = g(),
|
|
92
|
+
O.displayName = "TableBody";
|
|
93
|
+
const P = m(function({ selected: t = !1, clickable: e = !1, className: l, style: a, children: r, ...n }, d) {
|
|
94
|
+
const { variant: s } = g(), y = {
|
|
93
95
|
backgroundColor: t ? "var(--brycks-primary-muted)" : "transparent",
|
|
94
96
|
borderBottom: s !== "bordered" ? "1px solid var(--brycks-border-muted)" : void 0,
|
|
95
97
|
cursor: e ? "pointer" : void 0,
|
|
96
|
-
transition: `background-color ${T.quick}ms ${
|
|
97
|
-
...
|
|
98
|
+
transition: `background-color ${T.quick}ms ${S.easeOut}`,
|
|
99
|
+
...a
|
|
98
100
|
};
|
|
99
|
-
return /* @__PURE__ */
|
|
101
|
+
return /* @__PURE__ */ o(
|
|
100
102
|
"tr",
|
|
101
103
|
{
|
|
102
|
-
ref:
|
|
103
|
-
className:
|
|
104
|
+
ref: d,
|
|
105
|
+
className: b(
|
|
104
106
|
"brycks-table-row",
|
|
105
107
|
t && "brycks-table-row--selected",
|
|
106
108
|
e && "brycks-table-row--clickable",
|
|
107
|
-
|
|
109
|
+
l
|
|
108
110
|
),
|
|
109
|
-
style:
|
|
111
|
+
style: y,
|
|
110
112
|
onMouseEnter: (c) => {
|
|
111
113
|
e && !t && (c.currentTarget.style.backgroundColor = "var(--brycks-background-muted)");
|
|
112
114
|
},
|
|
113
115
|
onMouseLeave: (c) => {
|
|
114
116
|
t || (c.currentTarget.style.backgroundColor = "transparent");
|
|
115
117
|
},
|
|
116
|
-
...
|
|
117
|
-
children:
|
|
118
|
+
...n,
|
|
119
|
+
children: r
|
|
118
120
|
}
|
|
119
121
|
);
|
|
120
122
|
});
|
|
121
|
-
|
|
122
|
-
function
|
|
123
|
-
return i ? /* @__PURE__ */
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
-
/* @__PURE__ */
|
|
123
|
+
P.displayName = "TableRow";
|
|
124
|
+
function R({ direction: i }) {
|
|
125
|
+
return i ? /* @__PURE__ */ o("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: i === "asc" ? /* @__PURE__ */ o("path", { d: "M7 3L10 6H4L7 3Z", fill: "currentColor" }) : /* @__PURE__ */ o("path", { d: "M7 11L4 8H10L7 11Z", fill: "currentColor" }) }) : /* @__PURE__ */ $("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", style: { opacity: 0.4 }, "aria-hidden": "true", children: [
|
|
126
|
+
/* @__PURE__ */ o("path", { d: "M7 3L10 6H4L7 3Z", fill: "currentColor" }),
|
|
127
|
+
/* @__PURE__ */ o("path", { d: "M7 11L4 8H10L7 11Z", fill: "currentColor" })
|
|
126
128
|
] });
|
|
127
129
|
}
|
|
128
|
-
const
|
|
130
|
+
const Z = m(function({
|
|
129
131
|
sortable: t = !1,
|
|
130
132
|
sortDirection: e = null,
|
|
131
|
-
onSort:
|
|
132
|
-
align:
|
|
133
|
-
className:
|
|
134
|
-
style:
|
|
135
|
-
children:
|
|
133
|
+
onSort: l,
|
|
134
|
+
align: a = "left",
|
|
135
|
+
className: r,
|
|
136
|
+
style: n,
|
|
137
|
+
children: d,
|
|
136
138
|
...s
|
|
137
|
-
},
|
|
138
|
-
const { size: c } = g(),
|
|
139
|
-
padding: `${
|
|
139
|
+
}, y) {
|
|
140
|
+
const { size: c } = g(), u = x[c], h = {
|
|
141
|
+
padding: `${u.headerPaddingY}px ${u.headerPaddingX}px`,
|
|
140
142
|
fontWeight: 600,
|
|
141
143
|
color: "var(--brycks-foreground-muted)",
|
|
142
|
-
textAlign:
|
|
144
|
+
textAlign: a,
|
|
143
145
|
whiteSpace: "nowrap",
|
|
144
|
-
transition: `color ${T.quick}ms ${
|
|
145
|
-
...
|
|
146
|
-
},
|
|
146
|
+
transition: `color ${T.quick}ms ${S.easeOut}`,
|
|
147
|
+
...n
|
|
148
|
+
}, w = {
|
|
147
149
|
display: "flex",
|
|
148
150
|
alignItems: "center",
|
|
149
|
-
gap:
|
|
150
|
-
justifyContent:
|
|
151
|
-
},
|
|
152
|
-
...
|
|
151
|
+
gap: E.sm,
|
|
152
|
+
justifyContent: a === "right" ? "flex-end" : a === "center" ? "center" : "flex-start"
|
|
153
|
+
}, L = {
|
|
154
|
+
...w,
|
|
153
155
|
width: "100%",
|
|
154
156
|
padding: 0,
|
|
155
157
|
background: "transparent",
|
|
@@ -160,20 +162,20 @@ const O = u(function({
|
|
|
160
162
|
cursor: "pointer",
|
|
161
163
|
userSelect: "none"
|
|
162
164
|
};
|
|
163
|
-
return /* @__PURE__ */
|
|
165
|
+
return /* @__PURE__ */ o(
|
|
164
166
|
"th",
|
|
165
167
|
{
|
|
166
|
-
ref:
|
|
168
|
+
ref: y,
|
|
167
169
|
"aria-sort": t ? e === "asc" ? "ascending" : e === "desc" ? "descending" : "none" : void 0,
|
|
168
|
-
className:
|
|
170
|
+
className: b("brycks-table-header", t && "brycks-table-header--sortable", r),
|
|
169
171
|
style: h,
|
|
170
172
|
...s,
|
|
171
|
-
children: t ? /* @__PURE__ */
|
|
173
|
+
children: t ? /* @__PURE__ */ $(
|
|
172
174
|
"button",
|
|
173
175
|
{
|
|
174
176
|
type: "button",
|
|
175
|
-
style:
|
|
176
|
-
onClick: () =>
|
|
177
|
+
style: L,
|
|
178
|
+
onClick: () => l?.(),
|
|
177
179
|
onMouseEnter: (k) => {
|
|
178
180
|
k.currentTarget.style.color = "var(--brycks-foreground-default)";
|
|
179
181
|
},
|
|
@@ -181,88 +183,99 @@ const O = u(function({
|
|
|
181
183
|
k.currentTarget.style.color = "inherit";
|
|
182
184
|
},
|
|
183
185
|
children: [
|
|
184
|
-
|
|
185
|
-
/* @__PURE__ */
|
|
186
|
+
d,
|
|
187
|
+
/* @__PURE__ */ o(R, { direction: e })
|
|
186
188
|
]
|
|
187
189
|
}
|
|
188
|
-
) : /* @__PURE__ */
|
|
190
|
+
) : /* @__PURE__ */ o("span", { style: w, children: d })
|
|
189
191
|
}
|
|
190
192
|
);
|
|
191
193
|
});
|
|
192
|
-
|
|
193
|
-
const
|
|
194
|
-
const { size: s, variant:
|
|
194
|
+
Z.displayName = "TableHeader";
|
|
195
|
+
const z = m(function({ align: t = "left", truncate: e = !1, className: l, style: a, children: r, ...n }, d) {
|
|
196
|
+
const { size: s, variant: y } = g(), c = x[s], u = {
|
|
195
197
|
padding: `${c.paddingY}px ${c.paddingX}px`,
|
|
196
198
|
color: "var(--brycks-foreground-default)",
|
|
197
199
|
textAlign: t,
|
|
198
200
|
verticalAlign: "middle",
|
|
199
|
-
border:
|
|
201
|
+
border: y === "bordered" ? "1px solid var(--brycks-border-muted)" : void 0,
|
|
200
202
|
maxWidth: e ? 200 : void 0,
|
|
201
203
|
overflow: e ? "hidden" : void 0,
|
|
202
204
|
textOverflow: e ? "ellipsis" : void 0,
|
|
203
205
|
whiteSpace: e ? "nowrap" : void 0,
|
|
204
|
-
...
|
|
206
|
+
...a
|
|
205
207
|
};
|
|
206
|
-
return /* @__PURE__ */
|
|
208
|
+
return /* @__PURE__ */ o(
|
|
207
209
|
"td",
|
|
208
210
|
{
|
|
209
|
-
ref:
|
|
210
|
-
className:
|
|
211
|
-
style:
|
|
212
|
-
title: e && typeof
|
|
213
|
-
...
|
|
214
|
-
children:
|
|
211
|
+
ref: d,
|
|
212
|
+
className: b("brycks-table-cell", e && "brycks-table-cell--truncate", l),
|
|
213
|
+
style: u,
|
|
214
|
+
title: e && typeof r == "string" ? r : void 0,
|
|
215
|
+
...n,
|
|
216
|
+
children: r
|
|
215
217
|
}
|
|
216
218
|
);
|
|
217
219
|
});
|
|
218
|
-
|
|
219
|
-
const
|
|
220
|
-
const
|
|
220
|
+
z.displayName = "TableCell";
|
|
221
|
+
const j = m(function({ className: t, style: e, children: l, ...a }, r) {
|
|
222
|
+
const n = {
|
|
221
223
|
backgroundColor: "var(--brycks-background-muted)",
|
|
222
224
|
fontWeight: 500,
|
|
223
225
|
...e
|
|
224
226
|
};
|
|
225
|
-
return /* @__PURE__ */
|
|
227
|
+
return /* @__PURE__ */ o(
|
|
226
228
|
"tfoot",
|
|
227
229
|
{
|
|
228
|
-
ref:
|
|
229
|
-
className:
|
|
230
|
-
style:
|
|
231
|
-
...
|
|
232
|
-
children:
|
|
230
|
+
ref: r,
|
|
231
|
+
className: b("brycks-table-foot", t),
|
|
232
|
+
style: n,
|
|
233
|
+
...a,
|
|
234
|
+
children: l
|
|
233
235
|
}
|
|
234
236
|
);
|
|
235
237
|
});
|
|
236
|
-
|
|
237
|
-
const
|
|
238
|
-
const
|
|
238
|
+
j.displayName = "TableFoot";
|
|
239
|
+
const q = m(function({ placement: t = "bottom", className: e, style: l, children: a, ...r }, n) {
|
|
240
|
+
const d = {
|
|
239
241
|
captionSide: t,
|
|
240
242
|
padding: `${v[3]}px ${v[4]}px`,
|
|
241
|
-
fontSize:
|
|
243
|
+
fontSize: f.base - 1,
|
|
242
244
|
color: "var(--brycks-foreground-muted)",
|
|
243
245
|
textAlign: "left",
|
|
244
|
-
...
|
|
246
|
+
...l
|
|
245
247
|
};
|
|
246
|
-
return /* @__PURE__ */
|
|
248
|
+
return /* @__PURE__ */ o(
|
|
247
249
|
"caption",
|
|
248
250
|
{
|
|
249
|
-
ref:
|
|
250
|
-
className:
|
|
251
|
-
style:
|
|
252
|
-
...
|
|
253
|
-
children:
|
|
251
|
+
ref: n,
|
|
252
|
+
className: b("brycks-table-caption", e),
|
|
253
|
+
style: d,
|
|
254
|
+
...r,
|
|
255
|
+
children: a
|
|
254
256
|
}
|
|
255
257
|
);
|
|
256
258
|
});
|
|
257
|
-
|
|
259
|
+
q.displayName = "TableCaption";
|
|
260
|
+
const I = m(function({ colSpan: t, icon: e, title: l, description: a, action: r, className: n }, d) {
|
|
261
|
+
return /* @__PURE__ */ o("tr", { ref: d, className: b("brycks-table-empty", n), children: /* @__PURE__ */ o("td", { colSpan: t, style: { padding: 0 }, children: /* @__PURE__ */ o(B, { icon: e, title: l, description: a, action: r }) }) });
|
|
262
|
+
});
|
|
263
|
+
I.displayName = "TableEmpty";
|
|
264
|
+
const N = ["70%", "45%", "85%", "55%", "60%", "40%"];
|
|
265
|
+
function _({ rows: i = 5, columns: t, className: e }) {
|
|
266
|
+
return /* @__PURE__ */ o(X, { children: Array.from({ length: i }).map((l, a) => /* @__PURE__ */ o(P, { className: b("brycks-table-skeleton-row", e), "aria-hidden": "true", children: Array.from({ length: t }).map((r, n) => /* @__PURE__ */ o(z, { children: /* @__PURE__ */ o(A, { variant: "text", width: N[n % N.length] }) }, n)) }, a)) });
|
|
267
|
+
}
|
|
268
|
+
_.displayName = "TableSkeleton";
|
|
258
269
|
export {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
270
|
+
W as Table,
|
|
271
|
+
O as TableBody,
|
|
272
|
+
q as TableCaption,
|
|
273
|
+
z as TableCell,
|
|
274
|
+
I as TableEmpty,
|
|
275
|
+
j as TableFoot,
|
|
276
|
+
F as TableHead,
|
|
277
|
+
Z as TableHeader,
|
|
278
|
+
P as TableRow,
|
|
279
|
+
_ as TableSkeleton
|
|
267
280
|
};
|
|
268
281
|
//# sourceMappingURL=Table.js.map
|