@kosmeo-ui/react 0.2.0 → 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 (336) hide show
  1. package/README.md +3 -1
  2. package/dist/components/buttons/button/styles.css +43 -43
  3. package/dist/components/buttons/rowActions/index.d.ts.map +1 -1
  4. package/dist/components/buttons/rowActions/index.js +2 -1
  5. package/dist/components/buttons/rowActions/index.js.map +1 -1
  6. package/dist/components/data-display/addressBlock/styles.css +2 -2
  7. package/dist/components/data-display/colorSwatch/index.d.ts +1 -1
  8. package/dist/components/data-display/colorSwatch/index.d.ts.map +1 -1
  9. package/dist/components/data-display/colorSwatch/index.js +1 -1
  10. package/dist/components/data-display/colorSwatch/index.js.map +1 -1
  11. package/dist/components/data-display/colorSwatch/styles.css +1 -1
  12. package/dist/components/data-display/dataTable/index.d.ts.map +1 -1
  13. package/dist/components/data-display/dataTable/index.js +7 -3
  14. package/dist/components/data-display/dataTable/index.js.map +1 -1
  15. package/dist/components/data-display/dataTable/styles.css +3 -2
  16. package/dist/components/data-display/dataTable/utils/parseDataKey.d.ts +8 -1
  17. package/dist/components/data-display/dataTable/utils/parseDataKey.d.ts.map +1 -1
  18. package/dist/components/data-display/dataTable/utils/parseDataKey.js +13 -41
  19. package/dist/components/data-display/dataTable/utils/parseDataKey.js.map +1 -1
  20. package/dist/components/data-display/imagePreview/styles.css +2 -2
  21. package/dist/components/data-display/infiniteScroll/filters/index.d.ts +4 -0
  22. package/dist/components/data-display/infiniteScroll/filters/index.d.ts.map +1 -1
  23. package/dist/components/data-display/infiniteScroll/filters/index.js +12 -2
  24. package/dist/components/data-display/infiniteScroll/filters/index.js.map +1 -1
  25. package/dist/components/data-display/infiniteScroll/filters/listFilter.d.ts.map +1 -1
  26. package/dist/components/data-display/infiniteScroll/filters/listFilter.js +1 -1
  27. package/dist/components/data-display/infiniteScroll/filters/listFilter.js.map +1 -1
  28. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.d.ts +6 -0
  29. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.d.ts.map +1 -1
  30. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.js +55 -46
  31. package/dist/components/data-display/infiniteScroll/filters/rangeFilter.js.map +1 -1
  32. package/dist/components/data-display/infiniteScroll/filters/selectFilter.d.ts.map +1 -1
  33. package/dist/components/data-display/infiniteScroll/filters/selectFilter.js +3 -5
  34. package/dist/components/data-display/infiniteScroll/filters/selectFilter.js.map +1 -1
  35. package/dist/components/data-display/infiniteScroll/filters/styles.css +30 -1
  36. package/dist/components/data-display/infiniteScroll/header/limit.d.ts.map +1 -1
  37. package/dist/components/data-display/infiniteScroll/header/limit.js +1 -1
  38. package/dist/components/data-display/infiniteScroll/header/limit.js.map +1 -1
  39. package/dist/components/data-display/infiniteScroll/header/sortBy.d.ts.map +1 -1
  40. package/dist/components/data-display/infiniteScroll/header/sortBy.js +1 -1
  41. package/dist/components/data-display/infiniteScroll/header/sortBy.js.map +1 -1
  42. package/dist/components/data-display/infiniteScroll/header/sortDirection.d.ts.map +1 -1
  43. package/dist/components/data-display/infiniteScroll/header/sortDirection.js +1 -1
  44. package/dist/components/data-display/infiniteScroll/header/sortDirection.js.map +1 -1
  45. package/dist/components/data-display/infiniteScroll/index.d.ts +8 -0
  46. package/dist/components/data-display/infiniteScroll/index.d.ts.map +1 -1
  47. package/dist/components/data-display/infiniteScroll/index.js +41 -23
  48. package/dist/components/data-display/infiniteScroll/index.js.map +1 -1
  49. package/dist/components/data-display/infiniteScroll/styles.css +2 -2
  50. package/dist/components/data-display/infiniteScroll/tags/index.d.ts.map +1 -1
  51. package/dist/components/data-display/infiniteScroll/tags/index.js +6 -5
  52. package/dist/components/data-display/infiniteScroll/tags/index.js.map +1 -1
  53. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.d.ts.map +1 -1
  54. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.js +6 -6
  55. package/dist/components/data-display/infiniteScroll/tags/listFilterTag.js.map +1 -1
  56. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.d.ts.map +1 -1
  57. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.js +3 -5
  58. package/dist/components/data-display/infiniteScroll/tags/rangeFilterTag.js.map +1 -1
  59. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.d.ts +6 -0
  60. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.d.ts.map +1 -1
  61. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.js +24 -12
  62. package/dist/components/data-display/infiniteScroll/utils/generateQueryString.js.map +1 -1
  63. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.d.ts +11 -1
  64. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.d.ts.map +1 -1
  65. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.js +37 -18
  66. package/dist/components/data-display/infiniteScroll/utils/hasPendingChanges.js.map +1 -1
  67. package/dist/components/data-display/listCard/styles.css +3 -3
  68. package/dist/components/data-display/listRow/styles.css +2 -2
  69. package/dist/components/data-display/recoveryCodeGrid/styles.css +3 -3
  70. package/dist/components/data-display/secretDisplay/styles.css +4 -4
  71. package/dist/components/data-display/statCard/styles.css +12 -12
  72. package/dist/components/data-display/summaryRow/styles.css +4 -4
  73. package/dist/components/data-display/table/index.d.ts.map +1 -1
  74. package/dist/components/data-display/table/index.js +2 -2
  75. package/dist/components/data-display/table/index.js.map +1 -1
  76. package/dist/components/data-display/table/styles.css +10 -10
  77. package/dist/components/data-display/tableFilters/index.d.ts +30 -0
  78. package/dist/components/data-display/tableFilters/index.d.ts.map +1 -0
  79. package/dist/components/data-display/tableFilters/index.js +67 -0
  80. package/dist/components/data-display/tableFilters/index.js.map +1 -0
  81. package/dist/components/data-display/tagCard/index.d.ts.map +1 -1
  82. package/dist/components/data-display/tagCard/index.js +1 -1
  83. package/dist/components/data-display/tagCard/index.js.map +1 -1
  84. package/dist/components/data-display/tagCard/styles.css +1 -1
  85. package/dist/components/feedback/alert/styles.css +15 -15
  86. package/dist/components/feedback/badge/index.d.ts.map +1 -1
  87. package/dist/components/feedback/badge/index.js +14 -8
  88. package/dist/components/feedback/badge/index.js.map +1 -1
  89. package/dist/components/feedback/badge/styles.css +44 -46
  90. package/dist/components/feedback/emptyState/styles.css +2 -2
  91. package/dist/components/feedback/loadingOverlay/styles.css +1 -1
  92. package/dist/components/feedback/progressBar/styles.css +11 -11
  93. package/dist/components/feedback/spinner/styles.css +14 -11
  94. package/dist/components/feedback/tooltip/styles.css +9 -7
  95. package/dist/components/forms/detailField/styles.css +1 -1
  96. package/dist/components/forms/fieldShell/index.d.ts +3 -1
  97. package/dist/components/forms/fieldShell/index.d.ts.map +1 -1
  98. package/dist/components/forms/fieldShell/index.js +1 -1
  99. package/dist/components/forms/fieldShell/index.js.map +1 -1
  100. package/dist/components/forms/fieldShell/styles.css +5 -5
  101. package/dist/components/forms/form/styles.css +6 -6
  102. package/dist/components/forms/formActions/styles.css +4 -4
  103. package/dist/components/forms/formGrid/styles.css +32 -0
  104. package/dist/components/forms/infoRow/styles.css +2 -2
  105. package/dist/components/forms/optionsGroup/index.d.ts +3 -1
  106. package/dist/components/forms/optionsGroup/index.d.ts.map +1 -1
  107. package/dist/components/forms/optionsGroup/index.js +5 -1
  108. package/dist/components/forms/optionsGroup/index.js.map +1 -1
  109. package/dist/components/forms/optionsGroup/styles.css +1 -1
  110. package/dist/components/forms/requiredAsterisk/index.d.ts.map +1 -1
  111. package/dist/components/forms/requiredAsterisk/index.js +3 -2
  112. package/dist/components/forms/requiredAsterisk/index.js.map +1 -1
  113. package/dist/components/forms/requiredAsterisk/styles.css +1 -1
  114. package/dist/components/index.d.ts +2 -0
  115. package/dist/components/index.d.ts.map +1 -1
  116. package/dist/components/index.js +1 -0
  117. package/dist/components/index.js.map +1 -1
  118. package/dist/components/inputs/checkbox/index.d.ts.map +1 -1
  119. package/dist/components/inputs/checkbox/index.js +3 -1
  120. package/dist/components/inputs/checkbox/index.js.map +1 -1
  121. package/dist/components/inputs/checkbox/styles.css +4 -4
  122. package/dist/components/inputs/colorPicker/index.d.ts.map +1 -1
  123. package/dist/components/inputs/colorPicker/index.js +3 -1
  124. package/dist/components/inputs/colorPicker/index.js.map +1 -1
  125. package/dist/components/inputs/colorPicker/styles.css +3 -3
  126. package/dist/components/inputs/dateInput/index.d.ts +3 -3
  127. package/dist/components/inputs/dateInput/index.d.ts.map +1 -1
  128. package/dist/components/inputs/dateInput/index.js +2 -2
  129. package/dist/components/inputs/dateInput/index.js.map +1 -1
  130. package/dist/components/inputs/dateInput/styles.css +5 -5
  131. package/dist/components/inputs/dateInput/utils.d.ts +0 -1
  132. package/dist/components/inputs/dateInput/utils.d.ts.map +1 -1
  133. package/dist/components/inputs/dateInput/utils.js +13 -8
  134. package/dist/components/inputs/dateInput/utils.js.map +1 -1
  135. package/dist/components/inputs/dropdown/index.js +1 -1
  136. package/dist/components/inputs/dropdown/index.js.map +1 -1
  137. package/dist/components/inputs/dropdown/styles.css +2 -2
  138. package/dist/components/inputs/dropdownArrowButton/styles.css +7 -5
  139. package/dist/components/inputs/fileDropZone/index.d.ts.map +1 -1
  140. package/dist/components/inputs/fileDropZone/index.js +3 -2
  141. package/dist/components/inputs/fileDropZone/index.js.map +1 -1
  142. package/dist/components/inputs/fileDropZone/styles.css +12 -12
  143. package/dist/components/inputs/fileUpload/index.d.ts.map +1 -1
  144. package/dist/components/inputs/fileUpload/index.js +11 -6
  145. package/dist/components/inputs/fileUpload/index.js.map +1 -1
  146. package/dist/components/inputs/fileUpload/styles.css +9 -9
  147. package/dist/components/inputs/input/index.d.ts +12 -0
  148. package/dist/components/inputs/input/index.d.ts.map +1 -1
  149. package/dist/components/inputs/input/index.js +4 -3
  150. package/dist/components/inputs/input/index.js.map +1 -1
  151. package/dist/components/inputs/input/styles.css +28 -28
  152. package/dist/components/inputs/languageSelect/index.d.ts.map +1 -1
  153. package/dist/components/inputs/languageSelect/index.js +15 -4
  154. package/dist/components/inputs/languageSelect/index.js.map +1 -1
  155. package/dist/components/inputs/multiSelect/dropDown.d.ts +7 -0
  156. package/dist/components/inputs/multiSelect/dropDown.d.ts.map +1 -1
  157. package/dist/components/inputs/multiSelect/dropDown.js +19 -12
  158. package/dist/components/inputs/multiSelect/dropDown.js.map +1 -1
  159. package/dist/components/inputs/multiSelect/index.d.ts.map +1 -1
  160. package/dist/components/inputs/multiSelect/index.js +49 -13
  161. package/dist/components/inputs/multiSelect/index.js.map +1 -1
  162. package/dist/components/inputs/multiSelect/styles.css +51 -43
  163. package/dist/components/inputs/multiSelect/utils.d.ts +7 -0
  164. package/dist/components/inputs/multiSelect/utils.d.ts.map +1 -0
  165. package/dist/components/inputs/multiSelect/utils.js +18 -0
  166. package/dist/components/inputs/multiSelect/utils.js.map +1 -0
  167. package/dist/components/inputs/phoneInput/index.d.ts.map +1 -1
  168. package/dist/components/inputs/phoneInput/index.js +11 -3
  169. package/dist/components/inputs/phoneInput/index.js.map +1 -1
  170. package/dist/components/inputs/phoneInput/styles.css +13 -13
  171. package/dist/components/inputs/radioGroup/index.d.ts.map +1 -1
  172. package/dist/components/inputs/radioGroup/index.js +1 -1
  173. package/dist/components/inputs/radioGroup/index.js.map +1 -1
  174. package/dist/components/inputs/richTextEditor/index.d.ts.map +1 -1
  175. package/dist/components/inputs/richTextEditor/index.js +21 -22
  176. package/dist/components/inputs/richTextEditor/index.js.map +1 -1
  177. package/dist/components/inputs/richTextEditor/styles.css +24 -24
  178. package/dist/components/inputs/searchList/index.d.ts +4 -1
  179. package/dist/components/inputs/searchList/index.d.ts.map +1 -1
  180. package/dist/components/inputs/searchList/index.js +46 -31
  181. package/dist/components/inputs/searchList/index.js.map +1 -1
  182. package/dist/components/inputs/searchList/styles.css +22 -22
  183. package/dist/components/inputs/searchSelect/index.d.ts.map +1 -1
  184. package/dist/components/inputs/searchSelect/index.js +8 -2
  185. package/dist/components/inputs/searchSelect/index.js.map +1 -1
  186. package/dist/components/inputs/select/index.js +3 -2
  187. package/dist/components/inputs/select/index.js.map +1 -1
  188. package/dist/components/inputs/select/styles.css +93 -15
  189. package/dist/components/inputs/switch/index.d.ts.map +1 -1
  190. package/dist/components/inputs/switch/index.js +3 -1
  191. package/dist/components/inputs/switch/index.js.map +1 -1
  192. package/dist/components/inputs/switch/styles.css +5 -5
  193. package/dist/components/inputs/textArea/index.d.ts.map +1 -1
  194. package/dist/components/inputs/textArea/index.js +3 -2
  195. package/dist/components/inputs/textArea/index.js.map +1 -1
  196. package/dist/components/inputs/textArea/styles.css +11 -11
  197. package/dist/components/inputs/typeahead/index.d.ts.map +1 -1
  198. package/dist/components/inputs/typeahead/index.js +21 -6
  199. package/dist/components/inputs/typeahead/index.js.map +1 -1
  200. package/dist/components/inputs/typeahead/styles.css +13 -13
  201. package/dist/components/layout/authPage/styles.css +6 -6
  202. package/dist/components/layout/borderedSection/styles.css +3 -3
  203. package/dist/components/layout/card/styles.css +31 -31
  204. package/dist/components/layout/col/styles.css +1 -1
  205. package/dist/components/layout/page/styles.css +25 -5
  206. package/dist/components/layout/sectionHeader/styles.css +3 -3
  207. package/dist/components/navigation/breadcrumbs/styles.css +7 -7
  208. package/dist/components/navigation/pagination/styles.css +15 -15
  209. package/dist/components/navigation/sidebar/styles.css +6 -6
  210. package/dist/components/navigation/stepper/styles.css +14 -14
  211. package/dist/components/navigation/tabButton/styles.css +59 -59
  212. package/dist/components/navigation/tabs/styles.css +5 -5
  213. package/dist/components/overlays/modal/styles.css +19 -19
  214. package/dist/hooks/useInfinite.d.ts +3 -1
  215. package/dist/hooks/useInfinite.d.ts.map +1 -1
  216. package/dist/hooks/useInfinite.js +4 -2
  217. package/dist/hooks/useInfinite.js.map +1 -1
  218. package/dist/hooks/useInfiniteArchivableCursor.d.ts +1 -1
  219. package/dist/hooks/useInfiniteArchivableCursor.d.ts.map +1 -1
  220. package/dist/hooks/useInfiniteArchivableCursor.js +11 -4
  221. package/dist/hooks/useInfiniteArchivableCursor.js.map +1 -1
  222. package/dist/hooks/useInfiniteCursor.d.ts +1 -1
  223. package/dist/hooks/useInfiniteCursor.d.ts.map +1 -1
  224. package/dist/hooks/useInfiniteCursor.js +11 -4
  225. package/dist/hooks/useInfiniteCursor.js.map +1 -1
  226. package/dist/styles.css +142 -127
  227. package/package.json +15 -4
  228. package/src/components/buttons/button/styles.css +43 -43
  229. package/src/components/buttons/rowActions/index.tsx +6 -1
  230. package/src/components/data-display/addressBlock/styles.css +2 -2
  231. package/src/components/data-display/colorSwatch/index.tsx +2 -2
  232. package/src/components/data-display/colorSwatch/styles.css +1 -1
  233. package/src/components/data-display/dataTable/index.tsx +6 -3
  234. package/src/components/data-display/dataTable/styles.css +3 -2
  235. package/src/components/data-display/dataTable/utils/parseDataKey.ts +18 -36
  236. package/src/components/data-display/imagePreview/styles.css +2 -2
  237. package/src/components/data-display/infiniteScroll/filters/index.tsx +18 -1
  238. package/src/components/data-display/infiniteScroll/filters/listFilter.tsx +1 -0
  239. package/src/components/data-display/infiniteScroll/filters/rangeFilter.tsx +77 -33
  240. package/src/components/data-display/infiniteScroll/filters/selectFilter.tsx +11 -17
  241. package/src/components/data-display/infiniteScroll/filters/styles.css +30 -1
  242. package/src/components/data-display/infiniteScroll/header/limit.tsx +1 -0
  243. package/src/components/data-display/infiniteScroll/header/sortBy.tsx +1 -0
  244. package/src/components/data-display/infiniteScroll/header/sortDirection.tsx +1 -0
  245. package/src/components/data-display/infiniteScroll/index.tsx +75 -29
  246. package/src/components/data-display/infiniteScroll/styles.css +2 -2
  247. package/src/components/data-display/infiniteScroll/tags/index.tsx +6 -5
  248. package/src/components/data-display/infiniteScroll/tags/listFilterTag.tsx +20 -13
  249. package/src/components/data-display/infiniteScroll/tags/rangeFilterTag.tsx +4 -3
  250. package/src/components/data-display/infiniteScroll/utils/generateQueryString.ts +28 -13
  251. package/src/components/data-display/infiniteScroll/utils/hasPendingChanges.ts +48 -16
  252. package/src/components/data-display/listCard/styles.css +3 -3
  253. package/src/components/data-display/listRow/styles.css +2 -2
  254. package/src/components/data-display/recoveryCodeGrid/styles.css +3 -3
  255. package/src/components/data-display/secretDisplay/styles.css +4 -4
  256. package/src/components/data-display/statCard/styles.css +12 -12
  257. package/src/components/data-display/summaryRow/styles.css +4 -4
  258. package/src/components/data-display/table/index.tsx +2 -2
  259. package/src/components/data-display/table/styles.css +10 -10
  260. package/src/components/data-display/tableFilters/index.tsx +147 -0
  261. package/src/components/data-display/tagCard/index.tsx +3 -2
  262. package/src/components/data-display/tagCard/styles.css +1 -1
  263. package/src/components/feedback/alert/styles.css +15 -15
  264. package/src/components/feedback/badge/index.tsx +36 -16
  265. package/src/components/feedback/badge/styles.css +44 -46
  266. package/src/components/feedback/emptyState/styles.css +2 -2
  267. package/src/components/feedback/loadingOverlay/styles.css +1 -1
  268. package/src/components/feedback/progressBar/styles.css +11 -11
  269. package/src/components/feedback/spinner/styles.css +14 -11
  270. package/src/components/feedback/tooltip/styles.css +9 -7
  271. package/src/components/forms/detailField/styles.css +1 -1
  272. package/src/components/forms/fieldShell/index.tsx +4 -1
  273. package/src/components/forms/fieldShell/styles.css +5 -5
  274. package/src/components/forms/form/styles.css +6 -6
  275. package/src/components/forms/formActions/styles.css +4 -4
  276. package/src/components/forms/formGrid/styles.css +32 -0
  277. package/src/components/forms/infoRow/styles.css +2 -2
  278. package/src/components/forms/optionsGroup/index.tsx +31 -12
  279. package/src/components/forms/optionsGroup/styles.css +1 -1
  280. package/src/components/forms/requiredAsterisk/index.tsx +5 -1
  281. package/src/components/forms/requiredAsterisk/styles.css +1 -1
  282. package/src/components/index.ts +2 -0
  283. package/src/components/inputs/checkbox/index.tsx +3 -2
  284. package/src/components/inputs/checkbox/styles.css +4 -4
  285. package/src/components/inputs/colorPicker/index.tsx +5 -2
  286. package/src/components/inputs/colorPicker/styles.css +3 -3
  287. package/src/components/inputs/dateInput/index.tsx +4 -5
  288. package/src/components/inputs/dateInput/styles.css +5 -5
  289. package/src/components/inputs/dateInput/utils.ts +12 -8
  290. package/src/components/inputs/dropdown/index.tsx +1 -1
  291. package/src/components/inputs/dropdown/styles.css +2 -2
  292. package/src/components/inputs/dropdownArrowButton/styles.css +7 -5
  293. package/src/components/inputs/fileDropZone/index.tsx +4 -3
  294. package/src/components/inputs/fileDropZone/styles.css +12 -12
  295. package/src/components/inputs/fileUpload/index.tsx +33 -23
  296. package/src/components/inputs/fileUpload/styles.css +9 -9
  297. package/src/components/inputs/input/index.tsx +21 -3
  298. package/src/components/inputs/input/styles.css +28 -28
  299. package/src/components/inputs/languageSelect/index.tsx +19 -4
  300. package/src/components/inputs/multiSelect/dropDown.tsx +83 -35
  301. package/src/components/inputs/multiSelect/index.tsx +87 -30
  302. package/src/components/inputs/multiSelect/styles.css +51 -43
  303. package/src/components/inputs/multiSelect/utils.ts +18 -0
  304. package/src/components/inputs/phoneInput/index.tsx +10 -2
  305. package/src/components/inputs/phoneInput/styles.css +13 -13
  306. package/src/components/inputs/radioGroup/index.tsx +2 -1
  307. package/src/components/inputs/richTextEditor/index.tsx +42 -44
  308. package/src/components/inputs/richTextEditor/styles.css +24 -24
  309. package/src/components/inputs/searchList/index.tsx +121 -109
  310. package/src/components/inputs/searchList/styles.css +22 -22
  311. package/src/components/inputs/searchSelect/index.tsx +8 -2
  312. package/src/components/inputs/select/index.tsx +3 -3
  313. package/src/components/inputs/select/styles.css +93 -15
  314. package/src/components/inputs/switch/index.tsx +3 -2
  315. package/src/components/inputs/switch/styles.css +5 -5
  316. package/src/components/inputs/textArea/index.tsx +3 -3
  317. package/src/components/inputs/textArea/styles.css +11 -11
  318. package/src/components/inputs/typeahead/index.tsx +84 -54
  319. package/src/components/inputs/typeahead/styles.css +13 -13
  320. package/src/components/layout/authPage/styles.css +6 -6
  321. package/src/components/layout/borderedSection/styles.css +3 -3
  322. package/src/components/layout/card/styles.css +31 -31
  323. package/src/components/layout/col/styles.css +1 -1
  324. package/src/components/layout/page/styles.css +25 -5
  325. package/src/components/layout/sectionHeader/styles.css +3 -3
  326. package/src/components/navigation/breadcrumbs/styles.css +7 -7
  327. package/src/components/navigation/pagination/styles.css +15 -15
  328. package/src/components/navigation/sidebar/styles.css +6 -6
  329. package/src/components/navigation/stepper/styles.css +14 -14
  330. package/src/components/navigation/tabButton/styles.css +59 -59
  331. package/src/components/navigation/tabs/styles.css +5 -5
  332. package/src/components/overlays/modal/styles.css +19 -19
  333. package/src/hooks/useInfinite.ts +7 -3
  334. package/src/hooks/useInfiniteArchivableCursor.ts +11 -4
  335. package/src/hooks/useInfiniteCursor.ts +11 -4
  336. package/src/styles.css +142 -127
