@tribepad/themis 1.5.9 → 1.6.1

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
  3. package/dist/elements/Checkbox/index.js +1 -1
  4. package/dist/elements/Checkbox/index.js.map +1 -1
  5. package/dist/elements/Checkbox/index.mjs +1 -1
  6. package/dist/elements/Checkbox/index.mjs.map +1 -1
  7. package/dist/elements/Filters/AppliedFilters.d.ts +4 -0
  8. package/dist/elements/Filters/AppliedFilters.d.ts.map +1 -0
  9. package/dist/elements/Filters/FilterPopover.d.ts +33 -0
  10. package/dist/elements/Filters/FilterPopover.d.ts.map +1 -0
  11. package/dist/elements/Filters/Filters.d.ts +25 -0
  12. package/dist/elements/Filters/Filters.d.ts.map +1 -0
  13. package/dist/elements/Filters/Filters.styles.d.ts +24 -0
  14. package/dist/elements/Filters/Filters.styles.d.ts.map +1 -0
  15. package/dist/elements/Filters/Filters.types.d.ts +123 -0
  16. package/dist/elements/Filters/Filters.types.d.ts.map +1 -0
  17. package/dist/elements/Filters/FiltersContext.d.ts +36 -0
  18. package/dist/elements/Filters/FiltersContext.d.ts.map +1 -0
  19. package/dist/elements/Filters/index.css +2 -0
  20. package/dist/elements/Filters/index.css.map +1 -0
  21. package/dist/elements/Filters/index.d.ts +26 -0
  22. package/dist/elements/Filters/index.d.ts.map +1 -0
  23. package/dist/elements/Filters/index.js +3 -0
  24. package/dist/elements/Filters/index.js.map +1 -0
  25. package/dist/elements/Filters/index.mjs +3 -0
  26. package/dist/elements/Filters/index.mjs.map +1 -0
  27. package/dist/elements/PasswordField/PasswordField.types.d.ts +34 -34
  28. package/dist/elements/Sidebar/index.js +1 -1
  29. package/dist/elements/Sidebar/index.js.map +1 -1
  30. package/dist/elements/Sidebar/index.mjs +1 -1
  31. package/dist/elements/Sidebar/index.mjs.map +1 -1
  32. package/dist/elements/Table/BulkActionBar.d.ts +5 -0
  33. package/dist/elements/Table/BulkActionBar.d.ts.map +1 -0
  34. package/dist/elements/Table/BulkActionBar.styles.d.ts +17 -0
  35. package/dist/elements/Table/BulkActionBar.styles.d.ts.map +1 -0
  36. package/dist/elements/Table/BulkActionBar.types.d.ts +136 -0
  37. package/dist/elements/Table/BulkActionBar.types.d.ts.map +1 -0
  38. package/dist/elements/Table/Table.d.ts +4 -5
  39. package/dist/elements/Table/Table.d.ts.map +1 -1
  40. package/dist/elements/Table/Table.styles.d.ts +2 -3
  41. package/dist/elements/Table/Table.styles.d.ts.map +1 -1
  42. package/dist/elements/Table/Table.types.d.ts +14 -30
  43. package/dist/elements/Table/Table.types.d.ts.map +1 -1
  44. package/dist/elements/Table/TableCardList.d.ts +25 -0
  45. package/dist/elements/Table/TableCardList.d.ts.map +1 -0
  46. package/dist/elements/Table/TableCardList.styles.d.ts +15 -0
  47. package/dist/elements/Table/TableCardList.styles.d.ts.map +1 -0
  48. package/dist/elements/Table/TableCardList.types.d.ts +48 -0
  49. package/dist/elements/Table/TableCardList.types.d.ts.map +1 -0
  50. package/dist/elements/Table/index.d.ts +12 -3
  51. package/dist/elements/Table/index.d.ts.map +1 -1
  52. package/dist/elements/Table/index.js +1 -1
  53. package/dist/elements/Table/index.js.map +1 -1
  54. package/dist/elements/Table/index.mjs +1 -1
  55. package/dist/elements/Table/index.mjs.map +1 -1
  56. package/dist/elements/Table/resolveSelectedCount.d.ts +20 -0
  57. package/dist/elements/Table/resolveSelectedCount.d.ts.map +1 -0
  58. package/dist/elements/Table/useBulkActionShortcut.d.ts +29 -0
  59. package/dist/elements/Table/useBulkActionShortcut.d.ts.map +1 -0
  60. package/dist/elements/TextField/TextField.types.d.ts +68 -68
  61. package/dist/elements/index.d.ts +4 -1
  62. package/dist/elements/index.d.ts.map +1 -1
  63. package/dist/elements/index.js +1 -1
  64. package/dist/elements/index.js.map +1 -1
  65. package/dist/elements/index.mjs +1 -1
  66. package/dist/elements/index.mjs.map +1 -1
  67. package/dist/hooks/index.d.ts +1 -0
  68. package/dist/hooks/index.d.ts.map +1 -1
  69. package/dist/hooks/index.js +1 -1
  70. package/dist/hooks/index.js.map +1 -1
  71. package/dist/hooks/index.mjs +1 -1
  72. package/dist/hooks/index.mjs.map +1 -1
  73. package/dist/hooks/useContainerNarrow.d.ts +15 -0
  74. package/dist/hooks/useContainerNarrow.d.ts.map +1 -0
  75. package/dist/index.js +2 -2
  76. package/dist/index.js.map +1 -1
  77. package/dist/index.mjs +2 -2
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/styles/defaults.css +15 -0
  80. package/package.json +6 -1
  81. package/src/elements/Filters/Filters.stories.tsx +148 -0
  82. package/src/elements/Sidebar/Sidebar.stories.tsx +1 -1
  83. package/src/elements/Table/Table.stories.tsx +467 -10
