@kosmeo-ui/react 0.1.1 → 1.0.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 (418) hide show
  1. package/README.md +3 -1
  2. package/dist/components/buttons/button/index.d.ts +2 -0
  3. package/dist/components/buttons/button/index.d.ts.map +1 -1
  4. package/dist/components/buttons/button/index.js +2 -2
  5. package/dist/components/buttons/button/index.js.map +1 -1
  6. package/dist/components/buttons/button/styles.css +45 -43
  7. package/dist/components/buttons/rowActions/index.d.ts.map +1 -1
  8. package/dist/components/buttons/rowActions/index.js +2 -1
  9. package/dist/components/buttons/rowActions/index.js.map +1 -1
  10. package/dist/components/buttons/rowActions/styles.css +7 -0
  11. package/dist/components/data-display/addressBlock/styles.css +2 -4
  12. package/dist/components/data-display/colorSwatch/index.d.ts +1 -1
  13. package/dist/components/data-display/colorSwatch/index.d.ts.map +1 -1
  14. package/dist/components/data-display/colorSwatch/index.js +1 -1
  15. package/dist/components/data-display/colorSwatch/index.js.map +1 -1
  16. package/dist/components/data-display/colorSwatch/styles.css +1 -1
  17. package/dist/components/data-display/dataTable/index.d.ts.map +1 -1
  18. package/dist/components/data-display/dataTable/index.js +7 -3
  19. package/dist/components/data-display/dataTable/index.js.map +1 -1
  20. package/dist/components/data-display/dataTable/styles.css +18 -2
  21. package/dist/components/data-display/dataTable/utils/parseDataKey.d.ts +8 -1
  22. package/dist/components/data-display/dataTable/utils/parseDataKey.d.ts.map +1 -1
  23. package/dist/components/data-display/dataTable/utils/parseDataKey.js +13 -41
  24. package/dist/components/data-display/dataTable/utils/parseDataKey.js.map +1 -1
  25. package/dist/components/data-display/imagePreview/styles.css +2 -2
  26. package/dist/components/data-display/infiniteScroll/filters/index.d.ts +4 -0
  27. package/dist/components/data-display/infiniteScroll/filters/index.d.ts.map +1 -1
  28. package/dist/components/data-display/infiniteScroll/filters/index.js +12 -2
  29. package/dist/components/data-display/infiniteScroll/filters/index.js.map +1 -1
  30. package/dist/components/data-display/infiniteScroll/filters/listFilter.d.ts.map +1 -1
  31. package/dist/components/data-display/infiniteScroll/filters/listFilter.js +1 -1
  32. package/dist/components/data-display/infiniteScroll/filters/listFilter.js.map +1 -1
  33. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.d.ts +6 -0
  34. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.d.ts.map +1 -1
  35. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.js +55 -46
  36. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.js.map +1 -1
  37. package/dist/components/data-display/infiniteScroll/filters/searchFilter.d.ts.map +1 -1
  38. package/dist/components/data-display/infiniteScroll/filters/searchFilter.js +4 -35
  39. package/dist/components/data-display/infiniteScroll/filters/searchFilter.js.map +1 -1
  40. package/dist/components/data-display/infiniteScroll/filters/selectFilter.d.ts.map +1 -1
  41. package/dist/components/data-display/infiniteScroll/filters/selectFilter.js +3 -5
  42. package/dist/components/data-display/infiniteScroll/filters/selectFilter.js.map +1 -1
  43. package/dist/components/data-display/infiniteScroll/filters/styles.css +34 -1
  44. package/dist/components/data-display/infiniteScroll/header/deleteButton.d.ts.map +1 -1
  45. package/dist/components/data-display/infiniteScroll/header/deleteButton.js +1 -1
  46. package/dist/components/data-display/infiniteScroll/header/deleteButton.js.map +1 -1
  47. package/dist/components/data-display/infiniteScroll/header/index.d.ts.map +1 -1
  48. package/dist/components/data-display/infiniteScroll/header/index.js +1 -1
  49. package/dist/components/data-display/infiniteScroll/header/index.js.map +1 -1
  50. package/dist/components/data-display/infiniteScroll/header/limit.d.ts.map +1 -1
  51. package/dist/components/data-display/infiniteScroll/header/limit.js +1 -1
  52. package/dist/components/data-display/infiniteScroll/header/limit.js.map +1 -1
  53. package/dist/components/data-display/infiniteScroll/header/sortBy.d.ts.map +1 -1
  54. package/dist/components/data-display/infiniteScroll/header/sortBy.js +1 -1
  55. package/dist/components/data-display/infiniteScroll/header/sortBy.js.map +1 -1
  56. package/dist/components/data-display/infiniteScroll/header/sortDirection.d.ts.map +1 -1
  57. package/dist/components/data-display/infiniteScroll/header/sortDirection.js +1 -1
  58. package/dist/components/data-display/infiniteScroll/header/sortDirection.js.map +1 -1
  59. package/dist/components/data-display/infiniteScroll/index.d.ts +8 -0
  60. package/dist/components/data-display/infiniteScroll/index.d.ts.map +1 -1
  61. package/dist/components/data-display/infiniteScroll/index.js +41 -23
  62. package/dist/components/data-display/infiniteScroll/index.js.map +1 -1
  63. package/dist/components/data-display/infiniteScroll/styles.css +2 -2
  64. package/dist/components/data-display/infiniteScroll/table/index.d.ts.map +1 -1
  65. package/dist/components/data-display/infiniteScroll/table/index.js +2 -2
  66. package/dist/components/data-display/infiniteScroll/table/index.js.map +1 -1
  67. package/dist/components/data-display/infiniteScroll/tags/index.d.ts.map +1 -1
  68. package/dist/components/data-display/infiniteScroll/tags/index.js +7 -11
  69. package/dist/components/data-display/infiniteScroll/tags/index.js.map +1 -1
  70. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.d.ts.map +1 -1
  71. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.js +8 -8
  72. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.js.map +1 -1
  73. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.d.ts.map +1 -1
  74. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.js +6 -18
  75. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.js.map +1 -1
  76. package/dist/components/data-display/infiniteScroll/tags/selectFilterTag.d.ts.map +1 -1
  77. package/dist/components/data-display/infiniteScroll/tags/selectFilterTag.js +3 -5
  78. package/dist/components/data-display/infiniteScroll/tags/selectFilterTag.js.map +1 -1
  79. package/dist/components/data-display/infiniteScroll/tags/styles.css +1 -29
  80. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.d.ts +6 -0
  81. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.d.ts.map +1 -1
  82. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.js +24 -12
  83. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.js.map +1 -1
  84. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.d.ts +11 -1
  85. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.d.ts.map +1 -1
  86. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.js +37 -18
  87. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.js.map +1 -1
  88. package/dist/components/data-display/listCard/styles.css +3 -3
  89. package/dist/components/data-display/listRow/styles.css +2 -2
  90. package/dist/components/data-display/recoveryCodeGrid/styles.css +3 -4
  91. package/dist/components/data-display/secretDisplay/styles.css +4 -4
  92. package/dist/components/data-display/statCard/styles.css +12 -12
  93. package/dist/components/data-display/summaryRow/styles.css +4 -4
  94. package/dist/components/data-display/table/index.d.ts.map +1 -1
  95. package/dist/components/data-display/table/index.js +2 -2
  96. package/dist/components/data-display/table/index.js.map +1 -1
  97. package/dist/components/data-display/table/styles.css +22 -11
  98. package/dist/components/data-display/tableFilters/index.d.ts +30 -0
  99. package/dist/components/data-display/tableFilters/index.d.ts.map +1 -0
  100. package/dist/components/data-display/tableFilters/index.js +67 -0
  101. package/dist/components/data-display/tableFilters/index.js.map +1 -0
  102. package/dist/components/data-display/tagCard/index.d.ts.map +1 -1
  103. package/dist/components/data-display/tagCard/index.js +1 -1
  104. package/dist/components/data-display/tagCard/index.js.map +1 -1
  105. package/dist/components/data-display/tagCard/styles.css +1 -1
  106. package/dist/components/feedback/alert/styles.css +15 -15
  107. package/dist/components/feedback/badge/index.d.ts.map +1 -1
  108. package/dist/components/feedback/badge/index.js +14 -8
  109. package/dist/components/feedback/badge/index.js.map +1 -1
  110. package/dist/components/feedback/badge/styles.css +45 -45
  111. package/dist/components/feedback/emptyState/styles.css +2 -4
  112. package/dist/components/feedback/loadingOverlay/styles.css +1 -1
  113. package/dist/components/feedback/progressBar/index.d.ts.map +1 -1
  114. package/dist/components/feedback/progressBar/index.js +7 -2
  115. package/dist/components/feedback/progressBar/index.js.map +1 -1
  116. package/dist/components/feedback/progressBar/styles.css +25 -16
  117. package/dist/components/feedback/spinner/styles.css +14 -24
  118. package/dist/components/feedback/tooltip/styles.css +9 -7
  119. package/dist/components/forms/detailField/styles.css +1 -1
  120. package/dist/components/forms/fieldShell/index.d.ts +3 -1
  121. package/dist/components/forms/fieldShell/index.d.ts.map +1 -1
  122. package/dist/components/forms/fieldShell/index.js +1 -1
  123. package/dist/components/forms/fieldShell/index.js.map +1 -1
  124. package/dist/components/forms/fieldShell/styles.css +5 -5
  125. package/dist/components/forms/form/styles.css +6 -6
  126. package/dist/components/forms/formActions/styles.css +4 -4
  127. package/dist/components/forms/formGrid/styles.css +32 -0
  128. package/dist/components/forms/infoRow/styles.css +2 -3
  129. package/dist/components/forms/optionsGroup/index.d.ts +3 -1
  130. package/dist/components/forms/optionsGroup/index.d.ts.map +1 -1
  131. package/dist/components/forms/optionsGroup/index.js +5 -1
  132. package/dist/components/forms/optionsGroup/index.js.map +1 -1
  133. package/dist/components/forms/optionsGroup/styles.css +1 -1
  134. package/dist/components/forms/requiredAsterisk/index.d.ts.map +1 -1
  135. package/dist/components/forms/requiredAsterisk/index.js +3 -2
  136. package/dist/components/forms/requiredAsterisk/index.js.map +1 -1
  137. package/dist/components/forms/requiredAsterisk/styles.css +1 -1
  138. package/dist/components/index.d.ts +4 -0
  139. package/dist/components/index.d.ts.map +1 -1
  140. package/dist/components/index.js +2 -0
  141. package/dist/components/index.js.map +1 -1
  142. package/dist/components/inputs/checkbox/index.d.ts +6 -1
  143. package/dist/components/inputs/checkbox/index.d.ts.map +1 -1
  144. package/dist/components/inputs/checkbox/index.js +12 -3
  145. package/dist/components/inputs/checkbox/index.js.map +1 -1
  146. package/dist/components/inputs/checkbox/styles.css +11 -3
  147. package/dist/components/inputs/colorPicker/index.d.ts.map +1 -1
  148. package/dist/components/inputs/colorPicker/index.js +3 -1
  149. package/dist/components/inputs/colorPicker/index.js.map +1 -1
  150. package/dist/components/inputs/colorPicker/styles.css +3 -3
  151. package/dist/components/inputs/dateInput/index.d.ts +6 -6
  152. package/dist/components/inputs/dateInput/index.d.ts.map +1 -1
  153. package/dist/components/inputs/dateInput/index.js +15 -5
  154. package/dist/components/inputs/dateInput/index.js.map +1 -1
  155. package/dist/components/inputs/dateInput/styles.css +5 -5
  156. package/dist/components/inputs/dateInput/utils.d.ts +0 -1
  157. package/dist/components/inputs/dateInput/utils.d.ts.map +1 -1
  158. package/dist/components/inputs/dateInput/utils.js +13 -8
  159. package/dist/components/inputs/dateInput/utils.js.map +1 -1
  160. package/dist/components/inputs/dropdown/index.d.ts +2 -0
  161. package/dist/components/inputs/dropdown/index.d.ts.map +1 -1
  162. package/dist/components/inputs/dropdown/index.js +2 -2
  163. package/dist/components/inputs/dropdown/index.js.map +1 -1
  164. package/dist/components/inputs/dropdown/styles.css +2 -2
  165. package/dist/components/inputs/dropdownArrowButton/index.d.ts.map +1 -1
  166. package/dist/components/inputs/dropdownArrowButton/index.js +1 -1
  167. package/dist/components/inputs/dropdownArrowButton/index.js.map +1 -1
  168. package/dist/components/inputs/dropdownArrowButton/styles.css +7 -5
  169. package/dist/components/inputs/fileDropZone/index.d.ts.map +1 -1
  170. package/dist/components/inputs/fileDropZone/index.js +3 -2
  171. package/dist/components/inputs/fileDropZone/index.js.map +1 -1
  172. package/dist/components/inputs/fileDropZone/styles.css +12 -12
  173. package/dist/components/inputs/fileUpload/index.d.ts.map +1 -1
  174. package/dist/components/inputs/fileUpload/index.js +11 -6
  175. package/dist/components/inputs/fileUpload/index.js.map +1 -1
  176. package/dist/components/inputs/fileUpload/styles.css +9 -9
  177. package/dist/components/inputs/input/index.d.ts +17 -1
  178. package/dist/components/inputs/input/index.d.ts.map +1 -1
  179. package/dist/components/inputs/input/index.js +27 -5
  180. package/dist/components/inputs/input/index.js.map +1 -1
  181. package/dist/components/inputs/input/styles.css +68 -24
  182. package/dist/components/inputs/languageSelect/index.d.ts.map +1 -1
  183. package/dist/components/inputs/languageSelect/index.js +15 -4
  184. package/dist/components/inputs/languageSelect/index.js.map +1 -1
  185. package/dist/components/inputs/multiSelect/dropDown.d.ts +7 -0
  186. package/dist/components/inputs/multiSelect/dropDown.d.ts.map +1 -1
  187. package/dist/components/inputs/multiSelect/dropDown.js +19 -12
  188. package/dist/components/inputs/multiSelect/dropDown.js.map +1 -1
  189. package/dist/components/inputs/multiSelect/index.d.ts.map +1 -1
  190. package/dist/components/inputs/multiSelect/index.js +49 -13
  191. package/dist/components/inputs/multiSelect/index.js.map +1 -1
  192. package/dist/components/inputs/multiSelect/styles.css +51 -43
  193. package/dist/components/inputs/multiSelect/utils.d.ts +7 -0
  194. package/dist/components/inputs/multiSelect/utils.d.ts.map +1 -0
  195. package/dist/components/inputs/multiSelect/utils.js +18 -0
  196. package/dist/components/inputs/multiSelect/utils.js.map +1 -0
  197. package/dist/components/inputs/phoneInput/index.d.ts.map +1 -1
  198. package/dist/components/inputs/phoneInput/index.js +11 -3
  199. package/dist/components/inputs/phoneInput/index.js.map +1 -1
  200. package/dist/components/inputs/phoneInput/styles.css +13 -13
  201. package/dist/components/inputs/radioGroup/index.d.ts.map +1 -1
  202. package/dist/components/inputs/radioGroup/index.js +1 -1
  203. package/dist/components/inputs/radioGroup/index.js.map +1 -1
  204. package/dist/components/inputs/richTextEditor/index.d.ts.map +1 -1
  205. package/dist/components/inputs/richTextEditor/index.js +30 -20
  206. package/dist/components/inputs/richTextEditor/index.js.map +1 -1
  207. package/dist/components/inputs/richTextEditor/styles.css +24 -24
  208. package/dist/components/inputs/searchList/index.d.ts +4 -1
  209. package/dist/components/inputs/searchList/index.d.ts.map +1 -1
  210. package/dist/components/inputs/searchList/index.js +46 -31
  211. package/dist/components/inputs/searchList/index.js.map +1 -1
  212. package/dist/components/inputs/searchList/styles.css +22 -22
  213. package/dist/components/inputs/searchSelect/index.d.ts.map +1 -1
  214. package/dist/components/inputs/searchSelect/index.js +8 -2
  215. package/dist/components/inputs/searchSelect/index.js.map +1 -1
  216. package/dist/components/inputs/select/index.js +3 -2
  217. package/dist/components/inputs/select/index.js.map +1 -1
  218. package/dist/components/inputs/select/styles.css +93 -15
  219. package/dist/components/inputs/switch/index.d.ts.map +1 -1
  220. package/dist/components/inputs/switch/index.js +3 -1
  221. package/dist/components/inputs/switch/index.js.map +1 -1
  222. package/dist/components/inputs/switch/styles.css +5 -5
  223. package/dist/components/inputs/textArea/index.d.ts.map +1 -1
  224. package/dist/components/inputs/textArea/index.js +3 -2
  225. package/dist/components/inputs/textArea/index.js.map +1 -1
  226. package/dist/components/inputs/textArea/styles.css +11 -11
  227. package/dist/components/inputs/typeahead/index.d.ts.map +1 -1
  228. package/dist/components/inputs/typeahead/index.js +21 -6
  229. package/dist/components/inputs/typeahead/index.js.map +1 -1
  230. package/dist/components/inputs/typeahead/styles.css +13 -13
  231. package/dist/components/layout/authPage/styles.css +6 -6
  232. package/dist/components/layout/borderedSection/index.d.ts +3 -1
  233. package/dist/components/layout/borderedSection/index.d.ts.map +1 -1
  234. package/dist/components/layout/borderedSection/index.js +2 -2
  235. package/dist/components/layout/borderedSection/index.js.map +1 -1
  236. package/dist/components/layout/borderedSection/styles.css +3 -3
  237. package/dist/components/layout/card/styles.css +53 -31
  238. package/dist/components/layout/col/styles.css +1 -1
  239. package/dist/components/layout/page/styles.css +25 -5
  240. package/dist/components/layout/sectionHeader/styles.css +3 -4
  241. package/dist/components/navigation/breadcrumbs/styles.css +7 -7
  242. package/dist/components/navigation/pagination/index.d.ts +23 -0
  243. package/dist/components/navigation/pagination/index.d.ts.map +1 -0
  244. package/dist/components/navigation/pagination/index.js +29 -0
  245. package/dist/components/navigation/pagination/index.js.map +1 -0
  246. package/dist/components/navigation/pagination/styles.css +113 -0
  247. package/dist/components/navigation/pagination/utils.d.ts +9 -0
  248. package/dist/components/navigation/pagination/utils.d.ts.map +1 -0
  249. package/dist/components/navigation/pagination/utils.js +25 -0
  250. package/dist/components/navigation/pagination/utils.js.map +1 -0
  251. package/dist/components/navigation/sidebar/styles.css +13 -5
  252. package/dist/components/navigation/stepper/styles.css +14 -14
  253. package/dist/components/navigation/tabButton/styles.css +59 -59
  254. package/dist/components/navigation/tabs/styles.css +5 -5
  255. package/dist/components/overlays/confirmationModal/index.d.ts +5 -0
  256. package/dist/components/overlays/confirmationModal/index.d.ts.map +1 -1
  257. package/dist/components/overlays/confirmationModal/index.js +23 -4
  258. package/dist/components/overlays/confirmationModal/index.js.map +1 -1
  259. package/dist/components/overlays/confirmationModal/styles.css +3 -0
  260. package/dist/components/overlays/modal/index.d.ts +2 -0
  261. package/dist/components/overlays/modal/index.d.ts.map +1 -1
  262. package/dist/components/overlays/modal/index.js +13 -4
  263. package/dist/components/overlays/modal/index.js.map +1 -1
  264. package/dist/components/overlays/modal/styles.css +19 -19
  265. package/dist/hooks/index.d.ts +1 -0
  266. package/dist/hooks/index.d.ts.map +1 -1
  267. package/dist/hooks/index.js +1 -0
  268. package/dist/hooks/index.js.map +1 -1
  269. package/dist/hooks/useInfinite.d.ts +3 -1
  270. package/dist/hooks/useInfinite.d.ts.map +1 -1
  271. package/dist/hooks/useInfinite.js +4 -2
  272. package/dist/hooks/useInfinite.js.map +1 -1
  273. package/dist/hooks/useInfiniteArchivableCursor.d.ts +1 -1
  274. package/dist/hooks/useInfiniteArchivableCursor.d.ts.map +1 -1
  275. package/dist/hooks/useInfiniteArchivableCursor.js +11 -4
  276. package/dist/hooks/useInfiniteArchivableCursor.js.map +1 -1
  277. package/dist/hooks/useInfiniteCursor.d.ts +1 -1
  278. package/dist/hooks/useInfiniteCursor.d.ts.map +1 -1
  279. package/dist/hooks/useInfiniteCursor.js +11 -4
  280. package/dist/hooks/useInfiniteCursor.js.map +1 -1
  281. package/dist/hooks/usePaginated.d.ts +43 -0
  282. package/dist/hooks/usePaginated.d.ts.map +1 -0
  283. package/dist/hooks/usePaginated.js +60 -0
  284. package/dist/hooks/usePaginated.js.map +1 -0
  285. package/dist/styles.css +161 -123
  286. package/package.json +15 -4
  287. package/src/components/buttons/button/index.tsx +14 -5
  288. package/src/components/buttons/button/styles.css +45 -43
  289. package/src/components/buttons/rowActions/index.tsx +6 -1
  290. package/src/components/buttons/rowActions/styles.css +7 -0
  291. package/src/components/data-display/addressBlock/styles.css +2 -4
  292. package/src/components/data-display/colorSwatch/index.tsx +2 -2
  293. package/src/components/data-display/colorSwatch/styles.css +1 -1
  294. package/src/components/data-display/dataTable/index.tsx +6 -3
  295. package/src/components/data-display/dataTable/styles.css +18 -2
  296. package/src/components/data-display/dataTable/utils/parseDataKey.ts +18 -36
  297. package/src/components/data-display/imagePreview/styles.css +2 -2
  298. package/src/components/data-display/infiniteScroll/filters/index.tsx +18 -1
  299. package/src/components/data-display/infiniteScroll/filters/listFilter.tsx +1 -0
  300. package/src/components/data-display/infiniteScroll/filters/rangeFilter.tsx +77 -33
  301. package/src/components/data-display/infiniteScroll/filters/searchFilter.tsx +16 -65
  302. package/src/components/data-display/infiniteScroll/filters/selectFilter.tsx +11 -17
  303. package/src/components/data-display/infiniteScroll/filters/styles.css +34 -1
  304. package/src/components/data-display/infiniteScroll/header/deleteButton.tsx +1 -0
  305. package/src/components/data-display/infiniteScroll/header/index.tsx +4 -0
  306. package/src/components/data-display/infiniteScroll/header/limit.tsx +1 -0
  307. package/src/components/data-display/infiniteScroll/header/sortBy.tsx +1 -0
  308. package/src/components/data-display/infiniteScroll/header/sortDirection.tsx +1 -0
  309. package/src/components/data-display/infiniteScroll/index.tsx +75 -29
  310. package/src/components/data-display/infiniteScroll/styles.css +2 -2
  311. package/src/components/data-display/infiniteScroll/table/index.tsx +2 -0
  312. package/src/components/data-display/infiniteScroll/tags/index.tsx +7 -16
  313. package/src/components/data-display/infiniteScroll/tags/listFilterTag.tsx +31 -28
  314. package/src/components/data-display/infiniteScroll/tags/rangeFilterTag.tsx +8 -25
  315. package/src/components/data-display/infiniteScroll/tags/selectFilterTag.tsx +4 -11
  316. package/src/components/data-display/infiniteScroll/tags/styles.css +1 -29
  317. package/src/components/data-display/infiniteScroll/utils/generateQueryString.ts +28 -13
  318. package/src/components/data-display/infiniteScroll/utils/hasPendingChanges.ts +48 -16
  319. package/src/components/data-display/listCard/styles.css +3 -3
  320. package/src/components/data-display/listRow/styles.css +2 -2
  321. package/src/components/data-display/recoveryCodeGrid/styles.css +3 -4
  322. package/src/components/data-display/secretDisplay/styles.css +4 -4
  323. package/src/components/data-display/statCard/styles.css +12 -12
  324. package/src/components/data-display/summaryRow/styles.css +4 -4
  325. package/src/components/data-display/table/index.tsx +2 -2
  326. package/src/components/data-display/table/styles.css +22 -11
  327. package/src/components/data-display/tableFilters/index.tsx +147 -0
  328. package/src/components/data-display/tagCard/index.tsx +7 -4
  329. package/src/components/data-display/tagCard/styles.css +1 -1
  330. package/src/components/feedback/alert/styles.css +15 -15
  331. package/src/components/feedback/badge/index.tsx +36 -16
  332. package/src/components/feedback/badge/styles.css +45 -45
  333. package/src/components/feedback/emptyState/styles.css +2 -4
  334. package/src/components/feedback/loadingOverlay/styles.css +1 -1
  335. package/src/components/feedback/progressBar/index.tsx +14 -8
  336. package/src/components/feedback/progressBar/styles.css +25 -16
  337. package/src/components/feedback/spinner/styles.css +14 -24
  338. package/src/components/feedback/tooltip/styles.css +9 -7
  339. package/src/components/forms/detailField/styles.css +1 -1
  340. package/src/components/forms/fieldShell/index.tsx +4 -1
  341. package/src/components/forms/fieldShell/styles.css +5 -5
  342. package/src/components/forms/form/styles.css +6 -6
  343. package/src/components/forms/formActions/styles.css +4 -4
  344. package/src/components/forms/formGrid/styles.css +32 -0
  345. package/src/components/forms/infoRow/styles.css +2 -3
  346. package/src/components/forms/optionsGroup/index.tsx +31 -12
  347. package/src/components/forms/optionsGroup/styles.css +1 -1
  348. package/src/components/forms/requiredAsterisk/index.tsx +5 -1
  349. package/src/components/forms/requiredAsterisk/styles.css +1 -1
  350. package/src/components/index.ts +4 -0
  351. package/src/components/inputs/checkbox/index.tsx +27 -6
  352. package/src/components/inputs/checkbox/styles.css +11 -3
  353. package/src/components/inputs/colorPicker/index.tsx +5 -2
  354. package/src/components/inputs/colorPicker/styles.css +3 -3
  355. package/src/components/inputs/dateInput/index.tsx +17 -9
  356. package/src/components/inputs/dateInput/styles.css +5 -5
  357. package/src/components/inputs/dateInput/utils.ts +12 -8
  358. package/src/components/inputs/dropdown/index.tsx +5 -1
  359. package/src/components/inputs/dropdown/styles.css +2 -2
  360. package/src/components/inputs/dropdownArrowButton/index.tsx +1 -0
  361. package/src/components/inputs/dropdownArrowButton/styles.css +7 -5
  362. package/src/components/inputs/fileDropZone/index.tsx +4 -3
  363. package/src/components/inputs/fileDropZone/styles.css +12 -12
  364. package/src/components/inputs/fileUpload/index.tsx +33 -23
  365. package/src/components/inputs/fileUpload/styles.css +9 -9
  366. package/src/components/inputs/input/index.tsx +67 -6
  367. package/src/components/inputs/input/styles.css +68 -24
  368. package/src/components/inputs/languageSelect/index.tsx +19 -4
  369. package/src/components/inputs/multiSelect/dropDown.tsx +83 -35
  370. package/src/components/inputs/multiSelect/index.tsx +87 -29
  371. package/src/components/inputs/multiSelect/styles.css +51 -43
  372. package/src/components/inputs/multiSelect/utils.ts +18 -0
  373. package/src/components/inputs/phoneInput/index.tsx +16 -4
  374. package/src/components/inputs/phoneInput/styles.css +13 -13
  375. package/src/components/inputs/radioGroup/index.tsx +2 -1
  376. package/src/components/inputs/richTextEditor/index.tsx +59 -37
  377. package/src/components/inputs/richTextEditor/styles.css +24 -24
  378. package/src/components/inputs/searchList/index.tsx +121 -109
  379. package/src/components/inputs/searchList/styles.css +22 -22
  380. package/src/components/inputs/searchSelect/index.tsx +8 -2
  381. package/src/components/inputs/select/index.tsx +3 -3
  382. package/src/components/inputs/select/styles.css +93 -15
  383. package/src/components/inputs/switch/index.tsx +3 -2
  384. package/src/components/inputs/switch/styles.css +5 -5
  385. package/src/components/inputs/textArea/index.tsx +3 -3
  386. package/src/components/inputs/textArea/styles.css +11 -11
  387. package/src/components/inputs/typeahead/index.tsx +84 -54
  388. package/src/components/inputs/typeahead/styles.css +13 -13
  389. package/src/components/layout/authPage/styles.css +6 -6
  390. package/src/components/layout/borderedSection/index.tsx +4 -1
  391. package/src/components/layout/borderedSection/styles.css +3 -3
  392. package/src/components/layout/card/styles.css +53 -31
  393. package/src/components/layout/col/styles.css +1 -1
  394. package/src/components/layout/page/styles.css +25 -5
  395. package/src/components/layout/sectionHeader/styles.css +3 -4
  396. package/src/components/navigation/breadcrumbs/styles.css +7 -7
  397. package/src/components/navigation/pagination/index.tsx +134 -0
  398. package/src/components/navigation/pagination/styles.css +113 -0
  399. package/src/components/navigation/pagination/utils.ts +32 -0
  400. package/src/components/navigation/sidebar/styles.css +13 -5
  401. package/src/components/navigation/stepper/styles.css +14 -14
  402. package/src/components/navigation/tabButton/styles.css +59 -59
  403. package/src/components/navigation/tabs/styles.css +5 -5
  404. package/src/components/overlays/confirmationModal/index.tsx +37 -1
  405. package/src/components/overlays/confirmationModal/styles.css +3 -0
  406. package/src/components/overlays/modal/index.tsx +23 -4
  407. package/src/components/overlays/modal/styles.css +19 -19
  408. package/src/hooks/index.ts +4 -0
  409. package/src/hooks/useInfinite.ts +7 -3
  410. package/src/hooks/useInfiniteArchivableCursor.ts +11 -4
  411. package/src/hooks/useInfiniteCursor.ts +11 -4
  412. package/src/hooks/usePaginated.ts +123 -0
  413. package/src/styles.css +161 -123
  414. package/dist/components/data-display/infiniteScroll/tags/searchFilterTag.d.ts +0 -10
  415. package/dist/components/data-display/infiniteScroll/tags/searchFilterTag.d.ts.map +0 -1
  416. package/dist/components/data-display/infiniteScroll/tags/searchFilterTag.js +0 -22
  417. package/dist/components/data-display/infiniteScroll/tags/searchFilterTag.js.map +0 -1
  418. package/src/components/data-display/infiniteScroll/tags/searchFilterTag.tsx +0 -41