@@ -1,10 +1,13 @@
1
+ /* An empty box, so as a flex item it would shrink to fit a short or narrow
2
+ container (an oval while a page is still laying out). */
1
3
  .k-spinner {
2
4
  border-radius: 50%;
3
5
  display: inline-block;
4
- animation: spin 0.8s linear infinite;
6
+ flex-shrink: 0;
7
+ animation: k-spin 0.8s linear infinite;
5
8
  }
6
9
 
7
- @keyframes spin {
10
+ @keyframes k-spin {
8
11
  0% {
9
12
  transform: rotate(0deg);
10
13
  }
@@ -16,36 +19,36 @@
16
19
  .k-spinner-lg {
17
20
  height: 3.75rem;
18
21
  width: 3.75rem;
19
- border: 0.375rem solid var(--shadow-color);
22
+ border: 0.375rem solid var(--k-shadow-color);
20
23
  }
21
24
 
22
25
  .k-spinner-md {
23
26
  height: 2.5rem;
24
27
  width: 2.5rem;
25
- border: 0.25rem solid var(--shadow-color);
28
+ border: 0.25rem solid var(--k-shadow-color);
26
29
  }
27
30
 
28
31
  .k-spinner-sm {
29
32
  height: 1.25rem;
30
33
  width: 1.25rem;
31
- border: 0.125rem solid var(--shadow-color);
34
+ border: 0.125rem solid var(--k-shadow-color);
32
35
  }
33
36
 
34
37
  .k-spinner-primary {
35
- border-left-color: var(--primary-color);
38
+ border-left-color: var(--k-primary-color);
36
39
  }
37
40
  .k-spinner-secondary {
38
- border-left-color: var(--secondary-color);
41
+ border-left-color: var(--k-secondary-color);
39
42
  }
40
43
  .k-spinner-light {
41
- border-left-color: var(--light-color);
44
+ border-left-color: var(--k-light-color);
42
45
  }
43
46
  .k-spinner-success {
44
- border-left-color: var(--success-color);
47
+ border-left-color: var(--k-success-color);
45
48
  }
46
49
  .k-spinner-danger {
47
- border-left-color: var(--danger-color);
50
+ border-left-color: var(--k-danger-color);
48
51
  }
49
52
  .k-spinner-warning {
50
- border-left-color: var(--warning-color);
53
+ border-left-color: var(--k-warning-color);
51
54
  }
@@ -33,11 +33,13 @@
33
33
 
34
34
  .k-tooltip-content {
35
35
  position: relative;
36
- background-color: var(--text-color);
37
- color: var(--text-color-light);
36
+ background-color: var(--k-text-color);
37
+ /* An inverted surface, so the text takes the page background, not a fixed
38
+ light color that disappears on the dark theme's light tooltip. */
39
+ color: var(--k-background-color);
38
40
  padding: 0.5rem 0.75rem;
39
41
  border-radius: 0.25rem;
40
- font-size: var(--text-size-sm);
42
+ font-size: var(--k-text-size-sm);
41
43
  white-space: normal;
42
44
  max-width: 12.5rem;
43
45
  text-align: center;
@@ -59,26 +61,26 @@
59
61
  bottom: -0.625rem; /* Double the border-width to ensure visibility */
60
62
  left: 50%;
61
63
  transform: translateX(-50%);
62
- border-color: var(--text-color) transparent transparent transparent;
64
+ border-color: var(--k-text-color) transparent transparent transparent;
63
65
  }
64
66
 
65
67
  .k-tooltip-bottom .k-tooltip-content::after {
66
68
  top: -0.625rem; /* Double the border-width to ensure visibility */
67
69
  left: 50%;
68
70
  transform: translateX(-50%);
69
- border-color: transparent transparent var(--text-color) transparent;
71
+ border-color: transparent transparent var(--k-text-color) transparent;
70
72
  }
71
73
 
72
74
  .k-tooltip-left .k-tooltip-content::after {
73
75
  right: -0.625rem; /* Double the border-width to ensure visibility */
74
76
  top: 50%;
75
77
  transform: translateY(-50%);
76
- border-color: transparent transparent transparent var(--text-color);
78
+ border-color: transparent transparent transparent var(--k-text-color);
77
79
  }
78
80
 
79
81
  .k-tooltip-right .k-tooltip-content::after {
80
82
  left: -0.625rem; /* Double the border-width to ensure visibility */
81
83
  top: 50%;
82
84
  transform: translateY(-50%);
83
- border-color: transparent var(--text-color) transparent transparent;
85
+ border-color: transparent var(--k-text-color) transparent transparent;
84
86
  }
@@ -10,7 +10,7 @@
10
10
  font-weight: 600;
11
11
  text-transform: uppercase;
12
12
  letter-spacing: 0.04em;
13
- color: var(--text-color-secondary);
13
+ color: var(--k-text-color-secondary);
14
14
  }
15
15
 
16
16
  .k-detail-field-value {
@@ -11,6 +11,8 @@ interface FieldShellProps {
11
11
  required?: boolean;
12
12
  /** `htmlFor` target id, used when label is a string. */
13
13
  htmlFor?: string;
14
+ /** Id for the label element, for a control named with `aria-labelledby` (a `<label>` can't target a non-form element). */
15
+ labelId?: string;
14
16
  /** Optional right-aligned annotation in the label row (e.g. char count). */
15
17
  labelAside?: ReactNode;
16
18
  /** Optional error message rendered below the input. */
@@ -28,6 +30,7 @@ const FieldShell = ({
28
30
  label,
29
31
  required,
30
32
  htmlFor,
33
+ labelId,
31
34
  labelAside,
32
35
  error,
33
36
  helperText,
@@ -38,7 +41,7 @@ const FieldShell = ({
38
41
  {(label || labelAside) && (
39
42
  <div className="k-field-shell-label-row">
40
43
  {label && (
41
- <label htmlFor={htmlFor} className="k-field-shell-label">
44
+ <label id={labelId} htmlFor={htmlFor} className="k-field-shell-label">
42
45
  {typeof label === "string" ? (
43
46
  <>
44
47
  {label}
@@ -15,24 +15,24 @@
15
15
  display: block;
16
16
  font-size: 0.875rem;
17
17
  font-weight: 500;
18
- color: var(--text-color);
18
+ color: var(--k-text-color);
19
19
  }
20
20
 
21
21
  .k-field-shell-aside {
22
22
  font-weight: 500;
23
- font-size: var(--text-size-sm);
24
- color: var(--text-color-secondary);
23
+ font-size: var(--k-text-size-sm);
24
+ color: var(--k-text-color-secondary);
25
25
  margin-left: 0.5rem;
26
26
  }
27
27
 
28
28
  .k-field-shell-error {
29
29
  margin-top: 0.25rem;
30
30
  font-size: 0.8125rem;
31
- color: var(--danger-color-text);
31
+ color: var(--k-danger-color-text);
32
32
  }
33
33
 
34
34
  .k-field-shell-helper {
35
35
  margin-top: 0.25rem;
36
36
  font-size: 0.8125rem;
37
- color: var(--text-color-secondary);
37
+ color: var(--k-text-color-secondary);
38
38
  }
@@ -9,19 +9,19 @@
9
9
  }
10
10
 
11
11
  .k-form-validating .k-input-invalid {
12
- border-color: var(--danger-color);
12
+ border-color: var(--k-danger-color);
13
13
  }
14
14
 
15
15
  .k-form-validating .k-input-invalid:focus {
16
- border-color: var(--danger-color);
17
- box-shadow: 0 0 0 0.1875rem var(--shadow-color-hover);
16
+ border-color: var(--k-danger-color);
17
+ box-shadow: 0 0 0 0.1875rem var(--k-shadow-color-hover);
18
18
  }
19
19
 
20
20
  .k-form-validating .k-input-valid {
21
- border-color: var(--success-color);
21
+ border-color: var(--k-success-color);
22
22
  }
23
23
 
24
24
  .k-form-validating .k-input-valid:focus {
25
- border-color: var(--success-color);
26
- box-shadow: 0 0 0 0.1875rem var(--shadow-color-hover);
25
+ border-color: var(--k-success-color);
26
+ box-shadow: 0 0 0 0.1875rem var(--k-shadow-color-hover);
27
27
  }
@@ -39,11 +39,11 @@
39
39
  .k-form-error {
40
40
  background-color: color-mix(
41
41
  in srgb,
42
- var(--danger-color) 12%,
43
- var(--background-color)
42
+ var(--k-danger-color) 12%,
43
+ var(--k-background-color)
44
44
  );
45
- color: var(--danger-color-text);
46
- border: 0.0625rem solid var(--danger-color);
45
+ color: var(--k-danger-color-text);
46
+ border: 0.0625rem solid var(--k-danger-color);
47
47
  border-radius: 0.375rem;
48
48
  padding: 0.5rem 0.75rem;
49
49
  font-size: 0.875rem;
@@ -39,3 +39,35 @@
39
39
  grid-template-columns: 1fr;
40
40
  }
41
41
  }
42
+
43
+ /* Each item spans three rows (label, control, message) and fields share them
44
+ through subgrid, so controls in a row stay level when one label wraps or
45
+ one field shows helper or error text. Non-field items span the same three
46
+ rows so auto-placement stays one item per cell. */
47
+ .k-form-grid > * {
48
+ grid-row: span 3;
49
+ }
50
+
51
+ .k-form-grid > .k-field-shell,
52
+ .k-form-grid > * > .k-field-shell,
53
+ .k-form-grid > :has(> .k-field-shell) {
54
+ display: grid;
55
+ grid-template-rows: subgrid;
56
+ grid-row: span 3;
57
+ row-gap: 0;
58
+ }
59
+
60
+ :is(.k-form-grid > .k-field-shell, .k-form-grid > * > .k-field-shell) > * {
61
+ grid-row: 2;
62
+ }
63
+
64
+ :is(.k-form-grid > .k-field-shell, .k-form-grid > * > .k-field-shell)
65
+ > .k-field-shell-label-row {
66
+ grid-row: 1;
67
+ align-self: end;
68
+ }
69
+
70
+ :is(.k-form-grid > .k-field-shell, .k-form-grid > * > .k-field-shell)
71
+ > :is(.k-field-shell-error, .k-field-shell-helper) {
72
+ grid-row: 3;
73
+ }
@@ -2,7 +2,7 @@
2
2
  display: flex;
3
3
  gap: 0.75rem;
4
4
  padding: 0.5rem 0;
5
- border-bottom: 0.0625rem solid var(--border-color);
5
+ border-bottom: 0.0625rem solid var(--k-border-color);
6
6
  }
7
7
 
8
8
  .k-info-row:last-child {
@@ -22,7 +22,7 @@
22
22
 
23
23
  .k-info-row-label {
24
24
  font-weight: 500;
25
- color: var(--text-color-secondary);
25
+ color: var(--k-text-color-secondary);
26
26
  }
27
27
 
28
28
  .k-info-row-value {
@@ -1,26 +1,45 @@
1
1
  "use client";
2
2
 
3
3
  import MandatoryAsterisk from "../requiredAsterisk/index.js";
4
- import { ReactNode } from "react";
4
+ import { ReactNode, useId } from "react";
5
5
  import "./styles.css";
6
6
 
7
7
  interface OptionsGroupProps {
8
8
  label?: string;
9
9
  required?: boolean;
10
+ /** `radiogroup` for radios; `group` (the default) for checkboxes. */
11
+ role?: "group" | "radiogroup";
10
12
  children: ReactNode;
11
13
  }
12
14
 
13
15
  /** Internal shell for CheckboxGroup / RadioGroup — label + option list. */
14
- const OptionsGroup = ({ label, required, children }: OptionsGroupProps) => (
15
- <div className="k-options-group">
16
- {label && (
17
- <label className="k-options-group-label">
18
- {label}
19
- {required && <MandatoryAsterisk />}
20
- </label>
21
- )}
22
- <div className="k-options-group-options">{children}</div>
23
- </div>
24
- );
16
+ const OptionsGroup = ({
17
+ label,
18
+ required,
19
+ role = "group",
20
+ children,
21
+ }: OptionsGroupProps) => {
22
+ const labelId = useId();
23
+ return (
24
+ <div
25
+ className="k-options-group"
26
+ role={role}
27
+ aria-labelledby={label ? labelId : undefined}
28
+ aria-required={(role === "radiogroup" && required) || undefined}
29
+ >
30
+ {label && (
31
+ <label id={labelId} className="k-options-group-label">
32
+ {label}
33
+ {required && <MandatoryAsterisk />}
34
+ {/* ARIA can't mark a checkbox group required, so say it. */}
35
+ {required && role === "group" && (
36
+ <span className="k-sr-only"> (required)</span>
37
+ )}
38
+ </label>
39
+ )}
40
+ <div className="k-options-group-options">{children}</div>
41
+ </div>
42
+ );
43
+ };
25
44
 
26
45
  export default OptionsGroup;
@@ -7,7 +7,7 @@
7
7
  .k-options-group-label {
8
8
  font-weight: 600;
9
9
  font-size: 0.875rem;
10
- color: var(--text-color);
10
+ color: var(--k-text-color);
11
11
  }
12
12
 
13
13
  .k-options-group-options {
@@ -2,8 +2,12 @@
2
2
 
3
3
  import "./styles.css";
4
4
 
5
+ // Hidden from assistive tech, which reads "required" from the field itself.
5
6
  const MandatoryAsterisk = () => (
6
- <span className="k-mandatory-asterisk"> *</span>
7
+ <span className="k-mandatory-asterisk" aria-hidden="true">
8
+ {" "}
9
+ *
10
+ </span>
7
11
  );
8
12
 
9
13
  export default MandatoryAsterisk;
@@ -1,3 +1,3 @@
1
1
  .k-mandatory-asterisk {
2
- color: var(--danger-color-text);
2
+ color: var(--k-danger-color-text);
3
3
  }
@@ -1,6 +1,7 @@
1
1
  export { default as RecoveryCodeGrid } from "./data-display/recoveryCodeGrid/index.js";
2
2
  export { default as ConfirmationModal } from "./overlays/confirmationModal/index.js";
3
3
  export { default as InfiniteScroll } from "./data-display/infiniteScroll/index.js";
4
+ export { default as TableFilters } from "./data-display/tableFilters/index.js";
4
5
  export {
5
6
  DateInput,
6
7
  DateTimeInput,
@@ -122,6 +123,7 @@ export type {
122
123
  AddressBlockAddress,
123
124
  } from "./data-display/addressBlock/index.js";
124
125
  export type { PaginationProps } from "./navigation/pagination/index.js";
126
+ export type { TableFiltersProps } from "./data-display/tableFilters/index.js";
125
127
  export type {
126
128
  StepperProps,
127
129
  StepperStep,
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import MandatoryAsterisk from "../../forms/requiredAsterisk/index.js";
4
+ import { useId } from "react";
4
5
  import "./styles.css";
5
6
 
6
7
  interface CheckboxProps {
@@ -30,8 +31,8 @@ const Checkbox = (props: CheckboxProps) => {
30
31
  readOnly = false,
31
32
  } = props;
32
33
 
33
- const inputId =
34
- props.id || `checkbox-${Math.random().toString(36).substring(2, 9)}`;
34
+ const generatedId = useId();
35
+ const inputId = props.id || `checkbox-${generatedId}`;
35
36
 
36
37
  // Browsers ignore `readonly` on checkboxes, so a click (or Space) is
37
38
  // cancelled here instead; aria-readonly tells assistive tech why.
@@ -25,7 +25,7 @@
25
25
  height: 1.25rem;
26
26
  width: 1.25rem;
27
27
  border-radius: 0.25rem;
28
- border-color: var(--border-color);
28
+ border-color: var(--k-border-color);
29
29
  }
30
30
 
31
31
  .k-checkbox-label {
@@ -33,7 +33,7 @@
33
33
  margin-bottom: 0.1rem;
34
34
  font-size: 0.875rem;
35
35
  font-weight: 500;
36
- color: var(--text-color);
36
+ color: var(--k-text-color);
37
37
  }
38
38
 
39
39
  .k-checkbox[aria-readonly="true"] {
@@ -41,7 +41,7 @@
41
41
  }
42
42
 
43
43
  .k-checkbox-label:has(+ .k-checkbox[aria-readonly="true"]) {
44
- color: var(--text-color-secondary);
44
+ color: var(--k-text-color-secondary);
45
45
  }
46
46
 
47
47
  .k-checkbox:disabled {
@@ -51,6 +51,6 @@
51
51
 
52
52
  .k-checkbox:disabled + .k-checkbox-label,
53
53
  .k-checkbox-label:has(+ .k-checkbox:disabled) {
54
- color: var(--text-color-disabled);
54
+ color: var(--k-text-color-disabled);
55
55
  cursor: not-allowed;
56
56
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
+ import { ChangeEvent, useId } from "react";
3
4
  import Input from "../input/index.js";
4
- import { ChangeEvent } from "react";
5
5
  import "./styles.css";
6
6
 
7
7
  export interface ColorPickerProps {
@@ -30,6 +30,7 @@ const ColorPicker = ({
30
30
  required,
31
31
  invalidMessage = DEFAULT_INVALID_MESSAGE,
32
32
  }: ColorPickerProps) => {
33
+ const inputId = useId();
33
34
  const trimmed = value.trim();
34
35
  const isEmpty = trimmed === "";
35
36
  const isValid = HEX_RE.test(trimmed);
@@ -46,7 +47,7 @@ const ColorPicker = ({
46
47
  return (
47
48
  <div className="k-color-picker">
48
49
  {label && (
49
- <label className="k-color-picker-label">
50
+ <label className="k-color-picker-label" htmlFor={inputId}>
50
51
  {label}
51
52
  {required && <span aria-hidden> *</span>}
52
53
  </label>
@@ -61,9 +62,11 @@ const ColorPicker = ({
61
62
  />
62
63
  <div className="k-color-picker-input">
63
64
  <Input
65
+ id={inputId}
64
66
  value={value}
65
67
  onChange={(e) => onChange(e.target.value)}
66
68
  placeholder={placeholder}
69
+ required={required}
67
70
  />
68
71
  </div>
69
72
  </div>
@@ -7,7 +7,7 @@
7
7
  .k-color-picker-label {
8
8
  font-size: 0.875rem;
9
9
  font-weight: 500;
10
- color: var(--text-color);
10
+ color: var(--k-text-color);
11
11
  }
12
12
 
13
13
  .k-color-picker-row {
@@ -21,7 +21,7 @@
21
21
  -webkit-appearance: none;
22
22
  width: 2.5rem;
23
23
  height: 2.5rem;
24
- border: 0.0625rem solid var(--border-color);
24
+ border: 0.0625rem solid var(--k-border-color);
25
25
  border-radius: 0.375rem;
26
26
  padding: 0;
27
27
  cursor: pointer;
@@ -48,5 +48,5 @@
48
48
 
49
49
  .k-color-picker-error {
50
50
  font-size: 0.8125rem;
51
- color: var(--danger-color-text);
51
+ color: var(--k-danger-color-text);
52
52
  }
@@ -4,7 +4,6 @@ import FieldShell from "../../forms/fieldShell/index.js";
4
4
  import { ChangeEvent, useId } from "react";
5
5
  import "./styles.css";
6
6
  import {
7
- dateInputToIso,
8
7
  dateTimeLocalToIso,
9
8
  toDateInputValue,
10
9
  toDateTimeLocalValue,
@@ -23,10 +22,10 @@ export interface DateInputBaseProps {
23
22
  }
24
23
 
25
24
  export interface DateInputProps extends DateInputBaseProps {
26
- /** Accepts an ISO string or `Date`. Empty string and null both mean "no value". */
25
+ /** Accepts a `yyyy-mm-dd` date, an ISO string or `Date`. Empty string and null both mean "no value". */
27
26
  value: string | Date | null;
28
- /** Fires with an ISO date-time string (start-of-day) or `null` when cleared. */
29
- onChange: (iso: string | null) => void;
27
+ /** Fires with the picked calendar day as `yyyy-mm-dd`, or `null` when cleared. */
28
+ onChange: (date: string | null) => void;
30
29
  }
31
30
 
32
31
  export interface DateTimeInputProps extends DateInputBaseProps {
@@ -57,7 +56,7 @@ export const DateInput = ({
57
56
  const fallbackId = useId();
58
57
  const id = idProp ?? fallbackId;
59
58
  const handle = (e: ChangeEvent<HTMLInputElement>) =>
60
- onChange(dateInputToIso(e.target.value));
59
+ onChange(e.target.value || null);
61
60
  return (
62
61
  <FieldShell
63
62
  label={label}
@@ -1,19 +1,19 @@
1
1
  .k-date-input-field {
2
- border: 0.0625rem solid var(--border-color);
2
+ border: 0.0625rem solid var(--k-border-color);
3
3
  border-radius: 0.375rem;
4
4
  padding: 0.5rem 0.625rem;
5
5
  font-size: 0.9375rem;
6
- background-color: var(--background-color);
7
- color: var(--text-color);
6
+ background-color: var(--k-background-color);
7
+ color: var(--k-text-color);
8
8
  width: 100%;
9
9
  box-sizing: border-box;
10
10
  }
11
11
 
12
12
  .k-date-input-field:focus {
13
13
  outline: none;
14
- border-color: var(--primary-color);
14
+ border-color: var(--k-primary-color);
15
15
  box-shadow: 0 0 0 0.125rem
16
- color-mix(in srgb, var(--primary-color) 30%, transparent);
16
+ color-mix(in srgb, var(--k-primary-color) 30%, transparent);
17
17
  }
18
18
 
19
19
  .k-date-input-field:disabled {
@@ -1,10 +1,20 @@
1
1
  const pad = (n: number) => n.toString().padStart(2, "0");
2
2
 
3
+ // `new Date("2024-01-05")` is UTC midnight, which is the previous day west of
4
+ // UTC; a date-only string means that calendar day locally.
5
+ const toDate = (value: string | Date): Date => {
6
+ if (value instanceof Date) return value;
7
+ const dateOnly = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
8
+ if (!dateOnly) return new Date(value);
9
+ const [, y, m, d] = dateOnly.map(Number);
10
+ return new Date(y, m - 1, d);
11
+ };
12
+
3
13
  export const toDateInputValue = (
4
14
  value: string | Date | null | undefined
5
15
  ): string => {
6
16
  if (value == null || value === "") return "";
7
- const d = value instanceof Date ? value : new Date(value);
17
+ const d = toDate(value);
8
18
  if (Number.isNaN(d.getTime())) return "";
9
19
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
10
20
  };
@@ -13,19 +23,13 @@ export const toDateTimeLocalValue = (
13
23
  value: string | Date | null | undefined
14
24
  ): string => {
15
25
  if (value == null || value === "") return "";
16
- const d = value instanceof Date ? value : new Date(value);
26
+ const d = toDate(value);
17
27
  if (Number.isNaN(d.getTime())) return "";
18
28
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(
19
29
  d.getHours()
20
30
  )}:${pad(d.getMinutes())}`;
21
31
  };
22
32
 
23
- export const dateInputToIso = (value: string): string | null => {
24
- if (!value) return null;
25
- const d = new Date(`${value}T00:00:00`);
26
- return Number.isNaN(d.getTime()) ? null : d.toISOString();
27
- };
28
-
29
33
  export const dateTimeLocalToIso = (value: string): string | null => {
30
34
  if (!value) return null;
31
35
  const d = new Date(value);
@@ -46,7 +46,7 @@ const Dropdown = (props: DropdownProps) => {
46
46
  setIsOpen(!isOpen);
47
47
  };
48
48
 
49
- useOutsideClick([dropdownRef], () => setIsOpen(false));
49
+ useOutsideClick([dropdownRef], () => setIsOpen(false), isOpen);
50
50
 
51
51
  const label = (
52
52
  <div className="k-dropdown-label-container">
@@ -7,9 +7,9 @@
7
7
  .k-dropdown-menu {
8
8
  position: absolute;
9
9
  top: 100%;
10
- background-color: var(--background-color);
10
+ background-color: var(--k-background-color);
11
11
  border-radius: 0.5rem;
12
- box-shadow: 0 0.375rem 1.25rem var(--shadow-color);
12
+ box-shadow: 0 0.375rem 1.25rem var(--k-shadow-color);
13
13
  overflow: hidden;
14
14
  transform: translateY(-0.625rem);
15
15
  opacity: 0;
@@ -1,21 +1,26 @@
1
1
  /* Generic dropdown arrow toggle — used by Input (dropDown), MultiSelect, etc. */
2
+ /* Spans the field's height and centers the chevron, however tall the field
3
+ grows (MultiSelect with chips). */
2
4
  .k-dropdown-arrow {
3
5
  position: absolute;
6
+ top: 0;
7
+ bottom: 0;
4
8
  right: 0.75rem;
9
+ display: flex;
5
10
  background: none;
6
11
  border: none;
7
12
  cursor: pointer;
8
13
  padding: 0;
9
14
  align-items: center;
10
15
  justify-content: center;
11
- color: var(--text-color-secondary);
16
+ color: var(--k-text-color-secondary);
12
17
  transition:
13
18
  color 0.2s ease-in-out,
14
19
  transform 0.2s ease-in-out;
15
20
  }
16
21
 
17
22
  .k-dropdown-arrow:hover:not(:disabled) {
18
- color: var(--primary-color-text);
23
+ color: var(--k-primary-color-text);
19
24
  }
20
25
 
21
26
  .k-dropdown-arrow:focus {
@@ -29,17 +34,14 @@
29
34
 
30
35
  .k-dropdown-arrow-sm {
31
36
  font-size: 0.75rem;
32
- top: 0.5rem;
33
37
  }
34
38
 
35
39
  .k-dropdown-arrow-md {
36
40
  font-size: 0.875rem;
37
- top: 0.625rem;
38
41
  }
39
42
 
40
43
  .k-dropdown-arrow-lg {
41
44
  font-size: 1rem;
42
- top: 0.75rem;
43
45
  }
44
46
 
45
47
  .k-dropdown-arrow-open {