@alfadocs/ui-kit 0.73.0 → 0.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/_chunks/actions-cell-renderer-DLrcSTK_.js +1546 -0
  2. package/dist/_chunks/{ai-prompt-input-DFm58UjY.js → ai-prompt-input-DziJCGLe.js} +2 -2
  3. package/dist/_chunks/{audio-recorder-CjAY0GAc.js → audio-recorder-Cc3KuL9y.js} +2 -2
  4. package/dist/_chunks/{bishop-score-Bs6t6Zv1.js → bishop-score-DDW5-gb9.js} +2 -2
  5. package/dist/_chunks/{booking-CWnZhZ5g.js → booking-B1Qkcl3c.js} +2 -2
  6. package/dist/_chunks/{care-plan-card-CfIP3Vc1.js → care-plan-card-BrwhyIJI.js} +2 -2
  7. package/dist/_chunks/{care-plan-entry-card-CRbS-G00.js → care-plan-entry-card-DWEdCQM3.js} +2 -2
  8. package/dist/_chunks/data-table-tabs-BEUXiRlu.js +710 -0
  9. package/dist/_chunks/document-preview-CGSM_au9.js +181 -0
  10. package/dist/_chunks/{document-scanner-BE6Jz4Ob.js → document-scanner-B6h1Ir56.js} +2 -2
  11. package/dist/_chunks/{field-value-DCXJXKab.js → field-value-DHG6gEKS.js} +2 -2
  12. package/dist/_chunks/file-Cwe9VC1A.js +40 -0
  13. package/dist/_chunks/file-manager-UF8dkQF1.js +1776 -0
  14. package/dist/_chunks/{file-upload-B2SXhRiN.js → file-upload-DENvuhfs.js} +98 -129
  15. package/dist/_chunks/{gestational-age-calculator-C9Dfis4I.js → gestational-age-calculator-BpYw-WF-.js} +2 -2
  16. package/dist/_chunks/{header-settings-CRQDCYgr.js → header-settings-4cwQzeFc.js} +2 -2
  17. package/dist/_chunks/{icon-picker-BePK27S-.js → icon-picker-CM9ubkew.js} +2 -2
  18. package/dist/_chunks/link-cell-renderer-BQGUs45d.js +711 -0
  19. package/dist/_chunks/{locale-picker-Cbfqc0_N.js → locale-picker-GNF3lo8K.js} +2 -2
  20. package/dist/_chunks/{marketplace-app-shell-Dm6S-hun.js → marketplace-app-shell-D_1tF4La.js} +3 -3
  21. package/dist/_chunks/{muscle-scheme-B9MIkuj0.js → muscle-scheme-CFBE2dme.js} +6 -14
  22. package/dist/_chunks/{notes-panel-B_8-Mebz.js → notes-panel-Cvdp818a.js} +2 -2
  23. package/dist/_chunks/{optical-prescription-BQ75_kf6.js → optical-prescription-BEjYQjiO.js} +2 -2
  24. package/dist/_chunks/{patient-details-JkOI3Ijd.js → patient-details-DP4wKyq4.js} +3 -3
  25. package/dist/_chunks/{patient-summary-card-CQOLMH3E.js → patient-summary-card-D6kgdTNn.js} +2 -2
  26. package/dist/_chunks/{patient-table-B_mOe-ZT.js → patient-table-DweKjiXg.js} +122 -118
  27. package/dist/_chunks/periodontal-chart-D8hOFmde.js +1173 -0
  28. package/dist/_chunks/periodontal-diagnosis-cco40xTa.js +345 -0
  29. package/dist/_chunks/periodontal-risk-chart-bUGkMwDg.js +334 -0
  30. package/dist/_chunks/{popover-DGTKfLWh.js → popover-Cc0a69sw.js} +31 -28
  31. package/dist/_chunks/{pregnancy-dating-IsDVfqJX.js → pregnancy-dating-msMl_6wz.js} +2 -2
  32. package/dist/_chunks/{radiograph-panel.agent-e488ooH8.js → radiograph-panel.agent-CxF9pVxd.js} +2 -2
  33. package/dist/_chunks/{rich-text-editor-CgA2bYwi.js → rich-text-editor-CCWjNkbx.js} +186 -177
  34. package/dist/_chunks/{select-BmCbJMJS.js → select-BW5ecXlX.js} +13 -13
  35. package/dist/_chunks/{sidebar-CtU35PIX.js → sidebar-C0PbwJBc.js} +357 -320
  36. package/dist/_chunks/signature-request-C-mskXwi.js +318 -0
  37. package/dist/_chunks/{tabs-DVQ941Sj.js → tabs-CVTukWRD.js} +2 -2
  38. package/dist/_chunks/{tasks-panel-LCK5ZXvU.js → tasks-panel-CjGAhIN8.js} +2 -2
  39. package/dist/_chunks/tooth-data-BwuoKFf4.js +660 -0
  40. package/dist/_chunks/tooth-scheme-BzJ6rcte.js +1483 -0
  41. package/dist/_chunks/{unit-converter-3uL_tMCm.js → unit-converter-CSLWFDQh.js} +2 -2
  42. package/dist/agent-catalog.json +1282 -213
  43. package/dist/agent-i18n/en.json +84 -5
  44. package/dist/components/_shared/entity-card/entity-card.d.ts +1 -1
  45. package/dist/components/ai-prompt-input/index.js +1 -1
  46. package/dist/components/anamnesis-card/anamnesis-card.d.ts +1 -1
  47. package/dist/components/appointment-card/appointment-card.d.ts +1 -1
  48. package/dist/components/audio-recorder/index.js +1 -1
  49. package/dist/components/bishop-score/index.js +1 -1
  50. package/dist/components/booking/index.js +1 -1
  51. package/dist/components/card/card.d.ts +1 -1
  52. package/dist/components/care-plan-card/index.js +1 -1
  53. package/dist/components/care-plan-entry-card/index.js +1 -1
  54. package/dist/components/clinical-note-card/clinical-note-card.d.ts +1 -1
  55. package/dist/components/contact-profile-card/contact-profile-card.d.ts +1 -1
  56. package/dist/components/data-table/index.js +35 -34
  57. package/dist/components/data-table/toolbar.d.ts +1 -1
  58. package/dist/components/data-table-tabs/data-table-tabs.agent.d.ts +4 -0
  59. package/dist/components/data-table-tabs/data-table-tabs.d.ts +93 -0
  60. package/dist/components/data-table-tabs/index.d.ts +5 -0
  61. package/dist/components/data-table-tabs/index.js +8 -0
  62. package/dist/components/data-table-tabs/use-data-table-filter-tabs.d.ts +63 -0
  63. package/dist/components/document-preview/document-preview.agent.d.ts +4 -0
  64. package/dist/components/document-preview/document-preview.d.ts +41 -0
  65. package/dist/components/document-preview/index.d.ts +4 -0
  66. package/dist/components/document-preview/index.js +6 -0
  67. package/dist/components/document-scanner/index.js +1 -1
  68. package/dist/components/file-manager/dialogs.d.ts +48 -0
  69. package/dist/components/file-manager/file-manager.agent.d.ts +4 -0
  70. package/dist/components/file-manager/file-manager.d.ts +82 -0
  71. package/dist/components/file-manager/folder-tree.d.ts +12 -0
  72. package/dist/components/file-manager/index.d.ts +5 -0
  73. package/dist/components/file-manager/index.js +6 -0
  74. package/dist/components/file-manager/list-view.d.ts +49 -0
  75. package/dist/components/file-manager/toolbar.d.ts +15 -0
  76. package/dist/components/file-manager/types.d.ts +167 -0
  77. package/dist/components/file-manager/utils.d.ts +34 -0
  78. package/dist/components/file-upload/index.js +1 -1
  79. package/dist/components/gestational-age-calculator/index.js +1 -1
  80. package/dist/components/header-settings/index.js +1 -1
  81. package/dist/components/icon-picker/index.js +1 -1
  82. package/dist/components/index.d.ts +7 -0
  83. package/dist/components/locale-picker/index.js +1 -1
  84. package/dist/components/message-card/message-card.d.ts +1 -1
  85. package/dist/components/muscle-scheme/index.js +1 -1
  86. package/dist/components/notes-panel/index.js +1 -1
  87. package/dist/components/notification-card/notification-card.d.ts +1 -1
  88. package/dist/components/operator-hero/operator-hero.d.ts +1 -1
  89. package/dist/components/optical-prescription/index.js +1 -1
  90. package/dist/components/patient-details/index.js +1 -1
  91. package/dist/components/patient-summary-card/index.js +1 -1
  92. package/dist/components/patient-summary-card/patient-summary-card.d.ts +1 -1
  93. package/dist/components/patient-table/index.js +1 -1
  94. package/dist/components/payment-card/payment-card.d.ts +1 -1
  95. package/dist/components/payment-card/payment-request-card.d.ts +1 -1
  96. package/dist/components/periodontal-chart/index.d.ts +6 -0
  97. package/dist/components/periodontal-chart/index.js +22 -0
  98. package/dist/components/periodontal-chart/periodontal-chart-data.d.ts +119 -0
  99. package/dist/components/periodontal-chart/periodontal-chart.agent.d.ts +4 -0
  100. package/dist/components/periodontal-chart/periodontal-chart.d.ts +69 -0
  101. package/dist/components/periodontal-chart-card/periodontal-chart-card.d.ts +1 -1
  102. package/dist/components/periodontal-diagnosis/index.d.ts +6 -0
  103. package/dist/components/periodontal-diagnosis/index.js +13 -0
  104. package/dist/components/periodontal-diagnosis/periodontal-diagnosis-data.d.ts +30 -0
  105. package/dist/components/periodontal-diagnosis/periodontal-diagnosis.agent.d.ts +4 -0
  106. package/dist/components/periodontal-diagnosis/periodontal-diagnosis.d.ts +44 -0
  107. package/dist/components/periodontal-risk-chart/index.d.ts +6 -0
  108. package/dist/components/periodontal-risk-chart/index.js +9 -0
  109. package/dist/components/periodontal-risk-chart/periodontal-risk-chart.agent.d.ts +4 -0
  110. package/dist/components/periodontal-risk-chart/periodontal-risk-chart.d.ts +28 -0
  111. package/dist/components/periodontal-risk-chart/periodontal-risk-data.d.ts +47 -0
  112. package/dist/components/popover/index.js +1 -1
  113. package/dist/components/popover/popover.d.ts +1 -0
  114. package/dist/components/pregnancy-dating/index.js +1 -1
  115. package/dist/components/product-hub-tray/product-hub-panel.d.ts +1 -1
  116. package/dist/components/radiograph-panel/index.js +1 -1
  117. package/dist/components/rich-text-editor/index.js +1 -1
  118. package/dist/components/select/index.js +1 -1
  119. package/dist/components/sidebar/index.js +1 -1
  120. package/dist/components/sidebar/sidebar.d.ts +9 -0
  121. package/dist/components/skeleton-scheme/index.js +5 -13
  122. package/dist/components/stat/stat.d.ts +1 -1
  123. package/dist/components/tabs/index.js +1 -1
  124. package/dist/components/tasks-panel/index.js +1 -1
  125. package/dist/components/tooth-scheme/index.js +29 -28
  126. package/dist/components/unit-converter/index.js +1 -1
  127. package/dist/i18n/locales/ar.d.ts +320 -0
  128. package/dist/i18n/locales/ar.js +320 -0
  129. package/dist/i18n/locales/de.d.ts +320 -0
  130. package/dist/i18n/locales/de.js +320 -0
  131. package/dist/i18n/locales/el.d.ts +320 -0
  132. package/dist/i18n/locales/el.js +320 -0
  133. package/dist/i18n/locales/en.d.ts +320 -0
  134. package/dist/i18n/locales/en.js +320 -0
  135. package/dist/i18n/locales/es.d.ts +320 -0
  136. package/dist/i18n/locales/es.js +320 -0
  137. package/dist/i18n/locales/fr.d.ts +320 -0
  138. package/dist/i18n/locales/fr.js +320 -0
  139. package/dist/i18n/locales/hi.d.ts +320 -0
  140. package/dist/i18n/locales/hi.js +320 -0
  141. package/dist/i18n/locales/it.d.ts +320 -0
  142. package/dist/i18n/locales/it.js +320 -0
  143. package/dist/i18n/locales/ja.d.ts +320 -0
  144. package/dist/i18n/locales/ja.js +320 -0
  145. package/dist/i18n/locales/nl.d.ts +320 -0
  146. package/dist/i18n/locales/nl.js +320 -0
  147. package/dist/i18n/locales/pl.d.ts +320 -0
  148. package/dist/i18n/locales/pl.js +320 -0
  149. package/dist/i18n/locales/pt.d.ts +320 -0
  150. package/dist/i18n/locales/pt.js +320 -0
  151. package/dist/i18n/locales/ro.d.ts +320 -0
  152. package/dist/i18n/locales/ro.js +320 -0
  153. package/dist/i18n/locales/ru.d.ts +320 -0
  154. package/dist/i18n/locales/ru.js +320 -0
  155. package/dist/i18n/locales/sq.d.ts +320 -0
  156. package/dist/i18n/locales/sq.js +320 -0
  157. package/dist/i18n/locales/sv.d.ts +320 -0
  158. package/dist/i18n/locales/sv.js +320 -0
  159. package/dist/i18n/locales/tr.d.ts +320 -0
  160. package/dist/i18n/locales/tr.js +320 -0
  161. package/dist/i18n/locales/zh.d.ts +320 -0
  162. package/dist/i18n/locales/zh.js +320 -0
  163. package/dist/index.js +832 -782
  164. package/dist/locales/ar.json +320 -0
  165. package/dist/locales/de.json +320 -0
  166. package/dist/locales/el.json +320 -0
  167. package/dist/locales/en.json +320 -0
  168. package/dist/locales/es.json +320 -0
  169. package/dist/locales/fr.json +320 -0
  170. package/dist/locales/hi.json +320 -0
  171. package/dist/locales/it.json +320 -0
  172. package/dist/locales/ja.json +320 -0
  173. package/dist/locales/nl.json +320 -0
  174. package/dist/locales/pl.json +320 -0
  175. package/dist/locales/pt.json +320 -0
  176. package/dist/locales/ro.json +320 -0
  177. package/dist/locales/ru.json +320 -0
  178. package/dist/locales/sq.json +320 -0
  179. package/dist/locales/sv.json +320 -0
  180. package/dist/locales/tr.json +320 -0
  181. package/dist/locales/zh.json +320 -0
  182. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  183. package/dist/patterns/signature-request/index.d.ts +3 -0
  184. package/dist/patterns/signature-request/index.js +5 -0
  185. package/dist/patterns/signature-request/signature-request.d.ts +81 -0
  186. package/dist/tokens.css +1 -1
  187. package/package.json +29 -1
  188. package/dist/_chunks/columns-2-8lq4-b8e.js +0 -15
  189. package/dist/_chunks/link-cell-renderer-CLI7sBkX.js +0 -2210
  190. package/dist/_chunks/tooth-scheme-CX49GycY.js +0 -2133
