persian-data-grid 0.5.0 → 0.6.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 (282) hide show
  1. package/OFL.txt +93 -0
  2. package/README.md +179 -22
  3. package/dist/ERPTableGroupRow-J5Z2LRC5.cjs +131 -0
  4. package/dist/ERPTableGroupRow-J5Z2LRC5.cjs.map +1 -0
  5. package/dist/ERPTableGroupRow-PSAPAHGL.js +125 -0
  6. package/dist/ERPTableGroupRow-PSAPAHGL.js.map +1 -0
  7. package/dist/GridPlugin-CJCaYnlw.d.ts +57 -0
  8. package/dist/GridPlugin-oxhq8AsM.d.cts +57 -0
  9. package/dist/GridPresenceService-GEH6535Q.js +3 -0
  10. package/dist/GridPresenceService-GEH6535Q.js.map +1 -0
  11. package/dist/GridPresenceService-RDN5FXHQ.cjs +12 -0
  12. package/dist/GridPresenceService-RDN5FXHQ.cjs.map +1 -0
  13. package/dist/GridSession-B-9lLcoB.d.cts +2492 -0
  14. package/dist/GridSession-Bc7UIawO.d.ts +2492 -0
  15. package/dist/GridSyncService-KTLB4KP3.js +3 -0
  16. package/dist/GridSyncService-KTLB4KP3.js.map +1 -0
  17. package/dist/GridSyncService-TAPAHABV.cjs +12 -0
  18. package/dist/GridSyncService-TAPAHABV.cjs.map +1 -0
  19. package/dist/PdfRenderer-1HFh6UeR.d.ts +22 -0
  20. package/dist/PdfRenderer-CBg7hWNS.d.cts +22 -0
  21. package/dist/RemoteApi-CCQxiSf1.d.cts +28 -0
  22. package/dist/RemoteApi-CCQxiSf1.d.ts +28 -0
  23. package/dist/SelectImpl-NM4O4IGW.js +447 -0
  24. package/dist/SelectImpl-NM4O4IGW.js.map +1 -0
  25. package/dist/SelectImpl-W2EI4T7O.cjs +453 -0
  26. package/dist/SelectImpl-W2EI4T7O.cjs.map +1 -0
  27. package/dist/UITableController-Cuwq481K.d.cts +632 -0
  28. package/dist/UITableController-DU8RopUM.d.ts +632 -0
  29. package/dist/VazirmatnPdfRenderer-BCMpC1zy.d.cts +96 -0
  30. package/dist/VazirmatnPdfRenderer-Dz_G-m3c.d.ts +96 -0
  31. package/dist/adapters/arian-erp.cjs +77 -0
  32. package/dist/adapters/arian-erp.cjs.map +1 -0
  33. package/dist/adapters/arian-erp.d.cts +60 -0
  34. package/dist/adapters/arian-erp.d.ts +60 -0
  35. package/dist/adapters/arian-erp.js +71 -0
  36. package/dist/adapters/arian-erp.js.map +1 -0
  37. package/dist/appendAtEnd-RHIQRG2W.cjs +35 -0
  38. package/dist/appendAtEnd-RHIQRG2W.cjs.map +1 -0
  39. package/dist/appendAtEnd-TJEABLGD.js +33 -0
  40. package/dist/appendAtEnd-TJEABLGD.js.map +1 -0
  41. package/dist/applyImportedRows-BO6yxoAN.d.cts +135 -0
  42. package/dist/applyImportedRows-D4zVY8uD.d.ts +135 -0
  43. package/dist/applyRowVisibilityHandler-KS6TMCBN.js +83 -0
  44. package/dist/applyRowVisibilityHandler-KS6TMCBN.js.map +1 -0
  45. package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs +85 -0
  46. package/dist/applyRowVisibilityHandler-LXCOGESZ.cjs.map +1 -0
  47. package/dist/broadcastChannelTransport-FHUMV76O.cjs +12 -0
  48. package/dist/broadcastChannelTransport-FHUMV76O.cjs.map +1 -0
  49. package/dist/broadcastChannelTransport-MIH53VNZ.js +3 -0
  50. package/dist/broadcastChannelTransport-MIH53VNZ.js.map +1 -0
  51. package/dist/callbackRemoteApi-BlXO5NJz.d.ts +30 -0
  52. package/dist/callbackRemoteApi-DgnXH-i0.d.cts +30 -0
  53. package/dist/cellRenderContext-DB7V_mlu.d.ts +42 -0
  54. package/dist/cellRenderContext-DG5BOlxK.d.cts +42 -0
  55. package/dist/chunk-2BJCRYOS.cjs +936 -0
  56. package/dist/chunk-2BJCRYOS.cjs.map +1 -0
  57. package/dist/chunk-3Y3KKGEC.js +3 -0
  58. package/dist/chunk-3Y3KKGEC.js.map +1 -0
  59. package/dist/chunk-5ALMNLUR.cjs +1408 -0
  60. package/dist/chunk-5ALMNLUR.cjs.map +1 -0
  61. package/dist/chunk-5HKVMPBD.js +937 -0
  62. package/dist/chunk-5HKVMPBD.js.map +1 -0
  63. package/dist/chunk-633KP74Z.js +189 -0
  64. package/dist/chunk-633KP74Z.js.map +1 -0
  65. package/dist/chunk-6XBXZPBW.js +298 -0
  66. package/dist/chunk-6XBXZPBW.js.map +1 -0
  67. package/dist/chunk-77UXAJII.js +112 -0
  68. package/dist/chunk-77UXAJII.js.map +1 -0
  69. package/dist/chunk-ASPTRYRD.cjs +21 -0
  70. package/dist/chunk-ASPTRYRD.cjs.map +1 -0
  71. package/dist/chunk-AU3RDJYQ.js +243 -0
  72. package/dist/chunk-AU3RDJYQ.js.map +1 -0
  73. package/dist/chunk-BHDRUZH5.cjs +33 -0
  74. package/dist/chunk-BHDRUZH5.cjs.map +1 -0
  75. package/dist/chunk-BLYVOV3G.cjs +191 -0
  76. package/dist/chunk-BLYVOV3G.cjs.map +1 -0
  77. package/dist/chunk-CILNIWYW.cjs +100 -0
  78. package/dist/chunk-CILNIWYW.cjs.map +1 -0
  79. package/dist/chunk-DFFP7SJ6.cjs +257 -0
  80. package/dist/chunk-DFFP7SJ6.cjs.map +1 -0
  81. package/dist/chunk-DXRCYW42.cjs +568 -0
  82. package/dist/chunk-DXRCYW42.cjs.map +1 -0
  83. package/dist/chunk-EBV6HGZB.cjs +33 -0
  84. package/dist/chunk-EBV6HGZB.cjs.map +1 -0
  85. package/dist/chunk-EHHHC5JV.js +832 -0
  86. package/dist/chunk-EHHHC5JV.js.map +1 -0
  87. package/dist/chunk-F4PYOYHR.js +112 -0
  88. package/dist/chunk-F4PYOYHR.js.map +1 -0
  89. package/dist/chunk-GQEDLUMB.js +168 -0
  90. package/dist/chunk-GQEDLUMB.js.map +1 -0
  91. package/dist/chunk-H2LESGMX.cjs +319 -0
  92. package/dist/chunk-H2LESGMX.cjs.map +1 -0
  93. package/dist/chunk-HTNJT2QU.js +11674 -0
  94. package/dist/chunk-HTNJT2QU.js.map +1 -0
  95. package/dist/chunk-IIISFUW4.cjs +11786 -0
  96. package/dist/chunk-IIISFUW4.cjs.map +1 -0
  97. package/dist/chunk-IMPCRWYP.cjs +251 -0
  98. package/dist/chunk-IMPCRWYP.cjs.map +1 -0
  99. package/dist/chunk-IPPIXOVQ.js +317 -0
  100. package/dist/chunk-IPPIXOVQ.js.map +1 -0
  101. package/dist/chunk-J4XJ4UBC.js +1404 -0
  102. package/dist/chunk-J4XJ4UBC.js.map +1 -0
  103. package/dist/chunk-J7CPPFXT.cjs +89 -0
  104. package/dist/chunk-J7CPPFXT.cjs.map +1 -0
  105. package/dist/chunk-JOICD47Q.cjs +41 -0
  106. package/dist/chunk-JOICD47Q.cjs.map +1 -0
  107. package/dist/chunk-KHMG6EI2.js +13 -0
  108. package/dist/chunk-KHMG6EI2.js.map +1 -0
  109. package/dist/chunk-KMRURD5J.cjs +15 -0
  110. package/dist/chunk-KMRURD5J.cjs.map +1 -0
  111. package/dist/chunk-KRJG3KMP.cjs +174 -0
  112. package/dist/chunk-KRJG3KMP.cjs.map +1 -0
  113. package/dist/chunk-KUBVDIF7.cjs +653 -0
  114. package/dist/chunk-KUBVDIF7.cjs.map +1 -0
  115. package/dist/chunk-KYAOSBQN.js +31 -0
  116. package/dist/chunk-KYAOSBQN.js.map +1 -0
  117. package/dist/chunk-LJ7LMEXO.js +36 -0
  118. package/dist/chunk-LJ7LMEXO.js.map +1 -0
  119. package/dist/chunk-MT3KLB2Q.cjs +944 -0
  120. package/dist/chunk-MT3KLB2Q.cjs.map +1 -0
  121. package/dist/chunk-MU3RY46O.js +932 -0
  122. package/dist/chunk-MU3RY46O.js.map +1 -0
  123. package/dist/chunk-MUQQKPWR.js +84 -0
  124. package/dist/chunk-MUQQKPWR.js.map +1 -0
  125. package/dist/chunk-N7SJTINL.cjs +4 -0
  126. package/dist/chunk-N7SJTINL.cjs.map +1 -0
  127. package/dist/chunk-NTV2UUAJ.cjs +149 -0
  128. package/dist/chunk-NTV2UUAJ.cjs.map +1 -0
  129. package/dist/chunk-PJQWHF6T.js +31 -0
  130. package/dist/chunk-PJQWHF6T.js.map +1 -0
  131. package/dist/chunk-PQY54EL5.js +248 -0
  132. package/dist/chunk-PQY54EL5.js.map +1 -0
  133. package/dist/chunk-PXCHPZTP.cjs +839 -0
  134. package/dist/chunk-PXCHPZTP.cjs.map +1 -0
  135. package/dist/chunk-Q7TBBUTX.cjs +110 -0
  136. package/dist/chunk-Q7TBBUTX.cjs.map +1 -0
  137. package/dist/chunk-QQMU44KJ.js +612 -0
  138. package/dist/chunk-QQMU44KJ.js.map +1 -0
  139. package/dist/chunk-QZN7R2WP.cjs +114 -0
  140. package/dist/chunk-QZN7R2WP.cjs.map +1 -0
  141. package/dist/chunk-RKVSJU46.js +35 -0
  142. package/dist/chunk-RKVSJU46.js.map +1 -0
  143. package/dist/chunk-RM6ZWNT3.js +561 -0
  144. package/dist/chunk-RM6ZWNT3.js.map +1 -0
  145. package/dist/chunk-SX4VQXAA.cjs +114 -0
  146. package/dist/chunk-SX4VQXAA.cjs.map +1 -0
  147. package/dist/chunk-SZ7BLAY3.js +92 -0
  148. package/dist/chunk-SZ7BLAY3.js.map +1 -0
  149. package/dist/chunk-TN4MG6FY.js +112 -0
  150. package/dist/chunk-TN4MG6FY.js.map +1 -0
  151. package/dist/chunk-UC7PHDM6.cjs +331 -0
  152. package/dist/chunk-UC7PHDM6.cjs.map +1 -0
  153. package/dist/chunk-UXVLYUUW.js +108 -0
  154. package/dist/chunk-UXVLYUUW.js.map +1 -0
  155. package/dist/chunk-VVGYRZ7S.cjs +38 -0
  156. package/dist/chunk-VVGYRZ7S.cjs.map +1 -0
  157. package/dist/chunk-W5256BJ4.js +56 -0
  158. package/dist/chunk-W5256BJ4.js.map +1 -0
  159. package/dist/chunk-WUMOSOEK.cjs +62 -0
  160. package/dist/chunk-WUMOSOEK.cjs.map +1 -0
  161. package/dist/chunk-XLRE2J25.js +140 -0
  162. package/dist/chunk-XLRE2J25.js.map +1 -0
  163. package/dist/chunk-Y6W5V2CI.js +19 -0
  164. package/dist/chunk-Y6W5V2CI.js.map +1 -0
  165. package/dist/chunk-Z4QPZ3Z3.cjs +114 -0
  166. package/dist/chunk-Z4QPZ3Z3.cjs.map +1 -0
  167. package/dist/createEngineGridQuery-Dmq3i5v3.d.cts +884 -0
  168. package/dist/createEngineGridQuery-Mt1hc33m.d.ts +884 -0
  169. package/dist/date-picker-jalali.cjs +263 -0
  170. package/dist/date-picker-jalali.cjs.map +1 -0
  171. package/dist/date-picker-jalali.d.cts +62 -0
  172. package/dist/date-picker-jalali.d.ts +62 -0
  173. package/dist/date-picker-jalali.js +256 -0
  174. package/dist/date-picker-jalali.js.map +1 -0
  175. package/dist/finance.cjs +205 -0
  176. package/dist/finance.cjs.map +1 -0
  177. package/dist/finance.d.cts +90 -0
  178. package/dist/finance.d.ts +90 -0
  179. package/dist/finance.js +157 -0
  180. package/dist/finance.js.map +1 -0
  181. package/dist/foldedColumn-IHDT4ARZ.cjs +66 -0
  182. package/dist/foldedColumn-IHDT4ARZ.cjs.map +1 -0
  183. package/dist/foldedColumn-TFURUKFG.js +64 -0
  184. package/dist/foldedColumn-TFURUKFG.js.map +1 -0
  185. package/dist/headless.cjs +729 -0
  186. package/dist/headless.cjs.map +1 -0
  187. package/dist/headless.d.cts +504 -0
  188. package/dist/headless.d.ts +504 -0
  189. package/dist/headless.js +226 -0
  190. package/dist/headless.js.map +1 -0
  191. package/dist/index-DN8M8Jkq.d.cts +14 -0
  192. package/dist/index-DmzL-F_o.d.ts +14 -0
  193. package/dist/index.cjs +8002 -11409
  194. package/dist/index.cjs.map +1 -1
  195. package/dist/index.d.cts +437 -2305
  196. package/dist/index.d.ts +437 -2305
  197. package/dist/index.js +7244 -11083
  198. package/dist/index.js.map +1 -1
  199. package/dist/locales/ar.cjs +12 -0
  200. package/dist/locales/ar.cjs.map +1 -0
  201. package/dist/locales/ar.d.cts +6 -0
  202. package/dist/locales/ar.d.ts +6 -0
  203. package/dist/locales/ar.js +3 -0
  204. package/dist/locales/ar.js.map +1 -0
  205. package/dist/locales/en.cjs +12 -0
  206. package/dist/locales/en.cjs.map +1 -0
  207. package/dist/locales/en.d.cts +6 -0
  208. package/dist/locales/en.d.ts +6 -0
  209. package/dist/locales/en.js +3 -0
  210. package/dist/locales/en.js.map +1 -0
  211. package/dist/locales/fa.cjs +12 -0
  212. package/dist/locales/fa.cjs.map +1 -0
  213. package/dist/locales/fa.d.cts +6 -0
  214. package/dist/locales/fa.d.ts +6 -0
  215. package/dist/locales/fa.js +3 -0
  216. package/dist/locales/fa.js.map +1 -0
  217. package/dist/locales/index.cjs +51 -0
  218. package/dist/locales/index.cjs.map +1 -0
  219. package/dist/locales/index.d.cts +5 -0
  220. package/dist/locales/index.d.ts +5 -0
  221. package/dist/locales/index.js +6 -0
  222. package/dist/locales/index.js.map +1 -0
  223. package/dist/memoryRecords-AWDKUJ2F.cjs +50 -0
  224. package/dist/memoryRecords-AWDKUJ2F.cjs.map +1 -0
  225. package/dist/memoryRecords-OJTGXLRH.js +47 -0
  226. package/dist/memoryRecords-OJTGXLRH.js.map +1 -0
  227. package/dist/pagedFooterTotals-DXCGDO6F.cjs +27 -0
  228. package/dist/pagedFooterTotals-DXCGDO6F.cjs.map +1 -0
  229. package/dist/pagedFooterTotals-ORWKUNE7.js +25 -0
  230. package/dist/pagedFooterTotals-ORWKUNE7.js.map +1 -0
  231. package/dist/pagedKit-MFGAJFSK.cjs +134 -0
  232. package/dist/pagedKit-MFGAJFSK.cjs.map +1 -0
  233. package/dist/pagedKit-WYWY4LRV.js +127 -0
  234. package/dist/pagedKit-WYWY4LRV.js.map +1 -0
  235. package/dist/pagedSearch-HCPJW7VM.js +38 -0
  236. package/dist/pagedSearch-HCPJW7VM.js.map +1 -0
  237. package/dist/pagedSearch-U3WCG4GN.cjs +42 -0
  238. package/dist/pagedSearch-U3WCG4GN.cjs.map +1 -0
  239. package/dist/plugins/csv.cjs +124 -0
  240. package/dist/plugins/csv.cjs.map +1 -0
  241. package/dist/plugins/csv.d.cts +44 -0
  242. package/dist/plugins/csv.d.ts +44 -0
  243. package/dist/plugins/csv.js +120 -0
  244. package/dist/plugins/csv.js.map +1 -0
  245. package/dist/plugins/excel.cjs +52 -0
  246. package/dist/plugins/excel.cjs.map +1 -0
  247. package/dist/plugins/excel.d.cts +14 -0
  248. package/dist/plugins/excel.d.ts +14 -0
  249. package/dist/plugins/excel.js +7 -0
  250. package/dist/plugins/excel.js.map +1 -0
  251. package/dist/plugins/pdf/fonts/vazirmatn.cjs +50 -0
  252. package/dist/plugins/pdf/fonts/vazirmatn.cjs.map +1 -0
  253. package/dist/plugins/pdf/fonts/vazirmatn.d.cts +24 -0
  254. package/dist/plugins/pdf/fonts/vazirmatn.d.ts +24 -0
  255. package/dist/plugins/pdf/fonts/vazirmatn.js +39 -0
  256. package/dist/plugins/pdf/fonts/vazirmatn.js.map +1 -0
  257. package/dist/plugins/pdf.cjs +24 -0
  258. package/dist/plugins/pdf.cjs.map +1 -0
  259. package/dist/plugins/pdf.d.cts +21 -0
  260. package/dist/plugins/pdf.d.ts +21 -0
  261. package/dist/plugins/pdf.js +7 -0
  262. package/dist/plugins/pdf.js.map +1 -0
  263. package/dist/presence.cjs +56 -0
  264. package/dist/presence.cjs.map +1 -0
  265. package/dist/presence.d.cts +17 -0
  266. package/dist/presence.d.ts +17 -0
  267. package/dist/presence.js +54 -0
  268. package/dist/presence.js.map +1 -0
  269. package/dist/rebuildRowVisibility-66EAZ356.cjs +21 -0
  270. package/dist/rebuildRowVisibility-66EAZ356.cjs.map +1 -0
  271. package/dist/rebuildRowVisibility-6TYM5BP2.js +19 -0
  272. package/dist/rebuildRowVisibility-6TYM5BP2.js.map +1 -0
  273. package/dist/styles.css +1440 -0
  274. package/dist/sync.cjs +148 -0
  275. package/dist/sync.cjs.map +1 -0
  276. package/dist/sync.d.cts +17 -0
  277. package/dist/sync.d.ts +17 -0
  278. package/dist/sync.js +146 -0
  279. package/dist/sync.js.map +1 -0
  280. package/dist/types-D__47BKv.d.cts +23 -0
  281. package/dist/types-D__47BKv.d.ts +23 -0
  282. package/package.json +184 -28