@@ -0,0 +1,17 @@
1
+ /**
2
+ * BulkActionBar wrapper. Appears above the table when rows are selected.
3
+ * Sticky by default so it stays reachable while the user scrolls + selects.
4
+ */
5
+ export declare const bulkActionBarVariants: (props?: ({
6
+ sticky?: boolean | null | undefined;
7
+ framed?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ /** The roving toolbar region inside the bar. */
10
+ export declare const bulkActionToolbarVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
11
+ /** The visible (decorative) jump-shortcut hint. */
12
+ export declare const bulkActionHintVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ /** The kbd key inside the jump-shortcut hint. */
14
+ export declare const bulkActionKbdVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
15
+ /** A bulk action button — outline on the lilac band, brand-coloured text + icon. */
16
+ export declare const bulkActionButtonVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
17
+ //# sourceMappingURL=BulkActionBar.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkActionBar.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/BulkActionBar.styles.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;8EA4BjC,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,oFAEpC,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,oFAEjC,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,oFAKhC,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,oFAGnC,CAAC"}
@@ -0,0 +1,136 @@
1
+ import { z } from 'zod';
2
+ import type { ReactNode } from 'react';
3
+ /**
4
+ * A single action shown in the {@link BulkActionBar} toolbar.
5
+ * The bar is domain-free: the consumer supplies translated labels + icons.
6
+ */
7
+ export interface BulkAction {
8
+ /** Stable identifier; passed back to `onAction`. */
9
+ id: string;
10
+ /** Visible label (consumer-translated). */
11
+ label: string;
12
+ /** Optional leading icon (decorative — the bar applies `aria-hidden`). */
13
+ icon?: ReactNode;
14
+ /** Visual emphasis. `'danger'` renders the destructive treatment. */
15
+ tone?: 'default' | 'danger';
16
+ /** Per-action disable (e.g. an action invalid for the current selection). */
17
+ isDisabled?: boolean;
18
+ }
19
+ export declare const BulkActionSchema: z.ZodObject<{
20
+ id: z.ZodString;
21
+ label: z.ZodString;
22
+ icon: z.ZodOptional<z.ZodCustom<ReactNode, ReactNode>>;
23
+ tone: z.ZodOptional<z.ZodEnum<{
24
+ default: "default";
25
+ danger: "danger";
26
+ }>>;
27
+ isDisabled: z.ZodOptional<z.ZodBoolean>;
28
+ }, z.core.$strip>;
29
+ /**
30
+ * i18n strings the (domain-free) bar needs. The bar never calls
31
+ * `useTranslations` — the consumer owns all copy.
32
+ */
33
+ export interface BulkActionBarLabels {
34
+ /** e.g. `(n) => "{n} selected"` — drives the visible count + the live announcement. */
35
+ selectedCount: (count: number) => string;
36
+ /** Label for the leading "Clear" control. */
37
+ clear: string;
38
+ /** Toolbar `aria-label`, e.g. `(n) => "Bulk actions for {n} selected"`. */
39
+ toolbarLabel: (count: number) => string;
40
+ /**
41
+ * Optional screen-reader clause stating how many actions are available, e.g.
42
+ * `(n) => "{n} actions available"`. Folded into the live announcement (derived
43
+ * from `actions.length`) so SR users know the toolbar holds more than one control.
44
+ */
45
+ actionsAvailable?: (count: number) => string;
46
+ /**
47
+ * Visible jump-shortcut hint. Receives the styled `<kbd>` key node so the
48
+ * consumer can place it within translated text, e.g. `(key) => <>Press {key} to jump here</>`.
49
+ */
50
+ jumpHint?: (key: ReactNode) => ReactNode;
51
+ /** Screen-reader announcement of the shortcut (plain text), e.g. "Press A to jump to bulk actions". */
52
+ jumpAnnouncement?: string;
53
+ }
54
+ export declare const BulkActionBarLabelsSchema: z.ZodObject<{
55
+ selectedCount: z.ZodCustom<(count: number) => string, (count: number) => string>;
56
+ clear: z.ZodString;
57
+ toolbarLabel: z.ZodCustom<(count: number) => string, (count: number) => string>;
58
+ actionsAvailable: z.ZodOptional<z.ZodCustom<(count: number) => string, (count: number) => string>>;
59
+ jumpHint: z.ZodOptional<z.ZodCustom<(key: ReactNode) => ReactNode, (key: ReactNode) => ReactNode>>;
60
+ jumpAnnouncement: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strip>;
62
+ export declare const BulkActionBarPropsSchema: z.ZodObject<{
63
+ className: z.ZodOptional<z.ZodString>;
64
+ children: z.ZodOptional<z.ZodAny>;
65
+ id: z.ZodOptional<z.ZodString>;
66
+ 'aria-label': z.ZodOptional<z.ZodString>;
67
+ 'aria-labelledby': z.ZodOptional<z.ZodString>;
68
+ 'aria-describedby': z.ZodOptional<z.ZodString>;
69
+ 'aria-live': z.ZodOptional<z.ZodEnum<{
70
+ off: "off";
71
+ polite: "polite";
72
+ assertive: "assertive";
73
+ }>>;
74
+ 'aria-hidden': z.ZodOptional<z.ZodBoolean>;
75
+ 'data-testid': z.ZodOptional<z.ZodString>;
76
+ selectedCount: z.ZodNumber;
77
+ actions: z.ZodArray<z.ZodObject<{
78
+ id: z.ZodString;
79
+ label: z.ZodString;
80
+ icon: z.ZodOptional<z.ZodCustom<ReactNode, ReactNode>>;
81
+ tone: z.ZodOptional<z.ZodEnum<{
82
+ default: "default";
83
+ danger: "danger";
84
+ }>>;
85
+ isDisabled: z.ZodOptional<z.ZodBoolean>;
86
+ }, z.core.$strip>>;
87
+ onAction: z.ZodCustom<(id: string) => void, (id: string) => void>;
88
+ onClearSelection: z.ZodCustom<() => void, () => void>;
89
+ sticky: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
90
+ framed: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
91
+ showJumpHint: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
92
+ shortcutKey: z.ZodDefault<z.ZodOptional<z.ZodString>>;
93
+ labels: z.ZodObject<{
94
+ selectedCount: z.ZodCustom<(count: number) => string, (count: number) => string>;
95
+ clear: z.ZodString;
96
+ toolbarLabel: z.ZodCustom<(count: number) => string, (count: number) => string>;
97
+ actionsAvailable: z.ZodOptional<z.ZodCustom<(count: number) => string, (count: number) => string>>;
98
+ jumpHint: z.ZodOptional<z.ZodCustom<(key: ReactNode) => ReactNode, (key: ReactNode) => ReactNode>>;
99
+ jumpAnnouncement: z.ZodOptional<z.ZodString>;
100
+ }, z.core.$strip>;
101
+ }, z.core.$strip>;
102
+ export interface BulkActionBarProps {
103
+ /**
104
+ * Number of selected rows. Drives the visible count, the `aria-live`
105
+ * announcement, and whether the toolbar renders. Compute it from your
106
+ * React-Aria `Selection` with {@link resolveSelectedCount} so the `'all'`
107
+ * sentinel is handled correctly.
108
+ */
109
+ selectedCount: number;
110
+ /** Actions, in toolbar order. Rendered after the "Clear" control. */
111
+ actions: BulkAction[];
112
+ /** Invoked with the action id when an action is activated. */
113
+ onAction: (id: string) => void;
114
+ /** Clears the consumer's selection. Renders the leading "Clear" control. */
115
+ onClearSelection: () => void;
116
+ /** Stick to the top of the scroll container. Default `true`. */
117
+ sticky?: boolean;
118
+ /**
119
+ * Render as a self-contained Card (border + rounded corners) for standalone use
120
+ * outside the Table's `toolbar` slot. Default `false` (bottom rule only — the
121
+ * Table card frame supplies the border).
122
+ */
123
+ framed?: boolean;
124
+ /**
125
+ * Show the jump-shortcut hint (visible + announced). Set `true` ONLY when the
126
+ * consumer has wired {@link useBulkActionShortcut}. Default `false`.
127
+ */
128
+ showJumpHint?: boolean;
129
+ /** The key letter shown in the jump-shortcut `<kbd>`. Default `'A'`. */
130
+ shortcutKey?: string;
131
+ /** i18n strings — the bar is domain-free and must not call `useTranslations`. */
132
+ labels: BulkActionBarLabels;
133
+ className?: string;
134
+ 'data-testid'?: string;
135
+ }
136
+ //# sourceMappingURL=BulkActionBar.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkActionBar.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/BulkActionBar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;iBAM3B,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC;IACzC,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB;uCACJ,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;;sCAElB,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;wDACb,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;8CAC3B,SAAS,KAAK,SAAS,QAAvB,SAAS,KAAK,SAAS;;iBAEhD,CAAC;AAMH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;+BAGX,MAAM,KAAK,IAAI,OAAf,MAAM,KAAK,IAAI;wCACN,IAAI,QAAJ,IAAI;;;;;;2CAhBL,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;;0CAElB,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;4DACb,MAAM,KAAK,MAAM,UAAjB,MAAM,KAAK,MAAM;kDAC3B,SAAS,KAAK,SAAS,QAAvB,SAAS,KAAK,SAAS;;;iBA2BhD,CAAC;AAEH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -8,8 +8,8 @@
8
8
  */
9
9
  import { type ReactElement, type ForwardedRef } from 'react';
10
10
  import { type Selection, type SortDescriptor } from 'react-aria-components';
11
- import { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, tableCaptionVariants, columnVariants, rowVariants, cellVariants } from './Table.styles';
12
- import type { TableProps, TableHeaderProps, TableBodyProps, TableFooterProps, TableCaptionProps, ColumnProps, RowProps, CellProps } from './Table.types';
11
+ import { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, columnVariants, rowVariants, cellVariants } from './Table.styles';
12
+ import type { TableProps, TableHeaderProps, TableBodyProps, TableFooterProps, ColumnProps, RowProps, CellProps } from './Table.types';
13
13
  declare const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLTableElement>>;
14
14
  declare const TableHeader: <T extends object>(props: TableHeaderProps<T> & {
15
15
  ref?: ForwardedRef<HTMLTableSectionElement>;
@@ -18,13 +18,12 @@ declare const TableBody: <T extends object>(props: TableBodyProps<T> & {
18
18
  ref?: ForwardedRef<HTMLTableSectionElement>;
19
19
  }) => ReactElement;
20
20
  declare const TableFooter: import("react").ForwardRefExoticComponent<TableFooterProps & import("react").RefAttributes<HTMLTableSectionElement>>;
21
- declare const TableCaption: import("react").ForwardRefExoticComponent<TableCaptionProps & import("react").RefAttributes<HTMLTableCaptionElement>>;
22
21
  declare const Column: import("react").ForwardRefExoticComponent<ColumnProps & import("react").RefAttributes<HTMLTableCellElement>>;
23
22
  declare const Row: <T extends object>(props: RowProps<T> & {
24
23
  ref?: ForwardedRef<HTMLTableRowElement>;
25
24
  }) => ReactElement;
26
25
  declare const Cell: import("react").NamedExoticComponent<CellProps & import("react").RefAttributes<HTMLTableCellElement>>;
27
- export { Table, TableHeader, TableBody, TableFooter, TableCaption, Column, Row, Cell, };
28
- export { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, tableCaptionVariants, columnVariants, rowVariants, cellVariants, };
26
+ export { Table, TableHeader, TableBody, TableFooter, Column, Row, Cell, };
27
+ export { tableContainerVariants, tableVariants, tableHeaderVariants, tableFooterVariants, columnVariants, rowVariants, cellVariants, };
29
28
  export type { Selection, SortDescriptor };
30
29
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAaL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,EAGV,MAAM,eAAe,CAAC;AAwBvB,QAAA,MAAM,KAAK,yGAmEV,CAAC;AAwCF,QAAA,MAAM,WAAW,EAAmC,CAAC,CAAC,SAAS,MAAM,EACnE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACzE,YAAY,CAAC;AAoClB,QAAA,MAAM,SAAS,EAAiC,CAAC,CAAC,SAAS,MAAM,EAC/D,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACvE,YAAY,CAAC;AAQlB,QAAA,MAAM,WAAW,sHAahB,CAAC;AAQF,QAAA,MAAM,YAAY,uHAajB,CAAC;AAQF,QAAA,MAAM,MAAM,8GA6CX,CAAC;AA0DF,QAAA,MAAM,GAAG,EAA2B,CAAC,CAAC,SAAS,MAAM,EACnD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CAAE,KAC7D,YAAY,CAAC;AAQlB,QAAA,MAAM,IAAI,uGAcR,CAAC;AAQH,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,GAAG,EACH,IAAI,GACL,CAAC;AAGF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,GACb,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAaL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,SAAS,EAGV,MAAM,eAAe,CAAC;AA0BvB,QAAA,MAAM,KAAK,yGAuEV,CAAC;AAwCF,QAAA,MAAM,WAAW,EAAmC,CAAC,CAAC,SAAS,MAAM,EACnE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACzE,YAAY,CAAC;AAmClB,QAAA,MAAM,SAAS,EAAiC,CAAC,CAAC,SAAS,MAAM,EAC/D,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAA;CAAE,KACvE,YAAY,CAAC;AAQlB,QAAA,MAAM,WAAW,sHAahB,CAAC;AAQF,QAAA,MAAM,MAAM,8GAwDX,CAAC;AA0DF,QAAA,MAAM,GAAG,EAA2B,CAAC,CAAC,SAAS,MAAM,EACnD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;CAAE,KAC7D,YAAY,CAAC;AAQlB,QAAA,MAAM,IAAI,uGAcR,CAAC;AAQH,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,MAAM,EACN,GAAG,EACH,IAAI,GACL,CAAC;AAGF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,YAAY,GACb,CAAC;AAGF,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
@@ -1,12 +1,11 @@
1
1
  export declare const tableContainerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
2
2
  export declare const tableVariants: (props?: ({
3
- variant?: "default" | "bordered" | "striped" | null | undefined;
3
+ variant?: "default" | "bordered" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  export declare const tableHeaderVariants: (props?: ({
6
6
  sticky?: boolean | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  export declare const tableFooterVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
- export declare const tableCaptionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
10
9
  export declare const columnVariants: (props?: ({
11
10
  allowsSorting?: boolean | null | undefined;
12
11
  align?: "end" | "center" | "start" | null | undefined;
@@ -14,7 +13,7 @@ export declare const columnVariants: (props?: ({
14
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
14
  export declare const rowVariants: (props?: ({
16
15
  isSelected?: boolean | null | undefined;
17
- variant?: "default" | "striped" | null | undefined;
16
+ zebra?: boolean | null | undefined;
18
17
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
18
  export declare const cellVariants: (props?: ({
20
19
  align?: "end" | "center" | "start" | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,oFAAyC,CAAC;AAG7E,eAAO,MAAM,aAAa;;8EAczB,CAAC;AAGF,eAAO,MAAM,mBAAmB;;8EAU9B,CAAC;AAGH,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAGH,eAAO,MAAM,oBAAoB,oFAE/B,CAAC;AAGH,eAAO,MAAM,cAAc;;;;8EAgC1B,CAAC;AAGF,eAAO,MAAM,WAAW;;;8EAyBvB,CAAC;AAGF,eAAO,MAAM,YAAY;;;;8EAyBxB,CAAC"}
1
+ {"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.styles.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,oFAGjC,CAAC;AAGH,eAAO,MAAM,aAAa;;8EAezB,CAAC;AAIF,eAAO,MAAM,mBAAmB;;8EAU9B,CAAC;AAGH,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAGH,eAAO,MAAM,cAAc;;;;8EAkC1B,CAAC;AAGF,eAAO,MAAM,WAAW;;;8EA2BvB,CAAC;AAGF,eAAO,MAAM,YAAY;;;;8EAyBxB,CAAC"}
@@ -6,12 +6,14 @@ export type { Selection, SortDescriptor, Key };
6
6
  * Table visual variant
7
7
  * - default: Clean minimal styling
8
8
  * - bordered: All cells have borders
9
- * - striped: Alternating row backgrounds
9
+ *
10
+ * Note: alternating row backgrounds are controlled by the orthogonal `zebra`
11
+ * prop (on by default), not a variant — zebra composes with both default and
12
+ * bordered.
10
13
  */
11
14
  export declare const TableVariantSchema: z.ZodEnum<{
12
15
  default: "default";
13
16
  bordered: "bordered";
14
- striped: "striped";
15
17
  }>;
16
18
  export type TableVariant = z.infer<typeof TableVariantSchema>;
17
19
  /**
@@ -133,7 +135,6 @@ export declare const TablePropsSchema: z.ZodObject<{
133
135
  variant: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
134
136
  default: "default";
135
137
  bordered: "bordered";
136
- striped: "striped";
137
138
  }>>>;
138
139
  size: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
139
140
  default: "default";
@@ -141,6 +142,8 @@ export declare const TablePropsSchema: z.ZodObject<{
141
142
  lg: "lg";
142
143
  }>>>;
143
144
  stickyHeader: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
145
+ zebra: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
146
+ toolbar: z.ZodOptional<z.ZodCustom<ReactNode, ReactNode>>;
144
147
  className: z.ZodOptional<z.ZodString>;
145
148
  }, z.core.$strip>;
146
149
  export interface TableProps {
@@ -167,6 +170,12 @@ export interface TableProps {
167
170
  variant?: TableVariant;
168
171
  size?: TableSize;
169
172
  stickyHeader?: boolean;
173
+ zebra?: boolean;
174
+ /**
175
+ * Optional sticky toolbar rendered inside the card frame, above the header
176
+ * (e.g. a `BulkActionBar`). Sits within the same border/radius as the table.
177
+ */
178
+ toolbar?: ReactNode;
170
179
  }
171
180
  /**
172
181
  * TableHeader props schema
@@ -256,32 +265,6 @@ export interface TableFooterProps {
256
265
  id?: string;
257
266
  'data-testid'?: string;
258
267
  }
259
- /**
260
- * TableCaption props schema (custom, not from React Aria)
261
- *
262
- * @see table-prd.md for caption support (accessible table description)
263
- */
264
- export declare const TableCaptionPropsSchema: z.ZodObject<{
265
- id: z.ZodOptional<z.ZodString>;
266
- 'aria-label': z.ZodOptional<z.ZodString>;
267
- 'aria-labelledby': z.ZodOptional<z.ZodString>;
268
- 'aria-describedby': z.ZodOptional<z.ZodString>;
269
- 'aria-live': z.ZodOptional<z.ZodEnum<{
270
- off: "off";
271
- polite: "polite";
272
- assertive: "assertive";
273
- }>>;
274
- 'aria-hidden': z.ZodOptional<z.ZodBoolean>;
275
- 'data-testid': z.ZodOptional<z.ZodString>;
276
- className: z.ZodOptional<z.ZodString>;
277
- children: z.ZodCustom<ReactNode, ReactNode>;
278
- }, z.core.$strip>;
279
- export interface TableCaptionProps {
280
- className?: string;
281
- children?: ReactNode;
282
- id?: string;
283
- 'data-testid'?: string;
284
- }
285
268
  /**
286
269
  * Column (header cell) props schema
287
270
  *
@@ -400,6 +383,7 @@ export type TableVariantProps = {
400
383
  variant?: TableVariant;
401
384
  size?: TableSize;
402
385
  stickyHeader?: boolean;
386
+ zebra?: boolean;
403
387
  };
404
388
  export type ColumnVariantProps = {
405
389
  align?: Align;
@@ -410,7 +394,7 @@ export type ColumnVariantProps = {
410
394
  export type RowVariantProps = {
411
395
  isSelected?: boolean;
412
396
  isDisabled?: boolean;
413
- isStriped?: boolean;
397
+ zebra?: boolean;
414
398
  size?: TableSize;
415
399
  };
416
400
  export type CellVariantProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/Table.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * TableCardList — the narrow-viewport / narrow-container card view that pairs
3
+ * with the desktop `Table`. Render it instead of `<Table>` when
4
+ * {@link useContainerNarrow} reports the container is below your breakpoint:
5
+ *
6
+ * @example
7
+ * const ref = useRef<HTMLDivElement>(null);
8
+ * const narrow = useContainerNarrow(ref, 680);
9
+ * <div ref={ref}>
10
+ * {narrow
11
+ * ? <TableCardList items={rows} getRowId={(r) => r.id} renderCard={...} selectionMode="multiple" selectedKeys={k} onSelectionChange={setK} … />
12
+ * : <Table selectedKeys={k} onSelectionChange={setK} …>…</Table>}
13
+ * </div>
14
+ *
15
+ * Selection + sort state are consumer-owned (same `selectedKeys`/`sortDescriptor`
16
+ * as the desktop Table), so switching views preserves them. Card mode adds a
17
+ * select-all + a Sort `<Select>` (there are no clickable column headers).
18
+ */
19
+ import { type ReactElement } from 'react';
20
+ import type { TableCardListProps } from './TableCardList.types';
21
+ export declare function TableCardList<T extends object>({ items, getRowId, renderCard, selectionMode, selectedKeys, onSelectionChange, sortDescriptor, onSortChange, sortColumns, renderEmptyState, labels, 'aria-label': ariaLabel, className, 'data-testid': dataTestId, }: TableCardListProps<T>): ReactElement;
22
+ export declare namespace TableCardList {
23
+ var displayName: string;
24
+ }
25
+ //# sourceMappingURL=TableCardList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCardList.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/TableCardList.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAe1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,EAC9C,KAAK,EACL,QAAQ,EACR,UAAU,EACV,aAAsB,EACtB,YAA6B,EAC7B,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EAAE,UAA8B,GAC9C,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,YAAY,CA+HtC;yBA9Ie,aAAa"}
@@ -0,0 +1,15 @@
1
+ /** Card region wrapper (the narrow-mode replacement for the table). */
2
+ export declare const cardRegionVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
3
+ /** Tools row above the cards: select-all + sort control. */
4
+ export declare const cardToolsVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ /** The card list. */
6
+ export declare const cardListVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
7
+ /** A single card. Selected cards take the shared `--selected` tint. */
8
+ export declare const cardVariants: (props?: ({
9
+ isSelected?: boolean | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ /** The per-card selection checkbox cell (≥44px target). */
12
+ export declare const cardCheckVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
13
+ /** The card body (consumer-rendered content). */
14
+ export declare const cardContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
15
+ //# sourceMappingURL=TableCardList.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCardList.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/TableCardList.styles.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,oFAA+B,CAAC;AAE/D,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,oFAE5B,CAAC;AAEH,qBAAqB;AACrB,eAAO,MAAM,gBAAgB,oFAAmD,CAAC;AAEjF,uEAAuE;AACvE,eAAO,MAAM,YAAY;;8EAexB,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,oFAE5B,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,oFAA0B,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { Selection, SortDescriptor, Key } from 'react-aria-components';
3
+ /** A sortable column surfaced in the card-list Sort dropdown. */
4
+ export interface CardSortColumn {
5
+ /** Matches the desktop `<Column id>` so sort state is shared across views. */
6
+ id: string;
7
+ /** Visible, translated label. */
8
+ label: string;
9
+ }
10
+ export interface TableCardListLabels {
11
+ /** Accessible-name builder for the results status, e.g. `(n) => "{n} results"`. */
12
+ results: (count: number) => string;
13
+ /** "Select all" control label. */
14
+ selectAll: string;
15
+ /** Sort `<Select>` label, e.g. "Sort". */
16
+ sort: string;
17
+ /** Sort `<Select>` placeholder, e.g. "Sort by…". */
18
+ sortPlaceholder?: string;
19
+ /** Sort-direction toggle aria-label, receives the *current* direction. */
20
+ sortDirection: (direction: 'ascending' | 'descending') => string;
21
+ /** Per-card selection checkbox aria-label. */
22
+ selectItem: (item: unknown) => string;
23
+ }
24
+ export interface TableCardListProps<T extends object> {
25
+ /** Row data (already sorted/paginated by the consumer, mirroring the desktop Table's `items`). */
26
+ items: T[];
27
+ /** Stable id per row (same as the desktop `Row key`). */
28
+ getRowId: (item: T) => Key;
29
+ /** Renders a single card's body. */
30
+ renderCard: (item: T) => ReactNode;
31
+ /** Selection — `'multiple'` shows per-card checkboxes + select-all. */
32
+ selectionMode?: 'none' | 'multiple';
33
+ selectedKeys?: Selection;
34
+ onSelectionChange?: (keys: Selection) => void;
35
+ /** Sorting — shares `sortDescriptor`/`onSortChange` with the desktop Table. */
36
+ sortDescriptor?: SortDescriptor;
37
+ onSortChange?: (descriptor: SortDescriptor) => void;
38
+ /** The sortable columns offered in the Sort dropdown. */
39
+ sortColumns?: CardSortColumn[];
40
+ /** Empty state when there are no items. */
41
+ renderEmptyState?: () => ReactNode;
42
+ /** i18n strings — the component is domain-free. */
43
+ labels: TableCardListLabels;
44
+ 'aria-label'?: string;
45
+ className?: string;
46
+ 'data-testid'?: string;
47
+ }
48
+ //# sourceMappingURL=TableCardList.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCardList.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/TableCardList.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5E,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,aAAa,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,KAAK,MAAM,CAAC;IACjE,8CAA8C;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,kGAAkG;IAClG,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,yDAAyD;IACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAC3B,oCAAoC;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEnC,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAE9C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,yDAAyD;IACzD,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAE/B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,SAAS,CAAC;IAEnC,mDAAmD;IACnD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -1,5 +1,14 @@
1
- export { Table, TableHeader, TableBody, TableFooter, TableCaption, Column, Row, Cell, } from './Table';
2
- export { tableVariants, tableContainerVariants, tableHeaderVariants, tableFooterVariants, tableCaptionVariants, columnVariants, rowVariants, cellVariants, } from './Table';
3
- export type { TableProps, TableHeaderProps, TableBodyProps, TableFooterProps, TableCaptionProps, ColumnProps, RowProps, CellProps, TableVariant, TableSize, SortDescriptor, Selection, } from './Table.types';
1
+ export { Table, TableHeader, TableBody, TableFooter, Column, Row, Cell, } from './Table';
2
+ export { BulkActionBar } from './BulkActionBar';
3
+ export { resolveSelectedCount } from './resolveSelectedCount';
4
+ export { useBulkActionShortcut } from './useBulkActionShortcut';
5
+ export { TableCardList } from './TableCardList';
6
+ export { useContainerNarrow } from '../../hooks/useContainerNarrow';
7
+ export type { TableCardListProps, TableCardListLabels, CardSortColumn, } from './TableCardList.types';
8
+ export type { UseBulkActionShortcutOptions, } from './useBulkActionShortcut';
9
+ export type { BulkActionBarProps, BulkAction, BulkActionBarLabels, } from './BulkActionBar.types';
10
+ export { tableVariants, tableContainerVariants, tableHeaderVariants, tableFooterVariants, columnVariants, rowVariants, cellVariants, } from './Table';
11
+ export { bulkActionBarVariants, bulkActionToolbarVariants, bulkActionHintVariants, } from './BulkActionBar';
12
+ export type { TableProps, TableHeaderProps, TableBodyProps, TableFooterProps, ColumnProps, RowProps, CellProps, TableVariant, TableSize, SortDescriptor, Selection, } from './Table.types';
4
13
  export type { Selection as AriaSelection, SortDescriptor as AriaSortDescriptor } from './Table';
5
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,GAAG,EACH,IAAI,GACL,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,SAAS,IAAI,aAAa,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Table/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,MAAM,EACN,GAAG,EACH,IAAI,GACL,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,SAAS,IAAI,aAAa,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react');function n(...a){return tailwindMerge.twMerge(clsx.clsx(a))}var V="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var y="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground";var J=classVarianceAuthority.cva(["group inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",V,y].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Q=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200 motion-safe:data-[selected]:selection-pulse",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]","data-[indeterminate]:border-[var(--destructive-background)]","data-[indeterminate]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),X=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function Z({className:a,...e}){return jsxRuntime.jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function ee({className:a,...e}){return jsxRuntime.jsx("svg",{className:a,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var N=react.forwardRef(({isSelected:a,defaultSelected:e,isDisabled:t,isReadOnly:o,isIndeterminate:s,isInvalid:i=false,isRequired:l=false,onChange:u,onFocusChange:c,value:v,name:C,size:b="default",variant:p="default",label:h,description:g,selectedIcon:f,className:S,id:I,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,slot:ue},fe)=>{let Te=t||void 0,xe=o||void 0,ve=s||void 0,Ce=(m,U)=>{let w=n(X({variant:p,size:b})),E=m||void 0,Y=U||void 0;if(U)return jsxRuntime.jsx(ee,{className:w,"data-selected":E,"data-indeterminate":Y});if(f&&m){if(react.isValidElement(f)){let G=f;return react.cloneElement(G,{className:n(w,G.props.className),"data-selected":E})}return jsxRuntime.jsx("span",{className:w,"data-selected":E,children:f})}return jsxRuntime.jsx(Z,{className:w,"data-selected":E,"data-indeterminate":Y})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{ref:fe,id:I,isSelected:a,defaultSelected:e,isDisabled:Te,isReadOnly:xe,isIndeterminate:ve,isInvalid:i,isRequired:l,onChange:u,onFocusChange:c,value:v,name:C,slot:ue,"aria-label":L,"aria-labelledby":be,"aria-describedby":pe,"data-testid":me,className:m=>n(J({size:b,isDisabled:m.isDisabled}),S),children:m=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:Q({variant:p,size:b,isInvalid:m.isInvalid}),"data-selected":m.isSelected||void 0,"data-indeterminate":m.isIndeterminate||void 0,children:Ce(m.isSelected,m.isIndeterminate)}),(h||g)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[h&&jsxRuntime.jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:h}),g&&jsxRuntime.jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:g})]})]})})});N.displayName="Checkbox";var z=classVarianceAuthority.cva(["relative w-full overflow-auto"]),B=classVarianceAuthority.cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"border border-[var(--border)] rounded-md",striped:""}},defaultVariants:{variant:"default"}}),D=classVarianceAuthority.cva(["[&_tr]:border-b"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),F=classVarianceAuthority.cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),O=classVarianceAuthority.cva(["mt-4 text-sm text-[var(--menu-muted)]"]),k=classVarianceAuthority.cva(["h-12 px-4 text-left align-middle font-medium","text-[var(--menu-muted)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),H=classVarianceAuthority.cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--accent)] data-[selected]:bg-[var(--accent)]",false:""},variant:{default:"",striped:"even:bg-[var(--accent-background)]/30"}},defaultVariants:{isSelected:false,variant:"default"}}),A=classVarianceAuthority.cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var R=react.createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false}),re=react.forwardRef(({className:a,variant:e="default",size:t="default",stickyHeader:o=false,selectionMode:s="none",selectionBehavior:i="toggle",disallowEmptySelection:l=false,disabledBehavior:u="selection",selectedKeys:c,defaultSelectedKeys:v,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,children:f,...S},I)=>{process.env.NODE_ENV!=="production"&&t==="sm"&&s!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let L=react.useMemo(()=>({variant:e,size:t,selectionMode:s,stickyHeader:o}),[e,t,s,o]);return jsxRuntime.jsx(R.Provider,{value:L,children:jsxRuntime.jsx("div",{className:n(z(),a),"data-testid":"table-container",children:jsxRuntime.jsx(reactAriaComponents.Table,{ref:I,className:n(B({variant:e})),selectionMode:s,selectionBehavior:i,disallowEmptySelection:l,disabledBehavior:u,selectedKeys:c,defaultSelectedKeys:v,onSelectionChange:C,disabledKeys:b,sortDescriptor:p,onSortChange:h,onRowAction:g,"data-testid":"table","data-variant":e,"data-size":t,...S,children:f})})})});re.displayName="Table";function Be({className:a,children:e,columns:t,...o},s){let{size:i,selectionMode:l,stickyHeader:u}=react.useContext(R),{allowsDragging:c}=reactAriaComponents.useTableOptions();return jsxRuntime.jsxs(reactAriaComponents.TableHeader,{ref:s,className:n(D({sticky:u}),a),"data-testid":"table-header",...o,children:[l==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Column,{className:n(k({size:i}),"w-12"),children:jsxRuntime.jsx(N,{slot:"selection","aria-label":"Select all",size:i})}),c&&jsxRuntime.jsx(reactAriaComponents.Column,{}),t?jsxRuntime.jsx(reactAriaComponents.Collection,{items:t,children:e}):e]})}var oe=react.forwardRef(Be);oe.displayName="TableHeader";function De({className:a,children:e,items:t,renderEmptyState:o,...s},i){return jsxRuntime.jsx(reactAriaComponents.TableBody,{ref:i,className:n(a),items:t,renderEmptyState:o?()=>jsxRuntime.jsx("tr",{children:jsxRuntime.jsx("td",{colSpan:99,className:"text-center p-8",children:o()})}):void 0,"data-testid":"table-body",...s,children:e})}var se=react.forwardRef(De);se.displayName="TableBody";var ne=react.forwardRef(({className:a,children:e,...t},o)=>jsxRuntime.jsx("tfoot",{ref:o,className:n(F(),a),"data-testid":"table-footer",...t,children:e}));ne.displayName="TableFooter";var ie=react.forwardRef(({className:a,children:e,...t},o)=>jsxRuntime.jsx("caption",{ref:o,className:n(O(),a),"data-testid":"table-caption",...t,children:e}));ie.displayName="TableCaption";var le=react.forwardRef(({className:a,children:e,isRowHeader:t=false,allowsSorting:o=false,align:s="start",width:i,minWidth:l,maxWidth:u,...c},v)=>{let{size:C}=react.useContext(R);return jsxRuntime.jsx(reactAriaComponents.Column,{ref:v,isRowHeader:t,allowsSorting:o,width:i,minWidth:l,maxWidth:u,className:n(k({allowsSorting:o,align:s,size:C}),a),...c,children:({allowsSorting:b,sortDirection:p})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{children:e}),b&&p&&jsxRuntime.jsx("span",{"aria-hidden":"true","data-sort-direction":p,children:p==="ascending"?jsxRuntime.jsx(lucideReact.ChevronUp,{className:"h-4 w-4"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"h-4 w-4"})})]})})});le.displayName="Column";function Fe({className:a,children:e,columns:t,href:o,isDisabled:s,...i},l){let{variant:u,size:c,selectionMode:v}=react.useContext(R),{allowsDragging:C}=reactAriaComponents.useTableOptions(),b=u==="striped"?"striped":"default",p=H({isSelected:true,variant:b}),h=H({isSelected:false,variant:b}),g=n(A({size:c}),"w-12");return jsxRuntime.jsxs(reactAriaComponents.Row,{ref:l,href:o,isDisabled:s,className:({isSelected:f,isDisabled:S})=>n(f?p:h,S&&"opacity-50",a),"data-testid":"table-row",...i,children:[v==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Cell,{className:g,children:jsxRuntime.jsx(N,{slot:"selection","aria-label":"Select row",size:c})}),C&&jsxRuntime.jsx(reactAriaComponents.Cell,{}),t?jsxRuntime.jsx(reactAriaComponents.Collection,{items:t,children:e}):e]})}var de=react.forwardRef(Fe);de.displayName="Row";var ce=react.memo(react.forwardRef(({className:a,children:e,align:t="start",colSpan:o,...s},i)=>{let{size:l}=react.useContext(R);return jsxRuntime.jsx(reactAriaComponents.Cell,{ref:i,className:n(A({align:t,size:l}),a),...s,children:e})}));ce.displayName="Cell";exports.Cell=ce;exports.Column=le;exports.Row=de;exports.Table=re;exports.TableBody=se;exports.TableCaption=ie;exports.TableFooter=ne;exports.TableHeader=oe;exports.cellVariants=A;exports.columnVariants=k;exports.rowVariants=H;exports.tableCaptionVariants=O;exports.tableContainerVariants=z;exports.tableFooterVariants=F;exports.tableHeaderVariants=D;exports.tableVariants=B;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react');function h(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var X="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var K="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",Q="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",J="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var Le=classVarianceAuthority.cva(["group inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",X,K].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Pe=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 bg-[var(--content-background)] flex items-center justify-center transition-colors duration-200 motion-safe:data-[selected]:selection-pulse",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]","data-[indeterminate]:border-[var(--destructive-background)]","data-[indeterminate]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),Oe=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function He({className:e,...t}){return jsxRuntime.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function De({className:e,...t}){return jsxRuntime.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsxRuntime.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var O=react.forwardRef(({isSelected:e,defaultSelected:t,isDisabled:a,isReadOnly:o,isIndeterminate:n,isInvalid:l=false,isRequired:r=false,onChange:i,onFocusChange:s,value:p,name:b,size:u="default",variant:m="default",label:g,description:x,selectedIcon:f,className:E,id:S,"aria-label":v,"aria-labelledby":A,"aria-describedby":I,"data-testid":k,slot:B},V)=>{let c=a||void 0,R=o||void 0,C=n||void 0,L=(d,T)=>{let w=h(Oe({variant:m,size:u})),z=d||void 0,$=T||void 0;if(T)return jsxRuntime.jsx(De,{className:w,"data-selected":z,"data-indeterminate":$});if(f&&d){if(react.isValidElement(f)){let ke=f;return react.cloneElement(ke,{className:h(w,ke.props.className),"data-selected":z})}return jsxRuntime.jsx("span",{className:w,"data-selected":z,children:f})}return jsxRuntime.jsx(He,{className:w,"data-selected":z,"data-indeterminate":$})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{ref:V,id:S,isSelected:e,defaultSelected:t,isDisabled:c,isReadOnly:R,isIndeterminate:C,isInvalid:l,isRequired:r,onChange:i,onFocusChange:s,value:p,name:b,slot:B,"aria-label":v,"aria-labelledby":A,"aria-describedby":I,"data-testid":k,className:d=>h(Le({size:u,isDisabled:d.isDisabled}),E),children:d=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:Pe({variant:m,size:u,isInvalid:d.isInvalid}),"data-selected":d.isSelected||void 0,"data-indeterminate":d.isIndeterminate||void 0,children:L(d.isSelected,d.isIndeterminate)}),(g||x)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[g&&jsxRuntime.jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:g}),x&&jsxRuntime.jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:x})]})]})})});O.displayName="Checkbox";var be=classVarianceAuthority.cva(["relative w-full overflow-auto","rounded-lg border border-[var(--border)] bg-[var(--content-background)]"]),xe=classVarianceAuthority.cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"[&_tr>*+*]:border-l [&_tr>*+*]:border-[var(--border)]"}},defaultVariants:{variant:"default"}}),ve=classVarianceAuthority.cva(["[&_tr]:border-b [&_tr]:border-[var(--border)]"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),ge=classVarianceAuthority.cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),ee=classVarianceAuthority.cva(["h-12 px-4 text-left align-middle font-semibold","uppercase tracking-wide","bg-[var(--accent-background)] text-[var(--content-foreground)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),te=classVarianceAuthority.cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--selected)] data-[selected]:bg-[var(--selected)]",false:""},zebra:{true:"even:bg-[var(--accent-background)]/30",false:""}},defaultVariants:{isSelected:false,zebra:true}}),ae=classVarianceAuthority.cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var Y=react.createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false,zebra:true}),Ge=react.forwardRef(({className:e,variant:t="default",size:a="default",stickyHeader:o=false,zebra:n=true,toolbar:l,selectionMode:r="none",selectionBehavior:i="toggle",disallowEmptySelection:s=false,disabledBehavior:p="selection",selectedKeys:b,defaultSelectedKeys:u,onSelectionChange:m,disabledKeys:g,sortDescriptor:x,onSortChange:f,onRowAction:E,children:S,...v},A)=>{process.env.NODE_ENV!=="production"&&a==="sm"&&r!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let I=react.useMemo(()=>({variant:t,size:a,selectionMode:r,stickyHeader:o,zebra:n}),[t,a,r,o,n]);return jsxRuntime.jsx(Y.Provider,{value:I,children:jsxRuntime.jsxs("div",{className:h(be(),e),"data-testid":"table-container",children:[l,jsxRuntime.jsx(reactAriaComponents.Table,{ref:A,className:h(xe({variant:t})),selectionMode:r,selectionBehavior:i,disallowEmptySelection:s,disabledBehavior:p,selectedKeys:b,defaultSelectedKeys:u,onSelectionChange:m,disabledKeys:g,sortDescriptor:x,onSortChange:f,onRowAction:E,"data-testid":"table","data-variant":t,"data-size":a,"data-zebra":n,...v,children:S})]})})});Ge.displayName="Table";function Mt({className:e,children:t,columns:a,...o},n){let{size:l,selectionMode:r,stickyHeader:i}=react.useContext(Y),{allowsDragging:s}=reactAriaComponents.useTableOptions();return jsxRuntime.jsxs(reactAriaComponents.TableHeader,{ref:n,className:h(ve({sticky:i}),e),"data-testid":"table-header",...o,children:[r==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Column,{className:h(ee({size:l}),"w-12"),children:jsxRuntime.jsx(O,{slot:"selection","aria-label":"Select all",size:l})}),s&&jsxRuntime.jsx(reactAriaComponents.Column,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:t}):t]})}var Fe=react.forwardRef(Mt);Fe.displayName="TableHeader";function Gt({className:e,children:t,items:a,renderEmptyState:o,...n},l){return jsxRuntime.jsx(reactAriaComponents.TableBody,{ref:l,className:h(e),items:a,renderEmptyState:o?()=>jsxRuntime.jsx("div",{className:"text-center p-8",children:o()}):void 0,"data-testid":"table-body",...n,children:t})}var Ue=react.forwardRef(Gt);Ue.displayName="TableBody";var je=react.forwardRef(({className:e,children:t,...a},o)=>jsxRuntime.jsx("tfoot",{ref:o,className:h(ge(),e),"data-testid":"table-footer",...a,children:t}));je.displayName="TableFooter";var $e=react.forwardRef(({className:e,children:t,isRowHeader:a=false,allowsSorting:o=false,align:n="start",width:l,minWidth:r,maxWidth:i,...s},p)=>{let{size:b}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Column,{ref:p,isRowHeader:a,allowsSorting:o,width:l,minWidth:r,maxWidth:i,className:h(ee({allowsSorting:o,align:n,size:b}),e),...s,children:({allowsSorting:u,sortDirection:m})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{children:t}),u&&jsxRuntime.jsx("span",{"aria-hidden":"true","data-sort-direction":m??"none",className:m?"text-[var(--primary-action)]":"opacity-50",children:m==="ascending"?jsxRuntime.jsx(lucideReact.ChevronUp,{className:"h-4 w-4"}):m==="descending"?jsxRuntime.jsx(lucideReact.ChevronDown,{className:"h-4 w-4"}):jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-4 w-4"})})]})})});$e.displayName="Column";function Ft({className:e,children:t,columns:a,href:o,isDisabled:n,...l},r){let{size:i,selectionMode:s,zebra:p}=react.useContext(Y),{allowsDragging:b}=reactAriaComponents.useTableOptions(),u=te({isSelected:true,zebra:p}),m=te({isSelected:false,zebra:p}),g=h(ae({size:i}),"w-12");return jsxRuntime.jsxs(reactAriaComponents.Row,{ref:r,href:o,isDisabled:n,className:({isSelected:x,isDisabled:f})=>h(x?u:m,f&&"opacity-50",e),"data-testid":"table-row",...l,children:[s==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Cell,{className:g,children:jsxRuntime.jsx(O,{slot:"selection","aria-label":"Select row",size:i})}),b&&jsxRuntime.jsx(reactAriaComponents.Cell,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:t}):t]})}var Ke=react.forwardRef(Ft);Ke.displayName="Row";var Ye=react.memo(react.forwardRef(({className:e,children:t,align:a="start",colSpan:o,...n},l)=>{let{size:r}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Cell,{ref:l,className:h(ae({align:a,size:r}),e),...n,children:t})}));Ye.displayName="Cell";var he=classVarianceAuthority.cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),ye=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Xe=react.createContext(null);Xe.displayName="ButtonGroupContext";function Qe(){return react.useContext(Xe)}var Je=react.createContext(null);Je.displayName="ButtonGroupItemContext";function et(){return react.useContext(Je)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var tt=classVarianceAuthority.cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var F=react.memo(react.forwardRef(({className:e,buttonVisualClassName:t,variant:a,size:o,visualSize:n,fullWidth:l,loading:r=false,loadingText:i="Loading...",shortcut:s,children:p,isDisabled:b,paywall:u=false,paywallRedirect:m,paywallDescription:g,onPress:x,...f},E)=>{let S=react.useId(),v=Qe(),A=et(),I=a??v?.variant??"default",k=o??v?.size,B=b??v?.isDisabled??false,V=v?.orientation==="vertical",c=l||V,R=A?tt({orientation:v?.orientation??"horizontal",position:A.position}):"",C=n??k??"default";return process.env.NODE_ENV!=="production"&&(C==="dot"||C==="icon")&&!f["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:E,isDisabled:B||r||void 0,"aria-disabled":u?true:void 0,"aria-describedby":u?S:void 0,onPress:T=>{if(u){m&&window.open(m,"_blank","noopener,noreferrer");return}x?.(T);},className:h(he({fullWidth:c,inVerticalGroup:V}),e),...f,children:T=>jsxRuntime.jsxs("span",{className:h(ye({variant:I,visualSize:C,paywall:u,fullWidth:c}),R,t,me,"",Q,J),"data-pressed":T.isPressed||void 0,children:[r&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:i})]}),!r&&p,u&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),u&&jsxRuntime.jsxs("span",{id:S,className:"sr-only",children:["Premium feature: ",g||"Upgrade required to access this feature"]}),T.isFocusVisible&&s&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:s})]})})}));F.displayName="Button";var ne=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap","px-4 py-2.5","bg-[var(--selected)]"],{variants:{sticky:{true:"sticky top-0 z-[6]",false:""},framed:{true:"rounded-lg border border-[var(--border)]",false:"border-b border-[var(--border)]"}},defaultVariants:{sticky:true,framed:false}}),se=classVarianceAuthority.cva(["flex items-center gap-3 flex-wrap w-full justify-between"]),ie=classVarianceAuthority.cva(["text-sm text-[var(--content-muted)] inline-flex items-center gap-1.5"]),at=classVarianceAuthority.cva(["inline-flex items-center justify-center","min-w-[1.5rem] h-6 px-1.5 rounded","border border-[var(--primary)]/40 bg-[var(--content-background)]","font-mono text-xs font-semibold text-[var(--primary-action)]"]),rt=classVarianceAuthority.cva(["text-[var(--primary-action)] border-[var(--primary)]/30","hover:bg-[var(--content-background)]"]);function ta(e,t){typeof e=="function"?e(t):e&&(e.current=t);}var ot=react.forwardRef(({selectedCount:e,actions:t,onAction:a,onClearSelection:o,sticky:n=true,framed:l=false,showJumpHint:r=false,shortcutKey:i="A",labels:s,className:p,"data-testid":b="bulk-action-bar"},u)=>{let m=react.useRef(null),g=react.useRef(e),x=react.useRef([]),[f,E]=react.useState(0),S=t.length+1,v=Math.min(f,S-1),A=c=>{let R=(c+S)%S;E(R),x.current[R]?.focus();},I=c=>{switch(c.key){case "ArrowRight":case "ArrowDown":c.preventDefault(),A(v+1);break;case "ArrowLeft":case "ArrowUp":c.preventDefault(),A(v-1);break;case "Home":c.preventDefault(),A(0);break;case "End":c.preventDefault(),A(S-1);break;}};react.useEffect(()=>{let c=g.current;if(g.current=e,c>0&&e===0){let R=document.activeElement;(!R||R===document.body)&&m.current?.focus();}},[e]);let k=e>0,B=r&&!!s.jumpHint,V="";if(k){let c=[s.selectedCount(e)];s.actionsAvailable&&c.push(s.actionsAvailable(t.length)),r&&s.jumpAnnouncement&&c.push(s.jumpAnnouncement),V=c.join(". ");}return jsxRuntime.jsxs("div",{ref:c=>{m.current=c,ta(u,c);},tabIndex:-1,className:h("outline-none",p),"data-testid":b,children:[jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite",children:V}),k&&jsxRuntime.jsx("div",{className:ne({sticky:n,framed:l}),children:jsxRuntime.jsxs("div",{role:"toolbar","aria-label":s.toolbarLabel(e),"aria-orientation":"horizontal",onKeyDown:I,className:se(),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-sm font-bold text-[var(--content-foreground)]",children:s.selectedCount(e)}),jsxRuntime.jsx(F,{ref:c=>{x.current[0]=c;},variant:"link",excludeFromTabOrder:v!==0,onFocus:()=>E(0),onPress:o,children:s.clear}),B&&s.jumpHint&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:ie(),children:s.jumpHint(jsxRuntime.jsx("kbd",{className:at(),children:i}))})]}),jsxRuntime.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t.map((c,R)=>{let C=R+1;return jsxRuntime.jsxs(F,{ref:L=>{x.current[C]=L;},variant:c.tone==="danger"?"destructive":"outline",buttonVisualClassName:c.tone==="danger"?void 0:rt(),isDisabled:c.isDisabled,excludeFromTabOrder:v!==C,onFocus:()=>E(C),onPress:()=>a(c.id),children:[c.icon!=null&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:"inline-flex",children:c.icon}),c.label]},c.id)})})]})})]})});ot.displayName="BulkActionBar";function aa(e,t){if(e==="all"){let a=0;for(let o of t)a+=1;return a}return e.size}var oa=new Set(["text","search","email","url","tel","number","password"]);function na(e){if(!(e instanceof HTMLElement))return false;if(e.isContentEditable||e.closest('[contenteditable=""],[contenteditable="true"]'))return true;let t=e.tagName;if(t==="TEXTAREA"||t==="SELECT"||t==="INPUT"&&oa.has(e.type))return true;let a=e.getAttribute("role");return a==="textbox"||a==="searchbox"||a==="combobox"}function sa({scopeRef:e,toolbarRef:t,key:a="a",disabled:o=false}){react.useEffect(()=>{if(o)return;let n=e.current;if(!n)return;let l=r=>{if(r.metaKey||r.ctrlKey||r.altKey||r.key.toLowerCase()!==a.toLowerCase()||na(r.target))return;let i=t.current;if(!i)return;let s=i.querySelector('[tabindex="0"]')??i.querySelector("button:not([disabled])");s&&(r.preventDefault(),s.focus());};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[e,t,a,o]);}var ce={sm:"h-9",default:"h-10",lg:"h-11"},D={sm:`${ce.sm} px-2 text-xs`,default:`${ce.default} px-3 text-sm`,lg:`${ce.lg} px-4 text-base`},Ce="min-h-[44px] flex items-center";var nt=classVarianceAuthority.cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${D.sm} pr-1`,default:`${D.default} pr-1.5`,lg:`${D.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),st=classVarianceAuthority.cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.lg} py-3`}},defaultVariants:{size:"default"}}),it=classVarianceAuthority.cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),lt=classVarianceAuthority.cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),ct=classVarianceAuthority.cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Ea=Array.from({length:3}).map((e,t)=>jsxRuntime.jsx("div",{className:"h-11 px-4 py-2",children:jsxRuntime.jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${t}`));function mt({ariaSelectProps:e,triggerContent:t,triggerRef:a,label:o,description:n,isRequired:l,isDisabled:r,isLoading:i,errorMessage:s,size:p,emptyStateMessage:b,childCount:u,children:m}){let g=react.useId(),x=react.useId(),f=react.useId(),E=!!s;return jsxRuntime.jsxs(reactAriaComponents.Select,{...e,isInvalid:E,children:[jsxRuntime.jsxs(reactAriaComponents.Label,{id:g,className:"text-sm font-medium text-[var(--content-foreground)]",children:[o,l&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)] mt-1",children:n}),jsxRuntime.jsx("div",{className:Ce,children:jsxRuntime.jsxs(reactAriaComponents.Button,{ref:a,className:nt({size:p,isInvalid:E}),"aria-labelledby":g,"aria-describedby":n?x:s?f:void 0,"data-loading":i,...l&&{"aria-required":"true"},...i&&{"aria-busy":"true"},...(r||i)&&{"aria-disabled":"true"},children:[t,i?jsxRuntime.jsx(lucideReact.Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsxRuntime.jsx(reactAriaComponents.FieldError,{id:f,className:ct({size:p}),children:({validationErrors:S})=>{let v=s||S.join(" ");return v?jsxRuntime.jsx(jsxRuntime.Fragment,{children:v}):null}}),jsxRuntime.jsx(reactAriaComponents.Popover,{className:it({size:p}),children:jsxRuntime.jsxs(reactAriaComponents.ListBox,{className:"outline-none",children:[i&&u>0&&Ea,!i&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m,u===0&&jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsxRuntime.jsx("span",{role:"status",children:b||"No options available"})})]})]})})]})}var ft=react.forwardRef(({label:e,placeholder:t,description:a,value:o,defaultValue:n,isOpen:l,isDisabled:r=false,isRequired:i=false,disabledKeys:s,validate:p,validationBehavior:b="aria",errorMessage:u,isLoading:m=false,emptyStateMessage:g,name:x,size:f="default",onChange:E,onOpenChange:S,className:v,children:A,...I},k)=>{let B=react.Children.count(A);return B>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsxRuntime.jsx(mt,{ariaSelectProps:{value:o,defaultValue:n,onChange:V=>{E&&E(V);},placeholder:t,disabledKeys:s,isOpen:l,onOpenChange:S,isDisabled:r||m,isRequired:i,name:x,validate:p,validationBehavior:b,className:v,...I},triggerContent:jsxRuntime.jsx(reactAriaComponents.SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:k,label:e,description:a,isRequired:i,isDisabled:r,isLoading:m,errorMessage:u,size:f,emptyStateMessage:g,childCount:B,children:A})});ft.displayName="Select";var bt=react.forwardRef(({label:e,placeholder:t,description:a,value:o,defaultValue:n,selectionMode:l="multiple",isOpen:r,isDisabled:i=false,isRequired:s=false,disabledKeys:p,validate:b,validationBehavior:u="aria",errorMessage:m,isLoading:g=false,emptyStateMessage:x,name:f,size:E="default",onChange:S,onOpenChange:v,className:A,children:I,...k},B)=>{let V=react.Children.count(I);V>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let c=react.useMemo(()=>{let C=new Map,L=d=>{react.Children.forEach(d,T=>{if(react.isValidElement(T)){let w=T;if(w.type===de||w.props?.value){let z=w.props.value,$=w.props.children;z&&typeof $=="string"&&C.set(z,$);}w.props?.children&&L(w.props.children);}});};return L(I),C},[I]),R=react.useMemo(()=>!o||!Array.isArray(o)||o.length===0?t||"":o.length<=2?o.map(L=>c.get(L)||L).join(", "):`${o.length} items selected`,[o,c,t]);return jsxRuntime.jsx(mt,{ariaSelectProps:{value:o,defaultValue:n,onChange:C=>{S&&S(C);},selectionMode:"multiple",disabledKeys:p,isOpen:r,onOpenChange:v,isDisabled:i||g,isRequired:s,name:f,validate:b,validationBehavior:u,className:A,...k},triggerContent:jsxRuntime.jsx("span",{className:"flex-1 text-left truncate",children:R}),triggerRef:B,label:e,description:a,isRequired:s,isDisabled:i,isLoading:g,errorMessage:m,size:E,emptyStateMessage:x,childCount:V,children:I})});bt.displayName="MultiSelect";var de=react.memo(function({children:t,textValue:a,value:o,isDisabled:n=false,className:l,...r}){if(!a&&typeof t!="string"){let i="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(i);console.warn(i);}return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:o,textValue:a||(typeof t=="string"?t:void 0),className:`${st({size:"default"})} ${l||""}`,isDisabled:n,...r,children:({isSelected:i,selectionMode:s,isDisabled:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[s==="multiple"?jsxRuntime.jsx(lucideReact.CheckSquare,{className:`absolute left-2 h-4 w-4 ${i?"visible":"invisible"}`,"aria-hidden":"true"}):i&&jsxRuntime.jsx(lucideReact.Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:t})]})})});de.displayName="SelectItem";function we({children:e,className:t,...a}){return jsxRuntime.jsx(reactAriaComponents.ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${t||""}`,...a,children:e})}we.displayName="SelectSection";function _e({children:e,className:t,...a}){return jsxRuntime.jsx(reactAriaComponents.Header,{className:`${lt({size:"default"})} ${t||""}`,...a,children:e})}_e.displayName="SelectHeader";var ue=Object.assign(ft,{Item:de,Section:we,Header:_e});Object.assign(bt,{Item:de,Section:we,Header:_e});var xt=classVarianceAuthority.cva(["flex flex-col gap-3"]),vt=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap px-0.5"]),gt=classVarianceAuthority.cva(["flex flex-col gap-2.5 list-none m-0 p-0"]),St=classVarianceAuthority.cva(["flex items-start gap-2.5 p-3.5","rounded-lg border border-[var(--border)] bg-[var(--content-background)]","motion-safe:transition-colors"],{variants:{isSelected:{true:"bg-[var(--selected)] border-[var(--primary)]/40",false:""}},defaultVariants:{isSelected:false}}),Tt=classVarianceAuthority.cva(["flex items-center justify-center min-w-[44px] min-h-[44px] -m-1 flex-none"]),ht=classVarianceAuthority.cva(["flex-1 min-w-0"]);function yt({items:e,getRowId:t,renderCard:a,selectionMode:o="none",selectedKeys:n=new Set,onSelectionChange:l,sortDescriptor:r,onSortChange:i,sortColumns:s=[],renderEmptyState:p,labels:b,"aria-label":u,className:m,"data-testid":g="table-card-list"}){let x=o==="multiple",f=e.map(t),E=d=>n==="all"||n.has(d),S=f.length>0&&f.every(E),v=f.some(E)&&!S,A=()=>n==="all"?new Set(f):new Set(n),I=()=>{l?.(S?new Set:new Set(f));},k=d=>{let T=A();T.has(d)?T.delete(d):T.add(d),l?.(T);},B=r?.column!=null?String(r.column):void 0,V=r?.direction??"ascending",c=d=>{let T=Array.isArray(d)?d[0]:d;T&&i?.({column:T,direction:r?.direction??"ascending"});},R=()=>{r?.column!=null&&i?.({column:r.column,direction:V==="ascending"?"descending":"ascending"});},C=x||s.length>0,L=e.length===0;return jsxRuntime.jsxs("div",{role:"region","aria-label":u,className:h(xt(),m),"data-testid":g,children:[jsxRuntime.jsx("p",{className:"sr-only",role:"status","aria-live":"polite",children:b.results(e.length)}),C&&jsxRuntime.jsxs("div",{className:vt(),children:[x?jsxRuntime.jsx(O,{label:b.selectAll,isSelected:S,isIndeterminate:v,onChange:I}):jsxRuntime.jsx("span",{}),s.length>0&&jsxRuntime.jsxs("div",{className:"flex items-end gap-2",children:[jsxRuntime.jsx(ue,{label:b.sort,placeholder:b.sortPlaceholder,value:B,onChange:c,children:s.map(d=>jsxRuntime.jsx(ue.Item,{value:d.id,children:d.label},d.id))}),jsxRuntime.jsx(F,{variant:"ghost",visualSize:"icon",isDisabled:r?.column==null,"aria-label":b.sortDirection(V),onPress:R,children:V==="ascending"?jsxRuntime.jsx(lucideReact.ArrowUp,{"aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ArrowDown,{"aria-hidden":"true"})})]})]}),L?p?jsxRuntime.jsx("div",{className:"rounded-lg border border-dashed border-[var(--border)] p-8 text-center","data-testid":"card-empty-state",children:p()}):null:jsxRuntime.jsx("ul",{className:gt(),children:e.map(d=>{let T=t(d),w=E(T);return jsxRuntime.jsxs("li",{className:St({isSelected:w}),children:[x&&jsxRuntime.jsx("div",{className:Tt(),children:jsxRuntime.jsx(O,{"aria-label":b.selectItem(d),isSelected:w,onChange:()=>k(T)})}),jsxRuntime.jsx("div",{className:ht(),children:a(d)})]},String(T))})})]})}yt.displayName="TableCardList";function Ra(e,t){let[a,o]=react.useState(false);return react.useEffect(()=>{let n=e.current;if(!n)return;let l=()=>o(n.offsetWidth<t);l();let r;return typeof ResizeObserver<"u"&&(r=new ResizeObserver(l),r.observe(n)),window.addEventListener("resize",l),()=>{window.removeEventListener("resize",l),r?.disconnect();}},[e,t]),a}exports.BulkActionBar=ot;exports.Cell=Ye;exports.Column=$e;exports.Row=Ke;exports.Table=Ge;exports.TableBody=Ue;exports.TableCardList=yt;exports.TableFooter=je;exports.TableHeader=Fe;exports.bulkActionBarVariants=ne;exports.bulkActionHintVariants=ie;exports.bulkActionToolbarVariants=se;exports.cellVariants=ae;exports.columnVariants=ee;exports.resolveSelectedCount=aa;exports.rowVariants=te;exports.tableContainerVariants=be;exports.tableFooterVariants=ge;exports.tableHeaderVariants=ve;exports.tableVariants=xe;exports.useBulkActionShortcut=sa;exports.useContainerNarrow=Ra;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map