@@ -1,2210 +0,0 @@
1
- import { jsx as n, jsxs as A } from "react/jsx-runtime";
2
- import { useMemo as O, forwardRef as G, useState as k, useCallback as q, useEffect as P, useRef as ke, createContext as Ee, useContext as Ae, isValidElement as Oe, cloneElement as ze, useImperativeHandle as ht } from "react";
3
- import { S as vt } from "./skeleton-CZbwyJAA.js";
4
- import { E as Tt } from "./empty-state-CrLsi0XI.js";
5
- import { c as yt } from "./index-D2ZczOXr.js";
6
- import { useTranslation as D } from "react-i18next";
7
- import { useGridFilter as ee, AgGridReact as Ct } from "ag-grid-react";
8
- import { ModuleRegistry as xt, AllCommunityModule as St } from "ag-grid-community";
9
- import { I as Pe } from "./icon-button-group-C_lqXTAj.js";
10
- import { B } from "./button-CPGiR_bH.js";
11
- import { I as V } from "./icon-button-C_kbcd7I.js";
12
- import { P as ae } from "./popover-DGTKfLWh.js";
13
- import { C as Me } from "./checkbox-BuZ1u__2.js";
14
- import { T as me } from "./text-input-CUvCb6ST.js";
15
- import { T as oe } from "./tag-3wgkwwDB.js";
16
- import { D as _ } from "./dropdown-menu-DU-Hrf33.js";
17
- import { X as qe } from "./x-B5YnXwCz.js";
18
- import { R as wt } from "./refresh-cw-DnI0cLFC.js";
19
- import { S as ge } from "./search-QbWPlY5f.js";
20
- import { C as Nt } from "./columns-2-8lq4-b8e.js";
21
- import { G as Ft } from "./grip-vertical-onSb1JXO.js";
22
- import { P as Rt } from "./printer-rkK0T1gi.js";
23
- import { F as je } from "./file-text-5yv6r2ls.js";
24
- import { D as se } from "./download-CfYKJO_j.js";
25
- import { F as Dt } from "./file-spreadsheet-DmwyfV4O.js";
26
- import It from "i18next";
27
- import { S as Le } from "./select-BmCbJMJS.js";
28
- import { u as kt } from "./registry-DvAUVLHh.js";
29
- import { u as Et } from "./use-prefers-reduced-motion-BMwIQRjB.js";
30
- import { u as At } from "./use-theme-CAuo6EYT.js";
31
- import { D as Ge } from "./date-range-picker-Cbz1SKhm.js";
32
- import { M as Ot } from "./multi-select-D5QLBJM1.js";
33
- import { S as zt } from "./scroll-area-BZOvUhwQ.js";
34
- import { A as Be } from "./autocomplete-BrONKN8l.js";
35
- import { N as re } from "./number-input-DjWzmlEY.js";
36
- import { B as Pt } from "./badge-DCOqV9mI.js";
37
- import { A as $e } from "./avatar-BNQNhoyL.js";
38
- import { T as Mt } from "./tooltip-DvmfrNvB.js";
39
- import { T as Ne } from "./timestamp-BV2lC-wV.js";
40
- import { E as qt } from "./ellipsis-dRo9ouSU.js";
41
- function jt(t) {
42
- if (!Oe(t)) return t;
43
- const e = t, a = e.props.className ?? "", r = /\bsize-|\bw-|\bh-/.test(a) ? a : `${a} ds:size-4`.trim();
44
- return ze(e, { className: r, size: e.props.size ?? 16 });
45
- }
46
- const _e = Ee(null);
47
- function $(t) {
48
- const e = Ae(_e);
49
- if (!e)
50
- throw new Error(
51
- `${t} must be rendered inside <DataTable.Toolbar> as a descendant of <DataTable>.`
52
- );
53
- return e;
54
- }
55
- function Lt({
56
- getApi: t,
57
- selectionCount: e,
58
- onPrint: a,
59
- children: r
60
- }) {
61
- const o = O(
62
- () => ({ getApi: t, selectionCount: e, onPrint: a }),
63
- [t, e, a]
64
- );
65
- return /* @__PURE__ */ n(_e.Provider, { value: o, children: r });
66
- }
67
- const Gt = [
68
- "data-table-toolbar",
69
- // Mobile (<sm) keeps `flex-wrap` so a wide QuickSearch can flow above the
70
- // Actions cluster on narrow screens. From `sm` (≥640px) we switch to
71
- // `flex-nowrap` + `min-w-0` so the row stays single-line at every common
72
- // desktop width (1024 / 1280 / 1440) — the QuickSearch slot shrinks via
73
- // its own `min-w-0` instead of pushing the trailing Actions to a new row.
74
- "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]",
75
- "ds:sm:flex-nowrap ds:min-w-0"
76
- // No card surface: the toolbar sits directly on the page background,
77
- // matching the header-tools layout the Patients / Care Plan List
78
- // patterns established (the old bg-card + border + shadow bar is gone).
79
- ].join(" "), Ve = G(
80
- ({ className: t, children: e, ...a }, r) => /* @__PURE__ */ n(
81
- "div",
82
- {
83
- ref: r,
84
- role: "toolbar",
85
- className: [Gt, t ?? ""].join(" ").trim(),
86
- ...a,
87
- children: e
88
- }
89
- )
90
- );
91
- Ve.displayName = "DataTable.Toolbar";
92
- const We = G(
93
- ({ className: t, children: e, ...a }, r) => /* @__PURE__ */ n(
94
- "div",
95
- {
96
- ref: r,
97
- className: [
98
- "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]",
99
- // `grow` lets FilterBar absorb the free space; `min-w-0` lets the
100
- // QuickSearch slot inside shrink below its intrinsic width when the
101
- // toolbar runs `flex-nowrap` at `sm` and above, so the trailing
102
- // Actions cluster stays pinned on a single row.
103
- "ds:grow ds:min-w-0",
104
- t ?? ""
105
- ].join(" ").trim(),
106
- ...a,
107
- children: e
108
- }
109
- )
110
- );
111
- We.displayName = "DataTable.Toolbar.FilterBar";
112
- const Ke = G(
113
- ({ className: t, children: e, ...a }, r) => /* @__PURE__ */ n(
114
- "div",
115
- {
116
- ref: r,
117
- className: [
118
- "ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
119
- "ds:ms-auto",
120
- t ?? ""
121
- ].join(" ").trim(),
122
- ...a,
123
- children: e
124
- }
125
- )
126
- );
127
- Ke.displayName = "DataTable.Toolbar.Actions";
128
- const be = G(
129
- ({ label: t, onExport: e, intent: a = "outline", ...r }, o) => {
130
- const { t: s } = D(), { getApi: i } = $("DataTable.Toolbar.ExportCsv"), p = q(() => {
131
- const c = i();
132
- c && (e ? e(c) : c.exportDataAsCsv());
133
- }, [i, e]);
134
- return /* @__PURE__ */ n(
135
- V,
136
- {
137
- ref: o,
138
- type: "button",
139
- intent: a,
140
- icon: /* @__PURE__ */ n(se, { "aria-hidden": !0 }),
141
- tooltip: t ?? s("dataTable.exportCsv"),
142
- onClick: p,
143
- ...r
144
- }
145
- );
146
- }
147
- );
148
- be.displayName = "DataTable.Toolbar.ExportCsv";
149
- function J(t, e = [30, 30, 30]) {
150
- if (typeof document > "u") return e;
151
- const a = document.createElement("span");
152
- a.style.color = `hsl(var(${t}))`, a.style.position = "absolute", a.style.visibility = "hidden", document.body.appendChild(a);
153
- const r = getComputedStyle(a).color;
154
- document.body.removeChild(a);
155
- const o = r.match(/rgba?\(\s*(\d+)[,\s]+(\d+)[,\s]+(\d+)/i);
156
- return o ? [Number(o[1]), Number(o[2]), Number(o[3])] : e;
157
- }
158
- async function Ue(t, e) {
159
- if (!t) return;
160
- const [{ jsPDF: a }, { default: r }] = await Promise.all([
161
- import("./jspdf.es.min-DaapWjR1.js").then((f) => f.j),
162
- import("./jspdf.plugin.autotable-CSiDNyPn.js")
163
- ]), s = (t.getColumns() ?? []).filter((f) => f.isVisible()), i = [
164
- s.map((f) => t.getDisplayNameForColumn(f, null) ?? "")
165
- ], p = [];
166
- t.forEachNodeAfterFilterAndSort((f) => {
167
- if (!f.data) return;
168
- const h = s.map((T) => {
169
- const w = t.getCellValue({
170
- rowNode: f,
171
- colKey: T,
172
- useFormatter: !0
173
- });
174
- return w == null ? "" : String(w);
175
- });
176
- p.push(h);
177
- });
178
- const c = J("--muted", [240, 240, 240]), d = J("--foreground", [30, 30, 30]), l = J("--card-foreground", [30, 30, 30]), u = J("--card", [250, 250, 250]), b = new a({ orientation: "landscape" });
179
- r(b, {
180
- head: i,
181
- body: p,
182
- headStyles: { fillColor: c, textColor: d },
183
- bodyStyles: { textColor: l },
184
- alternateRowStyles: { fillColor: u },
185
- styles: {
186
- font: "helvetica",
187
- fontSize: 10,
188
- cellPadding: 4
189
- }
190
- }), b.save(e.fileName);
191
- }
192
- const he = G(
193
- ({ label: t, onClick: e, fileName: a, intent: r = "outline", ...o }, s) => {
194
- const { t: i } = D(), { getApi: p } = $("DataTable.Toolbar.ExportPdf"), c = q(() => {
195
- const d = p();
196
- if (e) {
197
- e(d);
198
- return;
199
- }
200
- Ue(d, {
201
- fileName: a ?? "data-table-export.pdf"
202
- });
203
- }, [p, e, a]);
204
- return /* @__PURE__ */ n(
205
- V,
206
- {
207
- ref: s,
208
- type: "button",
209
- intent: r,
210
- icon: /* @__PURE__ */ n(je, { "aria-hidden": !0 }),
211
- tooltip: t ?? i("dataTable.exportPdf"),
212
- onClick: c,
213
- ...o
214
- }
215
- );
216
- }
217
- );
218
- he.displayName = "DataTable.Toolbar.ExportPdf";
219
- const ve = G(
220
- ({ label: t, intent: e = "outline", ...a }, r) => {
221
- const { t: o } = D(), { onPrint: s } = $("DataTable.Toolbar.Print");
222
- return /* @__PURE__ */ n(
223
- V,
224
- {
225
- ref: r,
226
- type: "button",
227
- intent: e,
228
- icon: /* @__PURE__ */ n(Rt, { "aria-hidden": !0 }),
229
- tooltip: t ?? o("dataTable.print"),
230
- onClick: s,
231
- ...a
232
- }
233
- );
234
- }
235
- );
236
- ve.displayName = "DataTable.Toolbar.Print";
237
- const He = ({ placeholder: t, debounceMs: e = 150 }) => {
238
- const { t: a } = D(), { getApi: r } = $("DataTable.Toolbar.QuickSearch"), [o, s] = k(""), i = ke(void 0);
239
- return P(() => (i.current && window.clearTimeout(i.current), i.current = window.setTimeout(() => {
240
- const p = r();
241
- p && p.setGridOption("quickFilterText", o);
242
- }, e), () => {
243
- i.current && window.clearTimeout(i.current);
244
- }), [o, e, r]), // Slot wrapper caps the search at a sensible legible width on desktop —
245
- // without this, TextInput's `w-full` lets the QuickSearch absorb the
246
- // entire FilterBar row and push trailing Actions onto a second line at
247
- // 1024 / 1280 / 1440. `min-w-0` lets the slot shrink below `24rem` when
248
- // the toolbar is squeezed on narrow viewports. There is no
249
- // `--toolbar-search-max` token in the kit yet — see this component's
250
- // summary for a follow-up note recommending we add one.
251
- /* @__PURE__ */ n("div", { className: "ds:w-full ds:max-w-[24rem] ds:min-w-0", children: /* @__PURE__ */ n(
252
- me,
253
- {
254
- type: "search",
255
- size: "sm",
256
- value: o,
257
- onChange: (p) => s(p.target.value),
258
- placeholder: t ?? a("dataTable.quickSearch.placeholder", "Search…"),
259
- startAdornment: /* @__PURE__ */ n(ge, { "aria-hidden": !0, className: "ds:size-4" }),
260
- clearable: !0,
261
- onClear: () => s(""),
262
- "aria-label": a("dataTable.quickSearch.label", "Quick search")
263
- }
264
- ) });
265
- };
266
- He.displayName = "DataTable.Toolbar.QuickSearch";
267
- const Te = G(
268
- ({ onRefresh: t, label: e, intent: a = "outline", ...r }, o) => {
269
- const { t: s } = D();
270
- return /* @__PURE__ */ n(
271
- V,
272
- {
273
- ref: o,
274
- type: "button",
275
- intent: a,
276
- icon: /* @__PURE__ */ n(wt, { "aria-hidden": !0 }),
277
- tooltip: e ?? s("dataTable.refresh", "Refresh"),
278
- onClick: t,
279
- ...r
280
- }
281
- );
282
- }
283
- );
284
- Te.displayName = "DataTable.Toolbar.Refresh";
285
- function Bt(t) {
286
- if (!t || typeof t != "object") return "";
287
- const e = t;
288
- if (typeof e.filter == "string" || typeof e.filter == "number") {
289
- const a = typeof e.type == "string" ? e.type : "", r = typeof e.filterTo == "string" || typeof e.filterTo == "number" ? String(e.filterTo) : "";
290
- return a === "inRange" && r ? `${e.filter} – ${r}` : a ? `${a} ${e.filter}` : String(e.filter);
291
- }
292
- return typeof e.dateFrom == "string" ? typeof e.dateTo == "string" && e.dateTo ? `${e.dateFrom} – ${e.dateTo}` : String(e.dateFrom) : Array.isArray(e.values) ? e.values.map(String).join(", ") : "";
293
- }
294
- const Qe = () => {
295
- const { t } = D(), { getApi: e } = $("DataTable.Toolbar.FilterChips"), [a, r] = k([]), [o, s] = k(""), i = q(() => {
296
- const l = e();
297
- if (!l) {
298
- r([]), s("");
299
- return;
300
- }
301
- const u = l.getFilterModel() ?? {}, b = l.getColumns() ?? [], f = [];
302
- for (const T of Object.keys(u)) {
303
- const w = b.find((m) => m.getColId() === T), g = l.getDisplayNameForColumn(w, null) ?? T;
304
- f.push({
305
- colId: T,
306
- headerName: g,
307
- text: Bt(u[T])
308
- });
309
- }
310
- r(f);
311
- const h = l.getGridOption("quickFilterText");
312
- s(typeof h == "string" ? h : "");
313
- }, [e]);
314
- if (P(() => {
315
- let l;
316
- const u = (h) => i(), b = (h) => {
317
- h.addEventListener("filterChanged", u), i(), l = () => h.removeEventListener("filterChanged", u);
318
- }, f = e();
319
- if (f)
320
- b(f);
321
- else {
322
- const h = window.setInterval(() => {
323
- const T = e();
324
- T && (window.clearInterval(h), b(T));
325
- }, 50);
326
- l = () => window.clearInterval(h);
327
- }
328
- return () => l == null ? void 0 : l();
329
- }, [e, i]), a.length + (o ? 1 : 0) === 0) return null;
330
- function c(l) {
331
- const u = e();
332
- u && u.destroyFilter(l);
333
- }
334
- function d() {
335
- const l = e();
336
- l && (l.setFilterModel(null), l.setGridOption("quickFilterText", ""), s(""));
337
- }
338
- return /* @__PURE__ */ A(
339
- "div",
340
- {
341
- role: "group",
342
- "aria-label": t("dataTable.filterChips.label", "Active filters"),
343
- className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]",
344
- children: [
345
- o && /* @__PURE__ */ n(
346
- oe,
347
- {
348
- label: `${t("dataTable.quickSearch.label", "Quick search")}: ${o}`,
349
- size: "sm",
350
- fill: "outline",
351
- onRemove: () => {
352
- const l = e();
353
- l == null || l.setGridOption("quickFilterText", ""), s("");
354
- }
355
- }
356
- ),
357
- a.map((l) => /* @__PURE__ */ n(
358
- oe,
359
- {
360
- label: l.text ? `${l.headerName}: ${l.text}` : l.headerName,
361
- size: "sm",
362
- fill: "outline",
363
- onRemove: () => c(l.colId)
364
- },
365
- l.colId
366
- )),
367
- /* @__PURE__ */ n(
368
- B,
369
- {
370
- type: "button",
371
- intent: "ghost",
372
- size: "sm",
373
- onClick: d,
374
- startIcon: /* @__PURE__ */ n(qe, { "aria-hidden": !0, className: "ds:size-4" }),
375
- children: t("dataTable.filterChips.clearAll", "Clear all")
376
- }
377
- )
378
- ]
379
- }
380
- );
381
- };
382
- Qe.displayName = "DataTable.Toolbar.FilterChips";
383
- const Je = ({
384
- field: t,
385
- options: e,
386
- label: a
387
- }) => {
388
- const { t: r } = D(), { getApi: o } = $("DataTable.Toolbar.FacetFilter"), [s, i] = k(null);
389
- function p(c) {
390
- i(c);
391
- const d = o();
392
- if (d) {
393
- if (c === null) {
394
- d.destroyFilter(t);
395
- return;
396
- }
397
- d.setColumnFilterModel(t, {
398
- type: "equals",
399
- filter: c
400
- }), d.onFilterChanged();
401
- }
402
- }
403
- return /* @__PURE__ */ n(
404
- "div",
405
- {
406
- role: "group",
407
- "aria-label": a ?? r("dataTable.facetFilter.label", "Filter"),
408
- className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
409
- children: e.map((c) => {
410
- const d = s === c.value;
411
- return /* @__PURE__ */ n(
412
- B,
413
- {
414
- type: "button",
415
- size: "sm",
416
- intent: d ? "primary" : "secondary",
417
- "aria-pressed": d,
418
- onClick: () => p(c.value),
419
- children: c.label
420
- },
421
- String(c.value)
422
- );
423
- })
424
- }
425
- );
426
- };
427
- Je.displayName = "DataTable.Toolbar.FacetFilter";
428
- const $t = ["csv", "xlsx", "pdf"];
429
- async function _t(t, e) {
430
- if (!t) return;
431
- const a = await import("./exceljs.min-DUJ-5CGx.js").then((T) => T.e), r = new a.Workbook(), o = r.addWorksheet("Sheet1"), i = (t.getColumns() ?? []).filter((T) => T.isVisible());
432
- o.addRow(
433
- i.map(
434
- (T) => t.getDisplayNameForColumn(T, null) ?? T.getColId()
435
- )
436
- ), t.forEachNodeAfterFilterAndSort((T) => {
437
- T.data && o.addRow(
438
- i.map((w) => {
439
- const g = t.getCellValue({
440
- rowNode: T,
441
- colKey: w,
442
- useFormatter: !0
443
- });
444
- return g ?? "";
445
- })
446
- );
447
- });
448
- const p = J("--muted", [240, 240, 240]), c = J("--foreground", [30, 30, 30]), d = o.getRow(1), l = ([T, w, g]) => `${T.toString(16).padStart(2, "0")}${w.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}`.toUpperCase();
449
- d.eachCell((T) => {
450
- T.font = { bold: !0, color: { argb: `FF${l(c)}` } }, T.fill = {
451
- type: "pattern",
452
- pattern: "solid",
453
- fgColor: { argb: `FF${l(p)}` }
454
- };
455
- });
456
- const u = await r.xlsx.writeBuffer(), b = new Blob([u], {
457
- type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
458
- }), f = URL.createObjectURL(b), h = document.createElement("a");
459
- h.href = f, h.download = e.fileName, document.body.appendChild(h), h.click(), document.body.removeChild(h), URL.revokeObjectURL(f);
460
- }
461
- const Xe = Ee(null);
462
- function Vt() {
463
- const t = Ae(Xe);
464
- if (!t)
465
- throw new Error(
466
- "DataTable.Toolbar.ExportMenu.Item must be rendered inside DataTable.Toolbar.ExportMenu."
467
- );
468
- return t;
469
- }
470
- const ye = G(
471
- ({ children: t, label: e, intent: a = "outline", ...r }, o) => {
472
- const { t: s } = D(), { getApi: i } = $("DataTable.Toolbar.ExportMenu"), p = O(() => ({ getApi: i }), [i]), c = t ?? $t.map((d) => /* @__PURE__ */ n(Ce, { format: d }, d));
473
- return /* @__PURE__ */ n(Xe.Provider, { value: p, children: /* @__PURE__ */ A(_.Root, { children: [
474
- /* @__PURE__ */ n(_.Trigger, { asChild: !0, children: /* @__PURE__ */ n(
475
- V,
476
- {
477
- ref: o,
478
- type: "button",
479
- intent: a,
480
- icon: /* @__PURE__ */ n(se, { "aria-hidden": !0 }),
481
- tooltip: e ?? s("dataTable.export.menu", "Export"),
482
- "aria-label": e ?? s("dataTable.export.menu", "Export"),
483
- "aria-haspopup": "menu",
484
- ...r
485
- }
486
- ) }),
487
- /* @__PURE__ */ n(_.Content, { align: "end", sideOffset: 4, children: c })
488
- ] }) });
489
- }
490
- );
491
- ye.displayName = "DataTable.Toolbar.ExportMenu";
492
- function Wt(t, e) {
493
- return e === "csv" ? t("dataTable.export.csv", "Export CSV") : e === "xlsx" ? t("dataTable.export.xlsx", "Export Excel") : e === "pdf" ? t("dataTable.export.pdf", "Export PDF") : t("dataTable.export.custom", "Export");
494
- }
495
- function Kt(t) {
496
- return t === "csv" ? /* @__PURE__ */ n(se, { "aria-hidden": !0, className: "ds:size-4" }) : t === "xlsx" ? /* @__PURE__ */ n(Dt, { "aria-hidden": !0, className: "ds:size-4" }) : t === "pdf" ? /* @__PURE__ */ n(je, { "aria-hidden": !0, className: "ds:size-4" }) : /* @__PURE__ */ n(se, { "aria-hidden": !0, className: "ds:size-4" });
497
- }
498
- const Ce = ({
499
- format: t,
500
- label: e,
501
- onClick: a,
502
- fileName: r
503
- }) => {
504
- const { t: o } = D(), { getApi: s } = Vt(), i = q(() => {
505
- const p = s();
506
- if (t === "csv") {
507
- p == null || p.exportDataAsCsv();
508
- return;
509
- }
510
- if (t === "pdf") {
511
- Ue(p, {
512
- fileName: r ?? "data-table-export.pdf"
513
- });
514
- return;
515
- }
516
- if (t === "xlsx") {
517
- _t(p, {
518
- fileName: r ?? "data-table-export.xlsx"
519
- });
520
- return;
521
- }
522
- a == null || a(p);
523
- }, [t, r, a, s]);
524
- return /* @__PURE__ */ n(_.Item, { onSelect: i, children: /* @__PURE__ */ A("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
525
- Kt(t),
526
- /* @__PURE__ */ n("span", { children: e ?? Wt(o, t) })
527
- ] }) });
528
- };
529
- Ce.displayName = "DataTable.Toolbar.ExportMenu.Item";
530
- function Ut(t) {
531
- return t ? (t.getAllGridColumns() ?? []).map((a) => a.getColDef().hide === void 0 && a.getColId().startsWith("ag-Grid-") ? null : {
532
- colId: a.getColId(),
533
- displayName: t.getDisplayNameForColumn(a, null) || a.getColId(),
534
- visible: a.isVisible()
535
- }).filter((a) => a !== null) : [];
536
- }
537
- const xe = G(
538
- function({ label: e, icon: a, footer: r, header: o, intent: s = "outline", ...i }, p) {
539
- const { t: c } = D(), { getApi: d } = $("DataTable.Toolbar.ColumnToggle"), [l, u] = k(!1), [b, f] = k([]), [h, T] = k(null), [w, g] = k(null);
540
- P(() => {
541
- l && f(Ut(d()));
542
- }, [l, d]);
543
- const m = q(
544
- (C, E) => {
545
- const R = d();
546
- R && (R.setColumnsVisible([C], E), f(
547
- (I) => I.map(
548
- (N) => N.colId === C ? { ...N, visible: E } : N
549
- )
550
- ));
551
- },
552
- [d]
553
- ), y = q(
554
- (C, E) => {
555
- if (C === E) return;
556
- const R = d();
557
- if (!R) return;
558
- f((N) => {
559
- const U = N.findIndex((Y) => Y.colId === C), te = N.findIndex((Y) => Y.colId === E);
560
- if (U < 0 || te < 0) return N;
561
- const W = [...N], [Z] = W.splice(U, 1);
562
- return W.splice(te, 0, Z), W;
563
- });
564
- const I = b.findIndex((N) => N.colId === E);
565
- I >= 0 && R.moveColumns([C], I);
566
- },
567
- [d, b]
568
- ), S = e ?? c("dataTable.columnToggle");
569
- return /* @__PURE__ */ A(ae.Root, { open: l, onOpenChange: u, children: [
570
- /* @__PURE__ */ n(ae.Trigger, { asChild: !0, children: /* @__PURE__ */ n(
571
- V,
572
- {
573
- ref: p,
574
- type: "button",
575
- intent: s,
576
- icon: a ?? /* @__PURE__ */ n(Nt, { "aria-hidden": !0 }),
577
- tooltip: S,
578
- "aria-label": S,
579
- "aria-haspopup": "dialog",
580
- ...i
581
- }
582
- ) }),
583
- /* @__PURE__ */ A(ae.Content, { size: "sm", align: "end", children: [
584
- /* @__PURE__ */ n(ae.Heading, { children: S }),
585
- o ? /* @__PURE__ */ n("div", { className: "ds:mb-[var(--spacing-xs)] ds:border-b ds:border-[color:var(--border)] ds:pb-[var(--spacing-sm)]", children: o }) : null,
586
- /* @__PURE__ */ n(
587
- "ul",
588
- {
589
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]",
590
- "aria-label": S,
591
- children: b.map((C) => {
592
- const E = h === C.colId, R = w === C.colId && h !== C.colId;
593
- return /* @__PURE__ */ A(
594
- "li",
595
- {
596
- draggable: !0,
597
- onDragStart: (I) => {
598
- T(C.colId), I.dataTransfer.effectAllowed = "move", I.dataTransfer.setData("text/plain", C.colId);
599
- },
600
- onDragOver: (I) => {
601
- I.preventDefault(), I.dataTransfer.dropEffect = "move", g(C.colId);
602
- },
603
- onDragLeave: () => {
604
- g(
605
- (I) => I === C.colId ? null : I
606
- );
607
- },
608
- onDrop: (I) => {
609
- I.preventDefault();
610
- const N = I.dataTransfer.getData("text/plain");
611
- N && y(N, C.colId), T(null), g(null);
612
- },
613
- onDragEnd: () => {
614
- T(null), g(null);
615
- },
616
- className: [
617
- "ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:rounded-[var(--radius-sm)] ds:px-[var(--spacing-xs)] ds:py-[var(--spacing-2xs,var(--spacing-xs))] ds:transition-colors",
618
- E ? "ds:opacity-50" : "",
619
- R ? "ds:bg-[color:color-mix(in_srgb,var(--primary)_8%,transparent)]" : ""
620
- ].filter(Boolean).join(" "),
621
- children: [
622
- /* @__PURE__ */ n(
623
- "span",
624
- {
625
- "aria-hidden": "true",
626
- className: "ds:cursor-grab ds:text-[color:var(--muted-foreground)] ds:active:cursor-grabbing",
627
- children: /* @__PURE__ */ n(Ft, { className: "ds:size-4" })
628
- }
629
- ),
630
- /* @__PURE__ */ n(
631
- Me,
632
- {
633
- label: C.displayName,
634
- checked: C.visible,
635
- onCheckedChange: (I) => m(C.colId, I === !0)
636
- }
637
- )
638
- ]
639
- },
640
- C.colId
641
- );
642
- })
643
- }
644
- ),
645
- r ? /* @__PURE__ */ n("div", { className: "ds:mt-[var(--spacing-xs)] ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-sm)]", children: r }) : null
646
- ] })
647
- ] });
648
- }
649
- );
650
- xe.displayName = "DataTable.Toolbar.ColumnToggle";
651
- const Ze = G(
652
- ({ label: t, icon: e, onClick: a, variant: r = "default", size: o = "sm", ...s }, i) => {
653
- const { t: p } = D(), { getApi: c, selectionCount: d } = $(
654
- "DataTable.Toolbar.BulkAction"
655
- );
656
- return d === 0 ? null : /* @__PURE__ */ A(
657
- B,
658
- {
659
- ref: i,
660
- type: "button",
661
- intent: r === "destructive" ? "destructive" : "secondary",
662
- size: o,
663
- startIcon: jt(e),
664
- onClick: () => a(c()),
665
- "aria-label": `${t} (${p("dataTable.bulkAction", { count: d })})`,
666
- ...s,
667
- children: [
668
- /* @__PURE__ */ n("span", { children: t }),
669
- /* @__PURE__ */ n(
670
- "span",
671
- {
672
- "aria-hidden": "true",
673
- className: "ds:ms-[var(--spacing-xs)] ds:opacity-80",
674
- children: p("dataTable.bulkAction", { count: d })
675
- }
676
- )
677
- ]
678
- }
679
- );
680
- }
681
- );
682
- Ze.displayName = "DataTable.Toolbar.BulkAction";
683
- for (const t of [
684
- be,
685
- he,
686
- ve,
687
- Te,
688
- ye,
689
- xe
690
- ])
691
- t.rendersIconButton = !0;
692
- const Ht = Object.assign(ye, {
693
- Item: Ce
694
- }), ne = Object.assign(Ve, {
695
- FilterBar: We,
696
- Actions: Ke,
697
- /** @deprecated Use `Toolbar.ExportMenu` with a `csv` item. */
698
- ExportCsv: be,
699
- /** @deprecated Use `Toolbar.ExportMenu` with a `pdf` item. */
700
- ExportPdf: he,
701
- Print: ve,
702
- ColumnToggle: xe,
703
- BulkAction: Ze,
704
- QuickSearch: He,
705
- Refresh: Te,
706
- FilterChips: Qe,
707
- FacetFilter: Je,
708
- ExportMenu: Ht
709
- }), Qt = [
710
- "contains",
711
- "equals",
712
- "startsWith",
713
- "endsWith",
714
- "notContains"
715
- ];
716
- function Jt(t) {
717
- const e = new Intl.Collator(t, {
718
- sensitivity: "base",
719
- usage: "search"
720
- });
721
- function a(r, o) {
722
- if (o.length === 0) return 0;
723
- if (o.length > r.length) return -1;
724
- for (let s = 0; s <= r.length - o.length; s += 1)
725
- if (e.compare(r.slice(s, s + o.length), o) === 0)
726
- return s;
727
- return -1;
728
- }
729
- return {
730
- equals: (r, o) => e.compare(r, o) === 0,
731
- contains: (r, o) => a(r, o) !== -1,
732
- startsWith: (r, o) => o.length <= r.length && e.compare(r.slice(0, o.length), o) === 0,
733
- endsWith: (r, o) => o.length <= r.length && e.compare(
734
- r.slice(r.length - o.length),
735
- o
736
- ) === 0
737
- };
738
- }
739
- function Xt(t) {
740
- return t == null ? null : typeof t == "string" ? t : String(t);
741
- }
742
- function Zt(t) {
743
- const { model: e, onModelChange: a, getValue: r, placeholder: o, defaultOperator: s } = t, { t: i } = D("ui"), p = (e == null ? void 0 : e.type) ?? s ?? "contains", [c, d] = k(p), [l, u] = k((e == null ? void 0 : e.filter) ?? "");
744
- P(() => {
745
- d((e == null ? void 0 : e.type) ?? s ?? "contains"), u((e == null ? void 0 : e.filter) ?? "");
746
- }, [e, s]);
747
- const b = O(() => Jt(It.language), []);
748
- ee({
749
- doesFilterPass: (g) => {
750
- const m = e;
751
- if (!m || m.filter === "") return !0;
752
- const y = Xt(r(g.node));
753
- if (y === null) return !1;
754
- switch (m.type) {
755
- case "equals":
756
- return b.equals(y, m.filter);
757
- case "contains":
758
- return b.contains(y, m.filter);
759
- case "startsWith":
760
- return b.startsWith(y, m.filter);
761
- case "endsWith":
762
- return b.endsWith(y, m.filter);
763
- case "notContains":
764
- return !b.contains(y, m.filter);
765
- default:
766
- return !0;
767
- }
768
- }
769
- });
770
- function f() {
771
- if (l.trim() === "") {
772
- a(null);
773
- return;
774
- }
775
- a({ type: c, filter: l });
776
- }
777
- function h() {
778
- u(""), d(s ?? "contains"), a(null);
779
- }
780
- const T = Qt.map(
781
- (g) => ({
782
- value: g,
783
- label: i(`dataTable.textFilter.operators.${g}`)
784
- })
785
- ), w = o ?? i("dataTable.textFilter.placeholder");
786
- return /* @__PURE__ */ A(
787
- "div",
788
- {
789
- "data-component": "text-filter",
790
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)] ds:min-w-[240px]",
791
- children: [
792
- /* @__PURE__ */ n(
793
- Le,
794
- {
795
- size: "sm",
796
- options: T,
797
- value: c,
798
- onValueChange: (g) => {
799
- g !== "" && d(g);
800
- },
801
- "aria-label": i("dataTable.textFilter.operators.contains")
802
- }
803
- ),
804
- /* @__PURE__ */ n(
805
- me,
806
- {
807
- size: "sm",
808
- value: l,
809
- onChange: (g) => u(g.target.value),
810
- onKeyDown: (g) => {
811
- g.key === "Enter" && (g.preventDefault(), f());
812
- },
813
- placeholder: w,
814
- "aria-label": w,
815
- startAdornment: /* @__PURE__ */ n(ge, { "aria-hidden": "true", className: "ds:size-4" })
816
- }
817
- ),
818
- /* @__PURE__ */ A("div", { className: "ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)] ds:border-t ds:border-[var(--border)]", children: [
819
- /* @__PURE__ */ n(B, { intent: "ghost", size: "sm", onClick: h, type: "button", children: i("dataTable.textFilter.clear") }),
820
- /* @__PURE__ */ n(B, { intent: "primary", size: "sm", onClick: f, type: "button", children: i("dataTable.textFilter.apply") })
821
- ] })
822
- ]
823
- }
824
- );
825
- }
826
- function Yt(t) {
827
- var u, b;
828
- const { model: e, onModelChange: a, column: r } = t, { t: o } = D("ui"), s = ((b = (u = r == null ? void 0 : r.getColDef) == null ? void 0 : u.call(r)) == null ? void 0 : b.filterParams) ?? {}, i = s.defaultOperator ?? "contains", p = s.placeholder ?? o("dataTable.textFilter.placeholder"), [c, d] = k((e == null ? void 0 : e.filter) ?? "");
829
- P(() => {
830
- d((e == null ? void 0 : e.filter) ?? "");
831
- }, [e == null ? void 0 : e.filter]), P(() => {
832
- if (c === ((e == null ? void 0 : e.filter) ?? "")) return;
833
- const f = setTimeout(() => {
834
- if (c === "") {
835
- e && a(null);
836
- return;
837
- }
838
- a({ type: i, filter: c });
839
- }, 200);
840
- return () => clearTimeout(f);
841
- }, [c, i, e, a]);
842
- function l() {
843
- d(""), e && a(null);
844
- }
845
- return /* @__PURE__ */ n("div", { "data-component": "text-floating-filter", className: "ds:w-full", children: /* @__PURE__ */ n(
846
- me,
847
- {
848
- size: "sm",
849
- value: c,
850
- onChange: (f) => d(f.target.value),
851
- placeholder: p,
852
- "aria-label": p,
853
- startAdornment: /* @__PURE__ */ n(ge, { "aria-hidden": "true", className: "ds:size-4" }),
854
- endAdornment: c.length > 0 ? /* @__PURE__ */ n(
855
- "button",
856
- {
857
- type: "button",
858
- "aria-label": o("dataTable.textFilter.clear"),
859
- onClick: l,
860
- className: "ds:pointer-events-auto ds:flex ds:items-center ds:text-[var(--muted-foreground)] ds:hover:text-[var(--foreground)] ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
861
- children: /* @__PURE__ */ n(qe, { "aria-hidden": "true", className: "ds:size-4" })
862
- }
863
- ) : void 0
864
- }
865
- ) });
866
- }
867
- const ea = {
868
- id: "data-table",
869
- capabilities: [
870
- "select_single",
871
- "select_multiple",
872
- "range_pick",
873
- "filter",
874
- "sort",
875
- "paginate"
876
- ],
877
- state: {
878
- selection: {
879
- type: "string[]",
880
- descriptionKey: "ui.agent.dataTable.state.selection",
881
- description: "Row ids of currently-selected rows.",
882
- read: (t) => t.getSelection()
883
- },
884
- filter: {
885
- type: "object",
886
- descriptionKey: "ui.agent.dataTable.state.filter",
887
- description: "Current ag-grid filter model, keyed by column id.",
888
- read: (t) => t.getFilter()
889
- },
890
- sort: {
891
- type: "Array<{ colId, sort }>",
892
- descriptionKey: "ui.agent.dataTable.state.sort",
893
- description: "Active sort, in priority order.",
894
- read: (t) => t.getSort()
895
- },
896
- currentPage: {
897
- type: "number",
898
- descriptionKey: "ui.agent.dataTable.state.currentPage",
899
- description: "Zero-indexed page number.",
900
- read: (t) => t.getCurrentPage()
901
- }
902
- },
903
- actions: {
904
- select_rows: {
905
- // Transient grid selection (data-table convention) — stays read.
906
- safety: "read",
907
- argsType: "{ ids: string[] }",
908
- argsSchema: {
909
- type: "object",
910
- properties: {
911
- ids: {
912
- type: "array",
913
- items: { type: "string" },
914
- description: "Row ids to select (replaces the current selection)."
915
- }
916
- },
917
- required: ["ids"]
918
- },
919
- idempotent: !0,
920
- descriptionKey: "ui.agent.dataTable.actions.selectRows",
921
- description: "Replace the current selection with the given row ids.",
922
- examples: [
923
- { args: { ids: ["r-1", "r-2"] }, note: "Select the first two rows." }
924
- ],
925
- invoke: (t, e) => {
926
- t.setSelection(e.ids);
927
- }
928
- },
929
- select_range: {
930
- safety: "read",
931
- argsType: "{ fromId: string, toId: string }",
932
- argsSchema: {
933
- type: "object",
934
- properties: {
935
- fromId: { type: "string", description: "Start row id (inclusive)." },
936
- toId: { type: "string", description: "End row id (inclusive)." }
937
- },
938
- required: ["fromId", "toId"]
939
- },
940
- idempotent: !0,
941
- descriptionKey: "ui.agent.dataTable.actions.selectRange",
942
- description: "Select every row between fromId and toId, inclusive, in current sort order.",
943
- invoke: (t, e) => {
944
- t.selectRange(e.fromId, e.toId);
945
- }
946
- },
947
- clear_selection: {
948
- safety: "read",
949
- idempotent: !0,
950
- descriptionKey: "ui.agent.dataTable.actions.clearSelection",
951
- description: "Deselect all rows.",
952
- invoke: (t) => {
953
- t.clearSelection();
954
- }
955
- },
956
- get_selection: {
957
- safety: "read",
958
- returns: "string[]",
959
- returnsSchema: { type: "array", items: { type: "string" } },
960
- idempotent: !0,
961
- descriptionKey: "ui.agent.dataTable.actions.getSelection",
962
- description: "Return the row ids of the currently-selected rows.",
963
- invoke: (t) => t.getSelection()
964
- },
965
- apply_filter: {
966
- safety: "read",
967
- argsType: "{ model: Record<string, unknown> }",
968
- argsSchema: {
969
- type: "object",
970
- properties: {
971
- model: {
972
- type: "object",
973
- description: "ag-grid filter model keyed by column id. Opaque per-column filter shapes; replaces the current model.",
974
- additionalProperties: !0
975
- }
976
- },
977
- required: ["model"]
978
- },
979
- idempotent: !0,
980
- descriptionKey: "ui.agent.dataTable.actions.applyFilter",
981
- description: "Replace the filter model with the given object.",
982
- invoke: (t, e) => {
983
- t.setFilter(e.model);
984
- }
985
- },
986
- sort_by: {
987
- safety: "read",
988
- argsType: "{ model: DataTableSortEntry[] }",
989
- argsSchema: {
990
- type: "object",
991
- properties: {
992
- model: {
993
- type: "array",
994
- description: "Sort entries in priority order.",
995
- items: {
996
- type: "object",
997
- properties: {
998
- colId: { type: "string", description: "Column id to sort by." },
999
- sort: { enum: ["asc", "desc"], description: "Sort direction." }
1000
- },
1001
- required: ["colId", "sort"]
1002
- }
1003
- }
1004
- },
1005
- required: ["model"]
1006
- },
1007
- idempotent: !0,
1008
- descriptionKey: "ui.agent.dataTable.actions.sortBy",
1009
- description: "Replace the active sort with the given list (priority order).",
1010
- examples: [
1011
- {
1012
- args: { model: [{ colId: "name", sort: "asc" }] },
1013
- note: "Sort by name ascending."
1014
- }
1015
- ],
1016
- invoke: (t, e) => {
1017
- t.setSort(e.model);
1018
- }
1019
- },
1020
- go_to_page: {
1021
- safety: "read",
1022
- argsType: "{ page: number }",
1023
- argsSchema: {
1024
- type: "object",
1025
- properties: {
1026
- page: {
1027
- type: "integer",
1028
- minimum: 0,
1029
- description: "Zero-indexed page number."
1030
- }
1031
- },
1032
- required: ["page"]
1033
- },
1034
- idempotent: !0,
1035
- descriptionKey: "ui.agent.dataTable.actions.goToPage",
1036
- description: "Navigate to the given zero-indexed page.",
1037
- invoke: (t, e) => {
1038
- t.goToPage(e.page);
1039
- }
1040
- }
1041
- },
1042
- domHooks: {
1043
- root: {
1044
- attr: "data-component",
1045
- value: "data-table",
1046
- description: "Marks the DataTable wrapper."
1047
- },
1048
- instanceId: {
1049
- attr: "data-component-id",
1050
- sourceProp: "gridId",
1051
- description: "Sourced from the gridId prop. Required to address a specific table from the agent."
1052
- },
1053
- item: {
1054
- attr: "row-id",
1055
- description: "Native ag-grid row-id attribute on each rendered row. Selection is performed via the curated handle, not by DOM mutation."
1056
- }
1057
- }
1058
- };
1059
- xt.registerModules([St]);
1060
- const ta = yt("ag-theme-alfadocs ds:w-full", {
1061
- variants: {
1062
- density: {
1063
- default: "",
1064
- compact: "data-table-compact",
1065
- expanded: "data-table-expanded"
1066
- },
1067
- bordered: {
1068
- true: "",
1069
- false: "ds:[--ag-borders:none]"
1070
- }
1071
- },
1072
- defaultVariants: {
1073
- density: "default",
1074
- bordered: !0
1075
- }
1076
- });
1077
- function aa() {
1078
- const { t } = D();
1079
- return O(
1080
- () => ({
1081
- // Filter strings
1082
- contains: t("dataTable.agGrid.contains"),
1083
- notContains: t("dataTable.agGrid.notContains"),
1084
- equals: t("dataTable.agGrid.equals"),
1085
- notEqual: t("dataTable.agGrid.notEqual"),
1086
- startsWith: t("dataTable.agGrid.startsWith"),
1087
- endsWith: t("dataTable.agGrid.endsWith"),
1088
- lessThan: t("dataTable.agGrid.lessThan"),
1089
- greaterThan: t("dataTable.agGrid.greaterThan"),
1090
- inRange: t("dataTable.agGrid.inRange"),
1091
- blank: t("dataTable.agGrid.blank"),
1092
- notBlank: t("dataTable.agGrid.notBlank"),
1093
- filterOoo: t("dataTable.agGrid.filterOoo"),
1094
- applyFilter: t("dataTable.agGrid.applyFilter"),
1095
- resetFilter: t("dataTable.agGrid.resetFilter"),
1096
- noRowsToShow: t("dataTable.agGrid.noRowsToShow"),
1097
- selectAll: t("dataTable.agGrid.selectAll"),
1098
- // Pagination
1099
- page: t("dataTable.page"),
1100
- of: t("dataTable.of"),
1101
- to: t("dataTable.to"),
1102
- nextPage: t("dataTable.nextPage"),
1103
- previousPage: t("dataTable.previousPage"),
1104
- firstPage: t("dataTable.firstPage"),
1105
- lastPage: t("dataTable.lastPage"),
1106
- pageSize: t("dataTable.pageSize")
1107
- }),
1108
- [t]
1109
- );
1110
- }
1111
- function ra() {
1112
- return /* @__PURE__ */ n(
1113
- "div",
1114
- {
1115
- role: "status",
1116
- "aria-live": "polite",
1117
- className: "ds:flex ds:w-full ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)]",
1118
- children: Array.from({ length: 5 }).map((t, e) => /* @__PURE__ */ n(
1119
- vt,
1120
- {
1121
- variant: "rectangular",
1122
- className: "ds:h-[var(--min-target-size)] ds:w-full"
1123
- },
1124
- e
1125
- ))
1126
- }
1127
- );
1128
- }
1129
- function na() {
1130
- const { t } = D();
1131
- return /* @__PURE__ */ n(
1132
- Tt,
1133
- {
1134
- variant: "no-results",
1135
- size: "sm",
1136
- title: t("dataTable.noRows"),
1137
- description: t("dataTable.noRowsDescription")
1138
- }
1139
- );
1140
- }
1141
- function oa(t) {
1142
- try {
1143
- const e = localStorage.getItem(`data-table-col-state:${t}`);
1144
- return e ? JSON.parse(e) : null;
1145
- } catch {
1146
- return null;
1147
- }
1148
- }
1149
- function sa(t, e) {
1150
- try {
1151
- localStorage.setItem(
1152
- `data-table-col-state:${t}`,
1153
- JSON.stringify(e.getColumnState())
1154
- );
1155
- } catch {
1156
- }
1157
- }
1158
- function la(t, e) {
1159
- const {
1160
- columnDefs: a,
1161
- rowData: r,
1162
- rowSelection: o,
1163
- pagination: s = !1,
1164
- paginationPageSize: i = 25,
1165
- paginationPageSizeSelector: p = [10, 25, 50, 100],
1166
- gridId: c,
1167
- onSelectionChanged: d,
1168
- onSortChanged: l,
1169
- onFilterChanged: u,
1170
- noRowsOverlay: b,
1171
- loadingOverlay: f,
1172
- gridOptions: h,
1173
- density: T,
1174
- bordered: w,
1175
- heightClass: g = "ds:h-[500px]",
1176
- className: m,
1177
- getRowClass: y,
1178
- pinnedBottomRowData: S,
1179
- printMode: C = !1,
1180
- children: E
1181
- } = t, { t: R, i18n: I } = D(), N = ke(null), [U, te] = k(0), [W, Z] = k(""), Y = aa(), ie = O(
1182
- () => ({
1183
- getSelection: () => {
1184
- var F;
1185
- const v = (F = N.current) == null ? void 0 : F.api;
1186
- if (!v) return [];
1187
- const x = [];
1188
- for (const M of v.getSelectedNodes())
1189
- M.id != null && x.push(M.id);
1190
- return x;
1191
- },
1192
- setSelection: (v) => {
1193
- var M;
1194
- const x = (M = N.current) == null ? void 0 : M.api;
1195
- if (!x) return;
1196
- const F = new Set(v);
1197
- x.forEachNode((z) => {
1198
- z.id != null && z.setSelected(F.has(z.id));
1199
- });
1200
- },
1201
- selectRange: (v, x) => {
1202
- var we;
1203
- const F = (we = N.current) == null ? void 0 : we.api;
1204
- if (!F) return;
1205
- const M = [];
1206
- F.forEachNodeAfterFilterAndSort((H) => {
1207
- H.id != null && M.push(H.id);
1208
- });
1209
- const z = M.indexOf(v), j = M.indexOf(x);
1210
- if (z < 0 || j < 0) return;
1211
- const [K, de] = z <= j ? [z, j] : [j, z], ue = new Set(M.slice(K, de + 1));
1212
- F.forEachNode((H) => {
1213
- H.id != null && H.setSelected(ue.has(H.id));
1214
- });
1215
- },
1216
- clearSelection: () => {
1217
- var v, x;
1218
- (x = (v = N.current) == null ? void 0 : v.api) == null || x.deselectAll();
1219
- },
1220
- getFilter: () => {
1221
- var v, x;
1222
- return ((x = (v = N.current) == null ? void 0 : v.api) == null ? void 0 : x.getFilterModel()) ?? {};
1223
- },
1224
- setFilter: (v) => {
1225
- var x, F;
1226
- (F = (x = N.current) == null ? void 0 : x.api) == null || F.setFilterModel(v);
1227
- },
1228
- getSort: () => {
1229
- var x;
1230
- const v = (x = N.current) == null ? void 0 : x.api;
1231
- return v ? v.getColumnState().filter((F) => F.sort === "asc" || F.sort === "desc").map((F) => ({ colId: F.colId, sort: F.sort })) : [];
1232
- },
1233
- setSort: (v) => {
1234
- var M;
1235
- const x = (M = N.current) == null ? void 0 : M.api;
1236
- if (!x) return;
1237
- const F = x.getColumnState().map((z) => {
1238
- const j = v.find((K) => K.colId === z.colId);
1239
- return { ...z, sort: j ? j.sort : null };
1240
- });
1241
- x.applyColumnState({ state: F, defaultState: { sort: null } });
1242
- },
1243
- getCurrentPage: () => {
1244
- var v, x;
1245
- return ((x = (v = N.current) == null ? void 0 : v.api) == null ? void 0 : x.paginationGetCurrentPage()) ?? 0;
1246
- },
1247
- goToPage: (v) => {
1248
- var x, F;
1249
- (F = (x = N.current) == null ? void 0 : x.api) == null || F.paginationGoToPage(v);
1250
- },
1251
- getRawApi: () => {
1252
- var v;
1253
- return (v = N.current) == null ? void 0 : v.api;
1254
- }
1255
- }),
1256
- []
1257
- );
1258
- ht(e, () => ie, [ie]), kt(ea, ie, c);
1259
- const et = I.dir() === "rtl", tt = r === void 0, at = Et(), { resolvedTheme: Se } = At(), rt = (Se === "light-accessible" || Se === "dark-accessible") && T === "compact" ? "default" : T, nt = O(() => {
1260
- if (o)
1261
- return o === "single" ? { mode: "singleRow" } : {
1262
- mode: "multiRow",
1263
- headerCheckbox: !0,
1264
- checkboxes: !0
1265
- };
1266
- }, [o]), ot = q(() => {
1267
- var x;
1268
- if (!c || !((x = N.current) != null && x.api)) return;
1269
- const v = oa(c);
1270
- v && N.current.api.applyColumnState({
1271
- state: v,
1272
- applyOrder: !0
1273
- });
1274
- }, [c]), ce = q(() => {
1275
- var v;
1276
- c && ((v = N.current) != null && v.api) && sa(c, N.current.api);
1277
- }, [c]), st = O(() => {
1278
- if (!h) return;
1279
- const v = { ...h };
1280
- return delete v.defaultColDef, v;
1281
- }, [h]), lt = q(() => {
1282
- var F;
1283
- const v = (F = N.current) == null ? void 0 : F.api;
1284
- if (!v) return;
1285
- const x = v.getSelectedRows();
1286
- te(x.length), d == null || d(x);
1287
- }, [d]), it = q(
1288
- (v) => {
1289
- var F;
1290
- const x = (F = N.current) == null ? void 0 : F.api;
1291
- if (x) {
1292
- const z = x.getColumnState().find((j) => j.sort);
1293
- if (z) {
1294
- const j = z.colId, K = x.getColumnDef(j), de = (K == null ? void 0 : K.headerName) ?? j, ue = z.sort === "asc" ? "dataTable.sortAscending" : "dataTable.sortDescending";
1295
- Z(
1296
- R("dataTable.sortAnnounce", {
1297
- column: de,
1298
- direction: R(ue)
1299
- })
1300
- );
1301
- } else
1302
- Z("");
1303
- }
1304
- l == null || l(v);
1305
- },
1306
- [l, R]
1307
- ), ct = q(
1308
- (v) => {
1309
- u == null || u(v);
1310
- },
1311
- [u]
1312
- );
1313
- P(() => {
1314
- if (!W) return;
1315
- const v = setTimeout(() => Z(""), 3e3);
1316
- return () => clearTimeout(v);
1317
- }, [W]);
1318
- const dt = b ?? na, ut = f ?? ra, pt = q(
1319
- () => {
1320
- var v;
1321
- return (v = N.current) == null ? void 0 : v.api;
1322
- },
1323
- []
1324
- ), ft = q(() => {
1325
- typeof window < "u" && window.print();
1326
- }, []), mt = ta({
1327
- density: rt,
1328
- bordered: w,
1329
- className: m
1330
- }), gt = E ?? /* @__PURE__ */ n("div", { className: "data-table-toolbar ds:flex ds:justify-end", children: /* @__PURE__ */ A(
1331
- Pe,
1332
- {
1333
- role: "toolbar",
1334
- "aria-label": R("dataTable.tableActions"),
1335
- className: "ds:bg-[var(--background)]",
1336
- children: [
1337
- /* @__PURE__ */ n(ne.ExportMenu, {}),
1338
- /* @__PURE__ */ n(ne.Print, {}),
1339
- /* @__PURE__ */ n(ne.ColumnToggle, {})
1340
- ]
1341
- }
1342
- ) }), bt = C ? !1 : s;
1343
- return /* @__PURE__ */ A(
1344
- "div",
1345
- {
1346
- className: "ds:flex ds:w-full ds:min-h-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-sm)]",
1347
- "aria-busy": tt ? "true" : void 0,
1348
- "data-component": "data-table",
1349
- "data-component-id": c,
1350
- "data-print-mode": C ? "true" : void 0,
1351
- children: [
1352
- !C && /* @__PURE__ */ n(
1353
- Lt,
1354
- {
1355
- getApi: pt,
1356
- selectionCount: U,
1357
- onPrint: ft,
1358
- children: gt
1359
- }
1360
- ),
1361
- /* @__PURE__ */ n(
1362
- "div",
1363
- {
1364
- className: [mt, C ? "" : g].join(" ").trim(),
1365
- children: /* @__PURE__ */ n(
1366
- Ct,
1367
- {
1368
- ref: N,
1369
- theme: "legacy",
1370
- columnDefs: a,
1371
- rowData: r,
1372
- defaultColDef: {
1373
- sortable: !0,
1374
- // Default filter = DS-styled text filter so untyped columns
1375
- // (no explicit `filter:` override) inherit the kit's form
1376
- // language instead of AG Grid's stock browser-skinned input.
1377
- // Number / date / select columns opt into their dedicated
1378
- // wrapper per-column.
1379
- filter: Zt,
1380
- floatingFilterComponent: Yt,
1381
- resizable: !0,
1382
- floatingFilter: !0,
1383
- // §13d — faint sort icon advertises which columns are
1384
- // sortable. v33+ moved this from grid-level to defaultColDef.
1385
- unSortIcon: !0,
1386
- ...h == null ? void 0 : h.defaultColDef
1387
- },
1388
- rowSelection: nt,
1389
- pagination: bt,
1390
- paginationPageSize: i,
1391
- paginationPageSizeSelector: p,
1392
- paginationNumberFormatter: (v) => new Intl.NumberFormat(I.language).format(v.value),
1393
- animateRows: !at,
1394
- enableRtl: et,
1395
- ensureDomOrder: !0,
1396
- enableCellSpan: !0,
1397
- enableCellTextSelection: !0,
1398
- copyHeadersToClipboard: !0,
1399
- accentedSort: !0,
1400
- multiSortKey: "ctrl",
1401
- suppressDragLeaveHidesColumns: !0,
1402
- suppressRowClickSelection: o ? !0 : void 0,
1403
- tooltipShowDelay: 500,
1404
- tooltipHideDelay: 5e3,
1405
- tooltipInteraction: !0,
1406
- stopEditingWhenCellsLoseFocus: !0,
1407
- maintainColumnOrder: !0,
1408
- undoRedoCellEditing: !0,
1409
- undoRedoCellEditingLimit: 20,
1410
- suppressCellFocus: !1,
1411
- rowBuffer: 10,
1412
- localeText: Y,
1413
- noRowsOverlayComponent: dt,
1414
- loadingOverlayComponent: ut,
1415
- getRowClass: y,
1416
- pinnedBottomRowData: S,
1417
- domLayout: C ? "autoHeight" : void 0,
1418
- onGridReady: ot,
1419
- onColumnMoved: ce,
1420
- onColumnResized: ce,
1421
- onColumnPinned: ce,
1422
- onSortChanged: it,
1423
- onFilterChanged: ct,
1424
- onSelectionChanged: lt,
1425
- ...st
1426
- }
1427
- )
1428
- }
1429
- ),
1430
- !C && /* @__PURE__ */ n("div", { className: "ds:flex ds:items-center ds:justify-between type-body-sm ds:text-[color:var(--muted-foreground)]", children: U > 0 ? /* @__PURE__ */ n("span", { children: R("dataTable.selected", { count: U }) }) : /* @__PURE__ */ n("span", {}) }),
1431
- /* @__PURE__ */ n("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: W })
1432
- ]
1433
- }
1434
- );
1435
- }
1436
- const Ye = G(la);
1437
- Ye.displayName = "DataTable";
1438
- const sr = Object.assign(Ye, {
1439
- Toolbar: ne
1440
- });
1441
- function le(t) {
1442
- return t ? t.toISOString().slice(0, 10) : null;
1443
- }
1444
- function L(t) {
1445
- if (!t) return;
1446
- const e = new Date(t);
1447
- return Number.isNaN(e.getTime()) ? void 0 : e;
1448
- }
1449
- function lr(t) {
1450
- const { model: e, onModelChange: a, getValue: r, doesRowPassOtherFilter: o } = t, [s, i] = k(() => ({
1451
- from: L(e == null ? void 0 : e.dateFrom),
1452
- to: L(e == null ? void 0 : e.dateTo)
1453
- }));
1454
- P(() => {
1455
- i({
1456
- from: L(e == null ? void 0 : e.dateFrom),
1457
- to: L(e == null ? void 0 : e.dateTo)
1458
- });
1459
- }, [e == null ? void 0 : e.dateFrom, e == null ? void 0 : e.dateTo]), ee({
1460
- doesFilterPass: (c) => {
1461
- const d = L(e == null ? void 0 : e.dateFrom), l = L(e == null ? void 0 : e.dateTo);
1462
- if (!d && !l) return !0;
1463
- const u = r(c.node);
1464
- if (!u) return !1;
1465
- const b = u instanceof Date ? u : L(String(u));
1466
- return !(!b || d && b < d || l && b > l);
1467
- }
1468
- });
1469
- function p(c) {
1470
- if (i(c), !c.from && !c.to) {
1471
- a(null);
1472
- return;
1473
- }
1474
- a({
1475
- type: "inRange",
1476
- dateFrom: le(c.from),
1477
- dateTo: le(c.to)
1478
- });
1479
- }
1480
- return /* @__PURE__ */ n("div", { className: "ds:p-[var(--spacing-sm)] ds:min-w-[280px]", children: /* @__PURE__ */ n(Ge, { value: s, onChange: p, size: "sm" }) });
1481
- }
1482
- function ir(t) {
1483
- var c, d;
1484
- const { model: e, onModelChange: a, column: r } = t, o = ((d = (c = r == null ? void 0 : r.getColDef) == null ? void 0 : c.call(r)) == null ? void 0 : d.filterParams) ?? {}, [s, i] = k(() => ({
1485
- from: L(e == null ? void 0 : e.dateFrom),
1486
- to: L(e == null ? void 0 : e.dateTo)
1487
- }));
1488
- P(() => {
1489
- i({
1490
- from: L(e == null ? void 0 : e.dateFrom),
1491
- to: L(e == null ? void 0 : e.dateTo)
1492
- });
1493
- }, [e == null ? void 0 : e.dateFrom, e == null ? void 0 : e.dateTo]);
1494
- function p(l) {
1495
- if (i(l), !l.from && !l.to) {
1496
- a(null);
1497
- return;
1498
- }
1499
- a({
1500
- type: "inRange",
1501
- dateFrom: le(l.from),
1502
- dateTo: le(l.to)
1503
- });
1504
- }
1505
- return /* @__PURE__ */ n("div", { "data-component": "date-range-floating-filter", className: "ds:w-full", children: /* @__PURE__ */ n(
1506
- Ge,
1507
- {
1508
- value: s,
1509
- onChange: p,
1510
- size: "sm",
1511
- placeholder: o.placeholder
1512
- }
1513
- ) });
1514
- }
1515
- function Q(t) {
1516
- return typeof t == "number" ? `n:${t}` : `s:${t}`;
1517
- }
1518
- function cr(t) {
1519
- const { model: e, onModelChange: a, getValue: r, api: o, column: s, options: i, placeholder: p } = t, { t: c } = D("ui"), d = O(() => {
1520
- if (i && i.length > 0) return i;
1521
- if (!o || !s) return [];
1522
- const g = /* @__PURE__ */ new Map();
1523
- return o.forEachNode((m) => {
1524
- const y = r(m);
1525
- if (y == null) return;
1526
- const S = typeof y == "string" || typeof y == "number" ? y : String(y), C = Q(S);
1527
- g.has(C) || g.set(C, { value: S, label: String(S) });
1528
- }), Array.from(g.values()).sort(
1529
- (m, y) => String(m.label).localeCompare(String(y.label))
1530
- );
1531
- }, [i, o, s, r]), l = O(() => {
1532
- const g = /* @__PURE__ */ new Set(), m = (e == null ? void 0 : e.values) ?? [];
1533
- for (const y of m) g.add(Q(y));
1534
- return g;
1535
- }, [e]), [u, b] = k(l);
1536
- P(() => {
1537
- b(l);
1538
- }, [l]), ee({
1539
- doesFilterPass: (g) => {
1540
- const m = e == null ? void 0 : e.values;
1541
- if (!m || m.length === 0) return !0;
1542
- const y = r(g.node);
1543
- if (y == null) return !1;
1544
- const S = typeof y == "string" || typeof y == "number" ? y : String(y), C = Q(S);
1545
- return m.some((E) => Q(E) === C);
1546
- }
1547
- });
1548
- function f(g) {
1549
- b((m) => {
1550
- const y = new Set(m);
1551
- return y.has(g) ? y.delete(g) : y.add(g), y;
1552
- });
1553
- }
1554
- function h() {
1555
- if (u.size === 0) {
1556
- a(null);
1557
- return;
1558
- }
1559
- const g = [];
1560
- for (const m of d)
1561
- u.has(Q(m.value)) && g.push(m.value);
1562
- a({ type: "set", values: g });
1563
- }
1564
- function T() {
1565
- b(/* @__PURE__ */ new Set()), a(null);
1566
- }
1567
- const w = p ?? c("dataTable.selectFilter.all");
1568
- return /* @__PURE__ */ A(
1569
- "div",
1570
- {
1571
- "data-component": "select-filter",
1572
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)] ds:min-w-[200px] ds:max-w-[260px]",
1573
- children: [
1574
- /* @__PURE__ */ n(zt, { orientation: "vertical", className: "ds:max-h-[240px]", children: /* @__PURE__ */ n(
1575
- "div",
1576
- {
1577
- role: "group",
1578
- "aria-label": w,
1579
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]",
1580
- children: d.length === 0 ? /* @__PURE__ */ n("p", { className: "ds:text-[length:var(--font-size-sm)] ds:text-[var(--muted-foreground)] ds:py-[var(--spacing-xs)]", children: c("dataTable.agGrid.noRowsToShow") }) : d.map((g) => {
1581
- const m = Q(g.value);
1582
- return /* @__PURE__ */ n(
1583
- Me,
1584
- {
1585
- size: "sm",
1586
- label: g.label,
1587
- checked: u.has(m),
1588
- onCheckedChange: () => f(m)
1589
- },
1590
- m
1591
- );
1592
- })
1593
- }
1594
- ) }),
1595
- /* @__PURE__ */ A("div", { className: "ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)] ds:border-t ds:border-[var(--border)]", children: [
1596
- /* @__PURE__ */ n(B, { intent: "ghost", size: "sm", onClick: T, type: "button", children: c("dataTable.selectFilter.clear") }),
1597
- /* @__PURE__ */ n(B, { intent: "primary", size: "sm", onClick: h, type: "button", children: c("dataTable.selectFilter.apply") })
1598
- ] })
1599
- ]
1600
- }
1601
- );
1602
- }
1603
- function dr(t) {
1604
- var b;
1605
- const { model: e, onModelChange: a, column: r } = t, o = (b = r == null ? void 0 : r.getColDef) == null ? void 0 : b.call(r), s = (o == null ? void 0 : o.filterParams) ?? {}, i = s.options ?? [], p = s.placeholder ?? (typeof (o == null ? void 0 : o.headerName) == "string" ? o.headerName : void 0), c = O(() => {
1606
- const f = /* @__PURE__ */ new Map();
1607
- for (const h of i) f.set(String(h.value), h.value);
1608
- return f;
1609
- }, [i]), d = O(
1610
- () => i.map((f) => ({
1611
- value: String(f.value),
1612
- label: f.label
1613
- })),
1614
- [i]
1615
- ), l = O(
1616
- () => ((e == null ? void 0 : e.values) ?? []).map((f) => String(f)),
1617
- [e]
1618
- );
1619
- function u(f) {
1620
- if (f.length === 0) {
1621
- a(null);
1622
- return;
1623
- }
1624
- const h = [];
1625
- for (const T of f) {
1626
- const w = c.get(T);
1627
- w !== void 0 && h.push(w);
1628
- }
1629
- a({ type: "set", values: h });
1630
- }
1631
- return /* @__PURE__ */ n("div", { "data-component": "select-floating-filter", className: "ds:w-full", children: /* @__PURE__ */ n(
1632
- Ot,
1633
- {
1634
- size: "sm",
1635
- options: d,
1636
- value: l,
1637
- onChange: u,
1638
- placeholder: s.placeholder,
1639
- "aria-label": p,
1640
- allowClear: !0
1641
- }
1642
- ) });
1643
- }
1644
- function X(t) {
1645
- return t.trim().toLocaleLowerCase();
1646
- }
1647
- function ur(t) {
1648
- const {
1649
- model: e,
1650
- onModelChange: a,
1651
- getValue: r,
1652
- api: o,
1653
- column: s,
1654
- options: i,
1655
- loadOptions: p,
1656
- placeholder: c
1657
- } = t, { t: d } = D("ui"), l = O(() => {
1658
- if (i && i.length > 0) return i;
1659
- if (!o || !s) return [];
1660
- const m = /* @__PURE__ */ new Map();
1661
- return o.forEachNode((y) => {
1662
- const S = r(y);
1663
- if (S == null) return;
1664
- const C = typeof S == "string" ? S : String(S);
1665
- m.has(C) || m.set(C, { value: C, label: C });
1666
- }), Array.from(m.values()).sort(
1667
- (y, S) => y.label.localeCompare(S.label)
1668
- );
1669
- }, [i, o, s, r]), u = O(() => async (m, y) => {
1670
- if (p)
1671
- return (await p(m, y)).map((R) => ({ value: R.value, label: R.label }));
1672
- const S = X(m);
1673
- return (S ? l.filter((E) => X(E.label).includes(S)) : l).slice(0, 50).map((E) => ({ value: E.value, label: E.label }));
1674
- }, [p, l]), [b, f] = k((e == null ? void 0 : e.value) ?? "");
1675
- P(() => {
1676
- f((e == null ? void 0 : e.value) ?? "");
1677
- }, [e == null ? void 0 : e.value]), ee({
1678
- doesFilterPass: (m) => {
1679
- const y = e == null ? void 0 : e.value;
1680
- if (!y) return !0;
1681
- const S = r(m.node);
1682
- if (S == null) return !1;
1683
- const C = typeof S == "string" ? S : String(S);
1684
- return X(C) === X(y);
1685
- }
1686
- });
1687
- function h(m) {
1688
- f(m.label), a({ type: "equals", value: m.value });
1689
- }
1690
- function T(m) {
1691
- f(m), m === "" && e && a(null);
1692
- }
1693
- function w() {
1694
- f(""), a(null);
1695
- }
1696
- const g = c ?? d("dataTable.typeaheadFilter.placeholder");
1697
- return /* @__PURE__ */ A(
1698
- "div",
1699
- {
1700
- "data-component": "typeahead-filter",
1701
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)] ds:min-w-[240px]",
1702
- children: [
1703
- /* @__PURE__ */ n(
1704
- Be,
1705
- {
1706
- size: "sm",
1707
- value: b,
1708
- onChange: T,
1709
- onSelect: h,
1710
- loadOptions: u,
1711
- placeholder: g,
1712
- "aria-label": g
1713
- }
1714
- ),
1715
- /* @__PURE__ */ n("div", { className: "ds:flex ds:items-center ds:justify-end ds:pt-[var(--spacing-xs)] ds:border-t ds:border-[var(--border)]", children: /* @__PURE__ */ n(B, { intent: "ghost", size: "sm", onClick: w, type: "button", children: d("dataTable.typeaheadFilter.clear") }) })
1716
- ]
1717
- }
1718
- );
1719
- }
1720
- function pr(t) {
1721
- var h, T;
1722
- const { model: e, onModelChange: a, column: r } = t, { t: o } = D("ui"), s = ((T = (h = r == null ? void 0 : r.getColDef) == null ? void 0 : h.call(r)) == null ? void 0 : T.filterParams) ?? {}, i = s.options ?? [], p = s.loadOptions, c = s.placeholder ?? o("dataTable.typeaheadFilter.placeholder"), d = O(() => async (w, g) => {
1723
- if (p)
1724
- return (await p(w, g)).map((C) => ({ value: C.value, label: C.label }));
1725
- const m = X(w);
1726
- return (m ? i.filter((S) => X(S.label).includes(m)) : i).slice(0, 50).map((S) => ({ value: S.value, label: S.label }));
1727
- }, [p, i]), [l, u] = k((e == null ? void 0 : e.value) ?? "");
1728
- P(() => {
1729
- u((e == null ? void 0 : e.value) ?? "");
1730
- }, [e == null ? void 0 : e.value]);
1731
- function b(w) {
1732
- u(w.label), a({ type: "equals", value: w.value });
1733
- }
1734
- function f(w) {
1735
- u(w), w === "" && e && a(null);
1736
- }
1737
- return /* @__PURE__ */ n("div", { "data-component": "typeahead-floating-filter", className: "ds:w-full", children: /* @__PURE__ */ n(
1738
- Be,
1739
- {
1740
- size: "sm",
1741
- value: l,
1742
- onChange: f,
1743
- onSelect: b,
1744
- loadOptions: d,
1745
- placeholder: c,
1746
- "aria-label": c
1747
- }
1748
- ) });
1749
- }
1750
- const ia = [
1751
- "equals",
1752
- "notEqual",
1753
- "greaterThan",
1754
- "greaterThanOrEqual",
1755
- "lessThan",
1756
- "lessThanOrEqual",
1757
- "inRange",
1758
- "blank",
1759
- "notBlank"
1760
- ];
1761
- function Fe(t) {
1762
- return t !== "blank" && t !== "notBlank";
1763
- }
1764
- function Re(t) {
1765
- return t === "inRange";
1766
- }
1767
- function ca(t, e, a, r) {
1768
- if (t === "blank") return e === null;
1769
- if (t === "notBlank") return e !== null;
1770
- if (e === null) return !1;
1771
- if (a === null) return !0;
1772
- switch (t) {
1773
- case "equals":
1774
- return e === a;
1775
- case "notEqual":
1776
- return e !== a;
1777
- case "greaterThan":
1778
- return e > a;
1779
- case "greaterThanOrEqual":
1780
- return e >= a;
1781
- case "lessThan":
1782
- return e < a;
1783
- case "lessThanOrEqual":
1784
- return e <= a;
1785
- case "inRange": {
1786
- if (r === null) return e >= a;
1787
- const o = Math.min(a, r), s = Math.max(a, r);
1788
- return e >= o && e <= s;
1789
- }
1790
- default:
1791
- return !0;
1792
- }
1793
- }
1794
- function da(t) {
1795
- if (t == null || t === "") return null;
1796
- const e = typeof t == "number" ? t : Number(t);
1797
- return Number.isNaN(e) ? null : e;
1798
- }
1799
- function fr(t) {
1800
- const {
1801
- model: e,
1802
- onModelChange: a,
1803
- getValue: r,
1804
- defaultOperator: o,
1805
- min: s,
1806
- max: i,
1807
- step: p,
1808
- placeholder: c
1809
- } = t, { t: d } = D("ui"), l = (e == null ? void 0 : e.type) ?? o ?? "equals", [u, b] = k(l), [f, h] = k((e == null ? void 0 : e.filter) ?? null), [T, w] = k(
1810
- (e == null ? void 0 : e.filterTo) ?? null
1811
- );
1812
- P(() => {
1813
- if (e === null) {
1814
- b(o ?? "equals"), h(null), w(null);
1815
- return;
1816
- }
1817
- b(e.type), h(e.filter ?? null), w(e.filterTo ?? null);
1818
- }, [e, o]), ee({
1819
- doesFilterPass: (R) => {
1820
- if (!e) return !0;
1821
- const I = da(r(R.node));
1822
- return ca(
1823
- e.type,
1824
- I,
1825
- e.filter ?? null,
1826
- e.filterTo ?? null
1827
- );
1828
- }
1829
- });
1830
- const g = O(
1831
- () => ia.map((R) => ({
1832
- value: R,
1833
- label: d(`dataTable.numberFilter.operators.${R}`)
1834
- })),
1835
- [d]
1836
- ), m = c ?? d("dataTable.numberFilter.placeholder");
1837
- function y() {
1838
- if (!Fe(u)) {
1839
- a({ type: u, filter: 0 });
1840
- return;
1841
- }
1842
- if (f === null) {
1843
- a(null);
1844
- return;
1845
- }
1846
- if (Re(u)) {
1847
- a({
1848
- type: u,
1849
- filter: f,
1850
- filterTo: T ?? void 0
1851
- });
1852
- return;
1853
- }
1854
- a({ type: u, filter: f });
1855
- }
1856
- function S() {
1857
- b(o ?? "equals"), h(null), w(null), a(null);
1858
- }
1859
- const C = Fe(u), E = Re(u);
1860
- return /* @__PURE__ */ A(
1861
- "div",
1862
- {
1863
- "data-component": "number-filter",
1864
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)] ds:min-w-[240px]",
1865
- children: [
1866
- /* @__PURE__ */ n(
1867
- Le,
1868
- {
1869
- size: "sm",
1870
- options: g,
1871
- value: u,
1872
- onValueChange: (R) => {
1873
- R !== "" && b(R);
1874
- },
1875
- "aria-label": d("dataTable.numberFilter.operators.equals")
1876
- }
1877
- ),
1878
- C && !E && /* @__PURE__ */ n(
1879
- re,
1880
- {
1881
- size: "sm",
1882
- value: f,
1883
- onChange: h,
1884
- min: s,
1885
- max: i,
1886
- step: p,
1887
- placeholder: m,
1888
- "aria-label": m
1889
- }
1890
- ),
1891
- E && /* @__PURE__ */ A("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
1892
- /* @__PURE__ */ n(
1893
- re,
1894
- {
1895
- size: "sm",
1896
- value: f,
1897
- onChange: h,
1898
- min: s,
1899
- max: i,
1900
- step: p,
1901
- placeholder: d("dataTable.numberFilter.from"),
1902
- "aria-label": d("dataTable.numberFilter.from")
1903
- }
1904
- ),
1905
- /* @__PURE__ */ n(
1906
- re,
1907
- {
1908
- size: "sm",
1909
- value: T,
1910
- onChange: w,
1911
- min: s,
1912
- max: i,
1913
- step: p,
1914
- placeholder: d("dataTable.numberFilter.to"),
1915
- "aria-label": d("dataTable.numberFilter.to")
1916
- }
1917
- )
1918
- ] }),
1919
- /* @__PURE__ */ A("div", { className: "ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)] ds:border-t ds:border-[var(--border)]", children: [
1920
- /* @__PURE__ */ n(B, { intent: "ghost", size: "sm", onClick: S, type: "button", children: d("dataTable.numberFilter.clear") }),
1921
- /* @__PURE__ */ n(B, { intent: "primary", size: "sm", onClick: y, type: "button", children: d("dataTable.numberFilter.apply") })
1922
- ] })
1923
- ]
1924
- }
1925
- );
1926
- }
1927
- function mr(t) {
1928
- var l, u;
1929
- const { model: e, onModelChange: a, column: r } = t, { t: o } = D("ui"), s = ((u = (l = r == null ? void 0 : r.getColDef) == null ? void 0 : l.call(r)) == null ? void 0 : u.filterParams) ?? {}, i = s.defaultOperator ?? "equals", p = s.placeholder ?? o("dataTable.numberFilter.placeholder"), [c, d] = k((e == null ? void 0 : e.filter) ?? null);
1930
- return P(() => {
1931
- d((e == null ? void 0 : e.filter) ?? null);
1932
- }, [e == null ? void 0 : e.filter]), P(() => {
1933
- if (c === ((e == null ? void 0 : e.filter) ?? null)) return;
1934
- const b = setTimeout(() => {
1935
- if (c === null || Number.isNaN(c)) {
1936
- a(null);
1937
- return;
1938
- }
1939
- a({ type: i, filter: c });
1940
- }, 200);
1941
- return () => clearTimeout(b);
1942
- }, [c, i]), /* @__PURE__ */ n("div", { "data-component": "number-floating-filter", className: "ds:w-full", children: /* @__PURE__ */ n(
1943
- re,
1944
- {
1945
- size: "sm",
1946
- value: c,
1947
- onChange: d,
1948
- min: s.min,
1949
- max: s.max,
1950
- step: s.step,
1951
- placeholder: p,
1952
- "aria-label": p
1953
- }
1954
- ) });
1955
- }
1956
- function gr(t) {
1957
- const { value: e, variantMap: a } = t, r = (a == null ? void 0 : a[e]) ?? "neutral";
1958
- return /* @__PURE__ */ n(Pt, { variant: r, withDot: !0, size: "sm", children: String(e ?? "") });
1959
- }
1960
- function br(t) {
1961
- const { value: e } = t;
1962
- return e ? /* @__PURE__ */ A("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
1963
- /* @__PURE__ */ n($e, { name: e.name, src: e.src, size: "sm" }),
1964
- /* @__PURE__ */ n("span", { children: e.name })
1965
- ] }) : null;
1966
- }
1967
- const ua = {
1968
- sm: "ds:size-8",
1969
- md: "ds:size-10",
1970
- lg: "ds:size-12"
1971
- }, pa = {
1972
- square: "ds:rounded-none",
1973
- rounded: "ds:rounded-[var(--radius-md)]",
1974
- circle: "ds:rounded-[var(--radius-full)]"
1975
- };
1976
- function pe(t, e) {
1977
- if (!t || typeof t != "object") return;
1978
- const a = t[e];
1979
- return typeof a == "string" ? a : void 0;
1980
- }
1981
- const fa = /^(?:https?:|data:image\/)/i;
1982
- function ma(t) {
1983
- if (!t) return;
1984
- const e = t.trim();
1985
- if (e.length !== 0)
1986
- return fa.test(e) ? e : void 0;
1987
- }
1988
- function hr(t) {
1989
- const {
1990
- data: e,
1991
- srcField: a,
1992
- altField: r,
1993
- fallbackField: o,
1994
- size: s = "md",
1995
- shape: i = "rounded"
1996
- } = t;
1997
- if (!e) return null;
1998
- const p = pe(e, a), c = ma(p), d = r ? pe(e, r) ?? "" : "", l = o ? pe(e, o) : void 0;
1999
- return c ? /* @__PURE__ */ n(
2000
- "img",
2001
- {
2002
- src: c,
2003
- alt: d,
2004
- loading: "lazy",
2005
- decoding: "async",
2006
- className: ["ds:object-cover", ua[s], pa[i]].join(
2007
- " "
2008
- )
2009
- }
2010
- ) : l ? /* @__PURE__ */ n($e, { name: l, size: s }) : null;
2011
- }
2012
- function vr(t) {
2013
- const { value: e, maxVisible: a = 3 } = t, { t: r } = D();
2014
- if (!Array.isArray(e) || e.length === 0) return null;
2015
- const o = e.slice(0, a), s = e.length - a;
2016
- return /* @__PURE__ */ A("span", { className: "ds:inline-flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
2017
- o.map((i) => /* @__PURE__ */ n(oe, { label: i, size: "sm" }, i)),
2018
- s > 0 && /* @__PURE__ */ n(Mt, { label: e.slice(a).join(", "), children: /* @__PURE__ */ n(
2019
- oe,
2020
- {
2021
- label: r("inputs.multiSelect.overflow", { count: s }),
2022
- size: "sm",
2023
- variant: "neutral",
2024
- fill: "outline"
2025
- }
2026
- ) })
2027
- ] });
2028
- }
2029
- const ga = {
2030
- date: { year: "numeric", month: "short", day: "numeric" },
2031
- time: { hour: "2-digit", minute: "2-digit" },
2032
- datetime: {
2033
- year: "numeric",
2034
- month: "short",
2035
- day: "numeric",
2036
- hour: "2-digit",
2037
- minute: "2-digit"
2038
- }
2039
- };
2040
- function Tr(t) {
2041
- const { value: e, format: a = "date", options: r } = t;
2042
- return e == null || e === "" ? null : a === "relative" && !r ? /* @__PURE__ */ n(Ne, { value: e, shape: "bare" }) : /* @__PURE__ */ n(
2043
- Ne,
2044
- {
2045
- value: e,
2046
- format: "absolute",
2047
- shape: "bare",
2048
- absoluteFormat: r ?? ga[a === "relative" ? "date" : a]
2049
- }
2050
- );
2051
- }
2052
- function ba(t) {
2053
- if (t == null || t === "") return null;
2054
- const e = typeof t == "number" ? t : Number(t);
2055
- return Number.isFinite(e) ? e : null;
2056
- }
2057
- function yr(t) {
2058
- const {
2059
- value: e,
2060
- currency: a = "EUR",
2061
- colorNegative: r,
2062
- strikethrough: o,
2063
- options: s
2064
- } = t, { i18n: i } = D(), p = ba(e);
2065
- if (p === null) return null;
2066
- const c = i.language || "en", d = new Intl.NumberFormat(c, {
2067
- style: "currency",
2068
- currency: a,
2069
- ...s
2070
- }).format(p), l = ["ds:tabular-nums"];
2071
- return r && p < 0 && l.push("ds:text-[color:var(--destructive)]"), o && l.push("line-through"), /* @__PURE__ */ n("span", { className: l.join(" "), children: d });
2072
- }
2073
- function De(t) {
2074
- if (!Oe(t)) return t;
2075
- const e = t, a = e.props.className ?? "", r = /\bsize-|\bw-|\bh-/.test(a) ? a : `${a} size-4`.trim();
2076
- return ze(e, { className: r, size: e.props.size ?? 16 });
2077
- }
2078
- function Cr(t) {
2079
- return Math.max(1, t) * 32 + 26;
2080
- }
2081
- function fe(t, e) {
2082
- return typeof t == "function" ? t(e) : !!t;
2083
- }
2084
- const ha = "ds:text-[color:var(--destructive)] ds:hover:text-[color:var(--destructive-hover)]";
2085
- function xr(t) {
2086
- const { data: e, actions: a, intent: r = "ghost", group: o, label: s, collapsed: i } = t, { t: p } = D();
2087
- if (!e) return null;
2088
- const c = a.filter((u) => !fe(u.hidden, e));
2089
- if (typeof i == "function" ? i() : !!i)
2090
- return /* @__PURE__ */ A(_.Root, { children: [
2091
- /* @__PURE__ */ n(_.Trigger, { asChild: !0, children: /* @__PURE__ */ n(
2092
- V,
2093
- {
2094
- size: "sm",
2095
- intent: r,
2096
- icon: /* @__PURE__ */ n(qt, { "aria-hidden": !0 }),
2097
- "aria-label": s ?? p("dataTable.actions", "Actions")
2098
- }
2099
- ) }),
2100
- /* @__PURE__ */ n(_.Content, { align: "end", children: c.map((u, b) => /* @__PURE__ */ n(
2101
- _.Item,
2102
- {
2103
- startIcon: De(u.icon),
2104
- disabled: fe(u.disabled, e),
2105
- onSelect: () => u.onClick(e),
2106
- className: u.variant === "destructive" ? "ds:text-[color:var(--destructive)]" : void 0,
2107
- children: u.label
2108
- },
2109
- b
2110
- )) })
2111
- ] });
2112
- const l = c.map((u, b) => {
2113
- const f = fe(u.disabled, e), h = f && u.disabledReason ? u.disabledReason : u.label;
2114
- return /* @__PURE__ */ n(
2115
- V,
2116
- {
2117
- size: "sm",
2118
- intent: r,
2119
- icon: De(u.icon),
2120
- tooltip: h,
2121
- "aria-label": u.label,
2122
- disabled: f,
2123
- onClick: (T) => {
2124
- T.stopPropagation(), u.onClick(e);
2125
- },
2126
- className: u.variant === "destructive" ? ha : void 0
2127
- },
2128
- b
2129
- );
2130
- });
2131
- return o ? /* @__PURE__ */ n(
2132
- Pe,
2133
- {
2134
- "aria-label": s ?? p("dataTable.actions", "Actions"),
2135
- size: "sm",
2136
- children: l
2137
- }
2138
- ) : /* @__PURE__ */ n("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: l });
2139
- }
2140
- function Ie(t, e) {
2141
- return typeof t == "function" ? t(e) : t;
2142
- }
2143
- function va(t) {
2144
- return /^(https?:\/\/|\/|#|mailto:|tel:)/i.test(t) ? t : "#";
2145
- }
2146
- function Sr(t) {
2147
- const { value: e, data: a, href: r, onClick: o, secondary: s } = t;
2148
- if (!a) return null;
2149
- const i = Ie(r, a), p = Ie(s, a), c = e == null || e === "" ? "" : String(e), d = [
2150
- "ds:text-[color:var(--primary)]",
2151
- "ds:hover:underline",
2152
- "ds:focus-visible:outline-[length:var(--focus-ring-width)]",
2153
- "ds:focus-visible:outline-solid",
2154
- "ds:focus-visible:outline-[color:var(--ring)]",
2155
- "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
2156
- "ds:rounded-[var(--radius-sm)]"
2157
- ].join(" "), l = (u) => {
2158
- o && (i || u.preventDefault(), u.stopPropagation(), o(a));
2159
- };
2160
- return /* @__PURE__ */ A("span", { className: "ds:flex ds:flex-col ds:leading-tight", children: [
2161
- i ? /* @__PURE__ */ n(
2162
- "a",
2163
- {
2164
- href: va(i),
2165
- onClick: l,
2166
- className: d,
2167
- children: c
2168
- }
2169
- ) : /* @__PURE__ */ n(
2170
- "button",
2171
- {
2172
- type: "button",
2173
- onClick: l,
2174
- className: [
2175
- "ds:appearance-none ds:bg-transparent ds:p-0 ds:text-start",
2176
- d
2177
- ].join(" "),
2178
- children: c
2179
- }
2180
- ),
2181
- p ? /* @__PURE__ */ n("span", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: p }) : null
2182
- ] });
2183
- }
2184
- export {
2185
- xr as A,
2186
- yr as C,
2187
- sr as D,
2188
- hr as I,
2189
- Sr as L,
2190
- fr as N,
2191
- cr as S,
2192
- vr as T,
2193
- br as U,
2194
- Tr as a,
2195
- lr as b,
2196
- ir as c,
2197
- mr as d,
2198
- dr as e,
2199
- gr as f,
2200
- Zt as g,
2201
- Yt as h,
2202
- ne as i,
2203
- Lt as j,
2204
- ur as k,
2205
- pr as l,
2206
- Cr as m,
2207
- ea as n,
2208
- Ue as o
2209
- };
2210
- //# sourceMappingURL=link-cell-renderer-CLI7sBkX.js.map