@@ -1,16 +1,10 @@
1
1
  "use client";
2
2
 
3
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
- import IconButton from "../../../buttons/iconButton/index.js";
3
+ import { hasRangeValue } from "../utils/hasPendingChanges.js";
4
+ import Badge from "../../../feedback/badge/index.js";
5
5
  import { useCallback, useMemo } from "react";
6
6
  import { DateTime } from "luxon";
7
7
  import "./styles.css";
8
- import {
9
- faCalendarDays,
10
- faFont,
11
- faHashtag,
12
- faXmark,
13
- } from "@fortawesome/free-solid-svg-icons";
14
8
  import {
15
9
  GeneratedRangeFilter,
16
10
  InfiniteScrollMenuGeneratedFilter,
@@ -39,21 +33,15 @@ const RangeFilterTag = (props: InfiniteScrollRangeFilterTagProps) => {
39
33
 
40
34
  const tagValue = useMemo(() => {
41
35
  const value = filter[filterValue];
42
- if (!value) return "";
36
+ if (!hasRangeValue(value)) return "";
43
37
  if (filter.rangeType === "DATE") {
44
38
  return DateTime.fromISO(String(value)).toFormat("D");
45
39
  } else if (filter.rangeType === "DATETIME") {
46
40
  return DateTime.fromISO(String(value)).toFormat("D ttt");
47
- } else if (filter.rangeType === "NUMBER") return value;
48
- else if (filter.rangeType === "STRING") return value;
41
+ }
42
+ return value;
49
43
  }, [filter, filterValue, filter.rangeType]);
50
44
 
51
- const iconToUse = useMemo(() => {
52
- if (isDate) return faCalendarDays;
53
- else if (filter.rangeType === "NUMBER") return faHashtag;
54
- else if (filter.rangeType === "STRING") return faFont;
55
- }, [filter.rangeType]);
56
-
57
45
  const handleRemove = useCallback(() => {
58
46
  const newFilters = props.filters.map((f) => {
59
47
  if (f.filterId !== props.filter.filterId) return f;
@@ -63,14 +51,9 @@ const RangeFilterTag = (props: InfiniteScrollRangeFilterTagProps) => {
63
51
  }, [props.filters, filterValue]);
64
52
 
65
53
  return (
66
- <div className="k-tag-container">
67
- <p className="k-tag-title">{tagTitle}</p>
68
- <div className="k-tag-actions">
69
- {iconToUse && <FontAwesomeIcon icon={iconToUse} />}
70
- <p className="k-tag-value">{tagValue}</p>
71
- <IconButton icon={faXmark} onClick={handleRemove} size="sm" />
72
- </div>
73
- </div>
54
+ <Badge onRemove={handleRemove}>
55
+ {tagTitle}: {tagValue}
56
+ </Badge>
74
57
  );
75
58
  };
76
59
 
@@ -1,8 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { faCheckSquare, faXmark } from "@fortawesome/free-solid-svg-icons";
4
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
5
- import IconButton from "../../../buttons/iconButton/index.js";
3
+ import Badge from "../../../feedback/badge/index.js";
6
4
  import { useCallback } from "react";
7
5
  import "../styles.css";
8
6
  import {
@@ -32,14 +30,9 @@ const SelectFilterTag = (props: InfiniteScrollSelectFilterTagProps) => {
32
30
  }, [props]);
33
31
 
34
32
  return (
35
- <div className="k-tag-container">
36
- <p className="k-tag-title">{props.filter.title}</p>
37
- <div className="k-tag-actions">
38
- <FontAwesomeIcon icon={faCheckSquare} />
39
- <p className="k-tag-value">{props.filterOption.name}</p>
40
- <IconButton onClick={handleRemove} size="sm" icon={faXmark} />
41
- </div>
42
- </div>
33
+ <Badge onRemove={handleRemove}>
34
+ {props.filter.title}: {props.filterOption.name}
35
+ </Badge>
43
36
  );
44
37
  };
45
38
 
@@ -2,42 +2,14 @@
2
2
  display: flex;
3
3
  gap: 0.5rem;
4
4
  flex-wrap: wrap;
5
- }
6
-
7
- .k-tag-container {
8
- display: flex;
9
- flex-direction: column;
10
- justify-content: center;
11
- background-color: var(--primary-color);
12
- border-radius: 0.375rem;
13
- color: var(--text-color-light);
14
- padding-left: 0.5rem;
15
- }
16
-
17
- .k-tag-title {
18
- margin: 0;
19
- margin-top: 0.25rem;
20
- font-size: 0.75rem;
21
- }
22
-
23
- .k-tag-actions {
24
- display: flex;
25
- flex-direction: row;
26
5
  align-items: center;
27
- gap: 0.5rem;
28
- margin-bottom: 0.25rem;
29
- margin-top: -0.25rem;
30
- }
31
-
32
- .k-tag-value {
33
- margin: 0;
34
- font-size: 0.875rem;
35
6
  }
36
7
 
37
8
  .k-lft-buttons {
38
9
  display: flex;
39
10
  flex-direction: row;
40
11
  align-items: center;
12
+ gap: 0.25rem;
41
13
  }
42
14
 
43
15
  .k-lft-modal-body {
@@ -1,3 +1,4 @@
1
+ import { hasRangeValue } from "./hasPendingChanges.js";
1
2
  import {
2
3
  InfiniteScrollMenuGeneratedFilter,
3
4
  InfiniteScrollMenuLimitOption,
@@ -39,37 +40,51 @@ const generateQueryString = (params: GenerateQueryStringParams): string => {
39
40
  queryParams.set("sortDir", sortDirection);
40
41
  }
41
42
 
42
- // Filter params - simple key-value format for server-side validation
43
+ for (const [name, value] of Object.entries(filterParams(filters))) {
44
+ queryParams.set(name, value);
45
+ }
46
+
47
+ return queryParams.toString();
48
+ };
49
+
50
+ /**
51
+ * The `filter[...]` query params for the filters' current values: simple
52
+ * key-value pairs for server-side validation. Shared by InfiniteScroll and
53
+ * TableFilters, so both send the same format.
54
+ */
55
+ export const filterParams = (
56
+ filters: InfiniteScrollMenuGeneratedFilter[]
57
+ ): Record<string, string> => {
58
+ const params: Record<string, string> = {};
43
59
  for (const filter of filters) {
44
60
  const key = filter.dataKey;
45
61
 
46
62
  if (filter.type === "SEARCH" && filter.value) {
47
- queryParams.set(`filter[${key}]`, filter.value);
48
- queryParams.set(`filter[${key}_op]`, "contains");
63
+ params[`filter[${key}]`] = filter.value;
64
+ params[`filter[${key}_op]`] = "contains";
49
65
  } else if (filter.type === "RANGE") {
50
- if (filter.startValue !== undefined) {
51
- queryParams.set(`filter[${key}_gte]`, String(filter.startValue));
66
+ if (hasRangeValue(filter.startValue)) {
67
+ params[`filter[${key}_gte]`] = String(filter.startValue);
52
68
  }
53
- if (filter.endValue !== undefined) {
54
- queryParams.set(`filter[${key}_lte]`, String(filter.endValue));
69
+ if (hasRangeValue(filter.endValue)) {
70
+ params[`filter[${key}_lte]`] = String(filter.endValue);
55
71
  }
56
72
  } else if (filter.type === "SELECT") {
57
73
  const selectedOptions = filter.options
58
74
  .filter((opt) => opt.selected)
59
75
  .map((opt) => opt.id);
60
76
  if (selectedOptions.length > 0) {
61
- queryParams.set(`filter[${key}]`, selectedOptions.join(","));
77
+ params[`filter[${key}]`] = selectedOptions.join(",");
62
78
  if (filter.multiSelect) {
63
- queryParams.set(`filter[${key}_op]`, "in");
79
+ params[`filter[${key}_op]`] = "in";
64
80
  }
65
81
  }
66
82
  } else if (filter.type === "LIST" && filter.list) {
67
- queryParams.set(`filter[${key}]`, filter.list);
68
- queryParams.set(`filter[${key}_op]`, "in");
83
+ params[`filter[${key}]`] = filter.list;
84
+ params[`filter[${key}_op]`] = "in";
69
85
  }
70
86
  }
71
-
72
- return queryParams.toString();
87
+ return params;
73
88
  };
74
89
 
75
90
  export default generateQueryString;
@@ -2,6 +2,7 @@ import {
2
2
  InfiniteScrollMenuGeneratedFilter,
3
3
  InfiniteScrollMenuLimitOption,
4
4
  InfiniteScrollMenuSortDataKey,
5
+ RangeValue,
5
6
  SortDirection,
6
7
  } from "../types.js";
7
8
 
@@ -29,12 +30,18 @@ export const hasPendingChanges = (params: PendingChangesParams): boolean => {
29
30
  );
30
31
  };
31
32
 
33
+ /** A range bound is set unless it's missing or empty; `0` is a real bound. */
34
+ export const hasRangeValue = (
35
+ value: RangeValue | undefined
36
+ ): value is RangeValue => value !== undefined && value !== "";
37
+
32
38
  export const hasActiveFilters = (
33
39
  pendingFilters: InfiniteScrollMenuGeneratedFilter[]
34
40
  ): boolean => {
35
41
  for (const filter of pendingFilters) {
36
42
  if (filter.type === "RANGE") {
37
- if (filter.startValue || filter.endValue) return true;
43
+ if (hasRangeValue(filter.startValue) || hasRangeValue(filter.endValue))
44
+ return true;
38
45
  } else if (filter.type === "SEARCH") {
39
46
  if (filter.value) return true;
40
47
  } else if (filter.type === "LIST") {
@@ -46,7 +53,42 @@ export const hasActiveFilters = (
46
53
  return false;
47
54
  };
48
55
 
49
- const hasFilterChanges = (
56
+ /** The filters with every value cleared, for Reset. */
57
+ export const clearFilters = (
58
+ filters: InfiniteScrollMenuGeneratedFilter[]
59
+ ): InfiniteScrollMenuGeneratedFilter[] =>
60
+ filters.map((filter) => {
61
+ if (filter.type === "SELECT") {
62
+ return {
63
+ ...filter,
64
+ options: filter.options?.map((o) => ({ ...o, selected: false })),
65
+ };
66
+ } else if (filter.type === "RANGE") {
67
+ return { ...filter, startValue: undefined, endValue: undefined };
68
+ } else if (filter.type === "SEARCH") {
69
+ return { ...filter, value: undefined };
70
+ } else return { ...filter, list: "" };
71
+ });
72
+
73
+ /**
74
+ * Whether a pending change is in a search box: applied immediately, searches
75
+ * wait for a pause in typing. (Ranges apply from their menu's Apply button.)
76
+ */
77
+ export const hasTypedFilterChanges = (
78
+ filters: InfiniteScrollMenuGeneratedFilter[],
79
+ pendingFilters: InfiniteScrollMenuGeneratedFilter[]
80
+ ): boolean =>
81
+ filters.some(
82
+ (filter, i) =>
83
+ filter.type === "SEARCH" &&
84
+ hasFilterChanges([filter], [pendingFilters[i]])
85
+ );
86
+
87
+ // An emptied field is "" and an untouched one undefined; both mean unset.
88
+ const isSameValue = (a: unknown, b: unknown) =>
89
+ a === b || ((a === "" || a === undefined) && (b === "" || b === undefined));
90
+
91
+ export const hasFilterChanges = (
50
92
  filters: InfiniteScrollMenuGeneratedFilter[],
51
93
  pendingFilters: InfiniteScrollMenuGeneratedFilter[]
52
94
  ): boolean => {
@@ -63,22 +105,12 @@ const hasFilterChanges = (
63
105
  if (!selected.every((o) => pendingSelected.some((p) => p.id === o.id)))
64
106
  return true;
65
107
  } else if (filter.type === "SEARCH" && pending.type === "SEARCH") {
66
- if (filter.value !== pending.value) {
67
- if (!(filter.value === "" && pending.value === undefined)) return true;
68
- }
108
+ if (!isSameValue(filter.value, pending.value)) return true;
69
109
  } else if (filter.type === "RANGE" && pending.type === "RANGE") {
70
- if (filter.startValue !== pending.startValue) {
71
- if (!(filter.startValue === "" && pending.startValue === undefined))
72
- return true;
73
- }
74
- if (filter.endValue !== pending.endValue) {
75
- if (!(filter.endValue === "" && pending.endValue === undefined))
76
- return true;
77
- }
110
+ if (!isSameValue(filter.startValue, pending.startValue)) return true;
111
+ if (!isSameValue(filter.endValue, pending.endValue)) return true;
78
112
  } else if (filter.type === "LIST" && pending.type === "LIST") {
79
- if (filter.list !== pending.list) {
80
- if (!(filter.list === "" && pending.list === undefined)) return true;
81
- }
113
+ if (!isSameValue(filter.list, pending.list)) return true;
82
114
  }
83
115
  }
84
116
  return false;
@@ -24,7 +24,7 @@
24
24
  justify-content: space-between;
25
25
  gap: 1.5rem;
26
26
  padding: 0.5rem 0;
27
- border-bottom: 1px solid var(--border-color);
27
+ border-bottom: 1px solid var(--k-border-color);
28
28
  }
29
29
 
30
30
  .k-list-card > div:last-child {
@@ -35,7 +35,7 @@
35
35
  font-weight: 600;
36
36
  text-align: left;
37
37
  flex-shrink: 0;
38
- color: var(--text-color-secondary);
38
+ color: var(--k-text-color-secondary);
39
39
  }
40
40
 
41
41
  .k-list-card dd {
@@ -44,5 +44,5 @@
44
44
 
45
45
  .k-list-card-actions {
46
46
  padding-top: 1rem;
47
- border-top: 1px solid var(--border-color);
47
+ border-top: 1px solid var(--k-border-color);
48
48
  }
@@ -4,9 +4,9 @@
4
4
  justify-content: space-between;
5
5
  gap: 0.75rem;
6
6
  padding: 0.6rem 0.75rem;
7
- border: 1px solid var(--border-color);
7
+ border: 1px solid var(--k-border-color);
8
8
  border-radius: 0.25rem;
9
- background: var(--background-color);
9
+ background: var(--k-background-color);
10
10
  }
11
11
 
12
12
  .k-list-row-body {
@@ -4,9 +4,9 @@
4
4
  padding: 0.75rem;
5
5
  display: grid;
6
6
  gap: 0.5rem;
7
- border: 0.0625rem solid var(--border-color);
7
+ border: 0.0625rem solid var(--k-border-color);
8
8
  border-radius: 0.375rem;
9
- background: var(--background-color-light, var(--background-color));
9
+ background: var(--k-background-color-light, var(--k-background-color));
10
10
  }
11
11
 
12
12
  .k-recovery-code-grid-1col {
@@ -34,8 +34,7 @@
34
34
 
35
35
  .k-recovery-code-grid-index {
36
36
  font-size: 0.75rem;
37
- color: var(--text-color);
38
- opacity: 0.55;
37
+ color: var(--k-text-color-secondary);
39
38
  min-width: 1.5rem;
40
39
  text-align: right;
41
40
  }
@@ -3,21 +3,21 @@
3
3
  align-items: center;
4
4
  gap: 0.5rem;
5
5
  padding: 0.5rem 0.75rem;
6
- border: 1px solid var(--border-color);
6
+ border: 1px solid var(--k-border-color);
7
7
  border-radius: 0.375rem;
8
- background: var(--background-color-light);
8
+ background: var(--k-background-color-light);
9
9
  }
10
10
 
11
11
  .k-secret-display-leading {
12
12
  flex-shrink: 0;
13
- color: var(--text-color-secondary);
13
+ color: var(--k-text-color-secondary);
14
14
  }
15
15
 
16
16
  .k-secret-display-value {
17
17
  flex: 1;
18
18
  min-width: 0;
19
19
  padding: 0.125rem 0.25rem;
20
- background-color: var(--background-color);
20
+ background-color: var(--k-background-color);
21
21
  border-radius: 0.25rem;
22
22
  word-break: break-all;
23
23
  user-select: all;
@@ -24,7 +24,7 @@
24
24
  }
25
25
 
26
26
  .k-stat-card-compact .k-card {
27
- background: var(--background-color-dark);
27
+ background: var(--k-background-color-dark);
28
28
  }
29
29
 
30
30
  .k-stat-card-icon {
@@ -34,25 +34,25 @@
34
34
  display: flex;
35
35
  align-items: center;
36
36
  justify-content: center;
37
- color: var(--text-color-light);
37
+ color: var(--k-text-color-light);
38
38
  font-size: 1.5rem;
39
39
  flex-shrink: 0;
40
40
  }
41
41
 
42
42
  .k-stat-card-icon-primary {
43
- background-color: var(--primary-color);
43
+ background-color: var(--k-primary-color);
44
44
  }
45
45
  .k-stat-card-icon-secondary {
46
- background-color: var(--secondary-color);
46
+ background-color: var(--k-secondary-color);
47
47
  }
48
48
  .k-stat-card-icon-success {
49
- background-color: var(--success-color);
49
+ background-color: var(--k-success-color);
50
50
  }
51
51
  .k-stat-card-icon-warning {
52
- background-color: var(--warning-color);
52
+ background-color: var(--k-warning-color);
53
53
  }
54
54
  .k-stat-card-icon-danger {
55
- background-color: var(--danger-color);
55
+ background-color: var(--k-danger-color);
56
56
  }
57
57
 
58
58
  .k-stat-card-content {
@@ -63,19 +63,19 @@
63
63
  .k-stat-card-default .k-stat-card-value {
64
64
  font-size: 2rem;
65
65
  font-weight: 700;
66
- color: var(--text-color);
66
+ color: var(--k-text-color);
67
67
  line-height: 1;
68
68
  }
69
69
 
70
70
  .k-stat-card-default .k-stat-card-label {
71
71
  font-size: 0.875rem;
72
- color: var(--text-color-secondary);
72
+ color: var(--k-text-color-secondary);
73
73
  margin-top: 0.25rem;
74
74
  }
75
75
 
76
76
  .k-stat-card-compact .k-stat-card-label {
77
77
  font-size: 0.75rem;
78
- color: var(--text-color-secondary);
78
+ color: var(--k-text-color-secondary);
79
79
  text-transform: uppercase;
80
80
  letter-spacing: 0.04em;
81
81
  }
@@ -87,10 +87,10 @@
87
87
  }
88
88
 
89
89
  .k-stat-card-trailing {
90
- color: var(--border-color);
90
+ color: var(--k-border-color);
91
91
  flex-shrink: 0;
92
92
  }
93
93
 
94
94
  .k-stat-card-interactive:hover .k-stat-card-trailing {
95
- color: var(--primary-color);
95
+ color: var(--k-primary-color-text);
96
96
  }
@@ -5,8 +5,8 @@
5
5
  padding: 0.5rem 0.75rem;
6
6
  font-size: 0.85rem;
7
7
  font-weight: 600;
8
- background-color: var(--background-color-dark);
9
- border: 1px solid var(--border-color);
8
+ background-color: var(--k-background-color-dark);
9
+ border: 1px solid var(--k-border-color);
10
10
  border-radius: 4px;
11
11
  }
12
12
 
@@ -17,10 +17,10 @@
17
17
  }
18
18
 
19
19
  .k-summary-row-label {
20
- color: var(--text-color-secondary);
20
+ color: var(--k-text-color-secondary);
21
21
  font-weight: 500;
22
22
  }
23
23
 
24
24
  .k-summary-row-value {
25
- color: var(--text-color);
25
+ color: var(--k-text-color);
26
26
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
+ import parseDataKey, { cellText } from "../dataTable/utils/parseDataKey.js";
3
4
  import type { TableColumn, TableRow } from "../dataTable/types.js";
4
- import parseDataKey from "../dataTable/utils/parseDataKey.js";
5
5
  import { ReactNode } from "react";
6
6
  import "./styles.css";
7
7
 
@@ -110,7 +110,7 @@ const Table = <TData,>({
110
110
  const content = c.cellElement
111
111
  ? c.cellElement(row, i)
112
112
  : c.dataKey
113
- ? (parseDataKey(c.dataKey, row) as ReactNode)
113
+ ? cellText(parseDataKey(c.dataKey, row))
114
114
  : null;
115
115
  return (
116
116
  <td
@@ -2,13 +2,24 @@
2
2
  width: 100%;
3
3
  border-collapse: collapse;
4
4
  text-align: left;
5
- color: var(--text-color);
6
- background-color: var(--background-color-light);
5
+ color: var(--k-text-color);
6
+ background-color: var(--k-background-color-light);
7
7
  }
8
8
 
9
9
  .k-table th,
10
10
  .k-table td {
11
- padding: 0.5rem;
11
+ padding: 0.5rem 0.75rem;
12
+ }
13
+
14
+ /* Keep text clear of the table's outer edges. */
15
+ .k-table th:first-child,
16
+ .k-table td:first-child {
17
+ padding-left: 1rem;
18
+ }
19
+
20
+ .k-table th:last-child,
21
+ .k-table td:last-child {
22
+ padding-right: 1rem;
12
23
  }
13
24
 
14
25
  .k-table th {
@@ -16,25 +27,25 @@
16
27
  }
17
28
 
18
29
  .k-table-striped tbody tr:nth-of-type(odd) {
19
- background-color: var(--background-color-dark);
30
+ background-color: var(--k-background-color-dark);
20
31
  }
21
32
 
22
33
  .k-table-hover tbody tr:hover {
23
- background-color: var(--background-color-hover);
34
+ background-color: var(--k-background-color-hover);
24
35
  }
25
36
 
26
37
  .k-table-bordered {
27
- border: 1px solid var(--border-color);
38
+ border: 1px solid var(--k-border-color);
28
39
  }
29
40
 
30
41
  .k-table-bordered th,
31
42
  .k-table-bordered td {
32
- border-top: 1px solid var(--border-color);
43
+ border-top: 1px solid var(--k-border-color);
33
44
  }
34
45
 
35
46
  .k-table-bordered th:not(:first-child),
36
47
  .k-table-bordered td:not(:first-child) {
37
- border-left: 1px solid var(--border-color);
48
+ border-left: 1px solid var(--k-border-color);
38
49
  }
39
50
 
40
51
  /* ===== Clickable rows ===== */
@@ -44,18 +55,18 @@
44
55
 
45
56
  /* ===== Row selection (caller marks rows with data-selected="true") ===== */
46
57
  .k-table tbody tr[data-selected="true"] {
47
- background-color: var(--primary-color-background-light);
58
+ background-color: var(--k-primary-color-background-light);
48
59
  }
49
60
 
50
61
  /* ===== Scrollable wrapper with sticky header ===== */
51
62
  .k-table-scroll-container {
52
63
  overflow-y: auto;
53
- border: 1px solid var(--border-color);
64
+ border: 1px solid var(--k-border-color);
54
65
  border-radius: 4px;
55
66
  }
56
67
 
57
68
  .k-table-scroll-container .k-table thead tr {
58
69
  position: sticky;
59
70
  top: 0;
60
- background: var(--background-color-light);
71
+ background: var(--k-background-color-light);
61
72
  }