@cryptlex/web-components 3.8.1 → 4.1.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 (181) hide show
  1. package/dist/components/data-table/data-table-filter.es.js +178 -0
  2. package/dist/components/data-table/data-table-filter.es.js.map +1 -0
  3. package/dist/components/data-table/data-table.es.js +402 -153
  4. package/dist/components/data-table/data-table.es.js.map +1 -1
  5. package/dist/components/data-table/table-commons.es.js +267 -19
  6. package/dist/components/data-table/table-commons.es.js.map +1 -1
  7. package/dist/components/inputs/calendar.es.js +12 -12
  8. package/dist/components/inputs/calendar.es.js.map +1 -1
  9. package/dist/components/inputs/checkbox.es.js +13 -13
  10. package/dist/components/inputs/checkbox.es.js.map +1 -1
  11. package/dist/components/inputs/country-select.es.js +3 -3
  12. package/dist/components/inputs/country-select.es.js.map +1 -1
  13. package/dist/components/inputs/form-field.es.js +1 -1
  14. package/dist/components/inputs/input-otp.es.js +2 -2
  15. package/dist/components/inputs/input-otp.es.js.map +1 -1
  16. package/dist/components/inputs/input.es.js +7 -7
  17. package/dist/components/inputs/input.es.js.map +1 -1
  18. package/dist/components/inputs/multi-select.es.js +7 -7
  19. package/dist/components/inputs/multi-select.es.js.map +1 -1
  20. package/dist/components/inputs/radio-group.es.js +1 -1
  21. package/dist/components/inputs/search-input.es.js.map +1 -1
  22. package/dist/components/inputs/select.es.js +10 -10
  23. package/dist/components/inputs/select.es.js.map +1 -1
  24. package/dist/components/inputs/textarea.es.js +4 -4
  25. package/dist/components/key-value-card/key-value-card.es.js +6 -9
  26. package/dist/components/key-value-card/key-value-card.es.js.map +1 -1
  27. package/dist/components/ui/accordion.es.js +6 -6
  28. package/dist/components/ui/accordion.es.js.map +1 -1
  29. package/dist/components/ui/alert.es.js +4 -4
  30. package/dist/components/ui/avatar.es.js +1 -1
  31. package/dist/components/ui/badge.es.js +1 -1
  32. package/dist/components/ui/breadcrumb.es.js +2 -2
  33. package/dist/components/ui/breadcrumb.es.js.map +1 -1
  34. package/dist/components/ui/button.es.js +27 -25
  35. package/dist/components/ui/button.es.js.map +1 -1
  36. package/dist/components/ui/card.es.js +8 -8
  37. package/dist/components/ui/card.es.js.map +1 -1
  38. package/dist/components/ui/copy-button.es.js +12 -14
  39. package/dist/components/ui/copy-button.es.js.map +1 -1
  40. package/dist/components/ui/dialog.es.js +4 -4
  41. package/dist/components/ui/dialog.es.js.map +1 -1
  42. package/dist/components/ui/drawer.es.js +10 -10
  43. package/dist/components/ui/drawer.es.js.map +1 -1
  44. package/dist/components/ui/dropdown-menu.es.js +13 -13
  45. package/dist/components/ui/dropdown-menu.es.js.map +1 -1
  46. package/dist/components/ui/label.es.js +1 -1
  47. package/dist/components/ui/loader.es.js +3 -3
  48. package/dist/components/ui/pagination.es.js +2 -2
  49. package/dist/components/ui/pagination.es.js.map +1 -1
  50. package/dist/components/ui/popover.es.js +5 -5
  51. package/dist/components/ui/popover.es.js.map +1 -1
  52. package/dist/components/ui/separator.es.js +1 -1
  53. package/dist/components/ui/sheet.es.js +59 -55
  54. package/dist/components/ui/sheet.es.js.map +1 -1
  55. package/dist/components/ui/sidebar.es.js +105 -105
  56. package/dist/components/ui/sidebar.es.js.map +1 -1
  57. package/dist/components/ui/skeleton.es.js +1 -1
  58. package/dist/components/ui/static-data-table.es.js +1 -1
  59. package/dist/components/ui/static-data-table.es.js.map +1 -1
  60. package/dist/components/ui/table.es.js +8 -8
  61. package/dist/components/ui/table.es.js.map +1 -1
  62. package/dist/components/ui/tabs.es.js +1 -1
  63. package/dist/components/ui/tabs.es.js.map +1 -1
  64. package/dist/components/ui/timeline.es.js +3 -3
  65. package/dist/components/ui/timeline.es.js.map +1 -1
  66. package/dist/components/ui/tooltip.es.js +1 -1
  67. package/dist/index.es.d.ts +128 -32
  68. package/dist/index.es.js +237 -238
  69. package/dist/index.es.js.map +1 -1
  70. package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/date/index.es.js.map +1 -1
  71. package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/date/mini.es.js.map +1 -1
  72. package/dist/node_modules/.pnpm/@date-fns_tz@1.2.0/node_modules/@date-fns/tz/tzOffset/index.es.js.map +1 -1
  73. package/dist/node_modules/.pnpm/@floating-ui_core@1.7.2/node_modules/@floating-ui/core/dist/floating-ui.core.es.js.map +1 -1
  74. package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.es.js.map +1 -1
  75. package/dist/node_modules/.pnpm/@floating-ui_react-dom@2.1.4_react-dom@19.1.0_react@19.1.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js.map +1 -1
  76. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.es.js.map +1 -1
  77. package/dist/node_modules/.pnpm/@radix-ui_primitive@1.1.2/node_modules/@radix-ui/primitive/dist/index.es.js.map +1 -1
  78. package/dist/node_modules/.pnpm/@radix-ui_react-accordion@1.2.11_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-accordion/dist/index.es.js.map +1 -1
  79. package/dist/node_modules/.pnpm/@radix-ui_react-collapsible@1.1.11_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-collapsible/dist/index.es.js.map +1 -1
  80. package/dist/node_modules/.pnpm/@radix-ui_react-collection@1.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-collection/dist/index.es.js.map +1 -1
  81. package/dist/node_modules/.pnpm/@radix-ui_react-compose-refs@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -1
  82. package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
  83. package/dist/node_modules/.pnpm/@radix-ui_react-dialog@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
  84. package/dist/node_modules/.pnpm/@radix-ui_react-dismissable-layer@1.1.10_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -1
  85. package/dist/node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js +10 -10
  86. package/dist/node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js.map +1 -1
  87. package/dist/node_modules/.pnpm/@radix-ui_react-focus-guards@1.1.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-focus-guards/dist/index.es.js.map +1 -1
  88. package/dist/node_modules/.pnpm/@radix-ui_react-focus-scope@1.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
  89. package/dist/node_modules/.pnpm/@radix-ui_react-id@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -1
  90. package/dist/node_modules/.pnpm/@radix-ui_react-label@2.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-label/dist/index.es.js.map +1 -1
  91. package/dist/node_modules/.pnpm/@radix-ui_react-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-menu/dist/index.es.js +4 -4
  92. package/dist/node_modules/.pnpm/@radix-ui_react-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-menu/dist/index.es.js.map +1 -1
  93. package/dist/node_modules/.pnpm/@radix-ui_react-popover@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popover/dist/index.es.js.map +1 -1
  94. package/dist/node_modules/.pnpm/@radix-ui_react-popper@1.2.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popper/dist/index.es.js.map +1 -1
  95. package/dist/node_modules/.pnpm/@radix-ui_react-presence@1.1.4_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-presence/dist/index.es.js.map +1 -1
  96. package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.3_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -1
  97. package/dist/node_modules/.pnpm/@radix-ui_react-radio-group@1.3.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-radio-group/dist/index.es.js.map +1 -1
  98. package/dist/node_modules/.pnpm/@radix-ui_react-roving-focus@1.1.10_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-roving-focus/dist/index.es.js.map +1 -1
  99. package/dist/node_modules/.pnpm/@radix-ui_react-slot@1.2.3_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
  100. package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.12_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-tabs/dist/index.es.js.map +1 -1
  101. package/dist/node_modules/.pnpm/@radix-ui_react-tooltip@1.2.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-tooltip/dist/index.es.js.map +1 -1
  102. package/dist/node_modules/.pnpm/@radix-ui_react-use-callback-ref@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -1
  103. package/dist/node_modules/.pnpm/@radix-ui_react-use-controllable-state@1.2.2_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js.map +1 -1
  104. package/dist/node_modules/.pnpm/@radix-ui_react-use-escape-keydown@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-escape-keydown/dist/index.es.js.map +1 -1
  105. package/dist/node_modules/.pnpm/@radix-ui_react-use-size@1.1.1_@types_react@19.1.0_react@19.1.0/node_modules/@radix-ui/react-use-size/dist/index.es.js.map +1 -1
  106. package/dist/node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.es.js.map +1 -1
  107. package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.es.js.map +1 -1
  108. package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.es.js.map +1 -1
  109. package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.es.js.map +1 -1
  110. package/dist/node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.es.js.map +1 -1
  111. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/DayPicker.es.js.map +1 -1
  112. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarDay.es.js.map +1 -1
  113. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.es.js.map +1 -1
  114. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.es.js.map +1 -1
  115. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/classes/DateLib.es.js.map +1 -1
  116. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/components/DayButton.es.js.map +1 -1
  117. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/components/Nav.es.js.map +1 -1
  118. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.es.js.map +1 -1
  119. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.es.js.map +1 -1
  120. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.es.js.map +1 -1
  121. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDates.es.js.map +1 -1
  122. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDays.es.js.map +1 -1
  123. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.es.js.map +1 -1
  124. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.es.js.map +1 -1
  125. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.es.js.map +1 -1
  126. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getMonths.es.js.map +1 -1
  127. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.es.js.map +1 -1
  128. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.es.js.map +1 -1
  129. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.es.js.map +1 -1
  130. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useMulti.es.js.map +1 -1
  131. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useRange.es.js.map +1 -1
  132. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/selection/useSingle.es.js.map +1 -1
  133. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useAnimation.es.js.map +1 -1
  134. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useCalendar.es.js.map +1 -1
  135. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/useFocus.es.js.map +1 -1
  136. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/addToRange.es.js.map +1 -1
  137. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.es.js.map +1 -1
  138. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.es.js.map +1 -1
  139. package/dist/node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.es.js.map +1 -1
  140. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/component.es.js.map +1 -1
  141. package/dist/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.es.js.map +1 -1
  142. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/Combination.es.js.map +1 -1
  143. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js.map +1 -1
  144. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.es.js.map +1 -1
  145. package/dist/node_modules/.pnpm/react-remove-scroll@2.7.1_@types_react@19.1.0_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.es.js.map +1 -1
  146. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/component.es.js.map +1 -1
  147. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/hook.es.js.map +1 -1
  148. package/dist/node_modules/.pnpm/react-style-singleton@2.2.3_@types_react@19.1.0_react@19.1.0/node_modules/react-style-singleton/dist/es2015/singleton.es.js.map +1 -1
  149. package/dist/node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.es.js.map +1 -1
  150. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.1.0_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.es.js.map +1 -1
  151. package/dist/node_modules/.pnpm/use-callback-ref@1.3.3_@types_react@19.1.0_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useRef.es.js.map +1 -1
  152. package/dist/node_modules/.pnpm/use-sidecar@1.1.3_@types_react@19.1.0_react@19.1.0/node_modules/use-sidecar/dist/es2015/medium.es.js.map +1 -1
  153. package/dist/utils/{index.es.js → primitives.es.js} +1 -1
  154. package/dist/utils/primitives.es.js.map +1 -0
  155. package/dist/{hooks → utils}/use-mobile.es.js.map +1 -1
  156. package/lib/theme.css +10 -12
  157. package/lib/tokens.css +3 -3
  158. package/lib/utilities.css +8 -8
  159. package/package.json +9 -11
  160. package/dist/components/data-table/column-picker.es.js +0 -50
  161. package/dist/components/data-table/column-picker.es.js.map +0 -1
  162. package/dist/components/data-table/page-size.es.js +0 -25
  163. package/dist/components/data-table/page-size.es.js.map +0 -1
  164. package/dist/components/data-table/paginator.es.js +0 -64
  165. package/dist/components/data-table/paginator.es.js.map +0 -1
  166. package/dist/components/data-table/table-actions.es.js +0 -26
  167. package/dist/components/data-table/table-actions.es.js.map +0 -1
  168. package/dist/components/data-table/table-content.es.js +0 -65
  169. package/dist/components/data-table/table-content.es.js.map +0 -1
  170. package/dist/components/data-table/table-utils/constants.es.js +0 -288
  171. package/dist/components/data-table/table-utils/constants.es.js.map +0 -1
  172. package/dist/components/data-table/table-utils/createTableFetchFn.es.js +0 -25
  173. package/dist/components/data-table/table-utils/createTableFetchFn.es.js.map +0 -1
  174. package/dist/components/data-table/table-utils/date.es.js +0 -12
  175. package/dist/components/data-table/table-utils/date.es.js.map +0 -1
  176. package/dist/components/data-table/table-utils/string.es.js +0 -19
  177. package/dist/components/data-table/table-utils/string.es.js.map +0 -1
  178. package/dist/components/data-table/table-utils/types.es.js +0 -5
  179. package/dist/components/data-table/table-utils/types.es.js.map +0 -1
  180. package/dist/utils/index.es.js.map +0 -1
  181. /package/dist/{hooks → utils}/use-mobile.es.js +0 -0
