laif-ds 0.2.63 → 0.2.64

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.
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import { jsx as c, jsxs as ie } from "react/jsx-runtime";
3
- import { useReactTable as nt } from "../../../../node_modules/@tanstack/react-table/build/lib/index.js";
4
- import { cn as ot } from "../../../../lib/utils.js";
5
- import { useRef as f, useState as u, useEffect as H, useMemo as F } from "react";
6
- import { Button as at } from "../../button.js";
3
+ import { useReactTable as at } from "../../../../node_modules/@tanstack/react-table/build/lib/index.js";
4
+ import { cn as it } from "../../../../lib/utils.js";
5
+ import { useRef as f, useState as d, useEffect as H, useMemo as F } from "react";
6
+ import { Button as st } from "../../button.js";
7
7
  import { Checkbox as ye } from "../../checkbox.js";
8
- import { DataTableBody as it } from "./components/data-table-body.js";
9
- import { DataTableColumnVisibility as st } from "./components/data-table-column-visibility.js";
10
- import { DataTableFilters as lt } from "./components/data-table-filters.js";
11
- import { DataTablePaginationComponent as ct } from "./components/data-table-pagination.js";
12
- import { DataTableSearchbar as ut } from "./components/data-table-searchbar.js";
13
- import { DataTableSortingComponent as dt } from "./components/data-table-sorting.js";
14
- import { applySearchFilterToRow as we, debounce as gt, buildSearchFilter as mt, updatePageSizeFromContainer as pt, createDefaultAdvancedFilter as ft, createBadgeFilterFromHeader as ht } from "./data-table.service.js";
15
- import { DataTableActionsComponent as St } from "./components/data-table-actions.js";
16
- import { defaultDataTableI18n as bt } from "./data-table-i18n.js";
17
- import { getPaginationRowModel as vt, getFilteredRowModel as Ft, getSortedRowModel as Ct, getCoreRowModel as xt } from "../../../../node_modules/@tanstack/table-core/build/lib/index.js";
18
- function Vt({
8
+ import { DataTableBody as lt } from "./components/data-table-body.js";
9
+ import { DataTableColumnVisibility as ct } from "./components/data-table-column-visibility.js";
10
+ import { DataTableFilters as dt } from "./components/data-table-filters.js";
11
+ import { DataTablePaginationComponent as ut } from "./components/data-table-pagination.js";
12
+ import { DataTableSearchbar as gt } from "./components/data-table-searchbar.js";
13
+ import { DataTableSortingComponent as mt } from "./components/data-table-sorting.js";
14
+ import { applySearchFilterToRow as we, debounce as pt, buildSearchFilter as ft, updatePageSizeFromContainer as ht, createDefaultAdvancedFilter as St, createBadgeFilterFromHeader as bt } from "./data-table.service.js";
15
+ import { DataTableActionsComponent as vt } from "./components/data-table-actions.js";
16
+ import { defaultDataTableI18n as Ft } from "./data-table-i18n.js";
17
+ import { getPaginationRowModel as Ct, getFilteredRowModel as xt, getSortedRowModel as yt, getCoreRowModel as wt } from "../../../../node_modules/@tanstack/table-core/build/lib/index.js";
18
+ function Pt({
19
19
  columns: Y,
20
20
  data: j,
21
21
  loading: z = !1,
@@ -30,18 +30,21 @@ function Vt({
30
30
  customComponentsRight: Be,
31
31
  hidePagination: _e = !1,
32
32
  hideActionsRow: Me = !1,
33
- i18n: h = bt,
33
+ i18n: h = Ft,
34
34
  maxSortedColumns: le = 2,
35
- initialState: d,
35
+ initialState: u,
36
36
  // New mode-based API
37
37
  serverMode: He = !1,
38
38
  serverConfig: Ne,
39
- disableAutoPageSize: b = !1
39
+ disableAutoPageSize: b = !1,
40
+ // Test & Accessibility
41
+ id: Oe,
42
+ "data-testid": Le
40
43
  }) {
41
44
  const q = f(null), a = He === !0, g = a ? Ne : void 0, ce = (e) => !e || !e.sort_by || !e.sort_order ? [] : e.sort_by.map((t, o) => ({
42
45
  id: t,
43
46
  desc: e.sort_order[o] === "desc"
44
- })), Oe = (e) => {
47
+ })), Ge = (e) => {
45
48
  const t = ce(e?.sorting), o = {
46
49
  sort_by: t.map((s) => s.id),
47
50
  sort_order: t.map((s) => s.desc ? "desc" : "asc")
@@ -51,13 +54,13 @@ function Vt({
51
54
  computedFilter: e?.computedFilter
52
55
  // Use provided value or undefined
53
56
  };
54
- }, [N, Le] = u(() => ce(d?.sorting)), [Ge] = u([]), [ke, Ae] = u(
55
- () => d?.columnVisibility ?? {}
56
- ), [m, Ve] = u(() => d?.filters?.searchbarFilter), [K, O] = u(() => d?.pagination ?? { pageIndex: 0, pageSize: 10 }), ue = f(g);
57
- ue.current = g;
57
+ }, [N, ke] = d(() => ce(u?.sorting)), [Ae] = d([]), [Ve, je] = d(
58
+ () => u?.columnVisibility ?? {}
59
+ ), [m, Pe] = d(() => u?.filters?.searchbarFilter), [K, O] = d(() => u?.pagination ?? { pageIndex: 0, pageSize: 10 }), de = f(g);
60
+ de.current = g;
58
61
  const E = f(g?.onStateChange);
59
62
  E.current = g?.onStateChange;
60
- const W = f(null), D = f(null), je = f(0), de = f(!1), ge = f(null), J = f({}), me = f(null), $ = f(z);
63
+ const W = f(null), D = f(null), qe = f(0), ue = f(!1), ge = f(null), J = f({}), me = f(null), $ = f(z);
61
64
  $.current = z;
62
65
  const L = (e) => {
63
66
  e.computedFilter && (J.current.computedFilter = e.computedFilter), e.computedSorting && (J.current.computedSorting = e.computedSorting);
@@ -68,31 +71,31 @@ function Vt({
68
71
  computedSorting: e.computedSorting || J.current.computedSorting
69
72
  };
70
73
  W.current = t, D.current && clearTimeout(D.current), D.current = setTimeout(() => {
71
- W.current && E.current && (je.current = Date.now(), E.current(W.current), W.current = null, D.current = null);
74
+ W.current && E.current && (qe.current = Date.now(), E.current(W.current), W.current = null, D.current = null);
72
75
  }, 400);
73
76
  };
74
77
  H(() => {
75
78
  const e = setTimeout(() => {
76
- de.current = !0;
79
+ ue.current = !0;
77
80
  }, 100);
78
81
  return () => {
79
82
  clearTimeout(e), D.current && clearTimeout(D.current);
80
83
  };
81
84
  }, []);
82
- const [r, G] = u(() => {
83
- const { computedSorting: e, computedFilter: t } = Oe(d);
85
+ const [r, G] = d(() => {
86
+ const { computedSorting: e, computedFilter: t } = Ge(u);
84
87
  return {
85
- pagination: d?.pagination ?? { pageIndex: 0, pageSize: 10 },
86
- sorting: d?.sorting,
87
- filters: d?.filters,
88
- computedFilter: d?.computedFilter ?? t,
89
- computedSorting: d?.computedSorting ?? e
88
+ pagination: u?.pagination ?? { pageIndex: 0, pageSize: 10 },
89
+ sorting: u?.sorting,
90
+ filters: u?.filters,
91
+ computedFilter: u?.computedFilter ?? t,
92
+ computedSorting: u?.computedSorting ?? e
90
93
  };
91
94
  });
92
95
  a && !g && console.warn("DataTable: Server mode requires serverConfig");
93
- const [Pe, pe] = u(0), [qe, fe] = u(0), [Ke, Ee] = u({}), he = se ? Te : Ke, We = se || Ee, [C, ee] = u(
94
- () => d?.filters?.filterBadges ?? []
95
- ), [x, te] = u(() => d?.filters?.advancedFilterBadge), [U, Je] = u(""), [Se, be] = u([]), ve = F(() => P ? [
96
+ const [Ke, pe] = d(0), [Ee, fe] = d(0), [We, Je] = d({}), he = se ? Te : We, Ue = se || Je, [C, ee] = d(
97
+ () => u?.filters?.filterBadges ?? []
98
+ ), [x, te] = d(() => u?.filters?.advancedFilterBadge), [U, Xe] = d(""), [Se, be] = d([]), ve = F(() => P ? [
96
99
  {
97
100
  id: "data-table-integrated-checkbox-column",
98
101
  size: 24,
@@ -149,7 +152,7 @@ function Vt({
149
152
  if (e.id) return e.id;
150
153
  if ("accessorKey" in e && typeof e.accessorKey == "string")
151
154
  return e.accessorKey;
152
- }, Ue = (e) => {
155
+ }, Qe = (e) => {
153
156
  const t = e.meta?.headerLabel;
154
157
  return t || (typeof e.header == "string" ? e.header : X(e) ?? "-");
155
158
  };
@@ -157,23 +160,23 @@ function Vt({
157
160
  const e = (I ?? []).map(X).filter((l) => !!l), t = new Set(Se), o = new Set(e);
158
161
  t.size === o.size && [...t].every((l) => o.has(l)) || be(e);
159
162
  }, [I]);
160
- const B = F(() => I.filter((e) => !!e.meta?.searchable), [I]), T = F(() => B.map((e) => "accessorKey" in e && typeof e.accessorKey == "string" ? e.accessorKey : e.id).filter((e) => !!e), [B]), [Q, Xe] = u(() => d?.computedFilter ?? {}), Qe = {
163
+ const B = F(() => I.filter((e) => !!e.meta?.searchable), [I]), T = F(() => B.map((e) => "accessorKey" in e && typeof e.accessorKey == "string" ? e.accessorKey : e.id).filter((e) => !!e), [B]), [Q, Ye] = d(() => u?.computedFilter ?? {}), Ze = {
161
164
  data: F(() => a || Object.keys(Q).length === 0 ? j : j.filter((e) => we({
162
165
  original: e,
163
166
  getValue: (o) => e[o]
164
167
  }, Q)), [j, Q, a]),
165
168
  columns: I,
166
- getCoreRowModel: xt(),
169
+ getCoreRowModel: wt(),
167
170
  onSortingChange: (e) => {
168
171
  const t = typeof e == "function" ? e(N) : e;
169
- Le(t);
172
+ ke(t);
170
173
  },
171
- getSortedRowModel: Ct(),
174
+ getSortedRowModel: yt(),
172
175
  manualSorting: a,
173
- onColumnVisibilityChange: Ae,
174
- onRowSelectionChange: We,
176
+ onColumnVisibilityChange: je,
177
+ onRowSelectionChange: Ue,
175
178
  onColumnOrderChange: be,
176
- getFilteredRowModel: Ft(),
179
+ getFilteredRowModel: xt(),
177
180
  manualFiltering: a,
178
181
  globalFilterFn: (e, t, o) => a || !o ? !0 : (T ?? []).some((s) => {
179
182
  const l = e.getValue(s);
@@ -211,13 +214,13 @@ function Vt({
211
214
  } : e
212
215
  );
213
216
  },
214
- getPaginationRowModel: vt(),
217
+ getPaginationRowModel: Ct(),
215
218
  manualPagination: a,
216
- pageCount: a && z ? qe : Pe,
219
+ pageCount: a && z ? Ee : Ke,
217
220
  state: {
218
221
  sorting: N,
219
- columnFilters: Ge,
220
- columnVisibility: ke,
222
+ columnFilters: Ae,
223
+ columnVisibility: Ve,
221
224
  rowSelection: he,
222
225
  globalFilter: m,
223
226
  pagination: a ? r.pagination : K,
@@ -225,7 +228,7 @@ function Vt({
225
228
  },
226
229
  // Prevent implicit resets on data/columns changes so filters/sorting persist
227
230
  autoResetPageIndex: !1
228
- }, i = nt(Qe), re = i.getFilteredRowModel();
231
+ }, i = at(Ze), re = i.getFilteredRowModel();
229
232
  H(() => {
230
233
  if (a && g) {
231
234
  const e = Math.ceil(
@@ -257,11 +260,11 @@ function Vt({
257
260
  ), w = _?.getBoundingClientRect().height ?? 40;
258
261
  if (!!!n?.querySelector("td")) return;
259
262
  const A = n?.getBoundingClientRect().height ?? 32.5;
260
- pt(y, {
263
+ ht(y, {
261
264
  rowHeight: A,
262
265
  headerHeight: w,
263
266
  onPageChange: a ? (R, v) => {
264
- if (g && de.current) {
267
+ if (g && ue.current) {
265
268
  const S = b ? {
266
269
  ...r.pagination,
267
270
  pageIndex: R
@@ -316,7 +319,7 @@ function Vt({
316
319
  );
317
320
  }
318
321
  });
319
- }, t = gt(() => {
322
+ }, t = pt(() => {
320
323
  requestAnimationFrame(() => {
321
324
  e();
322
325
  });
@@ -349,24 +352,24 @@ function Vt({
349
352
  Z(e);
350
353
  }
351
354
  }, [i, Z, P, he]);
352
- const Ye = F(() => {
355
+ const $e = F(() => {
353
356
  const e = i.getHeaderGroups()[0], t = e ? e.headers : [];
354
357
  return (i.getState().sorting || []).map((l) => t.find((p) => p.column.id === l.id)).filter(Boolean);
355
358
  }, [
356
359
  i.getHeaderGroups,
357
360
  i.getState().sorting,
358
361
  I
359
- ]), ne = F(() => i.getHeaderGroups()[0].headers.filter((e) => e.column.columnDef.meta?.sortable), [i.getHeaderGroups, I]), k = F(() => i.getHeaderGroups()[0].headers.filter((e) => e.column.columnDef.meta?.filterable), [i.getHeaderGroups, I]), Ze = F(() => U ? k.filter((e) => (e.column.columnDef.meta?.headerLabel ?? (typeof e.column.columnDef.header == "string" ? e.column.columnDef.header : void 0) ?? e.column.id).toLowerCase().includes(U.toLowerCase())) : k, [k, U]), Fe = (e) => {
360
- ee((t) => [...t, ht(e)]);
361
- }, $e = () => {
362
- te(ft());
363
- }, et = F(() => C.sort((e, t) => e.value === void 0 || e.value === "" ? 1 : t.value === void 0 || t.value === "" ? -1 : 1), [C]), Ce = f({
362
+ ]), ne = F(() => i.getHeaderGroups()[0].headers.filter((e) => e.column.columnDef.meta?.sortable), [i.getHeaderGroups, I]), k = F(() => i.getHeaderGroups()[0].headers.filter((e) => e.column.columnDef.meta?.filterable), [i.getHeaderGroups, I]), et = F(() => U ? k.filter((e) => (e.column.columnDef.meta?.headerLabel ?? (typeof e.column.columnDef.header == "string" ? e.column.columnDef.header : void 0) ?? e.column.id).toLowerCase().includes(U.toLowerCase())) : k, [k, U]), Fe = (e) => {
363
+ ee((t) => [...t, bt(e)]);
364
+ }, tt = () => {
365
+ te(St());
366
+ }, rt = F(() => C.sort((e, t) => e.value === void 0 || e.value === "" ? 1 : t.value === void 0 || t.value === "" ? -1 : 1), [C]), Ce = f({
364
367
  filterBadges: [],
365
368
  advancedFilterBadge: void 0,
366
369
  searchbarGlobalFilter: void 0
367
370
  });
368
371
  H(() => {
369
- const e = mt(
372
+ const e = ft(
370
373
  C,
371
374
  x ?? void 0
372
375
  ), t = m && T.length > 0 ? T.length === 1 ? (() => {
@@ -413,8 +416,8 @@ function Vt({
413
416
  advancedFilterBadge: x ? { ...x } : void 0,
414
417
  searchbarGlobalFilter: m
415
418
  };
416
- const _ = ue.current;
417
- if (Xe(s), a && E.current && _) {
419
+ const _ = de.current;
420
+ if (Ye(s), a && E.current && _) {
418
421
  const n = {
419
422
  ...r,
420
423
  computedFilter: s,
@@ -453,11 +456,13 @@ function Vt({
453
456
  N,
454
457
  a
455
458
  ]);
456
- const xe = i.getAllLeafColumns(), tt = xe.filter((e) => e.getIsVisible()), rt = xe.filter((e) => !e.getIsVisible());
459
+ const xe = i.getAllLeafColumns(), nt = xe.filter((e) => e.getIsVisible()), ot = xe.filter((e) => !e.getIsVisible());
457
460
  return /* @__PURE__ */ ie(
458
461
  "div",
459
462
  {
460
- className: ot(
463
+ id: Oe,
464
+ "data-testid": Le,
465
+ className: it(
461
466
  "flex h-full max-h-full min-h-[250px] w-full max-w-full min-w-0 flex-col gap-2",
462
467
  Ie
463
468
  ),
@@ -465,10 +470,10 @@ function Vt({
465
470
  !Me && /* @__PURE__ */ ie("div", { className: "flex w-full items-center justify-between gap-1", children: [
466
471
  /* @__PURE__ */ ie("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-x-auto", children: [
467
472
  ne.length > 0 && /* @__PURE__ */ c(
468
- dt,
473
+ mt,
469
474
  {
470
475
  table: i,
471
- sortedColumns: Ye,
476
+ sortedColumns: $e,
472
477
  sortableColumns: ne,
473
478
  i18n: h,
474
479
  maxSortedColumns: le
@@ -477,18 +482,18 @@ function Vt({
477
482
  ne.length > 0 && k.length > 0 && /* @__PURE__ */ c("div", { className: "border-d-border h-4 min-h-4 w-[1px] border-r" }),
478
483
  De,
479
484
  /* @__PURE__ */ c(
480
- lt,
485
+ dt,
481
486
  {
482
487
  advancedFilterBadge: x,
483
488
  setAdvancedFilterBadge: te,
484
489
  filterableColumns: k,
485
- sortedFilterBadges: et,
490
+ sortedFilterBadges: rt,
486
491
  setFilterBadges: ee,
487
492
  filterSearch: U,
488
- setFilterSearch: Je,
489
- filteredColumns: Ze,
493
+ setFilterSearch: Xe,
494
+ filteredColumns: et,
490
495
  handleAddFilter: Fe,
491
- handleAddAdvancedFilter: $e,
496
+ handleAddAdvancedFilter: tt,
492
497
  i18n: h
493
498
  }
494
499
  )
@@ -496,7 +501,7 @@ function Vt({
496
501
  /* @__PURE__ */ c("div", { className: "border-d-border h-4 min-h-4 w-[1px] border-r" }),
497
502
  Be,
498
503
  (C.length || x) && /* @__PURE__ */ c(
499
- at,
504
+ st,
500
505
  {
501
506
  className: "h-6 text-xs",
502
507
  iconLeft: "FunnelX",
@@ -509,30 +514,30 @@ function Vt({
509
514
  }
510
515
  ),
511
516
  T.length > 0 && /* @__PURE__ */ c(
512
- ut,
517
+ gt,
513
518
  {
514
519
  debounceMs: 300,
515
- onSearch: Ve,
520
+ onSearch: Pe,
516
521
  i18n: h,
517
522
  initialValue: m ?? "",
518
523
  searchableColumnsHeaders: B.map(
519
- (e) => Ue(e)
524
+ (e) => Qe(e)
520
525
  )
521
526
  }
522
527
  ),
523
528
  /* @__PURE__ */ c(
524
- st,
529
+ ct,
525
530
  {
526
531
  table: i,
527
- visibleColumns: tt,
528
- hiddenColumns: rt,
532
+ visibleColumns: nt,
533
+ hiddenColumns: ot,
529
534
  i18n: h
530
535
  }
531
536
  ),
532
- /* @__PURE__ */ c(St, { actions: ze, i18n: h })
537
+ /* @__PURE__ */ c(vt, { actions: ze, i18n: h })
533
538
  ] }),
534
539
  /* @__PURE__ */ c(
535
- it,
540
+ lt,
536
541
  {
537
542
  table: i,
538
543
  tableContainerRef: q,
@@ -550,7 +555,7 @@ function Vt({
550
555
  }
551
556
  ),
552
557
  !_e && /* @__PURE__ */ c(
553
- ct,
558
+ ut,
554
559
  {
555
560
  table: i,
556
561
  isServerSide: a,
@@ -568,5 +573,5 @@ function Vt({
568
573
  );
569
574
  }
570
575
  export {
571
- Vt as DataTable
576
+ Pt as DataTable
572
577
  };
package/dist/index.d.ts CHANGED
@@ -269,7 +269,7 @@ export declare interface AppMultipleSelectOption {
269
269
  disabled?: boolean;
270
270
  }
271
271
 
272
- export declare function AppRadioGroup({ options, value, defaultValue, onValueChange, label, description, disabled, required, name, orientation, loop, className, wrpClassName, optionClassName, layout, error, }: AppRadioGroupProps): JSX.Element;
272
+ export declare function AppRadioGroup({ options, value, defaultValue, onValueChange, label, description, disabled, required, name, orientation, loop, className, wrpClassName, optionClassName, layout, error, id, "data-testid": dataTestId, }: AppRadioGroupProps): JSX.Element;
273
273
 
274
274
  export declare interface AppRadioGroupOption {
275
275
  value: string;
@@ -296,6 +296,8 @@ export declare interface AppRadioGroupProps {
296
296
  optionClassName?: string;
297
297
  layout?: "default" | "card";
298
298
  error?: string;
299
+ id?: string;
300
+ "data-testid"?: string;
299
301
  }
300
302
 
301
303
  export declare function AppSelect(props: AppSelectProps): JSX.Element;
@@ -331,9 +333,10 @@ export declare interface AppStep {
331
333
  completed?: boolean;
332
334
  disabled?: boolean;
333
335
  loading?: boolean;
336
+ "data-testid"?: string;
334
337
  }
335
338
 
336
- export declare function AppStepper({ steps, align, size, showSeparators, defaultStep, allowStepNavigation, allowClickOnlyCompleted, onStepClick, indicators, ...stepperProps }: AppStepperProps): JSX.Element;
339
+ export declare function AppStepper({ steps, align, size, showSeparators, defaultStep, allowStepNavigation, allowClickOnlyCompleted, onStepClick, indicators, id, "data-testid": dataTestId, ...stepperProps }: AppStepperProps): JSX.Element;
337
340
 
338
341
  export declare interface AppStepperProps extends Omit<StepperProps, "children"> {
339
342
  steps: AppStep[];
@@ -345,6 +348,8 @@ export declare interface AppStepperProps extends Omit<StepperProps, "children">
345
348
  allowClickOnlyCompleted?: boolean;
346
349
  onStepClick?: (step: AppStep, index: number) => void;
347
350
  indicators?: StepIndicators;
351
+ id?: string;
352
+ "data-testid"?: string;
348
353
  }
349
354
 
350
355
  export declare function AppTooltip({ content, children, label, labelClassName, header, variant, triggerVariant, size, className, wrpClassName, contentClassName, side, align, sideOffset, matchTriggerWidth, delayDuration, disabled, asChild, }: AppTooltipProps): JSX.Element;
@@ -398,7 +403,7 @@ export declare function AspectRatio({ ...props }: AspectRatioProps): JSX.Element
398
403
 
399
404
  declare type AspectRatioProps = React.ComponentProps<typeof AspectRatioPrimitive.Root>;
400
405
 
401
- export declare function AsyncSelect<T = Option_2>({ fetcher, initialOptions, debounce, renderOptionItem, resolveOptionValue, renderSelectedValue, notFound, label, placeholder, value, onChange, disabled, className, wrpClassName, noResultsMessage, clearable, multiple, size, }: AsyncSelectProps<T>): JSX.Element;
406
+ export declare function AsyncSelect<T = Option_2>({ fetcher, initialOptions, debounce, renderOptionItem, resolveOptionValue, renderSelectedValue, notFound, label, placeholder, value, onChange, disabled, className, wrpClassName, noResultsMessage, clearable, multiple, size, id, "data-testid": dataTestId, }: AsyncSelectProps<T>): JSX.Element;
402
407
 
403
408
  declare interface AsyncSelectMultipleProps<T> extends VariantProps<typeof selectTriggerVariants> {
404
409
  multiple: boolean;
@@ -418,6 +423,8 @@ declare interface AsyncSelectMultipleProps<T> extends VariantProps<typeof select
418
423
  wrpClassName?: string;
419
424
  noResultsMessage?: string;
420
425
  clearable?: boolean;
426
+ id?: string;
427
+ "data-testid"?: string;
421
428
  }
422
429
 
423
430
  declare type AsyncSelectProps<T> = AsyncSelectSingleProps<T> | AsyncSelectMultipleProps<T>;
@@ -440,6 +447,8 @@ declare interface AsyncSelectSingleProps<T> extends VariantProps<typeof selectTr
440
447
  wrpClassName?: string;
441
448
  noResultsMessage?: string;
442
449
  clearable?: boolean;
450
+ id?: string;
451
+ "data-testid"?: string;
443
452
  }
444
453
 
445
454
  declare interface Attachment {
@@ -514,6 +523,8 @@ declare type BaseProps = {
514
523
  showChipsInsteadOfCount?: boolean;
515
524
  size?: SelectSizeType_2;
516
525
  onClear?: () => void;
526
+ id?: string;
527
+ "data-testid"?: string;
517
528
  };
518
529
 
519
530
  export declare function Breadcrumb({ ...props }: React_2.ComponentProps<"nav">): JSX.Element;
@@ -1291,12 +1302,13 @@ export declare enum DataRepeatTypes {
1291
1302
  MONTH = "MONTH"
1292
1303
  }
1293
1304
 
1294
- export declare function DataTable<TData, TValue>({ columns, data, loading, emptyComponent, className, rowSelection, onRowSelectionChange, checkable, onCheckedRowsChange, actions, customComponentsLeft, customComponentsRight, hidePagination, hideActionsRow, i18n, maxSortedColumns, initialState, serverMode, serverConfig, disableAutoPageSize, }: DataTableProps<TData, TValue>): JSX.Element;
1305
+ export declare function DataTable<TData, TValue>({ columns, data, loading, emptyComponent, className, rowSelection, onRowSelectionChange, checkable, onCheckedRowsChange, actions, customComponentsLeft, customComponentsRight, hidePagination, hideActionsRow, i18n, maxSortedColumns, initialState, serverMode, serverConfig, disableAutoPageSize, id, "data-testid": dataTestId, }: DataTableProps<TData, TValue>): JSX.Element;
1295
1306
 
1296
1307
  export declare interface DataTableActions {
1297
1308
  label: string;
1298
1309
  icon: IconName;
1299
1310
  onClick: () => void;
1311
+ "data-testid"?: string;
1300
1312
  }
1301
1313
 
1302
1314
  export declare interface DataTableAdvancedFilter {
@@ -1479,6 +1491,8 @@ export declare interface DataTableProps<TData, TValue> {
1479
1491
  serverMode?: boolean;
1480
1492
  serverConfig?: DataTableServerConfig;
1481
1493
  disableAutoPageSize?: boolean;
1494
+ id?: string;
1495
+ "data-testid"?: string;
1482
1496
  }
1483
1497
 
1484
1498
  export declare interface DataTableServerConfig {
@@ -1501,7 +1515,7 @@ export declare interface DataTableState<TData = Record<string, unknown>> {
1501
1515
  columnVisibility?: Partial<Record<keyof TData, boolean>>;
1502
1516
  }
1503
1517
 
1504
- export declare function DatePicker({ value, onChange, placeholder, dateFormat, className, disabled, size, firstDate, lastDate, availableDates, locale, initialCalendarMonth, customCalendarProps, label, wrpClassName, }: DatePickerProps): JSX.Element;
1518
+ export declare function DatePicker({ value, onChange, placeholder, dateFormat, className, disabled, size, firstDate, lastDate, availableDates, locale, initialCalendarMonth, customCalendarProps, label, wrpClassName, id, "data-testid": dataTestId, }: DatePickerProps): JSX.Element;
1505
1519
 
1506
1520
  export declare interface DatePickerProps {
1507
1521
  value?: Date;
@@ -1520,6 +1534,8 @@ export declare interface DatePickerProps {
1520
1534
  customCalendarProps?: React_2.ComponentProps<typeof Calendar>;
1521
1535
  label?: string | React_2.ReactNode;
1522
1536
  wrpClassName?: string;
1537
+ id?: string;
1538
+ "data-testid"?: string;
1523
1539
  }
1524
1540
 
1525
1541
  /**
@@ -1625,6 +1641,8 @@ declare interface FileUploaderProps {
1625
1641
  removeAllLabel?: string;
1626
1642
  maxTotalSize?: number;
1627
1643
  maxFiles?: number;
1644
+ id?: string;
1645
+ "data-testid"?: string;
1628
1646
  }
1629
1647
 
1630
1648
  declare interface FilterBadgeConfig {
@@ -1855,7 +1873,7 @@ export declare interface InputProps extends Omit<React_2.ComponentProps<"input">
1855
1873
  showValidityMessage?: boolean;
1856
1874
  }
1857
1875
 
1858
- export declare function InputSelector({ value, onChange, min, max, className, buttonClassName, counterClassName, }: InputSelectorProps): JSX.Element;
1876
+ export declare function InputSelector({ value, onChange, min, max, className, buttonClassName, counterClassName, id, "data-testid": dataTestId, }: InputSelectorProps): JSX.Element;
1859
1877
 
1860
1878
  export declare interface InputSelectorProps {
1861
1879
  value: number;
@@ -1865,6 +1883,8 @@ export declare interface InputSelectorProps {
1865
1883
  className?: string;
1866
1884
  buttonClassName?: string;
1867
1885
  counterClassName?: string;
1886
+ id?: string;
1887
+ "data-testid"?: string;
1868
1888
  }
1869
1889
 
1870
1890
  export declare interface InputValidityI18n {
@@ -1975,7 +1995,7 @@ export declare interface Message {
1975
1995
  parts?: MessagePart[];
1976
1996
  }
1977
1997
 
1978
- export declare function MessageInput({ placeholder, className, onKeyDown: onKeyDownProp, submitOnEnter, stop, isGenerating, enableInterrupt, transcribeAudio, ...props }: MessageInputProps): JSX.Element;
1998
+ export declare function MessageInput({ placeholder, className, onKeyDown: onKeyDownProp, submitOnEnter, stop, isGenerating, enableInterrupt, transcribeAudio, "data-testid": dataTestId, ...props }: MessageInputProps): JSX.Element;
1979
1999
 
1980
2000
  export declare namespace MessageInput {
1981
2001
  var displayName: string;
@@ -1988,6 +2008,7 @@ declare interface MessageInputBaseProps extends default_2.TextareaHTMLAttributes
1988
2008
  isGenerating: boolean;
1989
2009
  enableInterrupt?: boolean;
1990
2010
  transcribeAudio?: (blob: Blob) => Promise<string>;
2011
+ "data-testid"?: string;
1991
2012
  }
1992
2013
 
1993
2014
  declare type MessageInputProps = MessageInputWithoutAttachmentProps | MessageInputWithAttachmentsProps;
@@ -3,7 +3,7 @@ import { stringify as w } from "../../comma-separated-tokens/index.js";
3
3
  import { ok as u } from "../../devlop/lib/default.js";
4
4
  import { svg as m, html as C } from "../../property-information/index.js";
5
5
  import { stringify as N } from "../../space-separated-tokens/index.js";
6
- import S from "../../../_virtual/index5.js";
6
+ import S from "../../../_virtual/index4.js";
7
7
  import { whitespace as j } from "../../hast-util-whitespace/lib/index.js";
8
8
  import { name as x } from "../../estree-util-is-identifier-name/lib/index.js";
9
9
  import { VFileMessage as h } from "../../vfile-message/lib/index.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { bail as P } from "../../bail/index.js";
3
- import y from "../../../_virtual/index4.js";
3
+ import y from "../../../_virtual/index5.js";
4
4
  import z from "../../is-plain-obj/index.js";
5
5
  import { CallableInstance as C } from "./callable-instance.js";
6
6
  import { trough as A } from "../../trough/lib/index.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "laif-ds",
3
3
  "private": false,
4
- "version": "0.2.63",
4
+ "version": "0.2.64",
5
5
  "type": "module",
6
6
  "main": "dist/index.es.js",
7
7
  "module": "dist/index.es.js",