@atelier-ui/react 0.0.6 → 0.0.7
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/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/table/llm-table.d.ts +33 -0
- package/src/lib/table/llm-table.d.ts.map +1 -0
- package/src/lib/table/llm-table.js +52 -0
- package/src/lib/table/llm-table.js.map +1 -0
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export * from './lib/radio-group/llm-radio-group';
|
|
|
16
16
|
export * from './lib/radio/llm-radio';
|
|
17
17
|
export * from './lib/select/llm-select';
|
|
18
18
|
export * from './lib/skeleton/llm-skeleton';
|
|
19
|
+
export * from './lib/table/llm-table';
|
|
19
20
|
export * from './lib/tabs/llm-tabs';
|
|
20
21
|
export * from './lib/textarea/llm-textarea';
|
|
21
22
|
export * from './lib/toast/llm-toast';
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/react/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/react/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export * from './lib/radio-group/llm-radio-group';
|
|
|
16
16
|
export * from './lib/radio/llm-radio';
|
|
17
17
|
export * from './lib/select/llm-select';
|
|
18
18
|
export * from './lib/skeleton/llm-skeleton';
|
|
19
|
+
export * from './lib/table/llm-table';
|
|
19
20
|
export * from './lib/tabs/llm-tabs';
|
|
20
21
|
export * from './lib/textarea/llm-textarea';
|
|
21
22
|
export * from './lib/toast/llm-toast';
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/react/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC","sourcesContent":["export * from './lib/accordion/llm-accordion';\nexport * from './lib/alert/llm-alert';\nexport * from './lib/avatar/llm-avatar';\nexport * from './lib/badge/llm-badge';\nexport * from './lib/breadcrumbs/llm-breadcrumbs';\nexport * from './lib/button/llm-button';\nexport * from './lib/card/llm-card';\nexport * from './lib/checkbox/llm-checkbox';\nexport * from './lib/dialog/llm-dialog';\nexport * from './lib/drawer/llm-drawer';\nexport * from './lib/input/llm-input';\nexport * from './lib/menu/llm-menu';\nexport * from './lib/pagination/llm-pagination';\nexport * from './lib/progress/llm-progress';\nexport * from './lib/radio-group/llm-radio-group';\nexport * from './lib/radio/llm-radio';\nexport * from './lib/select/llm-select';\nexport * from './lib/skeleton/llm-skeleton';\nexport * from './lib/tabs/llm-tabs';\nexport * from './lib/textarea/llm-textarea';\nexport * from './lib/toast/llm-toast';\nexport * from './lib/toggle/llm-toggle';\nexport * from './lib/tooltip/llm-tooltip';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/react/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC","sourcesContent":["export * from './lib/accordion/llm-accordion';\nexport * from './lib/alert/llm-alert';\nexport * from './lib/avatar/llm-avatar';\nexport * from './lib/badge/llm-badge';\nexport * from './lib/breadcrumbs/llm-breadcrumbs';\nexport * from './lib/button/llm-button';\nexport * from './lib/card/llm-card';\nexport * from './lib/checkbox/llm-checkbox';\nexport * from './lib/dialog/llm-dialog';\nexport * from './lib/drawer/llm-drawer';\nexport * from './lib/input/llm-input';\nexport * from './lib/menu/llm-menu';\nexport * from './lib/pagination/llm-pagination';\nexport * from './lib/progress/llm-progress';\nexport * from './lib/radio-group/llm-radio-group';\nexport * from './lib/radio/llm-radio';\nexport * from './lib/select/llm-select';\nexport * from './lib/skeleton/llm-skeleton';\nexport * from './lib/table/llm-table';\nexport * from './lib/tabs/llm-tabs';\nexport * from './lib/textarea/llm-textarea';\nexport * from './lib/toast/llm-toast';\nexport * from './lib/toggle/llm-toggle';\nexport * from './lib/tooltip/llm-tooltip';\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';
|
|
2
|
+
import type { LlmTableSpec, LlmTbodySpec, LlmTrSpec, LlmThSpec, LlmTdSpec, LlmSortDirection } from '@atelier-ui/spec';
|
|
3
|
+
import './llm-table.css';
|
|
4
|
+
export type { LlmSortDirection };
|
|
5
|
+
export interface LlmTableProps extends HTMLAttributes<HTMLDivElement>, LlmTableSpec {
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function LlmTable({ variant, size, stickyHeader, children, className, ...rest }: LlmTableProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export interface LlmTheadProps {
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare function LlmThead({ children }: LlmTheadProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export interface LlmTbodyProps extends LlmTbodySpec {
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
/** Content shown in place of rows when empty=true. */
|
|
16
|
+
emptyContent?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export declare function LlmTbody({ empty, colSpan, children, emptyContent }: LlmTbodyProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export interface LlmTrProps extends LlmTrSpec {
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
onSelectedChange?: (selected: boolean) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function LlmTr({ selected, selectable, children, onSelectedChange, }: LlmTrProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export interface LlmThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmThSpec {
|
|
25
|
+
children?: ReactNode;
|
|
26
|
+
onSort?: (direction: LlmSortDirection) => void;
|
|
27
|
+
}
|
|
28
|
+
export declare function LlmTh({ sortable, sortDirection, align, width, children, onSort, className, ...rest }: LlmThProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export interface LlmTdProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmTdSpec {
|
|
30
|
+
children?: ReactNode;
|
|
31
|
+
}
|
|
32
|
+
export declare function LlmTd({ align, children, className, ...rest }: LlmTdProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=llm-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-table.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/llm-table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,iBAAiB,CAAC;AAEzB,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAMjC,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY;IACjF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAmB,EACnB,IAAW,EACX,YAAoB,EACpB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,2CAkBf;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAEnD;AAMD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAa,EAAE,OAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,2CAc7F;AAMD,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,UAAkB,EAClB,QAAQ,EACR,gBAAgB,GACjB,EAAE,UAAU,2CAWZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,aAAoB,EACpB,KAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,2CAoDZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CAOlF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { LlmCheckbox } from '../checkbox/llm-checkbox';
|
|
3
|
+
import './llm-table.css';
|
|
4
|
+
export function LlmTable({ variant = 'default', size = 'md', stickyHeader = false, children, className, ...rest }) {
|
|
5
|
+
const classes = [
|
|
6
|
+
'llm-table',
|
|
7
|
+
`variant-${variant}`,
|
|
8
|
+
`size-${size}`,
|
|
9
|
+
stickyHeader && 'is-sticky-header',
|
|
10
|
+
className,
|
|
11
|
+
]
|
|
12
|
+
.filter(Boolean)
|
|
13
|
+
.join(' ');
|
|
14
|
+
return (_jsx("div", { className: classes, ...rest, children: _jsx("div", { className: "llm-table-wrapper", children: _jsx("table", { children: children }) }) }));
|
|
15
|
+
}
|
|
16
|
+
export function LlmThead({ children }) {
|
|
17
|
+
return _jsx("thead", { children: children });
|
|
18
|
+
}
|
|
19
|
+
export function LlmTbody({ empty = false, colSpan = 1, children, emptyContent }) {
|
|
20
|
+
return (_jsx("tbody", { children: !empty ? (children) : (_jsx("tr", { children: _jsx("td", { colSpan: colSpan, className: "llm-tbody-empty-cell", children: emptyContent }) })) }));
|
|
21
|
+
}
|
|
22
|
+
export function LlmTr({ selected = false, selectable = false, children, onSelectedChange, }) {
|
|
23
|
+
return (_jsxs("tr", { "aria-selected": selectable ? selected : undefined, className: selected ? 'is-selected' : undefined, children: [selectable && (_jsx("td", { className: "llm-tr-select-cell", children: _jsx(LlmCheckbox, { checked: selected, onCheckedChange: onSelectedChange }) })), children] }));
|
|
24
|
+
}
|
|
25
|
+
export function LlmTh({ sortable = false, sortDirection = null, align = 'start', width, children, onSort, className, ...rest }) {
|
|
26
|
+
const classes = [
|
|
27
|
+
`align-${align}`,
|
|
28
|
+
sortDirection && 'is-sorted',
|
|
29
|
+
sortDirection === 'asc' && 'sort-asc',
|
|
30
|
+
sortDirection === 'desc' && 'sort-desc',
|
|
31
|
+
className,
|
|
32
|
+
]
|
|
33
|
+
.filter(Boolean)
|
|
34
|
+
.join(' ') || undefined;
|
|
35
|
+
const ariaSort = sortable
|
|
36
|
+
? sortDirection === 'asc'
|
|
37
|
+
? 'ascending'
|
|
38
|
+
: sortDirection === 'desc'
|
|
39
|
+
? 'descending'
|
|
40
|
+
: 'none'
|
|
41
|
+
: undefined;
|
|
42
|
+
function cycleSort() {
|
|
43
|
+
const next = sortDirection === null ? 'asc' : sortDirection === 'asc' ? 'desc' : null;
|
|
44
|
+
onSort?.(next);
|
|
45
|
+
}
|
|
46
|
+
return (_jsx("th", { "aria-sort": ariaSort, style: width ? { width } : undefined, className: classes, ...rest, children: sortable ? (_jsxs("button", { type: "button", className: "llm-th-sort-btn", onClick: cycleSort, children: [children, _jsxs("svg", { className: "llm-th-sort-icon", "aria-hidden": "true", width: "12", height: "16", viewBox: "0 0 12 16", fill: "none", children: [_jsx("path", { className: "llm-th-sort-asc-arrow", d: "M6 2L11 8H1L6 2Z", fill: "currentColor" }), _jsx("path", { className: "llm-th-sort-desc-arrow", d: "M6 14L1 8H11L6 14Z", fill: "currentColor" })] })] })) : (children) }));
|
|
47
|
+
}
|
|
48
|
+
export function LlmTd({ align = 'start', children, className, ...rest }) {
|
|
49
|
+
const classes = [`align-${align}`, className].filter(Boolean).join(' ');
|
|
50
|
+
return (_jsx("td", { className: classes, ...rest, children: children }));
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=llm-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-table.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/llm-table.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,iBAAiB,CAAC;AAYzB,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,YAAY,GAAG,KAAK,EACpB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACO;IACd,MAAM,OAAO,GAAG;QACd,WAAW;QACX,WAAW,OAAO,EAAE;QACpB,QAAQ,IAAI,EAAE;QACd,YAAY,IAAI,kBAAkB;QAClC,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,cAAK,SAAS,EAAE,OAAO,KAAM,IAAI,YAC/B,cAAK,SAAS,EAAC,mBAAmB,YAChC,0BAAQ,QAAQ,GAAS,GACrB,GACF,CACP,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAClD,OAAO,0BAAQ,QAAQ,GAAS,CAAC;AACnC,CAAC;AAYD,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAiB;IAC5F,OAAO,CACL,0BACG,CAAC,KAAK,CAAC,CAAC,CAAC,CACR,QAAQ,CACT,CAAC,CAAC,CAAC,CACF,uBACE,aAAI,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,sBAAsB,YACnD,YAAY,GACV,GACF,CACN,GACK,CACT,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,KAAK,CAAC,EACpB,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,EAClB,QAAQ,EACR,gBAAgB,GACL;IACX,OAAO,CACL,+BAAmB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,aAClG,UAAU,IAAI,CACb,aAAI,SAAS,EAAC,oBAAoB,YAChC,KAAC,WAAW,IAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,GAAI,GAClE,CACN,EACA,QAAQ,IACN,CACN,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,KAAK,CAAC,EACpB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,IAAI,EACpB,KAAK,GAAG,OAAO,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACI;IACX,MAAM,OAAO,GAAG;QACd,SAAS,KAAK,EAAE;QAChB,aAAa,IAAI,WAAW;QAC5B,aAAa,KAAK,KAAK,IAAI,UAAU;QACrC,aAAa,KAAK,MAAM,IAAI,WAAW;QACvC,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAE1B,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,aAAa,KAAK,KAAK;YACvB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,aAAa,KAAK,MAAM;gBACxB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,MAAM;QACZ,CAAC,CAAC,SAAS,CAAC;IAEd,SAAS,SAAS;QAChB,MAAM,IAAI,GACR,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CACL,0BACa,QAAQ,EACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EACpC,SAAS,EAAE,OAAO,KACd,IAAI,YAEP,QAAQ,CAAC,CAAC,CAAC,CACV,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,SAAS,aACjE,QAAQ,EACT,eACE,SAAS,EAAC,kBAAkB,iBAChB,MAAM,EAClB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,aAEX,eAAM,SAAS,EAAC,uBAAuB,EAAC,CAAC,EAAC,kBAAkB,EAAC,IAAI,EAAC,cAAc,GAAG,EACnF,eAAM,SAAS,EAAC,wBAAwB,EAAC,CAAC,EAAC,oBAAoB,EAAC,IAAI,EAAC,cAAc,GAAG,IAClF,IACC,CACV,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,GACE,CACN,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAc;IACjF,MAAM,OAAO,GAAG,CAAC,SAAS,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,OAAO,CACL,aAAI,SAAS,EAAE,OAAO,KAAM,IAAI,YAC7B,QAAQ,GACN,CACN,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';\nimport type {\n LlmTableSpec,\n LlmTbodySpec,\n LlmTrSpec,\n LlmThSpec,\n LlmTdSpec,\n LlmSortDirection,\n} from '@atelier-ui/spec';\nimport { LlmCheckbox } from '../checkbox/llm-checkbox';\nimport './llm-table.css';\n\nexport type { LlmSortDirection };\n\n// ---------------------------------------------------------------------------\n// LlmTable\n// ---------------------------------------------------------------------------\n\nexport interface LlmTableProps extends HTMLAttributes<HTMLDivElement>, LlmTableSpec {\n children?: ReactNode;\n}\n\nexport function LlmTable({\n variant = 'default',\n size = 'md',\n stickyHeader = false,\n children,\n className,\n ...rest\n}: LlmTableProps) {\n const classes = [\n 'llm-table',\n `variant-${variant}`,\n `size-${size}`,\n stickyHeader && 'is-sticky-header',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} {...rest}>\n <div className=\"llm-table-wrapper\">\n <table>{children}</table>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmThead\n// ---------------------------------------------------------------------------\n\nexport interface LlmTheadProps {\n children?: ReactNode;\n}\n\nexport function LlmThead({ children }: LlmTheadProps) {\n return <thead>{children}</thead>;\n}\n\n// ---------------------------------------------------------------------------\n// LlmTbody\n// ---------------------------------------------------------------------------\n\nexport interface LlmTbodyProps extends LlmTbodySpec {\n children?: ReactNode;\n /** Content shown in place of rows when empty=true. */\n emptyContent?: ReactNode;\n}\n\nexport function LlmTbody({ empty = false, colSpan = 1, children, emptyContent }: LlmTbodyProps) {\n return (\n <tbody>\n {!empty ? (\n children\n ) : (\n <tr>\n <td colSpan={colSpan} className=\"llm-tbody-empty-cell\">\n {emptyContent}\n </td>\n </tr>\n )}\n </tbody>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTr\n// ---------------------------------------------------------------------------\n\nexport interface LlmTrProps extends LlmTrSpec {\n children?: ReactNode;\n onSelectedChange?: (selected: boolean) => void;\n}\n\nexport function LlmTr({\n selected = false,\n selectable = false,\n children,\n onSelectedChange,\n}: LlmTrProps) {\n return (\n <tr aria-selected={selectable ? selected : undefined} className={selected ? 'is-selected' : undefined}>\n {selectable && (\n <td className=\"llm-tr-select-cell\">\n <LlmCheckbox checked={selected} onCheckedChange={onSelectedChange} />\n </td>\n )}\n {children}\n </tr>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTh\n// ---------------------------------------------------------------------------\n\nexport interface LlmThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmThSpec {\n children?: ReactNode;\n onSort?: (direction: LlmSortDirection) => void;\n}\n\nexport function LlmTh({\n sortable = false,\n sortDirection = null,\n align = 'start',\n width,\n children,\n onSort,\n className,\n ...rest\n}: LlmThProps) {\n const classes = [\n `align-${align}`,\n sortDirection && 'is-sorted',\n sortDirection === 'asc' && 'sort-asc',\n sortDirection === 'desc' && 'sort-desc',\n className,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const ariaSort = sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined;\n\n function cycleSort() {\n const next: LlmSortDirection =\n sortDirection === null ? 'asc' : sortDirection === 'asc' ? 'desc' : null;\n onSort?.(next);\n }\n\n return (\n <th\n aria-sort={ariaSort}\n style={width ? { width } : undefined}\n className={classes}\n {...rest}\n >\n {sortable ? (\n <button type=\"button\" className=\"llm-th-sort-btn\" onClick={cycleSort}>\n {children}\n <svg\n className=\"llm-th-sort-icon\"\n aria-hidden=\"true\"\n width=\"12\"\n height=\"16\"\n viewBox=\"0 0 12 16\"\n fill=\"none\"\n >\n <path className=\"llm-th-sort-asc-arrow\" d=\"M6 2L11 8H1L6 2Z\" fill=\"currentColor\" />\n <path className=\"llm-th-sort-desc-arrow\" d=\"M6 14L1 8H11L6 14Z\" fill=\"currentColor\" />\n </svg>\n </button>\n ) : (\n children\n )}\n </th>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTd\n// ---------------------------------------------------------------------------\n\nexport interface LlmTdProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmTdSpec {\n children?: ReactNode;\n}\n\nexport function LlmTd({ align = 'start', children, className, ...rest }: LlmTdProps) {\n const classes = [`align-${align}`, className].filter(Boolean).join(' ');\n return (\n <td className={classes} {...rest}>\n {children}\n </td>\n );\n}\n"]}
|