@@ -0,0 +1,178 @@
1
+ import { jsx as t, jsxs as s } from "react/jsx-runtime";
2
+ import { useDataTable as B } from "./data-table.es.js";
3
+ import { getResourceDisplayName as b } from "./table-commons.es.js";
4
+ import { DropdownMenu as x, DropdownMenuTrigger as F } from "../../node_modules/.pnpm/@radix-ui_react-dropdown-menu@2.1.15_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-dropdown-menu/dist/index.es.js";
5
+ import { Popover as D, PopoverTrigger as I } from "../../node_modules/.pnpm/@radix-ui_react-popover@1.1.14_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-popover/dist/index.es.js";
6
+ import { Filter as M, Trash as j } from "lucide-react";
7
+ import { useState as O, useRef as R, useCallback as _ } from "react";
8
+ import { PopoverContent as S } from "../ui/popover.es.js";
9
+ import { DropdownMenuContent as N, DropdownMenuItem as q } from "../ui/dropdown-menu.es.js";
10
+ import { Input as g } from "../inputs/input.es.js";
11
+ import { cn as E } from "../../utils/primitives.es.js";
12
+ import { Button as c } from "../ui/button.es.js";
13
+ import { Checkbox as L } from "../inputs/checkbox.es.js";
14
+ const te = [
15
+ "eq",
16
+ "ne",
17
+ "cn",
18
+ "nc",
19
+ "sw",
20
+ "ew",
21
+ "in",
22
+ "nin",
23
+ "gt",
24
+ "gte",
25
+ "lt",
26
+ "lte"
27
+ ], A = {
28
+ eq: "equal to",
29
+ ne: "not equal to",
30
+ cn: "contains",
31
+ nc: "does not contain",
32
+ sw: "starts with",
33
+ ew: "ends with",
34
+ in: "includes",
35
+ nin: "does not include",
36
+ gt: "greater than",
37
+ gte: "greater than or equal to",
38
+ lt: "less than",
39
+ lte: "less than or equal to"
40
+ }, k = {
41
+ bool: ["eq"],
42
+ enum: ["in", "nin"],
43
+ id: ["in", "nin"],
44
+ "id-search": ["in", "nin"],
45
+ string: ["eq", "ne", "cn", "nc", "sw", "ew", "in", "nin"],
46
+ date: ["lt", "gt"]
47
+ };
48
+ function z(d, m, h) {
49
+ return d.map((u, f) => f === m ? h(u) : u);
50
+ }
51
+ function ne({ className: d, ...m }) {
52
+ const { filters: h, query: u, setFilters: f, filterConfig: v } = B(), [p, l] = O([]);
53
+ R([]);
54
+ const y = R(null), w = _(
55
+ (e, i) => {
56
+ l(
57
+ (n) => z(n, e, (r) => ({ ...r, ...i }))
58
+ );
59
+ },
60
+ [l]
61
+ ), P = _(
62
+ (e) => {
63
+ l((i) => i.filter((n, r) => r !== e));
64
+ },
65
+ [l]
66
+ );
67
+ function T({ id: e, filter: i, onChange: n }) {
68
+ const [r, a] = O(i.value);
69
+ switch (i.type) {
70
+ case "bool":
71
+ return /* @__PURE__ */ t(
72
+ L,
73
+ {
74
+ id: e,
75
+ checked: r,
76
+ onChange: (o) => a(o.target.value),
77
+ onBlur: (o) => n({ value: r })
78
+ }
79
+ );
80
+ case "date":
81
+ return /* @__PURE__ */ t(
82
+ g,
83
+ {
84
+ id: e,
85
+ type: "date",
86
+ value: r,
87
+ onChange: (o) => a(o.target.value),
88
+ onBlur: (o) => n({ value: r })
89
+ }
90
+ );
91
+ case "enum":
92
+ break;
93
+ case "id":
94
+ return /* @__PURE__ */ t(
95
+ g,
96
+ {
97
+ id: e,
98
+ type: "text",
99
+ value: r,
100
+ onChange: (o) => a(o.target.value),
101
+ onBlur: (o) => n({ value: r })
102
+ }
103
+ );
104
+ case "id-search":
105
+ break;
106
+ case "string":
107
+ return /* @__PURE__ */ t(
108
+ g,
109
+ {
110
+ id: e,
111
+ type: "text",
112
+ value: r,
113
+ onChange: (o) => a(o.target.value),
114
+ onBlur: (o) => n({ value: r })
115
+ }
116
+ );
117
+ }
118
+ }
119
+ const C = Object.keys(v).sort();
120
+ return /* @__PURE__ */ t("section", { ...m, className: E("flex gap-icon items-center", d), children: /* @__PURE__ */ s(D, { onOpenChange: (e) => {
121
+ var i;
122
+ e ? (i = y.current) == null || i.focus() : f(p.map((n) => ({ [n.property]: { [n.operator]: [n.value] } })));
123
+ }, children: [
124
+ /* @__PURE__ */ t(I, { asChild: !0, children: /* @__PURE__ */ t(c, { active: h.length > 0, disabled: u.isPending || C.length === 0, type: "button", size: "icon", variant: "neutral", icon: () => M }) }),
125
+ /* @__PURE__ */ s(S, { align: "end", className: "min-w-xs w-full p-icon", children: [
126
+ p.length > 0 && /* @__PURE__ */ t("div", { className: "flex flex-col gap-icon max-h-table overflow-auto border-y py-2", children: p.map((e, i) => {
127
+ const n = `${e.property}-${i}`;
128
+ return /* @__PURE__ */ s("div", { className: "flex gap-icon items-center justify-normal", children: [
129
+ /* @__PURE__ */ t("span", { className: "text-sm", children: b(e.property, "admin-portal") }),
130
+ /* @__PURE__ */ s(x, { children: [
131
+ /* @__PURE__ */ t(F, { asChild: !0, children: /* @__PURE__ */ t(c, { children: A[e.operator] }) }),
132
+ /* @__PURE__ */ t(N, { children: k[e.type].map((r) => /* @__PURE__ */ t(q, { onClick: (a) => w(i, { ...e, operator: r }), children: A[r] })) })
133
+ ] }),
134
+ /* @__PURE__ */ t(T, { id: n, filter: e, onChange: (r) => {
135
+ w(i, { ...e, ...r });
136
+ } }, n),
137
+ /* @__PURE__ */ t(c, { type: "button", variant: "destructive", size: "icon", icon: () => j, onClick: () => P(i) })
138
+ ] }, n);
139
+ }) }),
140
+ /* @__PURE__ */ s("div", { className: "flex w-full items-center justify-end gap-2 not-first:mt-icon", children: [
141
+ /* @__PURE__ */ s(x, { children: [
142
+ /* @__PURE__ */ t(F, { asChild: !0, children: /* @__PURE__ */ t(c, { ref: y, variant: "neutral", children: "Add Filter" }) }),
143
+ /* @__PURE__ */ t(N, { children: C.map((e) => /* @__PURE__ */ t(q, { onClick: (i) => {
144
+ const n = v[e].type, r = (o) => {
145
+ if (o === "bool")
146
+ return !0;
147
+ if (o === "string")
148
+ return "";
149
+ }, a = {
150
+ operator: k[n][0],
151
+ value: r(n),
152
+ type: n,
153
+ property: e
154
+ };
155
+ l((o) => [...o, a]);
156
+ }, className: "dropdown-item", role: "menuitem", children: b(e, "admin-portal") }, e)) })
157
+ ] }),
158
+ p.length > 0 ? /* @__PURE__ */ t(
159
+ c,
160
+ {
161
+ variant: "neutral",
162
+ onClick: () => {
163
+ l([]);
164
+ },
165
+ children: "Reset filters"
166
+ }
167
+ ) : null
168
+ ] })
169
+ ] })
170
+ ] }) });
171
+ }
172
+ export {
173
+ A as COMPARISON_OPERATOR_LABELS,
174
+ ne as DataTableFilter,
175
+ te as FILTER_COMPARISON_OPERATORS,
176
+ z as replaceAt
177
+ };
178
+ //# sourceMappingURL=data-table-filter.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-filter.es.js","sources":["../../../lib/components/data-table/data-table-filter.tsx"],"sourcesContent":["import { useDataTable, type OperationKeys } from \"@/components/data-table/data-table\";\nimport { getResourceDisplayName, type ApiFilters } from \"@/components/data-table/table-commons\";\nimport { Checkbox, Input, type MultiSelectProps } from \"@/components/inputs\";\nimport { Button, DropdownMenuContent, DropdownMenuItem, PopoverContent } from \"@/components/ui\";\nimport { cn } from \"@/utils\";\nimport { DropdownMenu, DropdownMenuTrigger } from \"@radix-ui/react-dropdown-menu\";\nimport { Popover, PopoverTrigger } from \"@radix-ui/react-popover\";\nimport { type UseQueryResult } from \"@tanstack/react-query\";\nimport { Filter, Trash } from \"lucide-react\";\nimport { useCallback, useRef, useState } from \"react\";\n\nexport const FILTER_COMPARISON_OPERATORS = [\n 'eq',\n 'ne',\n 'cn',\n 'nc',\n 'sw',\n 'ew',\n 'in',\n 'nin',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n] as const;\nexport type FilterComparisonOperator =\n (typeof FILTER_COMPARISON_OPERATORS)[number];\n\nexport const COMPARISON_OPERATOR_LABELS: Record<\n FilterComparisonOperator,\n string\n> = {\n eq: 'equal to',\n ne: 'not equal to',\n cn: 'contains',\n nc: 'does not contain',\n sw: 'starts with',\n ew: 'ends with',\n in: 'includes',\n nin: 'does not include',\n gt: 'greater than',\n gte: 'greater than or equal to',\n lt: 'less than',\n lte: 'less than or equal to',\n};\n\ntype BaseLocalFilter<T extends FilterType, V> = {\n type: T;\n property: string;\n operator: FilterComparisonOperator;\n value: V;\n displayValue?: string;\n};\ntype EnumLocalFilter = BaseLocalFilter<'enum', string[]>;\ntype IdLocalFilter = BaseLocalFilter<'id', string>;\ntype BoolLocalFilter = BaseLocalFilter<'bool', boolean>;\ntype StringLocalFilter = BaseLocalFilter<'string', string>;\ntype DateLocalFilter = BaseLocalFilter<'date', string>; // ISO date string\ntype IdSearchLocalFilter = BaseLocalFilter<'id-search', string[]>;\n\ntype LocalFilter = EnumLocalFilter\n | IdLocalFilter\n | BoolLocalFilter\n | StringLocalFilter\n | DateLocalFilter\n | IdSearchLocalFilter;\n\nexport type FilterConfig =\n // TODO, think about string[], and all the possible values we send to the backend\n | { type: 'enum'; component: React.FC<MultiSelectProps> }\n | { type: 'id' }\n | { type: 'bool' }\n | { type: 'string' }\n | { type: 'date' }\n | {\n type: 'id-search'; search: UseQueryResult<{\n id: string;\n name: string;\n }, Error>\n };\n\nexport type FilterType = FilterConfig['type'];\n\nconst FilterOperations: Record<FilterType, FilterComparisonOperator[]> = {\n 'bool': ['eq'],\n 'enum': ['in', 'nin'],\n 'id': ['in', 'nin'],\n 'id-search': ['in', 'nin'],\n 'string': ['eq', 'ne', 'cn', 'nc', 'sw', 'ew', 'in', 'nin'],\n 'date': ['lt', 'gt'],\n}\n\nexport function replaceAt<T>(\n array: readonly T[],\n index: number,\n updater: (item: T) => T\n): T[] {\n return array.map((item, i) => (i === index ? updater(item) : item));\n}\n\nexport type FiltersConfig<TOperation extends OperationKeys> = Required<Record<keyof ApiFilters<TOperation>, FilterConfig>>\ntype TableFilterProps = React.ComponentProps<'section'>;\n\nexport function DataTableFilter({ className, ...props }: TableFilterProps) {\n const { filters, query, setFilters, filterConfig } = useDataTable();\n\n\n\n const [localFilters, setLocalFilters] = useState<LocalFilter[]>([]);\n const localFilterRefs = useRef([]);\n const addFilterButtonRef = useRef<HTMLButtonElement>(null);\n\n const updateFilterAt = useCallback(\n (idx: number, change: Partial<Pick<LocalFilter, 'displayValue' | 'operator' | 'value'>>) => {\n setLocalFilters(prev =>\n replaceAt(prev, idx, f => ({ ...f, ...change }))\n );\n },\n [setLocalFilters]\n );\n\n const removeFilterAt = useCallback(\n (idx: number) => {\n setLocalFilters(prev => prev.filter((_, i) => i !== idx));\n },\n [setLocalFilters]\n );\n\n\n\n function FilterInput({ id, filter, onChange }: { id: string; filter: LocalFilter, onChange: (v: Partial<LocalFilter>) => void }) {\n const [value, setValue] = useState(filter.value);\n\n switch (filter.type) {\n case 'bool':\n return (\n <Checkbox\n id={id}\n checked={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );;\n case 'date':\n return (\n <Input\n id={id}\n type=\"date\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );;\n case 'enum':\n break;\n // return c.component;\n case 'id':\n return (\n <Input\n id={id}\n type=\"text\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />\n );\n case 'id-search':\n break;\n // return (\n // <IdSearchInput\n // value={value}\n // onChange={(id) => onChange(id)}\n // />\n // );\n case 'string':\n return <Input\n id={id}\n type=\"text\"\n value={value}\n onChange={e => setValue(e.target.value)}\n onBlur={(_) => onChange({ value })}\n />;\n }\n }\n\n // More reason to hate TS https://github.com/Microsoft/TypeScript/issues/12870\n const filterKeys = Object.keys(filterConfig).sort();\n\n return (\n <section {...props} className={cn(\"flex gap-icon items-center\", className)}>\n {/* TODO, popover elevation-2, for being surface above card */}\n {/* Dropdown for properties -> Trigger popover for property specific thingy */}\n <Popover onOpenChange={(o) => {\n // Set filters when the popover closes\n if (!o) {\n // TODO, instead of generic transformation, use type based tranform()\n setFilters(localFilters.map(lf => { return { [lf.property]: { [lf.operator]: [lf.value] } } }))\n } else {\n addFilterButtonRef.current?.focus();\n }\n }}>\n <PopoverTrigger asChild>\n <Button active={filters.length > 0} disabled={query.isPending || filterKeys.length === 0} type=\"button\" size={'icon'} variant={'neutral'} icon={() => Filter} />\n </PopoverTrigger>\n {/* TODO, icon maps with dynamic imports? */}\n {/* TODO open popover with form for property specific filter */}\n {/* TODO, icons here??? */}\n <PopoverContent align=\"end\" className=\"min-w-xs w-full p-icon\">\n {/* const h3Styles = \"body mb-icon text-muted-foreground\"; */}\n {/* <h3 className={h3Styles}>{isFiltersActive ? \"Active filters\" : \"Add filters\"}</h3> */}\n {localFilters.length > 0 && <div className=\"flex flex-col gap-icon max-h-table overflow-auto border-y py-2\">\n {\n localFilters.map((lf, i) => {\n const key = `${lf.property}-${i}`;\n\n // Each of these could be a group of filters\n // For example, License is Perpetual means expiresAt==null and subscriptionStartTrigger == null OR Creation Date is Date could mean createdAt[gt]=START_OF_DAY && createdAt[lt]=END_OF_DAY \n // However, since different filters on the same property could be applied in different groups, this can cause confusion.\n // TODO Find relative, could be primitive or object.[operator].primitive\n return <div key={key} className=\"flex gap-icon items-center justify-normal\">\n <span className=\"text-sm\">{getResourceDisplayName(lf.property, 'admin-portal')}</span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button>{COMPARISON_OPERATOR_LABELS[lf.operator]}</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {FilterOperations[lf.type].map(op => {\n return <DropdownMenuItem onClick={(_) => updateFilterAt(i, { ...lf, operator: op })}>{COMPARISON_OPERATOR_LABELS[op]}</DropdownMenuItem>\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n {/* TODO className */}\n <FilterInput key={key} id={key} filter={lf} onChange={(v) => { updateFilterAt(i, ({ ...lf, ...v })) }} />\n <Button type=\"button\" variant=\"destructive\" size=\"icon\" icon={() => Trash} onClick={() => removeFilterAt(i)}></Button>\n </div>\n })\n }\n </div>}\n <div className=\"flex w-full items-center justify-end gap-2 not-first:mt-icon\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {/* TODO We ideally want to do a diff between localFilters and filters, and based on that, show a save button here. \n\t\t\t\t\t\t\t\tLook into ways in which the diffing is both complete and accurate. This can act as a debouncing mechanism for users that add more than one filter. (need more data on whether or not users add multiple filters at once) */}\n <Button ref={addFilterButtonRef} variant={'neutral'}>Add Filter</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {filterKeys.map(k => <DropdownMenuItem key={k} onClick={(_) => {\n const type = filterConfig[k].type as FilterType;\n\n const defaultValue = (t: FilterType) => {\n if (t === 'bool') {\n return true;\n } else if (t === 'string') {\n return '';\n }\n }\n\n const newFilter: LocalFilter = {\n operator: FilterOperations[type][0],\n value: defaultValue(type),\n type: type,\n property: k,\n };\n\n setLocalFilters(prev => [...prev, newFilter])\n // TODO Focus to ref\n\n }} className=\"dropdown-item\" role=\"menuitem\">{getResourceDisplayName(k, \"admin-portal\")}</DropdownMenuItem>)}\n </DropdownMenuContent>\n </DropdownMenu>\n {localFilters.length > 0 ? (\n <Button\n variant=\"neutral\"\n onClick={() => { setLocalFilters([]) }}\n >\n Reset filters\n </Button>\n ) : null}\n </div>\n {/* </> */}\n </PopoverContent>\n </Popover>\n {/* TODO render default shown filters */}\n </section>\n\n );\n};\n"],"names":["FILTER_COMPARISON_OPERATORS","COMPARISON_OPERATOR_LABELS","FilterOperations","replaceAt","array","index","updater","item","i","DataTableFilter","className","props","filters","query","setFilters","filterConfig","useDataTable","localFilters","setLocalFilters","useState","useRef","addFilterButtonRef","updateFilterAt","useCallback","idx","change","prev","f","removeFilterAt","_","FilterInput","id","filter","onChange","value","setValue","jsx","Checkbox","e","Input","filterKeys","cn","jsxs","Popover","o","_a","lf","PopoverTrigger","Button","Filter","PopoverContent","key","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","op","DropdownMenuItem","v","Trash","type","k","defaultValue","t","newFilter","getResourceDisplayName"],"mappings":"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"}