@@ -0,0 +1,1440 @@
1
+ /* Visual tokens copied from the ERP Tailwind theme so the published
2
+ table looks identical after npm install (no host Tailwind scan). */
3
+
4
+ /* Canonical class is `.pdg-grid` (PR-87 / D13). `.erp-table` is a one-version alias. */
5
+ .pdg-grid,
6
+ .erp-table {
7
+ --pdg-main-black: #0e0e0e;
8
+ --pdg-main-white: #fff;
9
+ --pdg-gray-3: #f4f4f4;
10
+ --pdg-gray-5: #ececec;
11
+ --pdg-gray-6: #cecece;
12
+ --pdg-gray-7: #b1b1b1;
13
+ --pdg-gray-8: #939393;
14
+ --pdg-gray-85: #848484;
15
+ --pdg-gray-9: #767676;
16
+ --pdg-gray-10: #585858;
17
+ --pdg-gray-11: #515151;
18
+ --pdg-black-6: #292929;
19
+ --pdg-blue-6: #0658b0;
20
+ --pdg-blue-11: #ddecfd;
21
+ --pdg-blue-100: #dbeafe;
22
+ --pdg-red-100: #fee2e2;
23
+ --pdg-red-300: #fca5a5;
24
+ --pdg-red-600: #dc2626;
25
+ --pdg-yellow-200: #fef08a;
26
+ --pdg-yellow-400: #facc15;
27
+ --pdg-zinc-200: #e4e4e7;
28
+ --pdg-neutral-500: #737373;
29
+ --pdg-gray-100: #f3f4f6;
30
+ --pdg-scrollbar: #d9d9d9;
31
+ --pdg-success: #2c8440;
32
+ --pdg-error: #dc3545;
33
+ --pdg-overlay: rgba(14, 14, 14, 0.35);
34
+
35
+ --erp-main-black: var(--pdg-main-black);
36
+ --erp-main-white: var(--pdg-main-white);
37
+ --erp-gray-3: var(--pdg-gray-3);
38
+ --erp-gray-5: var(--pdg-gray-5);
39
+ --erp-gray-6: var(--pdg-gray-6);
40
+ --erp-gray-7: var(--pdg-gray-7);
41
+ --erp-gray-8: var(--pdg-gray-8);
42
+ --erp-gray-85: var(--pdg-gray-85);
43
+ --erp-gray-9: var(--pdg-gray-9);
44
+ --erp-gray-10: var(--pdg-gray-10);
45
+ --erp-gray-11: var(--pdg-gray-11);
46
+ --erp-black-6: var(--pdg-black-6);
47
+ --erp-blue-6: var(--pdg-blue-6);
48
+ --erp-blue-11: var(--pdg-blue-11);
49
+ --erp-blue-100: var(--pdg-blue-100);
50
+ --erp-red-100: var(--pdg-red-100);
51
+ --erp-red-300: var(--pdg-red-300);
52
+ --erp-red-600: var(--pdg-red-600);
53
+ --erp-yellow-200: var(--pdg-yellow-200);
54
+ --erp-yellow-400: var(--pdg-yellow-400);
55
+ --erp-zinc-200: var(--pdg-zinc-200);
56
+ --erp-neutral-500: var(--pdg-neutral-500);
57
+ --erp-gray-100: var(--pdg-gray-100);
58
+ --erp-scrollbar: var(--pdg-scrollbar);
59
+ --erp-success: var(--pdg-success);
60
+ --erp-error: var(--pdg-error);
61
+ --erp-overlay: var(--pdg-overlay);
62
+
63
+ /* Semantic roles (alias to palette — same computed colors as before). */
64
+ --pdg-bg: var(--pdg-main-white);
65
+ --pdg-fg: var(--pdg-black-6);
66
+ --pdg-accent: var(--pdg-blue-6);
67
+ --pdg-range-bg: color-mix(in srgb, var(--pdg-accent) 14%, transparent);
68
+ --pdg-range-border: var(--pdg-accent);
69
+ --pdg-header-bg: var(--pdg-gray-3);
70
+ --pdg-row-stripe: var(--pdg-blue-11);
71
+ --pdg-row-selected: var(--pdg-blue-100);
72
+ --pdg-border: var(--pdg-gray-5);
73
+ --pdg-danger: var(--pdg-red-600);
74
+ --pdg-search-match: var(--pdg-yellow-400);
75
+ --pdg-search-other: var(--pdg-yellow-200);
76
+ --pdg-muted: var(--pdg-neutral-500);
77
+ --pdg-font: IRANSans, Tahoma, sans-serif;
78
+ --pdg-row-height: 40px;
79
+ --pdg-font-size: 12px;
80
+ --pdg-radius: 0.25rem;
81
+
82
+ --erp-bg: var(--pdg-bg);
83
+ --erp-fg: var(--pdg-fg);
84
+ --erp-accent: var(--pdg-accent);
85
+ --erp-range-bg: var(--pdg-range-bg);
86
+ --erp-range-border: var(--pdg-range-border);
87
+ --erp-header-bg: var(--pdg-header-bg);
88
+ --erp-row-stripe: var(--pdg-row-stripe);
89
+ --erp-row-selected: var(--pdg-row-selected);
90
+ --erp-border: var(--pdg-border);
91
+ --erp-danger: var(--pdg-danger);
92
+ --erp-search-match: var(--pdg-search-match);
93
+ --erp-search-other: var(--pdg-search-other);
94
+ --erp-muted: var(--pdg-muted);
95
+ --erp-font: var(--pdg-font);
96
+ --erp-row-height: var(--pdg-row-height);
97
+ --erp-font-size: var(--pdg-font-size);
98
+ --erp-radius: var(--pdg-radius);
99
+
100
+ font-family: var(--pdg-font);
101
+ color: var(--pdg-fg);
102
+ box-sizing: border-box;
103
+ width: 100%;
104
+ }
105
+
106
+ .erp-table *,
107
+ .erp-table *::before,
108
+ .erp-table *::after {
109
+ box-sizing: border-box;
110
+ }
111
+
112
+ .erp-table table {
113
+ border-collapse: separate;
114
+ border-spacing: 0;
115
+ }
116
+ .erp-table .border-collapse { border-collapse: collapse; }
117
+
118
+ .erp-table .flex { display: flex; }
119
+ .erp-table .inline-flex { display: inline-flex; }
120
+ .erp-table .flex-col { flex-direction: column; }
121
+ .erp-table .flex-1 { flex: 1 1 0%; }
122
+ .erp-table .flex-wrap { flex-wrap: wrap; }
123
+ .erp-table .shrink-0 { flex-shrink: 0; }
124
+ .erp-table .items-center { align-items: center; }
125
+ .erp-table .items-start { align-items: flex-start; }
126
+ .erp-table .justify-between { justify-content: space-between; }
127
+ .erp-table .justify-start { justify-content: flex-start; }
128
+ .erp-table .justify-end { justify-content: flex-end; }
129
+ .erp-table .justify-center { justify-content: center; }
130
+ .erp-table .gap-1 { gap: 0.25rem; }
131
+ .erp-table .gap-2 { gap: 0.5rem; }
132
+ .erp-table .gap-3 { gap: 0.75rem; }
133
+ .erp-table .gap-4 { gap: 1rem; }
134
+ .erp-table .gap-5 { gap: 1.25rem; }
135
+ .erp-table .w-full { width: 100%; }
136
+ .erp-table .h-full { height: 100%; }
137
+ .erp-table .h-8 { height: 2rem; }
138
+ .erp-table .h-9 { height: var(--erp-row-height); }
139
+ .erp-table .h-10 { height: 2.5rem; }
140
+ .erp-table .\!h-9 { height: var(--erp-row-height) !important; }
141
+ .erp-table .\!h-full { height: 100% !important; }
142
+ .erp-table .\!h-\[480px\] { height: 480px !important; }
143
+ .erp-table .min-w-max { min-width: max-content; }
144
+ .erp-table .min-w-0 { min-width: 0; }
145
+ .erp-table .min-w-24 { min-width: 6rem; }
146
+ .erp-table .min-w-36 { min-width: 9rem; }
147
+ .erp-table .min-w-5 { min-width: 1.25rem; }
148
+ .erp-table .max-w-72 { max-width: 18rem; }
149
+ .erp-table .max-h-\[20rem\] { max-height: 20rem; }
150
+ .erp-table .max-w-\[40vw\] { max-width: 40vw; }
151
+ .erp-table .w-2 { width: 0.5rem; }
152
+ .erp-table .h-2 { height: 0.5rem; }
153
+ .erp-table .w-fit { width: fit-content; }
154
+ .erp-table .w-\[16px\] { width: 16px; }
155
+ .erp-table .h-\[16px\] { height: 16px; }
156
+ .erp-table .w-\[20px\] { width: 20px; }
157
+ .erp-table .w-\[2\.125rem\] { width: 2.125rem; }
158
+ .erp-table .h-\[2\.125rem\] { height: 2.125rem; }
159
+ .erp-table .w-\[720px\] { width: 720px; }
160
+ .erp-table .min-w-\[320px\] { min-width: 320px; }
161
+ .erp-table .overflow-auto { overflow: auto; }
162
+ .erp-table .overflow-hidden { overflow: hidden; }
163
+ .erp-table .overflow-x-auto { overflow-x: auto; }
164
+ .erp-table .overflow-y-auto { overflow-y: auto; }
165
+ .erp-table .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
166
+ .erp-table .text-ellipsis { text-overflow: ellipsis; }
167
+ .erp-table .whitespace-nowrap { white-space: nowrap; }
168
+ .erp-table .text-3xs { font-size: 8px; }
169
+ .erp-table .text-xs { font-size: var(--erp-font-size); line-height: 1.25rem; }
170
+ .erp-table .text-sm { font-size: 14px; line-height: 1.25rem; }
171
+ .erp-table .text-md { font-size: 16px; }
172
+ .erp-table .text-start { text-align: start; }
173
+ .erp-table .text-center { text-align: center; }
174
+ .erp-table .text-white { color: var(--erp-bg); }
175
+ .erp-table .font-light { font-weight: 300; }
176
+ .erp-table .font-medium { font-weight: 500; }
177
+ .erp-table .font-semibold { font-weight: 600; }
178
+ .erp-table .px-1 { padding-left: 0.25rem; padding-right: 0.25rem; }
179
+ .erp-table .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
180
+ .erp-table .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
181
+ .erp-table .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
182
+ .erp-table .py-1\.5 { padding-top: 0.375rem; padding-bottom: 0.375rem; }
183
+ .erp-table .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
184
+ .erp-table .py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
185
+ .erp-table .p-0 { padding: 0; }
186
+ .erp-table .p-1 { padding: 0.25rem; }
187
+ .erp-table .p-1\.5 { padding: 0.375rem; }
188
+ .erp-table .p-2 { padding: 0.5rem; }
189
+ .erp-table .p-3 { padding: 0.75rem; }
190
+ .erp-table .pb-24 { padding-bottom: 6rem; }
191
+ .erp-table .pt-5 { padding-top: 1.25rem; }
192
+ .erp-table .m-0 { margin: 0; }
193
+ .erp-table .m-12 { margin: 3rem; }
194
+ .erp-table .my-1 { margin-top: 0.25rem; margin-bottom: 0.25rem; }
195
+ .erp-table .ms-auto { margin-inline-start: auto; }
196
+ .erp-table .start-1 { inset-inline-start: 0.25rem; }
197
+ .erp-table .border { border-width: 1px; border-style: solid; border-color: var(--erp-border); }
198
+ .erp-table .border-0 { border-width: 0; }
199
+ .erp-table .border-b { border-bottom: 1px solid var(--erp-border); }
200
+ .erp-table .border-t { border-top: 1px solid var(--erp-border); }
201
+ .erp-table .border-dashed { border-style: dashed; }
202
+ .erp-table .rounded { border-radius: var(--erp-radius); }
203
+ .erp-table .rounded-t-lg { border-top-left-radius: 0.5rem; border-top-right-radius: 0.5rem; }
204
+ .erp-table .rounded-lg { border-radius: 0.5rem; }
205
+ .erp-table .rounded-full { border-radius: 9999px; }
206
+ .erp-table .rounded-sm { border-radius: 0.125rem; }
207
+ .erp-table .sticky { position: sticky; }
208
+ .erp-table .absolute { position: absolute; }
209
+ .erp-table .relative { position: relative; }
210
+ .erp-table .fixed { position: fixed; }
211
+ .erp-table .inset-0 { inset: 0; }
212
+ .erp-table .top-0 { top: 0; }
213
+ .erp-table .top-1 { top: 0.25rem; }
214
+ .erp-table .right-0 { right: 0; }
215
+ .erp-table .left-0 { left: 0; }
216
+ .erp-table .z-10 { z-index: 10; }
217
+ .erp-table .z-20 { z-index: 20; }
218
+ .erp-table .shadow { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }
219
+ .erp-table .shadow-lg { box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1); }
220
+ .erp-table .transition-all { transition: all 0.2s ease; }
221
+ .erp-table .transition-colors { transition: color 0.15s ease, background-color 0.15s ease; }
222
+ .erp-table .duration-200 { transition-duration: 200ms; }
223
+ .erp-table .duration-300 { transition-duration: 300ms; }
224
+ .erp-table .duration-400 { transition-duration: 400ms; }
225
+ .erp-table .cursor-pointer { cursor: pointer; }
226
+ .erp-table .cursor-text { cursor: text; }
227
+ .erp-table .cursor-not-allowed { cursor: not-allowed; }
228
+ .erp-table .cursor-grab { cursor: grab; }
229
+ .erp-table .cursor-grabbing,
230
+ .erp-table .active\:cursor-grabbing:active { cursor: grabbing; }
231
+ .erp-table .cursor-wait { cursor: wait; }
232
+ .erp-table .cursor-col-resize { cursor: col-resize; }
233
+ .erp-table .opacity-30 { opacity: 0.3; }
234
+ .erp-table .opacity-40 { opacity: 0.4; }
235
+ .erp-table .opacity-50 { opacity: 0.5; }
236
+ .erp-table .opacity-60 { opacity: 0.6; }
237
+ .erp-table .opacity-100 { opacity: 1; }
238
+ .erp-table .line-through { text-decoration: line-through; }
239
+ .erp-table .bg-transparent { background-color: transparent; }
240
+ .erp-table .outline-none,
241
+ .erp-table .focus\:outline-none:focus,
242
+ .erp-table .focus-visible\:outline-none:focus-visible { outline: none; }
243
+ .erp-table .ring-0,
244
+ .erp-table .focus\:ring-0:focus,
245
+ .erp-table .focus\:\!ring-0:focus { box-shadow: none !important; }
246
+ .erp-table .ring-2 { box-shadow: 0 0 0 2px var(--erp-search-match); }
247
+ .erp-table .ring-yellow-400 { --tw-ring-color: var(--erp-search-match); }
248
+ .erp-table .bg-main-white { background-color: var(--erp-bg); }
249
+ .erp-table .bg-main-black { background-color: var(--erp-main-black); }
250
+ .erp-table .bg-gray-gray3 { background-color: var(--erp-header-bg); }
251
+ .erp-table .bg-gray-gray5,
252
+ .erp-table .\!bg-gray-gray5 { background-color: var(--erp-gray-5) !important; }
253
+ .erp-table .bg-gray-100 { background-color: var(--erp-gray-100); }
254
+ .erp-table .bg-blue-100 { background-color: var(--erp-row-selected); }
255
+ .erp-table .bg-blue-blue11 { background-color: var(--erp-row-stripe); }
256
+ .erp-table .bg-blue-blue6 { background-color: var(--erp-accent); }
257
+ .erp-table .bg-red-300 { background-color: var(--erp-red-300); }
258
+ .erp-table .bg-red-600 { background-color: var(--erp-danger); }
259
+ .erp-table .bg-white,
260
+ .erp-table .\!bg-white { background-color: var(--erp-bg) !important; }
261
+ .erp-table .text-main-white { color: var(--erp-main-white); }
262
+ .erp-table .text-main-black { color: var(--erp-main-black); }
263
+ .erp-table .text-gray-gray3 { color: var(--erp-gray-3); }
264
+ .erp-table .text-gray-gray7 { color: var(--erp-gray-7); }
265
+ .erp-table .text-gray-gray9 { color: var(--erp-gray-9); }
266
+ .erp-table .text-gray-gray10 { color: var(--erp-gray-10); }
267
+ .erp-table .stroke-gray-gray3 { stroke: var(--erp-gray-3); }
268
+ .erp-table .stroke-gray-gray6 { stroke: var(--erp-gray-6); }
269
+ .erp-table .stroke-gray-gray10 { stroke: var(--erp-gray-10); }
270
+ .erp-table .stroke-gray-gray85 { stroke: var(--erp-gray-85); }
271
+ .erp-table .fill-gray-gray6 { fill: var(--erp-gray-6); }
272
+ .erp-table .fill-gray-gray7 { fill: var(--erp-gray-7); }
273
+ .erp-table .fill-gray-gray8 { fill: var(--erp-gray-8); }
274
+ .erp-table .fill-gray-gray10 { fill: var(--erp-gray-10); }
275
+ .erp-table .fill-white { fill: var(--erp-bg); }
276
+ .erp-table .text-black-black6 { color: var(--erp-fg); }
277
+ .erp-table .text-blue-blue6 { color: var(--erp-accent); }
278
+ .erp-table .text-red-600 { color: var(--erp-danger); }
279
+ .erp-table .text-neutral-500 { color: var(--erp-muted); }
280
+ .erp-table .border-gray-gray5 { border-color: var(--erp-border); }
281
+ .erp-table .border-gray-gray7,
282
+ .erp-table .\!border-gray-gray7 { border-color: var(--erp-gray-7) !important; }
283
+ .erp-table .border-gray-gray8 { border-color: var(--erp-gray-8); }
284
+ .erp-table .border-gray-gray5 { border-color: var(--erp-border); }
285
+ .erp-table .\!border-\[0\.4px\] { border-width: 0.4px !important; }
286
+ .erp-table .hover\:bg-red-100:hover { background-color: var(--erp-red-100); }
287
+ .erp-table .hover\:bg-zinc-200:hover { background-color: var(--erp-zinc-200); }
288
+ .erp-table .disabled\:opacity-40:disabled { opacity: 0.4; }
289
+ .erp-table .animate-spin { animation: erp-table-spin 0.8s linear infinite; }
290
+ .erp-table .bg-yellow-400 { background-color: var(--erp-search-match); }
291
+ .erp-table .bg-yellow-200 { background-color: var(--erp-search-other); }
292
+ .erp-table mark.bg-yellow-400 { background-color: var(--erp-search-match); font-weight: 600; }
293
+ .erp-table mark.bg-yellow-200 { background-color: var(--erp-search-other); }
294
+ .erp-table mark.erp-search-hit {
295
+ background-color: var(--erp-search-other);
296
+ color: inherit;
297
+ }
298
+ .erp-table mark.erp-search-hit.is-current {
299
+ background-color: var(--erp-search-match);
300
+ font-weight: 600;
301
+ }
302
+ .erp-table tfoot.erp-table-footer tr {
303
+ background-color: var(--erp-bg);
304
+ border-color: var(--erp-border);
305
+ color: var(--erp-fg);
306
+ height: var(--erp-row-height);
307
+ }
308
+ .erp-table tfoot.erp-table-footer td {
309
+ color: var(--erp-fg);
310
+ font-variant-numeric: tabular-nums;
311
+ }
312
+
313
+ /* PR-116: pinned top/bottom rows — sticky within the scrollport */
314
+ .erp-table tbody.erp-pinned-rows--top {
315
+ position: sticky;
316
+ top: var(--erp-pinned-top-offset, var(--erp-row-height, 40px));
317
+ z-index: 15;
318
+ }
319
+ .erp-table tbody.erp-pinned-rows--top tr.erp-pinned-row {
320
+ background-color: var(--pdg-bg, var(--erp-bg));
321
+ box-shadow: 0 1px 0 var(--pdg-border, var(--erp-border));
322
+ }
323
+ .erp-table tbody.erp-pinned-rows--bottom {
324
+ position: sticky;
325
+ bottom: var(--erp-pinned-bottom-offset, 0px);
326
+ z-index: 15;
327
+ }
328
+ .erp-table tbody.erp-pinned-rows--bottom tr.erp-pinned-row {
329
+ background-color: var(--pdg-bg, var(--erp-bg));
330
+ box-shadow: 0 -1px 0 var(--pdg-border, var(--erp-border));
331
+ }
332
+ .erp-table tbody.erp-pinned-rows td {
333
+ background-color: inherit;
334
+ font-variant-numeric: tabular-nums;
335
+ }
336
+ .erp-table tbody.erp-pinned-rows .erp-col-pin-start,
337
+ .erp-table tbody.erp-pinned-rows .erp-col-pin-index,
338
+ .erp-table tbody.erp-pinned-rows .erp-col-pin-end {
339
+ z-index: 16;
340
+ }
341
+
342
+ .erp-table .hidden-show-scrollBar {
343
+ scrollbar-width: thin;
344
+ scrollbar-color: var(--erp-scrollbar) transparent;
345
+ }
346
+ .erp-table .hidden-show-scrollBar::-webkit-scrollbar {
347
+ height: 6px;
348
+ width: 6px;
349
+ }
350
+ .erp-table .hidden-show-scrollBar::-webkit-scrollbar-thumb {
351
+ background: var(--erp-scrollbar);
352
+ border-radius: 999px;
353
+ }
354
+
355
+ .erp-table .\[overflow-anchor\:none\] { overflow-anchor: none; }
356
+
357
+ .erp-table input,
358
+ .erp-table select,
359
+ .erp-table button {
360
+ font-family: inherit;
361
+ }
362
+
363
+ .erp-table th,
364
+ .erp-table td {
365
+ vertical-align: middle;
366
+ }
367
+
368
+ @keyframes erp-table-spin {
369
+ to { transform: rotate(360deg); }
370
+ }
371
+
372
+ /* Pagination (ERP antd look) */
373
+ .erp-table-pagination {
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 0.5rem;
377
+ font-size: var(--erp-font-size);
378
+ }
379
+ .erp-table-pagination__pages {
380
+ display: flex;
381
+ align-items: center;
382
+ gap: 0.25rem;
383
+ }
384
+ .erp-table-pagination__page {
385
+ min-width: 1.75rem;
386
+ height: 1.75rem;
387
+ padding: 0 0.4rem;
388
+ border: 1px solid var(--erp-border);
389
+ border-radius: var(--erp-radius);
390
+ background: var(--erp-bg);
391
+ cursor: pointer;
392
+ }
393
+ .erp-table-pagination__page.is-active {
394
+ border-color: var(--erp-main-black);
395
+ color: var(--erp-main-black);
396
+ font-weight: 600;
397
+ }
398
+ .erp-table-pagination__page.is-active:hover {
399
+ background: var(--erp-main-black);
400
+ color: var(--erp-bg);
401
+ }
402
+ .erp-table-pagination__nav {
403
+ display: inline-flex;
404
+ margin: 0;
405
+ padding: 0;
406
+ border-radius: var(--erp-radius);
407
+ width: fit-content;
408
+ border: 1px solid var(--erp-border);
409
+ background: var(--erp-bg);
410
+ cursor: pointer;
411
+ }
412
+ .erp-table-pagination__nav:hover {
413
+ border-color: var(--erp-main-black);
414
+ }
415
+ .erp-table-pagination__nav:disabled {
416
+ opacity: 0.4;
417
+ cursor: not-allowed;
418
+ }
419
+ .erp-table-pagination select {
420
+ height: 1.75rem;
421
+ min-width: 3.25rem;
422
+ padding: 0 0.4rem;
423
+ border: 1px solid var(--erp-border);
424
+ border-radius: var(--erp-radius);
425
+ background: var(--erp-bg);
426
+ font-size: var(--erp-font-size);
427
+ color: var(--erp-fg);
428
+ cursor: pointer;
429
+ }
430
+
431
+ /* Modal */
432
+ .erp-table-modal-overlay {
433
+ position: fixed;
434
+ inset: 0;
435
+ z-index: 11000;
436
+ background: var(--erp-overlay);
437
+ display: flex;
438
+ align-items: center;
439
+ justify-content: center;
440
+ padding: 1rem;
441
+ }
442
+
443
+ /* Cell range selection (PR-105) */
444
+ .pdg-cell-range {
445
+ background: var(--pdg-range-bg, var(--erp-range-bg));
446
+ }
447
+ .pdg-cell-range[data-pdg-range-edge~='top'] {
448
+ box-shadow: inset 0 2px 0 0 var(--pdg-range-border, var(--erp-range-border));
449
+ }
450
+ .pdg-cell-range[data-pdg-range-edge~='bottom'] {
451
+ box-shadow: inset 0 -2px 0 0 var(--pdg-range-border, var(--erp-range-border));
452
+ }
453
+ .pdg-cell-range[data-pdg-range-edge~='left'] {
454
+ box-shadow: inset 2px 0 0 0 var(--pdg-range-border, var(--erp-range-border));
455
+ }
456
+ .pdg-cell-range[data-pdg-range-edge~='right'] {
457
+ box-shadow: inset -2px 0 0 0 var(--pdg-range-border, var(--erp-range-border));
458
+ }
459
+
460
+ /* Fill handle (PR-108) */
461
+ .pdg-fill-handle {
462
+ position: absolute;
463
+ right: 0;
464
+ bottom: 0;
465
+ z-index: 2;
466
+ width: 7px;
467
+ height: 7px;
468
+ margin: 0;
469
+ padding: 0;
470
+ border: 1px solid var(--pdg-range-border, var(--erp-range-border));
471
+ background: var(--pdg-accent, var(--erp-accent));
472
+ cursor: crosshair;
473
+ touch-action: none;
474
+ }
475
+
476
+ /* Grid body overlays (PR-103) */
477
+ .pdg-overlay {
478
+ position: absolute;
479
+ inset: 0;
480
+ z-index: 5;
481
+ display: flex;
482
+ align-items: center;
483
+ justify-content: center;
484
+ pointer-events: none;
485
+ background: color-mix(in srgb, var(--pdg-bg, var(--erp-bg)) 82%, transparent);
486
+ color: var(--pdg-fg, var(--erp-fg));
487
+ }
488
+ .pdg-overlay[data-pdg-overlay='loading'] {
489
+ pointer-events: auto;
490
+ }
491
+ .pdg-overlay__panel {
492
+ display: flex;
493
+ flex-direction: column;
494
+ align-items: center;
495
+ gap: 0.75rem;
496
+ padding: 1rem 1.25rem;
497
+ font-size: var(--pdg-font-size, var(--erp-font-size));
498
+ color: var(--pdg-muted, var(--erp-muted, var(--pdg-gray-9)));
499
+ }
500
+ .pdg-row-skeleton {
501
+ display: flex;
502
+ align-items: center;
503
+ width: 100%;
504
+ height: 100%;
505
+ min-height: calc(var(--pdg-row-height, 40px) - 8px);
506
+ padding: 0 0.5rem;
507
+ box-sizing: border-box;
508
+ }
509
+ .pdg-row-skeleton__bar {
510
+ display: block;
511
+ width: 70%;
512
+ height: 0.55rem;
513
+ border-radius: 999px;
514
+ background: linear-gradient(
515
+ 90deg,
516
+ var(--pdg-gray-5) 0%,
517
+ var(--pdg-gray-3) 45%,
518
+ var(--pdg-gray-5) 90%
519
+ );
520
+ background-size: 200% 100%;
521
+ animation: pdg-skeleton-shimmer 1.2s ease-in-out infinite;
522
+ }
523
+ .pdg-grid[data-erp-theme='dark'] .pdg-row-skeleton__bar {
524
+ background: linear-gradient(
525
+ 90deg,
526
+ var(--pdg-gray-7) 0%,
527
+ var(--pdg-gray-6) 45%,
528
+ var(--pdg-gray-7) 90%
529
+ );
530
+ background-size: 200% 100%;
531
+ }
532
+ @keyframes pdg-skeleton-shimmer {
533
+ 0% {
534
+ background-position: 100% 0;
535
+ }
536
+ 100% {
537
+ background-position: -100% 0;
538
+ }
539
+ }
540
+
541
+ .erp-table-modal {
542
+ background: var(--erp-bg);
543
+ border-radius: 0.5rem;
544
+ width: min(720px, 100%);
545
+ max-height: 90vh;
546
+ display: flex;
547
+ flex-direction: column;
548
+ box-shadow: 0 20px 48px rgba(10, 21, 64, 0.18);
549
+ }
550
+ .erp-table-modal__header {
551
+ display: flex;
552
+ align-items: center;
553
+ gap: 0.5rem;
554
+ padding: 0.75rem 1rem;
555
+ border-bottom: 1px solid var(--erp-border);
556
+ font-size: 14px;
557
+ }
558
+ .erp-table-modal__body {
559
+ padding: 0.5rem;
560
+ overflow: auto;
561
+ flex: 1;
562
+ }
563
+ .erp-table-modal__close {
564
+ margin-inline-start: auto;
565
+ border: 0;
566
+ background: transparent;
567
+ cursor: pointer;
568
+ font-size: 1.1rem;
569
+ }
570
+
571
+ /* Dropdown / tooltip / select */
572
+ .erp-table-tooltip {
573
+ position: absolute;
574
+ z-index: 12000;
575
+ background: var(--erp-black-6);
576
+ color: var(--erp-bg);
577
+ font-size: 11px;
578
+ padding: 0.25rem 0.5rem;
579
+ border-radius: var(--erp-radius);
580
+ pointer-events: none;
581
+ white-space: nowrap;
582
+ }
583
+ .erp-table-dropdown {
584
+ position: absolute;
585
+ z-index: 12000;
586
+ background: var(--erp-bg);
587
+ border: 1px solid var(--erp-border);
588
+ border-radius: 0.375rem;
589
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
590
+ min-width: 10rem;
591
+ max-height: 20rem;
592
+ overflow: auto;
593
+ padding: 0.25rem 0;
594
+ }
595
+ .erp-table-dropdown__item {
596
+ display: flex;
597
+ align-items: center;
598
+ justify-content: space-between;
599
+ gap: 0.75rem;
600
+ width: 100%;
601
+ padding: 0.4rem 0.75rem;
602
+ background: transparent;
603
+ border: 0;
604
+ cursor: pointer;
605
+ font-size: 13px;
606
+ text-align: start;
607
+ }
608
+ .erp-table-dropdown__item:hover { background: var(--erp-header-bg); }
609
+ .erp-table-dropdown__divider {
610
+ height: 1px;
611
+ background: var(--erp-border);
612
+ margin: 0.25rem 0;
613
+ }
614
+
615
+
616
+ /* DynamicSelect root (host: h-[2.125rem] w-full rounded !bg-gray-gray3, 50% when disabled) */
617
+ .pdg-dynamic-select {
618
+ width: 100%;
619
+ height: 2.125rem;
620
+ border-radius: 0.25rem;
621
+ background-color: var(--pdg-gray-3);
622
+ }
623
+ .pdg-dynamic-select.is-disabled { opacity: 0.5; }
624
+
625
+ /* Date cell (react-persian-range-picker DatePicker; host: h-[2.125rem] text-sm bg-gray-3 px-2 rounded-sm) */
626
+ .pdg-date-picker {
627
+ width: 100%;
628
+ height: 2.125rem;
629
+ padding: 0 0.5rem;
630
+ font-size: 0.875rem;
631
+ border: none;
632
+ border-radius: 0.125rem;
633
+ background-color: var(--pdg-gray-3);
634
+ }
635
+ .pdg-date-picker.is-disabled {
636
+ background-color: var(--pdg-gray-5);
637
+ color: var(--pdg-gray-7);
638
+ }
639
+
640
+ .erp-table-checkbox {
641
+ appearance: none;
642
+ -webkit-appearance: none;
643
+ width: 16px;
644
+ height: 16px;
645
+ min-width: 16px;
646
+ margin: 0;
647
+ border: 1px solid var(--erp-scrollbar);
648
+ border-radius: 4px;
649
+ background: var(--erp-bg);
650
+ cursor: pointer;
651
+ display: inline-block;
652
+ position: relative;
653
+ vertical-align: middle;
654
+ flex-shrink: 0;
655
+ }
656
+ .erp-table-checkbox:checked {
657
+ background: var(--erp-main-black);
658
+ border-color: var(--erp-main-black);
659
+ }
660
+ .erp-table-checkbox:checked::after {
661
+ content: '';
662
+ position: absolute;
663
+ inset-inline-start: 4px;
664
+ top: 1px;
665
+ width: 5px;
666
+ height: 9px;
667
+ border: 2px solid var(--erp-bg);
668
+ border-top: 0;
669
+ border-inline-start: 0;
670
+ transform: rotate(45deg);
671
+ }
672
+ .erp-table-checkbox:disabled {
673
+ opacity: 0.45;
674
+ cursor: not-allowed;
675
+ }
676
+
677
+ .erp-table-toast {
678
+ position: fixed;
679
+ z-index: 14000;
680
+ bottom: 1.25rem;
681
+ inset-inline-end: 1.25rem;
682
+ padding: 0.6rem 0.9rem;
683
+ border-radius: 0.4rem;
684
+ font-size: var(--erp-font-size);
685
+ color: var(--erp-bg);
686
+ box-shadow: 0 0 16px rgba(0, 0, 0, 0.1);
687
+ }
688
+ .erp-table-toast.is-success { background: var(--erp-success); }
689
+ .erp-table-toast.is-error { background: var(--erp-error); }
690
+
691
+ .erp-table-date {
692
+ width: 100%;
693
+ height: 100%;
694
+ position: relative;
695
+ }
696
+ .erp-table-date .erp-table-select__control,
697
+ .erp-table-date input,
698
+ .erp-table-date .pdg-date-range__trigger {
699
+ height: 2.25rem;
700
+ width: 100%;
701
+ background: var(--erp-header-bg);
702
+ border: none;
703
+ border-radius: 0.125rem;
704
+ font-size: var(--erp-font-size);
705
+ padding: 0 0.5rem;
706
+ text-align: inherit;
707
+ cursor: pointer;
708
+ }
709
+
710
+ /* Internal Jalali calendar / range picker (PR-140) */
711
+ .pdg-date-range__popover {
712
+ position: absolute;
713
+ z-index: 40;
714
+ top: calc(100% + 2px);
715
+ inset-inline-start: 0;
716
+ min-width: 16rem;
717
+ padding: 0.5rem;
718
+ background: var(--pdg-bg);
719
+ border: 1px solid var(--pdg-border);
720
+ border-radius: 0.375rem;
721
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
722
+ }
723
+ .pdg-date-range__actions {
724
+ display: flex;
725
+ justify-content: flex-end;
726
+ margin-top: 0.35rem;
727
+ }
728
+ .pdg-date-range__clear {
729
+ background: transparent;
730
+ border: 0;
731
+ font-size: 0.75rem;
732
+ cursor: pointer;
733
+ color: var(--pdg-accent);
734
+ padding: 0.25rem 0.5rem;
735
+ }
736
+ .pdg-jalali-cal {
737
+ font-size: 0.75rem;
738
+ user-select: none;
739
+ }
740
+ .pdg-jalali-cal__header {
741
+ display: flex;
742
+ align-items: center;
743
+ justify-content: space-between;
744
+ margin-bottom: 0.35rem;
745
+ gap: 0.25rem;
746
+ }
747
+ .pdg-jalali-cal__title {
748
+ font-weight: 600;
749
+ flex: 1;
750
+ text-align: center;
751
+ }
752
+ .pdg-jalali-cal__nav {
753
+ border: 0;
754
+ background: transparent;
755
+ cursor: pointer;
756
+ width: 1.75rem;
757
+ height: 1.75rem;
758
+ border-radius: 0.25rem;
759
+ font-size: 1rem;
760
+ line-height: 1;
761
+ color: var(--pdg-fg);
762
+ }
763
+ .pdg-jalali-cal__nav:hover {
764
+ background: var(--pdg-row-stripe);
765
+ }
766
+ .pdg-jalali-cal__weekdays,
767
+ .pdg-jalali-cal__grid {
768
+ display: grid;
769
+ grid-template-columns: repeat(7, 1fr);
770
+ gap: 2px;
771
+ }
772
+ .pdg-jalali-cal__wd {
773
+ text-align: center;
774
+ opacity: 0.65;
775
+ padding: 0.15rem 0;
776
+ }
777
+ .pdg-jalali-cal__day {
778
+ border: 0;
779
+ background: transparent;
780
+ cursor: pointer;
781
+ aspect-ratio: 1;
782
+ border-radius: 0.25rem;
783
+ font-size: 0.75rem;
784
+ color: var(--pdg-fg);
785
+ }
786
+ .pdg-jalali-cal__day.is-outside {
787
+ opacity: 0.35;
788
+ }
789
+ .pdg-jalali-cal__day.is-holiday:not(.is-selected) {
790
+ color: var(--pdg-danger);
791
+ font-weight: 600;
792
+ }
793
+ .pdg-jalali-cal__day.is-today:not(.is-selected) {
794
+ outline: 1px solid var(--pdg-accent);
795
+ }
796
+ .pdg-jalali-cal__day:hover:not(.is-selected) {
797
+ background: var(--pdg-row-stripe);
798
+ }
799
+
800
+ .erp-table-desktop__toolbar {
801
+ padding: 0.5rem 0.25rem 0.35rem;
802
+ }
803
+
804
+ .erp-table-index-btn {
805
+ display: inline-flex;
806
+ align-items: center;
807
+ justify-content: center;
808
+ background: transparent;
809
+ border: 0;
810
+ padding: 0.125rem;
811
+ border-radius: 0.125rem;
812
+ cursor: pointer;
813
+ line-height: 0;
814
+ }
815
+
816
+ .erp-table th[data-pdg-sortable='true'] {
817
+ cursor: pointer;
818
+ user-select: none;
819
+ }
820
+
821
+ .erp-table .pdg-header-label {
822
+ display: inline-flex;
823
+ align-items: center;
824
+ gap: 0.35rem;
825
+ min-width: 0;
826
+ max-width: calc(100% - 0.5rem);
827
+ }
828
+
829
+ .erp-table .pdg-header-caption {
830
+ overflow: hidden;
831
+ text-overflow: ellipsis;
832
+ white-space: nowrap;
833
+ }
834
+
835
+ .erp-table .pdg-sort-indicator {
836
+ display: inline-flex;
837
+ align-items: center;
838
+ gap: 0.15rem;
839
+ flex-shrink: 0;
840
+ color: var(--pdg-accent, var(--erp-accent));
841
+ font-size: 0.65rem;
842
+ line-height: 1;
843
+ }
844
+
845
+ .erp-table .pdg-sort-icon {
846
+ opacity: 0.9;
847
+ }
848
+
849
+ .erp-table .pdg-sort-priority {
850
+ display: inline-flex;
851
+ align-items: center;
852
+ justify-content: center;
853
+ min-inline-size: 0.9rem;
854
+ padding-inline: 0.15rem;
855
+ border-radius: 0.2rem;
856
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 18%, transparent);
857
+ color: var(--pdg-accent, var(--erp-accent));
858
+ font-size: 0.6rem;
859
+ font-weight: 600;
860
+ }
861
+
862
+ .erp-table .pdg-filter-btn-icon {
863
+ display: inline-flex;
864
+ align-items: center;
865
+ justify-content: center;
866
+ margin-inline-start: 0.15rem;
867
+ padding: 0.05rem 0.2rem;
868
+ border: 0;
869
+ border-radius: 0.2rem;
870
+ background: transparent;
871
+ color: var(--pdg-fg-muted, var(--erp-fg-muted));
872
+ font-size: 0.55rem;
873
+ line-height: 1;
874
+ cursor: pointer;
875
+ }
876
+
877
+ .erp-table .pdg-filter-btn-icon.is-active,
878
+ .erp-table th[data-pdg-filter-active='true'] .pdg-filter-btn-icon {
879
+ color: var(--pdg-accent, var(--erp-accent));
880
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 16%, transparent);
881
+ }
882
+
883
+ .pdg-filter-popover {
884
+ min-width: 12rem;
885
+ max-width: 18rem;
886
+ padding: 0.5rem;
887
+ border: 1px solid var(--pdg-border, var(--erp-border));
888
+ border-radius: 0.375rem;
889
+ background: var(--pdg-bg, var(--erp-bg));
890
+ color: var(--pdg-fg, var(--erp-fg));
891
+ box-shadow: 0 8px 24px color-mix(in srgb, var(--pdg-fg, var(--erp-fg)) 18%, transparent);
892
+ }
893
+
894
+ .pdg-filter-form {
895
+ display: flex;
896
+ flex-direction: column;
897
+ gap: 0.4rem;
898
+ }
899
+
900
+ .pdg-filter-select,
901
+ .pdg-filter-input,
902
+ .pdg-floating-filter-input {
903
+ width: 100%;
904
+ min-height: 1.75rem;
905
+ padding: 0.2rem 0.35rem;
906
+ border: 1px solid var(--pdg-border, var(--erp-border));
907
+ border-radius: 0.25rem;
908
+ background: var(--pdg-bg, var(--erp-bg));
909
+ color: inherit;
910
+ font-size: 0.75rem;
911
+ }
912
+
913
+ .pdg-filter-actions {
914
+ display: flex;
915
+ gap: 0.35rem;
916
+ justify-content: flex-end;
917
+ }
918
+
919
+ .pdg-filter-btn {
920
+ padding: 0.2rem 0.45rem;
921
+ border: 1px solid var(--pdg-border, var(--erp-border));
922
+ border-radius: 0.25rem;
923
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 12%, transparent);
924
+ color: inherit;
925
+ font-size: 0.7rem;
926
+ cursor: pointer;
927
+ }
928
+
929
+ .pdg-filter-check {
930
+ display: flex;
931
+ align-items: center;
932
+ gap: 0.35rem;
933
+ font-size: 0.75rem;
934
+ }
935
+
936
+ .pdg-filter-set-list {
937
+ max-height: 10rem;
938
+ overflow: auto;
939
+ display: flex;
940
+ flex-direction: column;
941
+ gap: 0.25rem;
942
+ }
943
+
944
+ .erp-table .pdg-floating-filter-row {
945
+ background: var(--pdg-bg-muted, var(--erp-bg-muted));
946
+ }
947
+
948
+ .erp-table .pdg-floating-filter-cell {
949
+ padding: 0.25rem;
950
+ border: 1px solid var(--pdg-border, var(--erp-border));
951
+ font-weight: normal;
952
+ }
953
+
954
+ .erp-table .erp-col-resize {
955
+ position: absolute;
956
+ inset-block: 0;
957
+ inset-inline-end: 0;
958
+ width: 6px;
959
+ padding: 0;
960
+ margin: 0;
961
+ border: 0;
962
+ background: transparent;
963
+ cursor: col-resize;
964
+ touch-action: none;
965
+ z-index: 2;
966
+ }
967
+
968
+ .erp-table .erp-col-resize:hover,
969
+ .erp-table .erp-col-resize:focus-visible {
970
+ background: var(--erp-accent);
971
+ opacity: 0.35;
972
+ }
973
+
974
+ body.erp-col-resizing,
975
+ body.erp-col-resizing * {
976
+ cursor: col-resize;
977
+ user-select: none;
978
+ }
979
+
980
+ .erp-table th[data-erp-col-drag] {
981
+ cursor: grab;
982
+ }
983
+
984
+ .erp-table th[data-erp-col-drop] {
985
+ box-shadow: inset 0 0 0 2px var(--erp-accent);
986
+ }
987
+
988
+ .erp-table .erp-col-group-header {
989
+ font-weight: 600;
990
+ vertical-align: middle;
991
+ }
992
+
993
+ .erp-table .erp-col-group-toggle {
994
+ background: transparent;
995
+ border: none;
996
+ cursor: pointer;
997
+ font: inherit;
998
+ color: inherit;
999
+ padding: 0;
1000
+ }
1001
+
1002
+ .pdg-col-menu-btn {
1003
+ margin-inline-start: 0.25rem;
1004
+ padding: 0 0.25rem;
1005
+ border: none;
1006
+ background: transparent;
1007
+ cursor: pointer;
1008
+ font-size: 0.875rem;
1009
+ line-height: 1;
1010
+ color: var(--pdg-muted, var(--erp-muted));
1011
+ }
1012
+
1013
+ .pdg-col-menu-btn:hover {
1014
+ color: var(--pdg-accent, inherit);
1015
+ }
1016
+
1017
+ .erp-col-menu {
1018
+ min-width: 11rem;
1019
+ padding: 0.25rem 0;
1020
+ border: 1px solid var(--pdg-border, var(--erp-border));
1021
+ border-radius: 0.375rem;
1022
+ background: var(--pdg-bg, var(--erp-bg));
1023
+ color: var(--pdg-fg, var(--erp-fg));
1024
+ box-shadow: 0 8px 24px color-mix(in srgb, var(--pdg-fg, var(--erp-fg)) 18%, transparent);
1025
+ }
1026
+
1027
+ .erp-col-menu__item {
1028
+ display: block;
1029
+ width: 100%;
1030
+ padding: 0.375rem 0.75rem;
1031
+ border: none;
1032
+ background: transparent;
1033
+ text-align: start;
1034
+ font: inherit;
1035
+ font-size: 0.75rem;
1036
+ cursor: pointer;
1037
+ color: inherit;
1038
+ }
1039
+
1040
+ .erp-col-menu__item:hover,
1041
+ .erp-col-menu__item.is-focused {
1042
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 12%, transparent);
1043
+ }
1044
+
1045
+ .erp-col-menu__item:disabled {
1046
+ opacity: 0.45;
1047
+ cursor: not-allowed;
1048
+ }
1049
+
1050
+ .erp-col-menu__separator {
1051
+ height: 1px;
1052
+ margin: 0.25rem 0;
1053
+ background: var(--pdg-border, var(--erp-border));
1054
+ }
1055
+
1056
+ .erp-col-columns-panel__title {
1057
+ padding: 0.375rem 0.75rem;
1058
+ font-size: 0.75rem;
1059
+ font-weight: 600;
1060
+ border-bottom: 1px solid var(--pdg-border, var(--erp-border));
1061
+ }
1062
+
1063
+ .erp-col-columns-panel__list {
1064
+ list-style: none;
1065
+ margin: 0;
1066
+ padding: 0.25rem 0;
1067
+ max-height: 16rem;
1068
+ overflow: auto;
1069
+ }
1070
+
1071
+ .erp-col-columns-panel__row {
1072
+ display: flex;
1073
+ align-items: center;
1074
+ gap: 0.5rem;
1075
+ padding: 0.25rem 0.75rem;
1076
+ font-size: 0.75rem;
1077
+ cursor: pointer;
1078
+ }
1079
+
1080
+ .erp-col-columns-panel__row:hover {
1081
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 12%, transparent);
1082
+ }
1083
+
1084
+ .erp-table .erp-col-pin-start,
1085
+ .erp-table .erp-col-pin-index {
1086
+ position: sticky;
1087
+ z-index: 2;
1088
+ background-color: inherit;
1089
+ }
1090
+
1091
+ .erp-table .erp-col-pin-end {
1092
+ position: sticky;
1093
+ z-index: 2;
1094
+ background-color: inherit;
1095
+ }
1096
+
1097
+ .erp-table thead .erp-col-pin-start,
1098
+ .erp-table thead .erp-col-pin-index,
1099
+ .erp-table thead .erp-col-pin-end {
1100
+ z-index: 4;
1101
+ background-color: var(--erp-header-bg);
1102
+ }
1103
+
1104
+ .erp-table tfoot .erp-col-pin-start,
1105
+ .erp-table tfoot .erp-col-pin-index,
1106
+ .erp-table tfoot .erp-col-pin-end {
1107
+ z-index: 3;
1108
+ background-color: var(--erp-bg);
1109
+ }
1110
+
1111
+ .erp-table[dir="ltr"] .erp-col-pin-start,
1112
+ .erp-table[dir="ltr"] .erp-col-pin-index {
1113
+ box-shadow: 4px 0 8px -6px rgb(0 0 0 / 0.22);
1114
+ }
1115
+
1116
+ .erp-table[dir="rtl"] .erp-col-pin-start,
1117
+ .erp-table[dir="rtl"] .erp-col-pin-index {
1118
+ box-shadow: -4px 0 8px -6px rgb(0 0 0 / 0.22);
1119
+ }
1120
+
1121
+ .erp-table[dir="ltr"] .erp-col-pin-end {
1122
+ box-shadow: -4px 0 8px -6px rgb(0 0 0 / 0.22);
1123
+ }
1124
+
1125
+ .erp-table[dir="rtl"] .erp-col-pin-end {
1126
+ box-shadow: 4px 0 8px -6px rgb(0 0 0 / 0.22);
1127
+ }
1128
+
1129
+ .erp-table .erp-toolbar-btn:focus-visible {
1130
+ outline: 2px solid var(--erp-accent);
1131
+ outline-offset: 2px;
1132
+ }
1133
+
1134
+ /* PR-124: cell editors expose a visible focus ring (APG). */
1135
+ .erp-table .pdg-cell-editor:focus-visible,
1136
+ .pdg-grid .pdg-cell-editor:focus-visible {
1137
+ outline: 2px solid var(--pdg-accent, var(--erp-accent));
1138
+ outline-offset: 1px;
1139
+ }
1140
+
1141
+ /* PR-125: polite announcements for AT; keep out of visual layout. */
1142
+ .pdg-live-region {
1143
+ position: absolute;
1144
+ width: 1px;
1145
+ height: 1px;
1146
+ padding: 0;
1147
+ margin: -1px;
1148
+ overflow: hidden;
1149
+ clip: rect(0, 0, 0, 0);
1150
+ white-space: nowrap;
1151
+ border: 0;
1152
+ }
1153
+
1154
+ /* PR-136: product audit history panel */
1155
+ .pdg-history-panel {
1156
+ display: flex;
1157
+ flex-direction: column;
1158
+ gap: 8px;
1159
+ min-width: 220px;
1160
+ max-width: 360px;
1161
+ max-height: 100%;
1162
+ padding: 10px;
1163
+ border: 1px solid var(--pdg-border, var(--erp-border));
1164
+ border-radius: 6px;
1165
+ background: var(--pdg-bg, var(--erp-bg));
1166
+ color: var(--pdg-fg, var(--erp-fg));
1167
+ font-size: 12px;
1168
+ box-sizing: border-box;
1169
+ }
1170
+ .pdg-history-panel__header {
1171
+ display: flex;
1172
+ flex-direction: column;
1173
+ gap: 8px;
1174
+ }
1175
+ .pdg-history-panel__title {
1176
+ margin: 0;
1177
+ font-size: 14px;
1178
+ font-weight: 600;
1179
+ }
1180
+ .pdg-history-panel__filters {
1181
+ display: grid;
1182
+ grid-template-columns: 1fr 1fr;
1183
+ gap: 6px;
1184
+ }
1185
+ .pdg-history-panel__filter {
1186
+ display: flex;
1187
+ flex-direction: column;
1188
+ gap: 2px;
1189
+ }
1190
+ .pdg-history-panel__filter select {
1191
+ font: inherit;
1192
+ padding: 4px 6px;
1193
+ border: 1px solid var(--pdg-border, var(--erp-border));
1194
+ border-radius: 4px;
1195
+ background: var(--pdg-bg, var(--erp-bg));
1196
+ color: inherit;
1197
+ }
1198
+ .pdg-history-panel__empty {
1199
+ margin: 0;
1200
+ opacity: 0.7;
1201
+ }
1202
+ .pdg-history-panel__list {
1203
+ list-style: none;
1204
+ margin: 0;
1205
+ padding: 0;
1206
+ overflow: auto;
1207
+ flex: 1;
1208
+ display: flex;
1209
+ flex-direction: column;
1210
+ gap: 6px;
1211
+ }
1212
+ .pdg-history-panel__item {
1213
+ display: flex;
1214
+ flex-direction: column;
1215
+ gap: 4px;
1216
+ border: 1px solid var(--pdg-border, var(--erp-border));
1217
+ border-radius: 4px;
1218
+ padding: 6px;
1219
+ background: var(--pdg-bg-muted, var(--erp-bg-muted));
1220
+ }
1221
+ .pdg-history-panel__item[data-pdg-history-severity='warning'] {
1222
+ border-color: var(--pdg-warning, var(--erp-warning, var(--erp-accent)));
1223
+ }
1224
+ .pdg-history-panel__item[data-pdg-history-severity='error'] {
1225
+ border-color: var(--pdg-danger, var(--erp-danger));
1226
+ }
1227
+ .pdg-history-panel__jump {
1228
+ display: flex;
1229
+ flex-direction: column;
1230
+ gap: 2px;
1231
+ align-items: flex-start;
1232
+ width: 100%;
1233
+ padding: 0;
1234
+ border: 0;
1235
+ background: transparent;
1236
+ color: inherit;
1237
+ text-align: inherit;
1238
+ font: inherit;
1239
+ cursor: pointer;
1240
+ }
1241
+ .pdg-history-panel__jump:disabled {
1242
+ cursor: default;
1243
+ opacity: 0.85;
1244
+ }
1245
+ .pdg-history-panel__jump:not(:disabled):hover .pdg-history-panel__item-title {
1246
+ color: var(--pdg-accent, var(--erp-accent));
1247
+ }
1248
+ .pdg-history-panel__item-title {
1249
+ font-weight: 600;
1250
+ }
1251
+ .pdg-history-panel__item-meta {
1252
+ opacity: 0.65;
1253
+ font-size: 11px;
1254
+ }
1255
+ .pdg-history-panel__item-desc {
1256
+ opacity: 0.85;
1257
+ }
1258
+ .pdg-history-panel__restore {
1259
+ align-self: flex-start;
1260
+ font: inherit;
1261
+ font-size: 11px;
1262
+ padding: 3px 8px;
1263
+ border-radius: 4px;
1264
+ border: 1px solid var(--pdg-border, var(--erp-border));
1265
+ background: var(--pdg-bg, var(--erp-bg));
1266
+ color: var(--pdg-accent, var(--erp-accent));
1267
+ cursor: pointer;
1268
+ }
1269
+ .pdg-history-panel__restore:hover {
1270
+ border-color: var(--pdg-accent, var(--erp-accent));
1271
+ }
1272
+
1273
+ /* PR-137: offline / pending mutations status */
1274
+ .pdg-offline-status {
1275
+ display: flex;
1276
+ flex-direction: column;
1277
+ gap: 6px;
1278
+ padding: 8px 10px;
1279
+ border: 1px solid var(--pdg-border, var(--erp-border));
1280
+ border-radius: 6px;
1281
+ background: var(--pdg-bg-muted, var(--erp-bg-muted));
1282
+ color: var(--pdg-fg, var(--erp-fg));
1283
+ font-size: 12px;
1284
+ }
1285
+ .pdg-offline-status[data-pdg-connectivity='offline'] {
1286
+ border-color: var(--pdg-warning, var(--erp-warning, var(--erp-accent)));
1287
+ }
1288
+ .pdg-offline-status__row {
1289
+ display: flex;
1290
+ flex-wrap: wrap;
1291
+ align-items: center;
1292
+ gap: 8px;
1293
+ }
1294
+ .pdg-offline-status__badge {
1295
+ display: inline-flex;
1296
+ align-items: center;
1297
+ padding: 2px 8px;
1298
+ border-radius: 999px;
1299
+ font-weight: 600;
1300
+ font-size: 11px;
1301
+ background: color-mix(in srgb, var(--pdg-accent, var(--erp-accent)) 16%, transparent);
1302
+ }
1303
+ .pdg-offline-status[data-pdg-connectivity='offline'] .pdg-offline-status__badge {
1304
+ background: color-mix(
1305
+ in srgb,
1306
+ var(--pdg-warning, var(--erp-warning, var(--erp-accent))) 22%,
1307
+ transparent
1308
+ );
1309
+ }
1310
+ .pdg-offline-status__pending {
1311
+ opacity: 0.9;
1312
+ }
1313
+ .pdg-offline-status__queue {
1314
+ list-style: none;
1315
+ margin: 0;
1316
+ padding: 0;
1317
+ max-height: 8rem;
1318
+ overflow: auto;
1319
+ display: flex;
1320
+ flex-direction: column;
1321
+ gap: 4px;
1322
+ }
1323
+ .pdg-offline-status__queue li {
1324
+ padding: 4px 6px;
1325
+ border-radius: 4px;
1326
+ background: var(--pdg-bg, var(--erp-bg));
1327
+ border: 1px solid var(--pdg-border, var(--erp-border));
1328
+ }
1329
+
1330
+ .pdg-sync-panel {
1331
+ display: flex;
1332
+ flex-direction: column;
1333
+ gap: 8px;
1334
+ padding: 8px 10px;
1335
+ border: 1px solid var(--pdg-border, var(--erp-border));
1336
+ border-radius: 6px;
1337
+ background: var(--pdg-surface, var(--erp-surface));
1338
+ color: var(--pdg-text, var(--erp-text));
1339
+ font-size: 0.875rem;
1340
+ }
1341
+ .pdg-sync-panel__row {
1342
+ display: flex;
1343
+ flex-wrap: wrap;
1344
+ align-items: center;
1345
+ gap: 8px;
1346
+ }
1347
+ .pdg-sync-panel__policy {
1348
+ display: flex;
1349
+ align-items: center;
1350
+ gap: 6px;
1351
+ }
1352
+ .pdg-sync-panel__policy select,
1353
+ .pdg-sync-panel button {
1354
+ font: inherit;
1355
+ color: inherit;
1356
+ background: var(--pdg-bg, var(--erp-bg));
1357
+ border: 1px solid var(--pdg-border, var(--erp-border));
1358
+ border-radius: 4px;
1359
+ padding: 4px 8px;
1360
+ cursor: pointer;
1361
+ }
1362
+ .pdg-sync-panel button:disabled,
1363
+ .pdg-sync-panel select:disabled {
1364
+ opacity: 0.6;
1365
+ cursor: not-allowed;
1366
+ }
1367
+ .pdg-sync-panel__status {
1368
+ margin: 0;
1369
+ opacity: 0.85;
1370
+ }
1371
+ .pdg-sync-panel__conflicts {
1372
+ list-style: none;
1373
+ margin: 0;
1374
+ padding: 0;
1375
+ display: flex;
1376
+ flex-direction: column;
1377
+ gap: 6px;
1378
+ }
1379
+ .pdg-sync-panel__conflicts li {
1380
+ display: flex;
1381
+ flex-wrap: wrap;
1382
+ gap: 8px;
1383
+ align-items: center;
1384
+ padding: 6px 8px;
1385
+ border-radius: 4px;
1386
+ background: var(--pdg-bg, var(--erp-bg));
1387
+ border: 1px solid var(--pdg-border, var(--erp-border));
1388
+ }
1389
+ .pdg-sync-panel__conflict-key {
1390
+ font-weight: 600;
1391
+ color: var(--pdg-accent, var(--erp-accent));
1392
+ }
1393
+ .pdg-sync-panel__conflict-actions {
1394
+ display: flex;
1395
+ gap: 6px;
1396
+ margin-inline-start: auto;
1397
+ }
1398
+
1399
+ .pdg-presence-panel {
1400
+ display: flex;
1401
+ flex-direction: column;
1402
+ gap: 6px;
1403
+ padding: 8px 10px;
1404
+ border: 1px solid var(--pdg-border, var(--erp-border));
1405
+ border-radius: 6px;
1406
+ background: var(--pdg-surface, var(--erp-surface));
1407
+ color: var(--pdg-text, var(--erp-text));
1408
+ font-size: 0.875rem;
1409
+ }
1410
+ .pdg-presence-panel__title {
1411
+ font-weight: 600;
1412
+ }
1413
+ .pdg-presence-panel__empty {
1414
+ margin: 0;
1415
+ opacity: 0.75;
1416
+ }
1417
+ .pdg-presence-panel__list {
1418
+ list-style: none;
1419
+ margin: 0;
1420
+ padding: 0;
1421
+ display: flex;
1422
+ flex-direction: column;
1423
+ gap: 4px;
1424
+ }
1425
+ .pdg-presence-panel__list li {
1426
+ display: flex;
1427
+ align-items: center;
1428
+ gap: 8px;
1429
+ }
1430
+ .pdg-presence-panel__dot {
1431
+ width: 8px;
1432
+ height: 8px;
1433
+ border-radius: 50%;
1434
+ flex-shrink: 0;
1435
+ }
1436
+ .pdg-presence-panel__cell {
1437
+ opacity: 0.8;
1438
+ margin-inline-start: auto;
1439
+ }
1440
+