@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
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["\"use client\";\n// import { TableFilter, type FilterFormType } from '@/components/data-table/table-filter';\nimport {\n\tcn,\n\tLoader,\n\tTABLE_CHECK_BOX_COLUMN,\n\tTABLE_DEFAULT_DATE_COLUMNS,\n\tTABLE_ID_COLUMN\n} from \"@/index\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport {\n\ttype ColumnDef,\n\tgetCoreRowModel,\n\ttype TableOptions,\n\ttype TableState,\n\ttype Updater,\n\tuseReactTable,\n\ttype VisibilityState\n} from \"@tanstack/react-table\";\nimport { Info } from \"lucide-react\";\nimport React, { useEffect, useId, useMemo, useState } from \"react\";\nimport { ColumnPicker } from \"./column-picker\";\nimport { PageSize } from \"./page-size\";\nimport { Paginator } from \"./paginator\";\nimport Actions from \"./table-actions\";\nimport { TableContent } from \"./table-content\";\nimport type { TableActions, TableFetchFn } from \"./table-utils\";\n\n/** Reserved name for actions column */\nexport const ACTIONS_COLUMN_ID = \"Actions\";\n\n// Props type for the DataTable component\n\nexport type DataTableState = Pick<TableState, 'sorting' | 'columnFilters' | 'columnVisibility' | 'rowSelection' | 'pagination'> & { search: string };\nexport interface DataTableProps<TData> extends Pick<TableOptions<TData>, 'columns'>, React.ComponentProps<'section'> {\n\tfetchFn: TableFetchFn<TData>;\n\ttableActions: TableActions;\n\tallowSelection?: boolean;\n\tcolumnsToHideByDefault?: VisibilityState; // Columns that are hidden by default\n}\nexport function DataTable<TData extends object>({\n\tcolumns,\n\tfetchFn,\n\ttableActions,\n\tcolumnsToHideByDefault = {},\n\tallowSelection = false,\n\tclassName,\n\t...props\n\t// filterableFields,\n}: DataTableProps<TData>) {\n\t// State for managing table data and filters\n\tconst id = useId();\n\n\t//TODO: This is later to be stored in url as params\n\tconst [tableState, _setTableState] = useState<DataTableState>({\n\t\tsorting: [], // Sorting state\n\t\tcolumnFilters: [], // Filters for columns, not to be confused with the filters that get sent to the Web API.\n\t\tsearch: \"\", // Search query state\n\t\tcolumnVisibility: {}, // Visibility of columns\n\t\trowSelection: {}, // Row selection state\n\t\tpagination: { pageIndex: 0, pageSize: 20 }, // Pagination state\n\t});\n\n\t// Update table state with new values\n\tconst updateTableState = (updates: Partial<DataTableState>) => {\n\t\t_setTableState((prev) => ({ ...prev, ...updates }));\n\t};\n\n\t// Destructuring the table state for easier access\n\tconst {\n\t\tsorting,\n\t\tcolumnFilters,\n\t\tsearch,\n\t\tcolumnVisibility,\n\t\trowSelection,\n\t\tpagination,\n\t} = tableState;\n\n\t// TODO\n\t// Debounce the search query to avoid making a request on every keystroke\n\t// const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n\t// Update column visibility when columnsToHideByDefault changes\n\tuseEffect(() => {\n\t\tupdateTableState({\n\t\t\tcolumnVisibility: {\n\t\t\t\tid: false,\n\t\t\t\tupdatedAt: false,\n\t\t\t\t...columnsToHideByDefault,\n\t\t\t},\n\t\t});\n\t}, [columnsToHideByDefault]);\n\n\t// TODO, implement filters\n\t// const [filters, setFilters] = useState<FilterFormType[]>([]);\n\t// const formatedFilters = useMemo(() => {\n\t// return filters.reduce((acc, filter) => {\n\t// const { property, value, operator } = filter;\n\t// if (!acc[property]) {\n\t// acc[property] = {};\n\t// }\n\t// acc[property][operator] = value;\n\t// return acc;\n\t// }, {} as Record<string, Record<string, any>>);\n\t// }, [filters]);\n\n\t// Fetch table data using the fetchFn and react-query's useQuery hook\n\tconst query = useQuery({\n\t\tqueryKey: [id, pagination, sorting, search.trim()],\n\t\tqueryFn: () => fetchFn(pagination, sorting, search.trim()),\n\t\tplaceholderData: keepPreviousData, // Keep previous data while loading new data\n\t\tretry: 0,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\n\t// TODO Memoizing here seems wasteful\n\t// TODO is createColumnHelper an expensive operation?\n\t// const columnHelper = createColumnHelper<TData>();\n\t// const metadataColumns = useMemo<ColumnDef<TData>[]>(() => {\n\t// \tconst data = query.data?.data;\n\t// \tif (!data?.length) return [];\n\t// \t// set of all the keys present in a given view\n\t// \tconst allMetadataKeys = new Set<string>();\n\n\t// \t// Collect all unique metadata keys\n\t// \tdata.forEach((row: TData) => {\n\t// \t\tif ('metadata' in row && row.metadata && Array.isArray(row.metadata)) {\n\t// \t\t\trow.metadata.forEach((meta: MetadataDto) => {\n\t// \t\t\t\tallMetadataKeys.add(meta.key);\n\t// \t\t\t});\n\t// \t\t}\n\t// \t});\n\n\t// \t// Generate columns for all unique metadata keys\n\t// \treturn Array.from(allMetadataKeys).map((key) =>\n\t// \t\tcolumnHelper.accessor(\n\t// \t\t\t(row: TData) => {\n\t// \t\t\t\t// Find the metadata object with the matching key\n\t// \t\t\t\tconst metadataEntry = row.metadata?.find(\n\t// \t\t\t\t\t(meta: MetadataDto) => meta.key === key,\n\t// \t\t\t\t);\n\t// \t\t\t\treturn metadataEntry?.value; // Return the value for the specific key\n\t// \t\t\t},\n\t// \t\t\t{\n\t// \t\t\t\theader: () => (\n\t// \t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t// \t\t\t\t\t\t<Tooltip>\n\t// \t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t// \t\t\t\t\t\t\t\t<span className=\"flex gap-1 items-center align-middle\">\n\t// \t\t\t\t\t\t\t\t\t{key} <Info size={18} strokeWidth={\"1px\"} />\n\t// \t\t\t\t\t\t\t\t</span>\n\t// \t\t\t\t\t\t\t</TooltipTrigger>\n\t// \t\t\t\t\t\t\t<TooltipContent>Metadata Key</TooltipContent>\n\t// \t\t\t\t\t\t</Tooltip>\n\t// \t\t\t\t\t</TooltipProvider>\n\t// \t\t\t\t), // Use the metadata key as the column header\n\t// \t\t\t\tid: key,\n\t// \t\t\t\tenableSorting: false,\n\t// \t\t\t\tcell: (info) => {\n\t// \t\t\t\t\tconst value = info.getValue();\n\t// \t\t\t\t\t// Handle null/undefined values\n\t// \t\t\t\t\tif (value === null || value === undefined) return \"\";\n\t// \t\t\t\t\t// For primitive types, return the string representation\n\t// \t\t\t\t\treturn String(value);\n\t// \t\t\t\t},\n\t// \t\t\t},\n\t// \t\t),\n\t// \t);\n\t// }, [query.data?.data]);\n\n\t/**\n\t * ID,createdAt and updatedAt will be added by default for all tables\n\t * If selection is allowed, checkbox will be added\n\t * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n\t * If there are actions for the table, they will be placed fixed at the right side of table.\n\t */\n\tconst extendedColumns = useMemo<ColumnDef<any, any>[]>(() => {\n\t\tconst _columns = [\n\t\t\t...(allowSelection ? TABLE_CHECK_BOX_COLUMN : []),\n\t\t\t...TABLE_ID_COLUMN,\n\t\t\t...columns.filter((col) => col.id !== ACTIONS_COLUMN_ID),\n\t\t\t// ...(metadataColumns.length ? metadataColumns : []),\n\t\t\t...TABLE_DEFAULT_DATE_COLUMNS,\n\t\t\t...columns.filter((col) => col.id === ACTIONS_COLUMN_ID),\n\t\t];\n\n\t\treturn _columns;\n\t}, [columns, query.data?.data, allowSelection]);\n\n\t// Type-guard for updater\n\tfunction isUpdaterFunction<T>(updater: Updater<T>): updater is (old: T) => T {\n\t\treturn typeof updater === \"function\";\n\t}\n\t// Utility function to resolve updater\n\tfunction resolveUpdater<T>(updater: Updater<T>, currentValue: T) {\n\t\tif (isUpdaterFunction(updater)) {\n\t\t\treturn updater(currentValue);\n\t\t}\n\t\treturn updater;\n\t}\n\n\t// Use react-table's hook to create the table instance\n\tconst table = useReactTable({\n\t\tdata: query.data?.data ?? [],\n\t\tcolumns: extendedColumns,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\trowCount: query.data?.total,\n\t\tmanualPagination: true, // Handle pagination manually since pagination is done server side for data tables\n\t\tonPaginationChange: (updater) => {\n\t\t\tupdateTableState({ pagination: resolveUpdater(updater, pagination) });\n\t\t},\n\t\tmanualSorting: true, // Handle sorting manually since sorting is done server side for data tables\n\t\tonSortingChange: (updater) => {\n\t\t\tupdateTableState({ sorting: resolveUpdater(updater, sorting), rowSelection: {} }); // Reset selection when sorting.\n\t\t},\n\t\tmanualFiltering: true, // Handle filtering manually since filtering is done server side for data tables\n\t\tonGlobalFilterChange: (updater) => {\n\t\t\tupdateTableState({ columnFilters: resolveUpdater(updater, columnFilters) });\n\t\t},\n\t\tonColumnVisibilityChange: (updater) => {\n\t\t\tupdateTableState({ columnVisibility: resolveUpdater(updater, columnVisibility) });\n\t\t},\n\t\tonRowSelectionChange: (updater) => {\n\t\t\tupdateTableState({ rowSelection: resolveUpdater(updater, rowSelection) });\n\t\t},\n\t\tstate: {\n\t\t\tsorting: sorting,\n\t\t\tcolumnFilters: columnFilters,\n\t\t\tcolumnVisibility: columnVisibility,\n\t\t\tpagination: pagination,\n\t\t\trowSelection: rowSelection,\n\t\t},\n\t\tmeta: {\n\t\t\trefetch: query.refetch,\n\t\t},\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{/* TODO, explore filtering component being outside the data-table, fine-grained theming would be nice here */}\n\t\t\t{/* Also, the data-table is a huuuuuge component, it would be nice to have it broken into pieces a little */}\n\t\t\t{/* ContextAPI???? */}\n\n\t\t\t{/* <TableFilter\n filterableProperties={{ ...filterableFields, ...DEFAULT_FILTERABLE_FIELDS }}\n filters={filters}\n onFiltersChange={setFilters}\n /> */}\n\n\t\t\t{/* Table Actions Section */}\n\t\t\t<section {...props} className={cn(\"flex flex-col bg-card\", className)}>\n\t\t\t\t<Actions\n\t\t\t\t\tdataQuery={query}\n\t\t\t\t\tgetSelectedRowModel={table.getSelectedRowModel}\n\t\t\t\t\ttableActions={tableActions}\n\t\t\t\t\thandleSearching={(value) => updateTableState({ search: value })}\n\t\t\t\t/>\n\n\t\t\t\t{/* The div here is necessary because TableContent is internally a <table> tag and does not respect width, height CSS */}\n\t\t\t\t<div className=\"w-full overflow-auto border-x grow min-h-table relative\" tabIndex={0}>\n\t\t\t\t\t{/* Table overlay with loader */}\n\t\t\t\t\t{query.isLoading && (\n\t\t\t\t\t\t<TableOverlay className=\"cursor-wait\">\n\t\t\t\t\t\t\t<Loader />\n\t\t\t\t\t\t</TableOverlay>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* Table overlay for empty table */}\n\t\t\t\t\t{!query.isLoading && table.getRowModel().rows.length === 0 && (\n\t\t\t\t\t\t// Empty table\n\t\t\t\t\t\t<TableOverlay className=\"cursor-not-allowed\">\n\t\t\t\t\t\t\t{!query.isFetching &&\n\t\t\t\t\t\t\t\t(query.isError ? (\n\t\t\t\t\t\t\t\t\t<span className=\"flex gap-3 justify-center items-center\">\n\t\t\t\t\t\t\t\t\t\t{/* TODO Check for 403 explicitly!! */}\n\t\t\t\t\t\t\t\t\t\t{/* <span>{query.error}</span> */}\n\t\t\t\t\t\t\t\t\t\t<Info />\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\tYou don't have the required permissions. Please contact your\n\t\t\t\t\t\t\t\t\t\t\tadmin.\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : !query.data?.data ? (\n\t\t\t\t\t\t\t\t\t<>No results found.</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<>Unknown error. Please contact customer support.</>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</TableOverlay>\n\t\t\t\t\t)}\n\t\t\t\t\t{!query.isLoading && table.getRowModel().rows.length !== 0 &&\n\t\t\t\t\t\t<TableContent\n\t\t\t\t\t\t\tclassName=\"size-full\"\n\t\t\t\t\t\t\tgetRowModel={table.getRowModel}\n\t\t\t\t\t\t\tgetHeaderGroups={table.getHeaderGroups}\n\t\t\t\t\t\t/>}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Table Footer Section with Pagination and Column Picker */}\n\t\t\t\t<div className=\"flex w-full justify-between border gap-4 p-4 overflow-x-auto\">\n\t\t\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t\t\t<ColumnPicker\n\t\t\t\t\t\t\tgetAllColumns={table.getAllColumns}\n\t\t\t\t\t\t\tgetIsAllColumnsVisible={table.getIsAllColumnsVisible}\n\t\t\t\t\t\t\ttoggleAllColumnsVisible={table.toggleAllColumnsVisible}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PageSize\n\t\t\t\t\t\t\tsize={table.getState().pagination.pageSize}\n\t\t\t\t\t\t\tonSelect={table.setPageSize}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Paginator\n\t\t\t\t\t\tfirstPage={table.firstPage}\n\t\t\t\t\t\tpreviousPage={table.previousPage}\n\t\t\t\t\t\tgetCanNextPage={table.getCanNextPage}\n\t\t\t\t\t\tgetCanPreviousPage={table.getCanPreviousPage}\n\t\t\t\t\t\tlastPage={table.lastPage}\n\t\t\t\t\t\tnextPage={table.nextPage}\n\t\t\t\t\t\tgetState={table.getState}\n\t\t\t\t\t\trowCount={query.data?.total ?? 0}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t</>\n\t);\n}\n\nfunction TableOverlay({\n\tchildren,\n\tclassName,\n}: { children: React.ReactNode; className?: string }) {\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute top-0 bg-card z-20 size-full flex items-center justify-center\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t{/* Keep something in document flow with the correct height */}\n\t\t\t<span className=\"relative h-full w-0 block\" />\n\t\t</>\n\t);\n}\n"],"names":["ACTIONS_COLUMN_ID","DataTable","columns","fetchFn","tableActions","columnsToHideByDefault","allowSelection","className","props","id","useId","tableState","_setTableState","useState","updateTableState","updates","prev","sorting","columnFilters","search","columnVisibility","rowSelection","pagination","useEffect","query","useQuery","keepPreviousData","extendedColumns","useMemo","TABLE_CHECK_BOX_COLUMN","TABLE_ID_COLUMN","col","TABLE_DEFAULT_DATE_COLUMNS","_a","isUpdaterFunction","updater","resolveUpdater","currentValue","table","useReactTable","_b","getCoreRowModel","_c","jsx","Fragment","cn","Actions","value","jsxs","TableOverlay","Loader","Info","_d","TableContent","ColumnPicker","PageSize","Paginator","_e","children"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["\"use client\";\n// import { TableFilter, type FilterFormType } from '@/components/data-table/table-filter';\nimport {\n\ttype ApiFilters,\n\ttype ApiSchema,\n\tcn,\n\tLoader,\n\tSearchInput,\n\tTABLE_CHECK_BOX_COLUMN,\n\tTABLE_DEFAULT_DATE_COLUMNS,\n\tTABLE_ID_COLUMN,\n\ttype TableActions,\n\ttype TableFetchFn\n} from \"@/index\";\nimport type { components, operations } from \"@cryptlex/web-api-types\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport {\n\ttype AccessorFnColumnDef,\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\tgetCoreRowModel,\n\ttype TableState,\n\ttype Updater,\n\tuseReactTable,\n\ttype VisibilityState\n} from \"@tanstack/react-table\";\nimport { GripVertical, Info } from \"lucide-react\";\nimport React, { createContext, useContext, useEffect, useId, useMemo, useState } from \"react\";\n\n/** Reserved name for actions column */\nexport const ACTIONS_COLUMN_ID = \"tableActions\";\n\nexport type Schemas = ApiSchema<keyof components['schemas']>;\nexport type OperationKeys = keyof operations;\n\ntype DataTableFactory<TData extends Schemas> = {\n\tfetchFn: TableFetchFn<TData, OperationKeys>;\n\tcolumns: ColumnDef<TData, any>[]\n\tallowSelection?: boolean;\n\tcolumnsToHideByDefault?: VisibilityState; // Columns that are hidden by default\n\tfilterConfig: FiltersConfig<OperationKeys>\n}\n\ntype DataTableState = Pick<TableState, 'sorting' | 'columnVisibility' | 'rowSelection' | 'pagination' | 'columnOrder'> & {\n\tsearch: string,\n\t// filters: any[]\n};\n/**\n * Hook for handling all data-table state. Used in DataTableContext\n */\nexport function useDataTableState<TData extends Schemas>({ columns, fetchFn, columnsToHideByDefault = {}, allowSelection = false, filterConfig }: DataTableFactory<TData>) {\n\tconst id = useId();\n\n\t// TODO: Would it be better for this state to be more granular?\n\tconst [tableState, _setTableState] = useState<DataTableState>({\n\t\t/** Reflect in URL */\n\t\tsearch: \"\", // Search query state\n\t\tpagination: { pageIndex: 0, pageSize: 20 }, // Pagination state\n\t\tsorting: [], // Sorting state\n\n\t\t/** TODO Store on browser as preference */\n\t\tcolumnVisibility: {}, // Visibility of columns\n\t\tcolumnOrder: [],\n\n\t\t/** Ephemeral */\n\t\trowSelection: {}, // Row selection state\n\t});\n\n\tconst [filters, setFilters] = useState<ApiFilters<OperationKeys>[]>([]);\n\n\tconst mergedFilters = useMemo(() => {\n\t\treturn filters.reduce((acc, current) => {\n\t\t\treturn merge(acc, current);\n\t\t}, {});\n\t}, [filters])\n\n\t// Update table state with new values\n\tconst updateTableState = (updates: Partial<DataTableState>) => {\n\t\t_setTableState((prev) => ({ ...prev, ...updates }));\n\t};\n\n\tconst {\n\t\tsorting,\n\t\tsearch,\n\t\tcolumnVisibility,\n\t\trowSelection,\n\t\tpagination,\n\t\tcolumnOrder\n\t} = tableState;\n\n\tconst query = useQuery({\n\t\tqueryKey: [id, pagination, sorting, search.trim()],\n\t\tqueryFn: () => fetchFn(pagination, sorting, search.trim(), mergedFilters),\n\t\tplaceholderData: keepPreviousData, // Keep previous data while loading new data\n\t\tretry: 0,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\t// Update column visibility at mount.\n\tuseEffect(() => {\n\t\t// TODO, check localStorage\n\t\tupdateTableState({\n\t\t\tcolumnVisibility: {\n\t\t\t\tid: false,\n\t\t\t\tupdatedAt: false,\n\t\t\t\t...columnsToHideByDefault,\n\t\t\t},\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\t// TODO, store in localStorage\n\t}, [columnVisibility])\n\n\tconst columnHelper = useMemo(() => createColumnHelper<TData>(), []);\n\n\tconst metadataColumns = useMemo<AccessorFnColumnDef<TData, string>[]>(() => {\n\t\tconst data = query.data?.data;\n\t\tif (!data?.length) return [];\n\n\t\ttype WithMeta = TData & { metadata: ApiSchema<'MetadataDto'>[] };\n\t\tconst rowHasMetadata = (row: TData): row is WithMeta => row != null &&\n\t\t\ttypeof row === 'object' &&\n\t\t\t'metadata' in row &&\n\t\t\tArray.isArray((row).metadata);\n\n\t\tconst rowsWithMeta = data.filter(\n\t\t\trowHasMetadata\n\t\t);\n\t\tif (rowsWithMeta.length === 0) return [];\n\t\tconst keys = Array.from(new Set(rowsWithMeta.flatMap(r => r.metadata?.map(m => m.key) ?? [])));\n\n\t\treturn keys.map(key =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(row) => {\n\t\t\t\t\tif (rowHasMetadata(row)) {\n\t\t\t\t\t\treturn row?.metadata?.find(m => m.key === key)?.value ?? '';\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: key,\n\t\t\t\t\theader: key, // tooltip header\n\t\t\t\t\tenableSorting: false,\n\t\t\t\t\tcell: (info) => {\n\t\t\t\t\t\tconst value = info.getValue();\n\t\t\t\t\t\t// Handle null/undefined values\n\t\t\t\t\t\tif (value === null || value === undefined) return \"\";\n\t\t\t\t\t\t// For primitive types, return the string representation\n\t\t\t\t\t\treturn String(value);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t));\n\t}, [query.data?.data]);\n\n\t/**\n\t * ID,createdAt and updatedAt will be added by default for all tables\n\t * If selection is allowed, checkbox will be added\n\t * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n\t * If there are actions for the table, they will be placed fixed at the right side of table.\n\t */\n\tconst cols: ColumnDef<any, any>[] = [\n\t\t...(allowSelection ? TABLE_CHECK_BOX_COLUMN : []),\n\t\t...TABLE_ID_COLUMN,\n\t\t...columns.filter((col) => col.id !== ACTIONS_COLUMN_ID),\n\t\t...(metadataColumns.length ? metadataColumns : []),\n\t\t...TABLE_DEFAULT_DATE_COLUMNS,\n\t\t// Actions column\n\t\t...columns.filter((col) => col.id === ACTIONS_COLUMN_ID),\n\t];\n\n\t// Type-guard for updater\n\tfunction isUpdaterFunction<T>(updater: Updater<T>): updater is (old: T) => T {\n\t\treturn typeof updater === \"function\";\n\t}\n\t// Utility function to resolve updater\n\tfunction resolveUpdater<T>(updater: Updater<T>, currentValue: T) {\n\t\tif (isUpdaterFunction(updater)) {\n\t\t\treturn updater(currentValue);\n\t\t}\n\t\treturn updater;\n\t}\n\n\t// Use react-table's hook to create the table instance\n\tconst tanTable = useReactTable({\n\t\tdata: query.data?.data ?? [],\n\t\tcolumns: cols,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\trowCount: query.data?.total,\n\t\tmanualPagination: true, // Handle pagination manually since pagination is done server side for data tables\n\t\tonPaginationChange: (updater) => {\n\t\t\tupdateTableState({ pagination: resolveUpdater(updater, pagination) });\n\t\t},\n\t\tmanualSorting: true, // Handle sorting manually since sorting is done server side for data tables\n\t\tonSortingChange: (updater) => {\n\t\t\tupdateTableState({ sorting: [...resolveUpdater(updater, sorting)], rowSelection: {} }); // Reset selection when sorting.\n\t\t},\n\t\tmanualFiltering: true, // Handle filtering manually since filtering is done server side for data tables\n\t\tonColumnVisibilityChange: (updater) => {\n\t\t\tupdateTableState({ columnVisibility: resolveUpdater(updater, columnVisibility) });\n\t\t},\n\t\tonRowSelectionChange: (updater) => {\n\t\t\tupdateTableState({ rowSelection: resolveUpdater(updater, rowSelection) });\n\t\t},\n\t\tonColumnOrderChange: (updater) => {\n\t\t\tupdateTableState({ columnOrder: resolveUpdater(updater, columnOrder) });\n\t\t},\n\t\tstate: {\n\t\t\tsorting: sorting,\n\t\t\tcolumnVisibility: columnVisibility,\n\t\t\tpagination: pagination,\n\t\t\trowSelection: rowSelection,\n\t\t\tcolumnOrder: columnOrder\n\t\t},\n\t\tmeta: {\n\t\t\trefetch: query.refetch,\n\t\t},\n\t});\n\n\t// By default, ColumnDef does not give guarantees of column.id existing. Once useReactTable is called, all columns are assigned IDs.\n\t// This populates the columnIds in the columnOrder state\n\t// TODO, add localStorage access layer for this. \n\tuseEffect(() => {\n\t\tupdateTableState({ columnOrder: [...tanTable.getAllLeafColumns().map(c => c.id)] });\n\t}, [])\n\n\treturn { tableState, updateTableState, query, tanTable, mergedFilters, filters, setFilters, filterConfig }\n}\n\nexport const DataTableContext = createContext<ReturnType<typeof useDataTableState> | null>(null);\n\nexport const useDataTable = () => {\n\tconst ctx = useContext(DataTableContext);\n\tif (!ctx) {\n\t\tthrow Error(\"DataTable should be used within DataTableProvider.\")\n\t}\n\treturn ctx;\n}\n\nexport function DataTableProvider({ children, ...props }: { children: React.ReactNode; } & ReturnType<typeof useDataTableState>) {\n\treturn (\n\t\t<DataTableContext.Provider value={props}>\n\t\t\t{children}\n\t\t</DataTableContext.Provider>\n\t)\n}\n\n\nexport type DataTableProps = React.ComponentProps<'section'> & {\n\ttableActions: TableActions;\n\n\t// filterConfig: {\n\t// \tfilters: Record<keyof ApiFilters<TOperation>, 'date' | 'string' | 'known-string' | 'number'>,\n\t// }\n}\nexport function DataTable({\n\ttableActions,\n\tclassName,\n\t...props\n\t// filterableFields,\n}: DataTableProps) {\n\t// State for managing table data and filters\n\tconst { query, tanTable } = useDataTable();\n\n\treturn (\n\t\t<>\n\t\t\t{/* Table Actions Section */}\n\t\t\t<section {...props} className={cn(\"flex flex-col bg-card\", className)}>\n\t\t\t\t<Actions tableActions={tableActions} />\n\t\t\t\t{/* The div here is necessary because TableContent is internally a <table> tag and does not respect width, height CSS */}\n\t\t\t\t<div className=\"w-full overflow-auto border-x grow min-h-table relative\" tabIndex={0}>\n\t\t\t\t\t{/* Table overlay with loader */}\n\t\t\t\t\t{query.isLoading && (\n\t\t\t\t\t\t<TableOverlay className=\"cursor-wait\">\n\t\t\t\t\t\t\t<Loader />\n\t\t\t\t\t\t</TableOverlay>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* Table overlay for empty table */}\n\t\t\t\t\t{!query.isLoading && tanTable.getRowModel().rows.length === 0 && (\n\t\t\t\t\t\t// Empty table\n\t\t\t\t\t\t<TableOverlay className=\"cursor-not-allowed\">\n\t\t\t\t\t\t\t{!query.isFetching &&\n\t\t\t\t\t\t\t\t(query.isError ? (\n\t\t\t\t\t\t\t\t\t<span className=\"flex gap-3 justify-center items-center\">\n\t\t\t\t\t\t\t\t\t\t{/* TODO (mudasir-pandith) Check for 403 explicitly!! */}\n\t\t\t\t\t\t\t\t\t\t{/* <span>{query.error}</span> */}\n\t\t\t\t\t\t\t\t\t\t<Info />\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\tYou don't have the required permissions. Please contact your\n\t\t\t\t\t\t\t\t\t\t\tadmin.\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : !query.data?.data ? (\n\t\t\t\t\t\t\t\t\t<>No results found.</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<>Unknown error. Please contact customer support.</>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</TableOverlay>\n\t\t\t\t\t)}\n\t\t\t\t\t{!query.isLoading && tanTable.getRowModel().rows.length !== 0 &&\n\t\t\t\t\t\t<TableContent className=\"size-full\" />}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Table Footer Section with Pagination and Column Picker */}\n\t\t\t\t<div className=\"flex w-full justify-between border gap-icon p-icon overflow-x-auto\">\n\t\t\t\t\t<div className=\"flex gap-icon\">\n\t\t\t\t\t\t<ColumnPicker />\n\t\t\t\t\t\t<PageSize />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Paginator />\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t</>\n\t);\n}\n/** Table overlay to be shown for loaders or other messages */\nfunction TableOverlay({\n\tchildren,\n\tclassName,\n}: { children: React.ReactNode; className?: string }) {\n\treturn (\n\t\t<>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\tclassName,\n\t\t\t\t\t\"absolute top-0 bg-card z-20 size-full text-sm flex items-center justify-center\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t{/* Keep something in document flow with the correct height */}\n\t\t\t<span className=\"relative h-full w-0 block\" />\n\t\t</>\n\t);\n}\n\nimport {\n\tButton,\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuTrigger,\n\tgetResourceDisplayName,\n} from \"@/index\";\nimport {\n\tclosestCenter,\n\tDndContext,\n\tDragOverlay,\n\tKeyboardSensor,\n\tPointerSensor,\n\tuseSensor,\n\tuseSensors,\n} from '@dnd-kit/core';\nimport {\n\tarrayMove,\n\tSortableContext,\n\tsortableKeyboardCoordinates,\n\tuseSortable,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Columns3 } from \"lucide-react\";\n\nfunction ColumnPicker({ ...props }: React.ComponentProps<typeof DropdownMenu>) {\n\tconst { tanTable, tableState, updateTableState } = useDataTable();\n\tconst [activeId, setActiveId] = useState<string | null>(null);\n\n\t// TODO, handle pinning?\n\tconst sensors = useSensors(\n\t\tuseSensor(PointerSensor),\n\t\tuseSensor(KeyboardSensor, {\n\t\t\tcoordinateGetter: sortableKeyboardCoordinates,\n\t\t})\n\t);\n\treturn (\n\t\t<DndContext\n\t\t\tsensors={sensors}\n\t\t\tcollisionDetection={closestCenter}\n\t\t\tonDragStart={(event) => {\n\t\t\t\tconst { active } = event;\n\t\t\t\tsetActiveId(active.id.toString());\n\t\t\t}}\n\t\t\tonDragEnd={(event) => {\n\t\t\t\tconst { active, over } = event;\n\n\t\t\t\tif (over && active.id !== over.id) {\n\t\t\t\t\tconst oldIndex = tableState.columnOrder.indexOf(active.id.toString());\n\t\t\t\t\tconst newIndex = tableState.columnOrder.indexOf(over.id.toString());\n\t\t\t\t\tupdateTableState({ columnOrder: [...arrayMove(tableState.columnOrder, oldIndex, newIndex)] });\n\t\t\t\t}\n\n\t\t\t\tsetActiveId(null);\n\t\t\t}}\n\t\t>\n\t\t\t<SortableContext\n\t\t\t\titems={tableState.columnOrder}\n\t\t\t\tstrategy={verticalListSortingStrategy}\n\t\t\t>\n\t\t\t\t<DropdownMenu {...props}>\n\t\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t\t<Button icon={() => Columns3} variant={\"neutral\"}>\n\t\t\t\t\t\t\tColumns\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t<DropdownMenuContent>\n\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\tclassName=\"italic\"\n\t\t\t\t\t\t\t\tonSelect={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\ttanTable.toggleAllColumnsVisible();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tchecked={tanTable.getIsAllColumnsVisible()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t(Select all)\n\t\t\t\t\t\t\t</DropdownMenuCheckboxItem>\n\t\t\t\t\t\t\t{tableState.columnOrder.map((colId) => <SortableColumnCheckbox key={colId} colId={colId} />)}\n\t\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t</DropdownMenu>\n\t\t\t\t{/* The DragOverlay should only contain a representational component and not a component using useSortable to avoid conflicts and unexpected behaviour. */}\n\t\t\t\t<DragOverlay>\n\t\t\t\t\t{activeId ? <div className=\"dropdown-item opacity-70 border-2 border-primary\">{getResourceDisplayName(activeId, \"admin-portal\")}</div> : null}\n\t\t\t\t</DragOverlay>\n\t\t\t</SortableContext>\n\t\t</DndContext>\n\n\t);\n\n\n\tfunction SortableColumnCheckbox({ colId }: { colId: string }) {\n\t\tconst col = tanTable.getAllLeafColumns().find(c => c.id === colId);\n\n\t\tif (!col) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst {\n\t\t\tattributes,\n\t\t\tlisteners,\n\t\t\tsetNodeRef,\n\t\t\ttransform,\n\t\t\ttransition,\n\t\t} = useSortable({ id: colId });\n\n\t\tconst style = {\n\t\t\ttransform: CSS.Transform.toString(transform),\n\t\t\ttransition,\n\t\t\tzIndex: '999'\n\t\t};\n\t\treturn <div {...attributes} ref={setNodeRef} className=\"flex items-center\" style={style}>\n\t\t\t<GripVertical className=\"size-icon cursor-grab m-2\" {...listeners} />\n\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\tonSelect={(e) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcol.toggleVisibility();\n\t\t\t\t}}\n\t\t\t\tdisabled={!col.getCanHide()}\n\t\t\t\tchecked={col.getIsVisible()}\n\t\t\t>\n\t\t\t\t{/* TODO correct sorting indicator */}\n\t\t\t\t{col.getIsSorted()}{\" \"}\n\t\t\t\t{/* TODO getResourceDisplayName using context provider */}\n\t\t\t\t{getResourceDisplayName(col.id, \"admin-portal\")}\n\t\t\t</DropdownMenuCheckboxItem>\n\t\t</div>;\n\t}\n}\n\n\n\nimport {\n\tChevronFirst,\n\tChevronLast,\n\tChevronLeft,\n\tChevronRight,\n} from \"lucide-react\";\n\nfunction Paginator() {\n\tconst { tanTable, query } = useDataTable();\n\tconst rowCount = query.data?.total ?? 0\n\treturn (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t<span className=\"whitespace-nowrap caption text-muted\">\n\t\t\t\t{`${tanTable.getState().pagination.pageIndex * tanTable.getState().pagination.pageSize + 1} - ${Math.min(\n\t\t\t\t\t(tanTable.getState().pagination.pageIndex + 1) *\n\t\t\t\t\ttanTable.getState().pagination.pageSize,\n\t\t\t\t\trowCount,\n\t\t\t\t)} of ${rowCount?.toLocaleString()}`}\n\t\t\t</span>\n\n\t\t\t<Button\n\t\t\t\tonClick={() => tanTable.firstPage()}\n\t\t\t\tdisabled={!tanTable.getCanPreviousPage()}\n\t\t\t\tvariant=\"neutral\"\n\t\t\t\tsize={\"icon\"}\n\t\t\t\ticon={() => ChevronFirst}\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tonClick={() => tanTable.previousPage()}\n\t\t\t\tdisabled={!tanTable.getCanPreviousPage()}\n\t\t\t\tvariant=\"neutral\"\n\t\t\t\tsize={\"icon\"}\n\t\t\t\ticon={() => ChevronLeft}\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tonClick={() => tanTable.nextPage()}\n\t\t\t\tdisabled={!tanTable.getCanNextPage()}\n\t\t\t\tvariant=\"neutral\"\n\t\t\t\tsize={\"icon\"}\n\t\t\t\ticon={() => ChevronRight}\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tonClick={() => tanTable.lastPage()}\n\t\t\t\tdisabled={!tanTable.getCanNextPage()}\n\t\t\t\tvariant=\"neutral\"\n\t\t\t\tsize={\"icon\"}\n\t\t\t\ticon={() => ChevronLast}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nimport {\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem\n} from \"@/components/ui/dropdown-menu\";\nimport { Menu } from \"lucide-react\";\n\nfunction PageSize() {\n\tconst { tanTable } = useDataTable();\n\tconst pageSizes = [10, 20, 30, 40, 50];\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button icon={() => Menu} variant=\"neutral\">\n\t\t\t\t\t{tanTable.getState().pagination.pageSize}\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent>\n\t\t\t\t<DropdownMenuRadioGroup value={tanTable.getState().pagination.pageSize.toString()}>\n\t\t\t\t\t{pageSizes.map((pageSize) => (\n\t\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\t\tvalue={pageSize.toString()}\n\t\t\t\t\t\t\tonSelect={() => tanTable.setPageSize(pageSize)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{pageSize}\n\t\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuRadioGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n\n\nimport { RotateCw } from \"lucide-react\";\n\nfunction Actions({ tableActions }: { tableActions: TableActions }) {\n\tconst { query, tanTable, tableState, updateTableState } = useDataTable();\n\t// TODO const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n\treturn (\n\t\t<section className=\"flex bg-card justify-between my-0 p-icon border gap-icon overflow-auto\">\n\t\t\t<div className=\"flex gap-icon\">\n\t\t\t\t<Button\n\t\t\t\t\tloading={query.isFetching}\n\t\t\t\t\ticon={() => RotateCw}\n\t\t\t\t\tonClick={() => query.refetch()}\n\t\t\t\t\tvariant={\"neutral\"}\n\t\t\t\t\tsize={\"icon\"}\n\t\t\t\t/>\n\n\t\t\t\t{tableActions\n\t\t\t\t\t.filter(ta => ta.bulk === tanTable.getSelectedRowModel().rows.length > 0)\n\t\t\t\t\t.map((ta, i) => (<Button key={`${i}-${ta.bulk}`} type=\"button\" disabled={query.isFetching} className=\"animate-in fade-in slide-in-from-left-15 duration-300 transition-transform\" onClick={(e) => { ta.onClick(e, tanTable) }} icon={() => ta.icon} size={'icon'} />))}\n\t\t\t\t{/* //TODO: we can show the create, delete button based on permsission\n\t\t\t\t{/* All the creating routes will be with url /create in host app */}\n\t\t\t\t{/* */}\n\t\t\t</div>\n\t\t\t<div className=\"flex gap-icon\">\n\t\t\t\t<DataTableFilter />\n\t\t\t\t{(\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tvalue={tableState.search}\n\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\tupdateTableState({ search: e })\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tbuttonProps={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// TODO, this might not work\n\t\t\t\t\t\t\t\tdisabled: query.isFetching\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\n\nimport { DataTableFilter, type FiltersConfig } from \"@/components/data-table/data-table-filter\";\nimport {\n\tTableBody,\n\tTableCell,\n\tTable as TableComponent,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\nimport {\n\tflexRender\n} from \"@tanstack/react-table\";\nimport { merge } from \"lodash-es\";\nimport {\n\tArrowDownNarrowWide,\n\tArrowDownWideNarrow,\n\tArrowUpDown\n} from \"lucide-react\";\n\n// TODO, automate checking valid HTML\nfunction TableContent({ className }: React.ComponentProps<typeof TableComponent>) {\n\tconst { tanTable } = useDataTable();\n\tconst tableCellStyle = (isSticky: boolean, className?: string) => cn(\"animate-in fade-in slide-in-from-top-10\", \"px-icon py-2 text-left text-sm font-medium whitespace-nowrap\", isSticky && \"bg-card sticky right-0 z-50 text-center\", className)\n\treturn (\n\t\t<TableComponent className={cn(className)}>\n\t\t\t<TableHeader className=\"sticky top-0 z-10\">\n\t\t\t\t{tanTable.getHeaderGroups().map((headerGroup) => (\n\t\t\t\t\t<TableRow className={cn(\"h-input\")} key={headerGroup.id}>\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\n\t\t\t\t\t\t\t<TableHead\n\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\tclassName={tableCellStyle(false, \"bg-card\")}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t{/* TODO Align header text with table text */}\n\t\t\t\t\t\t\t\t\t{!header.column.getCanSort() && !header.isPlaceholder\n\t\t\t\t\t\t\t\t\t\t&& <span>{flexRender(\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\n\t\t\t\t\t\t\t\t\t\t)}</span>}\n\t\t\t\t\t\t\t\t\t{header.column.getCanSort() && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={header.column.getToggleSortingHandler()}\n\t\t\t\t\t\t\t\t\t\t\ttrailingIcon={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst sort = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\t\t\t\tif (sort === \"asc\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ArrowDownNarrowWide;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (sort === \"desc\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn ArrowDownWideNarrow;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn ArrowUpDown;\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>{flexRender(\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\n\t\t\t\t\t\t\t\t\t\t)}</Button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t))}\n\t\t\t</TableHeader>\n\t\t\t<TableBody className=\"flex-1 overflow-y-auto relative\">\n\t\t\t\t{tanTable.getRowModel().rows.map((row) => (\n\t\t\t\t\t<TableRow\n\t\t\t\t\t\tclassName={cn(\"h-input transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20\")}\n\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\tdata-selected={row.getIsSelected()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\tclassName={tableCellStyle(cell.column.id === ACTIONS_COLUMN_ID)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t))}\n\t\t\t</TableBody>\n\t\t</TableComponent>\n\t);\n}\n"],"names":["ACTIONS_COLUMN_ID","useDataTableState","columns","fetchFn","columnsToHideByDefault","allowSelection","filterConfig","id","useId","tableState","_setTableState","useState","filters","setFilters","mergedFilters","useMemo","acc","current","merge","updateTableState","updates","prev","sorting","search","columnVisibility","rowSelection","pagination","columnOrder","query","useQuery","keepPreviousData","useEffect","columnHelper","createColumnHelper","metadataColumns","data","_a","rowHasMetadata","row","rowsWithMeta","r","m","key","_b","info","value","cols","TABLE_CHECK_BOX_COLUMN","TABLE_ID_COLUMN","col","TABLE_DEFAULT_DATE_COLUMNS","isUpdaterFunction","updater","resolveUpdater","currentValue","tanTable","useReactTable","getCoreRowModel","_c","c","DataTableContext","createContext","useDataTable","ctx","useContext","DataTableProvider","children","props","DataTable","tableActions","className","jsx","Fragment","cn","Actions","jsxs","TableOverlay","Loader","Info","TableContent","ColumnPicker","PageSize","Paginator","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","event","active","over","oldIndex","newIndex","arrayMove","SortableContext","verticalListSortingStrategy","DropdownMenu","DropdownMenuTrigger","Button","Columns3","DropdownMenuContent","DropdownMenuGroup","DropdownMenuCheckboxItem","e","colId","SortableColumnCheckbox","DragOverlay","getResourceDisplayName","attributes","listeners","setNodeRef","transform","transition","useSortable","style","CSS","GripVertical","rowCount","ChevronFirst","ChevronLeft","ChevronRight","ChevronLast","pageSizes","Menu","DropdownMenuRadioGroup","pageSize","DropdownMenuRadioItem","RotateCw","ta","i","DataTableFilter","SearchInput","tableCellStyle","isSticky","TableComponent","TableHeader","headerGroup","TableRow","header","TableHead","flexRender","sort","ArrowDownNarrowWide","ArrowDownWideNarrow","ArrowUpDown","TableBody","cell","TableCell"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { jsx as c } from "react/jsx-runtime";
2
- import { createColumnHelper as r } from "@tanstack/react-table";
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { createColumnHelper as g } from "@tanstack/react-table";
3
+ import { intervalToDuration as f } from "date-fns";
3
4
  import { Checkbox as l } from "../inputs/checkbox.es.js";
4
- import { FormatDate as o } from "./table-utils/date.es.js";
5
- const t = r(), i = [
6
- t.accessor("checkbox", {
7
- header: ({ table: e }) => /* @__PURE__ */ c(
5
+ const r = g(), k = [
6
+ r.accessor("checkbox", {
7
+ header: ({ table: e }) => /* @__PURE__ */ i(
8
8
  l,
9
9
  {
10
10
  indeterminate: e.getIsSomeRowsSelected() && !e.getIsAllPageRowsSelected(),
@@ -13,7 +13,7 @@ const t = r(), i = [
13
13
  "aria-label": "Select all"
14
14
  }
15
15
  ),
16
- cell: ({ row: e }) => /* @__PURE__ */ c(
16
+ cell: ({ row: e }) => /* @__PURE__ */ i(
17
17
  l,
18
18
  {
19
19
  checked: e.getIsSelected(),
@@ -24,31 +24,279 @@ const t = r(), i = [
24
24
  enableSorting: !1,
25
25
  enableHiding: !1
26
26
  })
27
- ], m = [
28
- t.accessor("id", {
27
+ ], E = [
28
+ r.accessor("id", {
29
29
  header: () => "ID"
30
30
  })
31
- ], S = [
32
- t.accessor("createdAt", {
31
+ ], C = [
32
+ r.accessor("createdAt", {
33
33
  header: () => "Creation Date",
34
34
  cell: ({ row: e }) => {
35
- const a = e.getValue("createdAt");
36
- return o(a);
35
+ const t = e.getValue("createdAt");
36
+ return c(t);
37
37
  },
38
38
  enableHiding: !1
39
39
  }),
40
- t.accessor("updatedAt", {
40
+ r.accessor("updatedAt", {
41
41
  header: () => "Last Updated",
42
42
  cell: ({ row: e }) => {
43
- const a = e.getValue("updatedAt");
44
- return o(a);
43
+ const t = e.getValue("updatedAt");
44
+ return c(t);
45
45
  },
46
46
  enableHiding: !1
47
47
  })
48
48
  ];
49
+ function c(e) {
50
+ if (!e) return null;
51
+ const t = new Date(e);
52
+ return new Intl.DateTimeFormat(void 0, {
53
+ dateStyle: "medium",
54
+ timeStyle: "short"
55
+ }).format(t);
56
+ }
57
+ const d = {
58
+ "product.displayName": "Product"
59
+ }, I = [
60
+ "access-token",
61
+ "account",
62
+ "activation",
63
+ "activation-log",
64
+ "admin-role",
65
+ "audit-log",
66
+ "automated-email",
67
+ "automated-email-event-log",
68
+ "card",
69
+ "feature-flag",
70
+ "invoice",
71
+ "license",
72
+ "license-template",
73
+ "maintenance-policy",
74
+ "organization",
75
+ "plan",
76
+ "product",
77
+ "product-version",
78
+ "profile",
79
+ "release",
80
+ "release-channel",
81
+ "release-file",
82
+ "release-platform",
83
+ "report",
84
+ "role",
85
+ "role-claim",
86
+ "saml-configuration",
87
+ "segment",
88
+ "sending-domain",
89
+ "setting",
90
+ "tag",
91
+ "team-member",
92
+ "trial",
93
+ "trial-policy",
94
+ "user",
95
+ "user-group",
96
+ "webhook",
97
+ "webhook-event-log",
98
+ "webhook-trigger",
99
+ "reseller",
100
+ "oidc-configuration",
101
+ "organization-claim",
102
+ "reseller-claim"
103
+ ], P = {
104
+ account: "Your organization account.",
105
+ product: "Products are the software products you want to license",
106
+ license: "Licenses represent a purchase of your software. These can be linked to customers, and the license key is required to use the product.",
107
+ "access-token": "Access Tokens are used to authenticate your API requests.",
108
+ activation: "Activations, also known as devices/machines/seats are the devices consuming licenses.",
109
+ "activation-log": "Activation Log is a log entry of activation/deactivation of a particular license.",
110
+ trial: "Trial/Trial Activation is a device that has activated a trial of your product.",
111
+ "audit-log": "Audit logs contain all the changes made to your account.",
112
+ "automated-email": "Automated Email allow you to send marketing emails based on events on the linked product.",
113
+ "automated-email-event-log": "Automated email event log is the log of all the automated email events for your product.",
114
+ card: "The payment card for your account.",
115
+ "feature-flag": "Feature flags define features that make up tiers for your products.",
116
+ invoice: "",
117
+ "license-template": "License templates are a blueprint for the licenses you create for your customers and prevent repetition when creating licenses.",
118
+ "maintenance-policy": "Maintenance policies represent support contracts and can be linked to licenses.",
119
+ plan: "",
120
+ "product-version": "Product Versions are sets of Feature Flags that define the tiers of your products.",
121
+ "release-channel": "Release channel is the release channel for your product.",
122
+ "release-file": "Release files are files within your created releases.",
123
+ "release-platform": 'Release Platforms differentiate the target platform for your release. Common platforms include "Windows", "macOS", and "Linux".',
124
+ release: "Releases help you to manage different versions of your app, and secure distribute it to licensed users.",
125
+ report: "Analytics data for your account",
126
+ "role-claim": "",
127
+ role: "Roles define permissions for your team.",
128
+ "saml-configuration": "",
129
+ segment: "Sets of filters that can be saved to filter resources.",
130
+ "trial-policy": "Trial policies are templates for creating trials for your products.",
131
+ "webhook-event-log": "Webhook Event Logs are logs of events that have occured on webhooks.",
132
+ "webhook-trigger": "",
133
+ webhook: "Webhooks are HTTP callbacks which are triggered by specific events.",
134
+ organization: "",
135
+ profile: "",
136
+ setting: "",
137
+ tag: "Tags allow you to manage your licenses and customers on the dashboard.",
138
+ "team-member": "Team members can access the account based on their roles.",
139
+ user: "A user refers to your customer whom you want to license your product.",
140
+ "sending-domain": "Allows Cryptlex to send emails on your behalf using your From Email address",
141
+ "admin-role": "Roles that have type admin",
142
+ "user-group": "Groups of users that you can assign licenses to.",
143
+ reseller: "Resellers allow you to delegate user management to third parties or partners",
144
+ "oidc-configuration": "",
145
+ "organization-claim": "",
146
+ "reseller-claim": ""
147
+ }, u = {
148
+ id: "ID",
149
+ createdAt: "Creation Date",
150
+ scopes: "Permissions",
151
+ updatedAt: "Last Updated",
152
+ expiresAt: "Expiration Date",
153
+ lastSeenAt: "Last Seen",
154
+ os: "OS",
155
+ osVersion: "OS Version",
156
+ key: "License Key",
157
+ vmName: "VM Name",
158
+ container: "Container",
159
+ allowedIpRange: "Allowed IP Range",
160
+ allowedIpRanges: "Allowed IP Ranges",
161
+ allowedIpAddresses: "Allowed IP Addresses",
162
+ disallowedIpAddresses: "Disallowed IP Addresses",
163
+ allowVmActivation: "Allow VM Activation",
164
+ disableGeoLocation: "Disable Geolocation",
165
+ "user.id": "User ID",
166
+ userId: "User",
167
+ productId: "Product",
168
+ downloads: "Total Downloads",
169
+ claims: "Permissions",
170
+ googleSsoEnabled: "Google Login Enabled",
171
+ lastAttemptedAt: "Last Attempt Date",
172
+ url: "URL",
173
+ "trialPolicy.name": "Trial Policy Name",
174
+ "licensePolicy.name": "License Template Name",
175
+ licensePolicy: "License Template",
176
+ eventLog: "Audit Log",
177
+ cc: "CC Recepients",
178
+ bcc: "BCC Recepients",
179
+ ipAddress: "IP Address",
180
+ resellerId: "Reseller",
181
+ productVersionId: "Product Version",
182
+ releaseId: "Release",
183
+ maintenancePolicyId: "Maintenance Policy",
184
+ webhookId: "Webhook",
185
+ automatedEmailId: "Automated Email",
186
+ "location.countryName": "Country",
187
+ "location.ipAddress": "IP Address",
188
+ "location.countryCode": "Country",
189
+ organizationId: "Organization",
190
+ "address.country": "Country",
191
+ "address.addressLine1": "Address Line 1",
192
+ "address.addressLine2": "Address Line 2",
193
+ responseStatusCode: "HTTP Status Code",
194
+ resourceId: "Resource ID",
195
+ Sso: "SAML SSO 2.0",
196
+ "reseller.name": "Reseller",
197
+ sendingDomain: "Email Sending Domain"
198
+ };
199
+ function D(e, t) {
200
+ return t !== "admin-portal" && e in d ? d[e] : e in u ? u[e] : y(e);
201
+ }
202
+ function O(e) {
203
+ const t = e.expiresAt && new Date(e.expiresAt) < /* @__PURE__ */ new Date();
204
+ switch (!0) {
205
+ case (e.revoked && e.suspended && t):
206
+ return "Revoked, Suspended, Expired";
207
+ case (e.revoked && e.suspended):
208
+ return "Revoked, Suspended";
209
+ case (e.revoked && t):
210
+ return "Revoked, Expired";
211
+ case (e.suspended && t):
212
+ return "Suspended, Expired";
213
+ case e.suspended:
214
+ return "Suspended";
215
+ case e.revoked:
216
+ return "Revoked";
217
+ case t:
218
+ return "Expired";
219
+ default:
220
+ return "Active";
221
+ }
222
+ }
223
+ function T(e) {
224
+ return e === 0 || !e ? "Lifetime" : h(e);
225
+ }
226
+ function h(e) {
227
+ const t = f({
228
+ start: 0,
229
+ end: e * 1e3
230
+ });
231
+ return [
232
+ t.years && `${t.years}y`,
233
+ t.months && `${t.months}m`,
234
+ t.days && `${t.days}d`,
235
+ t.hours && `${t.hours}h`
236
+ ].filter(Boolean).join(" ").trim();
237
+ }
238
+ function x(e, t) {
239
+ const a = t.toString().split(".");
240
+ let o = e;
241
+ for (const s of a)
242
+ o = o == null ? void 0 : o[s];
243
+ return o;
244
+ }
245
+ const U = {
246
+ windows: "Windows",
247
+ macos: "macOS",
248
+ linux: "Linux",
249
+ ios: "iOS",
250
+ android: "Android"
251
+ };
252
+ function V(e) {
253
+ return e.replace(/([A-Z])/g, " $1").trim().split(" ").map((t) => t.charAt(0).toUpperCase() + t.slice(1).toLowerCase()).join(" ");
254
+ }
255
+ function z(e, t) {
256
+ return t > 1 ? /y$/.test(e) ? e === "Day" ? "Days" : e.replace(/y$/, "ies") : e.concat("s") : e;
257
+ }
258
+ function y(e) {
259
+ if (e) {
260
+ const t = e.replace(/([A-Z])/g, " $1");
261
+ return t.charAt(0).toUpperCase().concat(t.slice(1)).replace(/\.[a-z]/, (a) => a.replace(".", " ").toUpperCase());
262
+ }
263
+ return e;
264
+ }
265
+ var A = /* @__PURE__ */ ((e) => (e[e.USER = 0] = "USER", e[e.ORGANIZATION = 1] = "ORGANIZATION", e[e.RESELLER = 2] = "RESELLER", e))(A || {});
266
+ function F(e, t) {
267
+ return async (a, o, s, p) => {
268
+ const m = {
269
+ ...p,
270
+ page: a.pageIndex + 1,
271
+ limit: a.pageSize,
272
+ sort: S(o[0]),
273
+ search: s
274
+ };
275
+ return e.GET(t, { query: m }).then((n) => ({ total: Number.parseInt(
276
+ n.response.headers.get("Pagination-Count") || "0"
277
+ ), data: n.data }));
278
+ };
279
+ }
280
+ function S(e) {
281
+ return e ? e.desc ? `-${e.id}` : `+${e.id}` : "-createdAt";
282
+ }
49
283
  export {
50
- i as TABLE_CHECK_BOX_COLUMN,
51
- S as TABLE_DEFAULT_DATE_COLUMNS,
52
- m as TABLE_ID_COLUMN
284
+ U as ALL_OS,
285
+ A as DYNAMIC_INPUT_TARGET,
286
+ P as RESOURCE_DEFINITIONS,
287
+ I as RESOURCE_NAMES,
288
+ k as TABLE_CHECK_BOX_COLUMN,
289
+ C as TABLE_DEFAULT_DATE_COLUMNS,
290
+ E as TABLE_ID_COLUMN,
291
+ y as convertCamelCaseToTitleCase,
292
+ V as convertToTitleCase,
293
+ F as createTableFetchFn,
294
+ c as formatDate,
295
+ O as getLicenseStatus,
296
+ D as getResourceDisplayName,
297
+ T as getValidityDisplay,
298
+ x as getValueFromData,
299
+ z as pluralizeTimes,
300
+ h as secondsToDuration
53
301
  };
54
302
  //# sourceMappingURL=table-commons.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-commons.es.js","sources":["../../../lib/components/data-table/table-commons.tsx"],"sourcesContent":["import { FormatDate } from \"@/components/data-table/table-utils/index\";\nimport { Checkbox } from \"@/components/inputs\";\nimport { createColumnHelper } from \"@tanstack/react-table\";\n\nconst cH = createColumnHelper<any>();\nexport const TABLE_CHECK_BOX_COLUMN = [\n\tcH.accessor(\"checkbox\", {\n\t\theader: ({ table }) => (\n\t\t\t<Checkbox\n\t\t\t\tindeterminate={table.getIsSomeRowsSelected() && !table.getIsAllPageRowsSelected()}\n\t\t\t\tchecked={\n\t\t\t\t\ttable.getIsAllPageRowsSelected() || table.getIsSomePageRowsSelected()\n\t\t\t\t}\n\t\t\t\tonChange={() => table.toggleAllPageRowsSelected()}\n\t\t\t\taria-label=\"Select all\"\n\t\t\t/>\n\t\t),\n\n\t\tcell: ({ row }) => (\n\t\t\t<Checkbox\n\t\t\t\tchecked={row.getIsSelected()}\n\t\t\t\tonChange={() => row.toggleSelected()}\n\t\t\t\taria-label=\"Select row\"\n\t\t\t/>\n\t\t),\n\t\tenableSorting: false,\n\t\tenableHiding: false,\n\t}),\n];\n\nexport const TABLE_ID_COLUMN = [\n\tcH.accessor(\"id\", {\n\t\theader: () => \"ID\",\n\t}),\n];\nexport const TABLE_DEFAULT_DATE_COLUMNS = [\n\tcH.accessor(\"createdAt\", {\n\t\theader: () => \"Creation Date\",\n\t\tcell: ({ row }) => {\n\t\t\tconst date = row.getValue(\"createdAt\") satisfies\n\t\t\t\t| string\n\t\t\t\t| null\n\t\t\t\t| undefined;\n\t\t\treturn FormatDate(date);\n\t\t},\n\t\tenableHiding: false,\n\t}),\n\tcH.accessor(\"updatedAt\", {\n\t\theader: () => \"Last Updated\",\n\t\tcell: ({ row }) => {\n\t\t\tconst date = row.getValue(\"updatedAt\") satisfies\n\t\t\t\t| string\n\t\t\t\t| null\n\t\t\t\t| undefined;\n\t\t\treturn FormatDate(date);\n\t\t},\n\t\tenableHiding: false,\n\t}),\n];\n"],"names":["cH","createColumnHelper","TABLE_CHECK_BOX_COLUMN","table","jsx","Checkbox","row","TABLE_ID_COLUMN","TABLE_DEFAULT_DATE_COLUMNS","date","FormatDate"],"mappings":";;;;AAIA,MAAMA,IAAKC,EAAA,GACEC,IAAyB;AAAA,EACrCF,EAAG,SAAS,YAAY;AAAA,IACvB,QAAQ,CAAC,EAAE,OAAAG,EAAA,MACV,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,eAAeF,EAAM,sBAAA,KAA2B,CAACA,EAAM,yBAAA;AAAA,QACvD,SACCA,EAAM,8BAA8BA,EAAM,0BAAA;AAAA,QAE3C,UAAU,MAAMA,EAAM,0BAAA;AAAA,QACtB,cAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAIb,MAAM,CAAC,EAAE,KAAAG,EAAA,MACR,gBAAAF;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,SAASC,EAAI,cAAA;AAAA,QACb,UAAU,MAAMA,EAAI,eAAA;AAAA,QACpB,cAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAGb,eAAe;AAAA,IACf,cAAc;AAAA,EAAA,CACd;AACF,GAEaC,IAAkB;AAAA,EAC9BP,EAAG,SAAS,MAAM;AAAA,IACjB,QAAQ,MAAM;AAAA,EAAA,CACd;AACF,GACaQ,IAA6B;AAAA,EACzCR,EAAG,SAAS,aAAa;AAAA,IACxB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAM,QAAU;AAClB,YAAMG,IAAOH,EAAI,SAAS,WAAW;AAIrC,aAAOI,EAAWD,CAAI;AAAA,IAAA;AAAA,IAEvB,cAAc;AAAA,EAAA,CACd;AAAA,EACDT,EAAG,SAAS,aAAa;AAAA,IACxB,QAAQ,MAAM;AAAA,IACd,MAAM,CAAC,EAAE,KAAAM,QAAU;AAClB,YAAMG,IAAOH,EAAI,SAAS,WAAW;AAIrC,aAAOI,EAAWD,CAAI;AAAA,IAAA;AAAA,IAEvB,cAAc;AAAA,EAAA,CACd;AACF;"}
1
+ {"version":3,"file":"table-commons.es.js","sources":["../../../lib/components/data-table/table-commons.tsx"],"sourcesContent":["import { Checkbox } from \"@/components/inputs\";\nimport type { components, operations, paths } from \"@cryptlex/web-api-types\";\nimport type { PaginationState, SortingState, Table } from \"@tanstack/react-table\";\nimport { createColumnHelper } from \"@tanstack/react-table\";\nimport { intervalToDuration } from \"date-fns\";\nimport type { LucideIcon } from \"lucide-react\";\nimport type createClient from \"openapi-fetch\";\n\nconst cH = createColumnHelper<any>();\nexport const TABLE_CHECK_BOX_COLUMN = [\n\tcH.accessor(\"checkbox\", {\n\t\theader: ({ table }) => (\n\t\t\t<Checkbox\n\t\t\t\tindeterminate={table.getIsSomeRowsSelected() && !table.getIsAllPageRowsSelected()}\n\t\t\t\tchecked={\n\t\t\t\t\ttable.getIsAllPageRowsSelected() || table.getIsSomePageRowsSelected()\n\t\t\t\t}\n\t\t\t\tonChange={() => table.toggleAllPageRowsSelected()}\n\t\t\t\taria-label=\"Select all\"\n\t\t\t/>\n\t\t),\n\n\t\tcell: ({ row }) => (\n\t\t\t<Checkbox\n\t\t\t\tchecked={row.getIsSelected()}\n\t\t\t\tonChange={() => row.toggleSelected()}\n\t\t\t\taria-label=\"Select row\"\n\t\t\t/>\n\t\t),\n\t\tenableSorting: false,\n\t\tenableHiding: false,\n\t}),\n];\n\nexport const TABLE_ID_COLUMN = [\n\tcH.accessor(\"id\", {\n\t\theader: () => \"ID\",\n\t}),\n];\nexport const TABLE_DEFAULT_DATE_COLUMNS = [\n\tcH.accessor(\"createdAt\", {\n\t\theader: () => \"Creation Date\",\n\t\tcell: ({ row }) => {\n\t\t\tconst date = row.getValue(\"createdAt\") satisfies\n\t\t\t\t| string\n\t\t\t\t| null\n\t\t\t\t| undefined;\n\t\t\treturn formatDate(date);\n\t\t},\n\t\tenableHiding: false,\n\t}),\n\tcH.accessor(\"updatedAt\", {\n\t\theader: () => \"Last Updated\",\n\t\tcell: ({ row }) => {\n\t\t\tconst date = row.getValue(\"updatedAt\") satisfies\n\t\t\t\t| string\n\t\t\t\t| null\n\t\t\t\t| undefined;\n\t\t\treturn formatDate(date);\n\t\t},\n\t\tenableHiding: false,\n\t}),\n];\n\n// TODO, i18n\nexport function formatDate(date: string | null | undefined) {\n\tif (!date) return null;\n\tconst _date = new Date(date);\n\treturn new Intl.DateTimeFormat(undefined, {\n\t\tdateStyle: \"medium\",\n\t\ttimeStyle: \"short\",\n\t}).format(_date);\n}\n\n/** Application Names */\nexport type CtxProjectName =\n\t| \"admin-portal\"\n\t| \"customer-portal\"\n\t| \"internal-portal\"\n\t| \"reseller-portal\";\n// Display names specific to customer and reseller portal\nconst OTHER_PORTALS_DISPLAY_NAME: Record<string, string> = {\n\t\"product.displayName\": \"Product\",\n};\n\n/** Resource Name should ALWAYS be in singular form */\nexport const RESOURCE_NAMES = [\n\t\"access-token\",\n\t\"account\",\n\t\"activation\",\n\t\"activation-log\",\n\t\"admin-role\",\n\t\"audit-log\",\n\t\"automated-email\",\n\t\"automated-email-event-log\",\n\t\"card\",\n\t\"feature-flag\",\n\t\"invoice\",\n\t\"license\",\n\t\"license-template\",\n\t\"maintenance-policy\",\n\t\"organization\",\n\t\"plan\",\n\t\"product\",\n\t\"product-version\",\n\t\"profile\",\n\t\"release\",\n\t\"release-channel\",\n\t\"release-file\",\n\t\"release-platform\",\n\t\"report\",\n\t\"role\",\n\t\"role-claim\",\n\t\"saml-configuration\",\n\t\"segment\",\n\t\"sending-domain\",\n\t\"setting\",\n\t\"tag\",\n\t\"team-member\",\n\t\"trial\",\n\t\"trial-policy\",\n\t\"user\",\n\t\"user-group\",\n\t\"webhook\",\n\t\"webhook-event-log\",\n\t\"webhook-trigger\",\n\t\"reseller\",\n\t\"oidc-configuration\",\n\t\"organization-claim\",\n\t\"reseller-claim\",\n] as const;\nexport type ResourceName = (typeof RESOURCE_NAMES)[number];\nexport const RESOURCE_DEFINITIONS: Record<ResourceName, string> = {\n\taccount: \"Your organization account.\",\n\tproduct: \"Products are the software products you want to license\",\n\tlicense:\n\t\t\"Licenses represent a purchase of your software. These can be linked to customers, and the license key is required to use the product.\",\n\t\"access-token\": \"Access Tokens are used to authenticate your API requests.\",\n\tactivation:\n\t\t\"Activations, also known as devices/machines/seats are the devices consuming licenses.\",\n\t\"activation-log\":\n\t\t\"Activation Log is a log entry of activation/deactivation of a particular license.\",\n\ttrial:\n\t\t\"Trial/Trial Activation is a device that has activated a trial of your product.\",\n\t\"audit-log\": \"Audit logs contain all the changes made to your account.\",\n\t\"automated-email\":\n\t\t\"Automated Email allow you to send marketing emails based on events on the linked product.\",\n\t\"automated-email-event-log\":\n\t\t\"Automated email event log is the log of all the automated email events for your product.\",\n\tcard: \"The payment card for your account.\",\n\t\"feature-flag\":\n\t\t\"Feature flags define features that make up tiers for your products.\",\n\tinvoice: \"\",\n\t\"license-template\":\n\t\t\"License templates are a blueprint for the licenses you create for your customers and prevent repetition when creating licenses.\",\n\t\"maintenance-policy\":\n\t\t\"Maintenance policies represent support contracts and can be linked to licenses.\",\n\tplan: \"\",\n\t\"product-version\":\n\t\t\"Product Versions are sets of Feature Flags that define the tiers of your products.\",\n\t\"release-channel\": \"Release channel is the release channel for your product.\",\n\t\"release-file\": \"Release files are files within your created releases.\",\n\t\"release-platform\":\n\t\t'Release Platforms differentiate the target platform for your release. Common platforms include \"Windows\", \"macOS\", and \"Linux\".',\n\trelease:\n\t\t\"Releases help you to manage different versions of your app, and secure distribute it to licensed users.\",\n\treport: \"Analytics data for your account\",\n\t\"role-claim\": \"\",\n\trole: \"Roles define permissions for your team.\",\n\t\"saml-configuration\": \"\",\n\tsegment: \"Sets of filters that can be saved to filter resources.\",\n\t\"trial-policy\":\n\t\t\"Trial policies are templates for creating trials for your products.\",\n\t\"webhook-event-log\":\n\t\t\"Webhook Event Logs are logs of events that have occured on webhooks.\",\n\t\"webhook-trigger\": \"\",\n\twebhook:\n\t\t\"Webhooks are HTTP callbacks which are triggered by specific events.\",\n\torganization: \"\",\n\tprofile: \"\",\n\tsetting: \"\",\n\ttag: \"Tags allow you to manage your licenses and customers on the dashboard.\",\n\t\"team-member\": \"Team members can access the account based on their roles.\",\n\tuser: \"A user refers to your customer whom you want to license your product.\",\n\t\"sending-domain\":\n\t\t\"Allows Cryptlex to send emails on your behalf using your From Email address\",\n\t\"admin-role\": \"Roles that have type admin\",\n\t\"user-group\": \"Groups of users that you can assign licenses to.\",\n\treseller:\n\t\t\"Resellers allow you to delegate user management to third parties or partners\",\n\t\"oidc-configuration\": \"\",\n\t\"organization-claim\": \"\",\n\t\"reseller-claim\": \"\",\n};\n\nconst RESOURCE_DISPLAY_NAMES: Record<string, string> = {\n\tid: \"ID\",\n\tcreatedAt: \"Creation Date\",\n\tscopes: \"Permissions\",\n\tupdatedAt: \"Last Updated\",\n\texpiresAt: \"Expiration Date\",\n\tlastSeenAt: \"Last Seen\",\n\tos: \"OS\",\n\tosVersion: \"OS Version\",\n\tkey: \"License Key\",\n\tvmName: \"VM Name\",\n\tcontainer: \"Container\",\n\tallowedIpRange: \"Allowed IP Range\",\n\tallowedIpRanges: \"Allowed IP Ranges\",\n\tallowedIpAddresses: \"Allowed IP Addresses\",\n\tdisallowedIpAddresses: \"Disallowed IP Addresses\",\n\tallowVmActivation: \"Allow VM Activation\",\n\tdisableGeoLocation: \"Disable Geolocation\",\n\t\"user.id\": \"User ID\",\n\tuserId: \"User\",\n\tproductId: \"Product\",\n\tdownloads: \"Total Downloads\",\n\tclaims: \"Permissions\",\n\tgoogleSsoEnabled: \"Google Login Enabled\",\n\tlastAttemptedAt: \"Last Attempt Date\",\n\turl: \"URL\",\n\t\"trialPolicy.name\": \"Trial Policy Name\",\n\t\"licensePolicy.name\": \"License Template Name\",\n\tlicensePolicy: \"License Template\",\n\teventLog: \"Audit Log\",\n\tcc: \"CC Recepients\",\n\tbcc: \"BCC Recepients\",\n\tipAddress: \"IP Address\",\n\tresellerId: \"Reseller\",\n\tproductVersionId: \"Product Version\",\n\treleaseId: \"Release\",\n\tmaintenancePolicyId: \"Maintenance Policy\",\n\twebhookId: \"Webhook\",\n\tautomatedEmailId: \"Automated Email\",\n\t\"location.countryName\": \"Country\",\n\t\"location.ipAddress\": \"IP Address\",\n\t\"location.countryCode\": \"Country\",\n\torganizationId: \"Organization\",\n\t\"address.country\": \"Country\",\n\t\"address.addressLine1\": \"Address Line 1\",\n\t\"address.addressLine2\": \"Address Line 2\",\n\tresponseStatusCode: \"HTTP Status Code\",\n\tresourceId: \"Resource ID\",\n\tSso: \"SAML SSO 2.0\",\n\t\"reseller.name\": \"Reseller\",\n\tsendingDomain: \"Email Sending Domain\",\n};\nexport function getResourceDisplayName(\n\tresourceName: string,\n\tportal: CtxProjectName,\n) {\n\tif (portal !== \"admin-portal\" && resourceName in OTHER_PORTALS_DISPLAY_NAME) {\n\t\treturn OTHER_PORTALS_DISPLAY_NAME[resourceName];\n\t} else if (resourceName in RESOURCE_DISPLAY_NAMES) {\n\t\treturn RESOURCE_DISPLAY_NAMES[resourceName];\n\t} else {\n\t\treturn convertCamelCaseToTitleCase(resourceName);\n\t}\n}\n\n/**\n * Format multiple license parameters (expired, suspended, revoked) into a single status\n */\nexport function getLicenseStatus(license: any): string {\n\tconst licenseExpired =\n\t\tlicense.expiresAt && new Date(license.expiresAt) < new Date();\n\t// Status Column\n\tswitch (true) {\n\t\tcase license.revoked && license.suspended && licenseExpired:\n\t\t\treturn \"Revoked, Suspended, Expired\";\n\t\tcase license.revoked && license.suspended:\n\t\t\treturn \"Revoked, Suspended\";\n\t\tcase license.revoked && licenseExpired:\n\t\t\treturn \"Revoked, Expired\";\n\t\tcase license.suspended && licenseExpired:\n\t\t\treturn \"Suspended, Expired\";\n\t\tcase license.suspended:\n\t\t\treturn \"Suspended\";\n\t\tcase license.revoked:\n\t\t\treturn \"Revoked\";\n\t\tcase licenseExpired:\n\t\t\treturn \"Expired\";\n\t\tdefault:\n\t\t\treturn \"Active\";\n\t}\n}\n\nexport function getValidityDisplay(validity: number | undefined) {\n\tif (validity === 0 || !validity) {\n\t\treturn \"Lifetime\";\n\t} else {\n\t\treturn secondsToDuration(validity);\n\t}\n}\nexport function secondsToDuration(seconds: number): string {\n\tconst duration = intervalToDuration({\n\t\tstart: 0,\n\t\tend: seconds * 1000,\n\t});\n\n\tconst parts = [\n\t\tduration.years && `${duration.years}y`,\n\t\tduration.months && `${duration.months}m`,\n\t\tduration.days && `${duration.days}d`,\n\t\tduration.hours && `${duration.hours}h`,\n\t];\n\n\t// Filter out undefined values and join\n\treturn parts.filter(Boolean).join(\" \").trim();\n}\n\nexport function getValueFromData(\n\tdata: any,\n\taccessor: string | number | symbol,\n) {\n\tconst accessors = accessor.toString().split(\".\");\n\tlet value = data;\n\tfor (const acc of accessors) {\n\t\tvalue = value?.[acc];\n\t}\n\treturn value;\n}\nexport const ALL_OS: { [key: string]: string } = {\n\twindows: \"Windows\",\n\tmacos: \"macOS\",\n\tlinux: \"Linux\",\n\tios: \"iOS\",\n\tandroid: \"Android\",\n};\n\n/**\n *\n * @param input camelCase\n * @returns title case for the camelCase string\n */\nexport function convertToTitleCase(input: string): string {\n\treturn input\n\t\t.replace(/([A-Z])/g, \" $1\") // Insert space before capital letters\n\t\t.trim() // Remove any leading/trailing spaces\n\t\t.split(\" \") // Split into words\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) // Capitalize each word\n\t\t.join(\" \"); // Join back into a single string\n}\nexport function pluralizeTimes(resourceName: string, count: number) {\n\tif (count > 1) {\n\t\tif (/y$/.test(resourceName)) {\n\t\t\tif (resourceName === \"Day\") return \"Days\";\n\t\t\treturn resourceName.replace(/y$/, \"ies\");\n\t\t}\n\t\treturn resourceName.concat(\"s\");\n\t}\n\treturn resourceName;\n}\n\n/**\n * Converts a string from 'camelCase' to 'Title Case'\n * @param string String to convert to `Title Case`\n */\nexport function convertCamelCaseToTitleCase(string: string) {\n\tif (string) {\n\t\tconst spacedString = string.replace(/([A-Z])/g, \" $1\");\n\t\treturn spacedString\n\t\t\t.charAt(0)\n\t\t\t.toUpperCase()\n\t\t\t.concat(spacedString.slice(1))\n\t\t\t.replace(/\\.[a-z]/, (substr: string) => {\n\t\t\t\treturn substr.replace(\".\", \" \").toUpperCase();\n\t\t\t});\n\t}\n\treturn string;\n}\n\nexport enum DYNAMIC_INPUT_TARGET {\n\tUSER = 0,\n\tORGANIZATION = 1,\n\tRESELLER = 2,\n}\nexport type VisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\n\nexport type TableActions = ({\n\tonClick: (e: React.MouseEvent<HTMLButtonElement>, t: Table<any>) => void\n\tbulk: boolean;\n\ticon: LucideIcon\n\ttooltip?: string;\n})[]\n\nexport type TableFetchFn<TData, TOperation extends keyof operations> = (\n\tp: PaginationState,\n\ts: SortingState,\n\tq: string,\n\tf: ApiFilters<TOperation>\n) => Promise<{\n\ttotal: number;\n\tdata: TData[] | undefined;\n}>;\n/*** Type for hide some of the columns based on the dto of the particular page\n ** `id`, `updatedAt` are by default hidden\n */\nexport type DefaultVisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\n\n\ntype Client = ReturnType<typeof createClient<paths>>;\n\n// Helper type to extract valid GET paths\ntype GetPaths = {\n\t[P in keyof paths]: paths[P] extends { get: any } ? P : never;\n}[keyof paths];\n\nexport type ApiSchema<T extends keyof components['schemas']> = components['schemas'][T];\nexport type ApiQuery<T extends keyof operations> = NonNullable<operations[T]['parameters']['query']>;\nexport type ApiGetAllParameters = {\n\tpage: number;\n\tlimit: number;\n\tsearch?: string;\n\tsort?: string;\n}\n\n\nexport type ApiFilter<T extends keyof operations> = Omit<ApiQuery<T>, 'page' | 'limit' | 'sort' | 'search'>\nexport type ApiFilters<T extends keyof operations> = NonNullable<Omit<ApiQuery<T>, 'page' | 'limit' | 'sort' | 'search'>>\n\nexport function createTableFetchFn<Return, Operation extends keyof operations>(\n\tctxclient: Client,\n\tpath: GetPaths,\n): TableFetchFn<Return, Operation> {\n\treturn async (pagination, sorting, searching, filters) => {\n\t\tconst query: ApiQuery<Operation> = {\n\t\t\t...filters,\n\t\t\tpage: pagination.pageIndex + 1,\n\t\t\tlimit: pagination.pageSize,\n\t\t\tsort: generateSortParam(sorting[0]),\n\t\t\tsearch: searching,\n\t\t};\n\n\t\t// const pathParams = merge(_baseQueryObject, params);\n\n\t\treturn ctxclient.GET(path, { query }).then((value) => {\n\t\t\tconst rowCount = Number.parseInt(\n\t\t\t\tvalue.response.headers.get(\"Pagination-Count\") || \"0\",\n\t\t\t);\n\t\t\treturn { total: rowCount, data: value.data };\n\t\t});\n\t};\n}\n\nfunction generateSortParam(\n\tsort: { id: string; desc: boolean } | undefined,\n): string {\n\tif (sort) {\n\t\tif (sort.desc) {\n\t\t\treturn `-${sort.id}`;\n\t\t} else {\n\t\t\treturn `+${sort.id}`;\n\t\t}\n\t} else {\n\t\treturn \"-createdAt\";\n\t}\n}\n\n\n"],"names":["cH","createColumnHelper","TABLE_CHECK_BOX_COLUMN","table","jsx","Checkbox","row","TABLE_ID_COLUMN","TABLE_DEFAULT_DATE_COLUMNS","date","formatDate","_date","OTHER_PORTALS_DISPLAY_NAME","RESOURCE_NAMES","RESOURCE_DEFINITIONS","RESOURCE_DISPLAY_NAMES","getResourceDisplayName","resourceName","portal","convertCamelCaseToTitleCase","getLicenseStatus","license","licenseExpired","getValidityDisplay","validity","secondsToDuration","seconds","duration","intervalToDuration","getValueFromData","data","accessor","accessors","value","acc","ALL_OS","convertToTitleCase","input","word","pluralizeTimes","count","string","spacedString","substr","DYNAMIC_INPUT_TARGET","createTableFetchFn","ctxclient","path","pagination","sorting","searching","filters","query","generateSortParam","sort"],"mappings":"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"}
@@ -1,33 +1,33 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
2
  import { buttonVariants as t } from "../ui/button.es.js";
3
- import { cn as e } from "../../utils/index.es.js";
4
- import { DayPicker as s } from "../../node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/DayPicker.es.js";
5
- function u({
3
+ import { DayPicker as i } from "../../node_modules/.pnpm/react-day-picker@9.7.0_react@19.1.0/node_modules/react-day-picker/dist/esm/DayPicker.es.js";
4
+ import { cn as e } from "../../utils/primitives.es.js";
5
+ function m({
6
6
  className: r,
7
7
  classNames: d,
8
8
  showOutsideDays: o = !0,
9
9
  ...a
10
10
  }) {
11
11
  return /* @__PURE__ */ n(
12
- s,
12
+ i,
13
13
  {
14
14
  showOutsideDays: o,
15
15
  className: e("p-3", r),
16
16
  classNames: {
17
- months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
18
- month: "space-y-4",
17
+ months: "flex flex-col sm:flex-row space-y-icon sm:space-x-icon sm:space-y-0",
18
+ month: "space-y-icon",
19
19
  caption: "flex justify-center pt-1 relative items-center",
20
20
  caption_label: "body font-medium",
21
21
  nav: "space-x-1 flex items-center",
22
22
  nav_button: e(
23
- t({ variant: "outline" }),
23
+ t({ variant: "neutral" }),
24
24
  "size-7 bg-transparent p-0 opacity-50 hover:opacity-100"
25
25
  ),
26
26
  nav_button_previous: "absolute left-1",
27
27
  nav_button_next: "absolute right-1",
28
28
  table: "w-full border-collapse space-y-1",
29
29
  head_row: "flex",
30
- head_cell: "text-muted-foreground rounded-md w-8 font-normal text-caption",
30
+ head_cell: "text-muted-foreground rounded-md w-input font-normal text-caption",
31
31
  row: "flex w-full mt-2",
32
32
  cell: e(
33
33
  "relative p-0 text-center body focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md",
@@ -35,7 +35,7 @@ function u({
35
35
  ),
36
36
  day: e(
37
37
  t({ variant: "ghost" }),
38
- "size-8 p-0 font-normal aria-selected:opacity-100"
38
+ "size-input p-0 font-normal aria-selected:opacity-100"
39
39
  ),
40
40
  day_range_start: "day-range-start",
41
41
  day_range_end: "day-range-end",
@@ -48,14 +48,14 @@ function u({
48
48
  ...d
49
49
  },
50
50
  components: {
51
- // IconLeft: () => <ChevronLeft className="size-4" />,
52
- // IconRight: () => <ChevronRight className="size-4" />,
51
+ // IconLeft: () => <ChevronLeft className="size-icon" />,
52
+ // IconRight: () => <ChevronRight className="size-icon" />,
53
53
  },
54
54
  ...a
55
55
  }
56
56
  );
57
57
  }
58
58
  export {
59
- u as Calendar
59
+ m as Calendar
60
60
  };
61
61
  //# sourceMappingURL=calendar.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.es.js","sources":["../../../lib/components/inputs/calendar.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function Calendar({\n\tclassName,\n\tclassNames,\n\tshowOutsideDays = true,\n\t...props\n}: CalendarProps) {\n\treturn (\n\t\t<DayPicker\n\t\t\tshowOutsideDays={showOutsideDays}\n\t\t\tclassName={cn(\"p-3\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n\t\t\t\tmonth: \"space-y-4\",\n\t\t\t\tcaption: \"flex justify-center pt-1 relative items-center\",\n\t\t\t\tcaption_label: \"body font-medium\",\n\t\t\t\tnav: \"space-x-1 flex items-center\",\n\t\t\t\tnav_button: cn(\n\t\t\t\t\tbuttonVariants({ variant: \"outline\" }),\n\t\t\t\t\t\"size-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n\t\t\t\t),\n\t\t\t\tnav_button_previous: \"absolute left-1\",\n\t\t\t\tnav_button_next: \"absolute right-1\",\n\t\t\t\ttable: \"w-full border-collapse space-y-1\",\n\t\t\t\thead_row: \"flex\",\n\t\t\t\thead_cell:\n\t\t\t\t\t\"text-muted-foreground rounded-md w-8 font-normal text-caption\",\n\t\t\t\trow: \"flex w-full mt-2\",\n\t\t\t\tcell: cn(\n\t\t\t\t\t\"relative p-0 text-center body focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n\t\t\t\t\tprops.mode === \"range\"\n\t\t\t\t\t\t? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n\t\t\t\t\t\t: \"[&:has([aria-selected])]:rounded-md\",\n\t\t\t\t),\n\t\t\t\tday: cn(\n\t\t\t\t\tbuttonVariants({ variant: \"ghost\" }),\n\t\t\t\t\t\"size-8 p-0 font-normal aria-selected:opacity-100\",\n\t\t\t\t),\n\t\t\t\tday_range_start: \"day-range-start\",\n\t\t\t\tday_range_end: \"day-range-end\",\n\t\t\t\tday_selected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n\t\t\t\tday_today: \"bg-accent text-accent-foreground\",\n\t\t\t\tday_outside:\n\t\t\t\t\t\"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n\t\t\t\tday_disabled: \"text-muted-foreground opacity-50\",\n\t\t\t\tday_range_middle:\n\t\t\t\t\t\"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n\t\t\t\tday_hidden: \"invisible\",\n\t\t\t\t...classNames,\n\t\t\t}}\n\t\t\tcomponents={{\n\t\t\t\t// IconLeft: () => <ChevronLeft className=\"size-4\" />,\n\t\t\t\t// IconRight: () => <ChevronRight className=\"size-4\" />,\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","props","jsx","DayPicker","cn","buttonVariants"],"mappings":";;;;AAQO,SAASA,EAAS;AAAA,EACxB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACJ,GAAkB;AACjB,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,iBAAAH;AAAA,MACA,WAAWI,EAAG,OAAON,CAAS;AAAA,MAC9B,YAAY;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYM;AAAA,UACXC,EAAe,EAAE,SAAS,WAAW;AAAA,UACrC;AAAA,QAAA;AAAA,QAED,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WACC;AAAA,QACD,KAAK;AAAA,QACL,MAAMD;AAAA,UACL;AAAA,UACAH,EAAM,SAAS,UACZ,yKACA;AAAA,QAAA;AAAA,QAEJ,KAAKG;AAAA,UACJC,EAAe,EAAE,SAAS,SAAS;AAAA,UACnC;AAAA,QAAA;AAAA,QAED,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,cACC;AAAA,QACD,WAAW;AAAA,QACX,aACC;AAAA,QACD,cAAc;AAAA,QACd,kBACC;AAAA,QACD,YAAY;AAAA,QACZ,GAAGN;AAAA,MAAA;AAAA,MAEJ,YAAY;AAAA;AAAA;AAAA,MAAA;AAAA,MAIX,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"calendar.es.js","sources":["../../../lib/components/inputs/calendar.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function Calendar({\n\tclassName,\n\tclassNames,\n\tshowOutsideDays = true,\n\t...props\n}: CalendarProps) {\n\treturn (\n\t\t<DayPicker\n\t\t\tshowOutsideDays={showOutsideDays}\n\t\t\tclassName={cn(\"p-3\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col sm:flex-row space-y-icon sm:space-x-icon sm:space-y-0\",\n\t\t\t\tmonth: \"space-y-icon\",\n\t\t\t\tcaption: \"flex justify-center pt-1 relative items-center\",\n\t\t\t\tcaption_label: \"body font-medium\",\n\t\t\t\tnav: \"space-x-1 flex items-center\",\n\t\t\t\tnav_button: cn(\n\t\t\t\t\tbuttonVariants({ variant: \"neutral\" }),\n\t\t\t\t\t\"size-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n\t\t\t\t),\n\t\t\t\tnav_button_previous: \"absolute left-1\",\n\t\t\t\tnav_button_next: \"absolute right-1\",\n\t\t\t\ttable: \"w-full border-collapse space-y-1\",\n\t\t\t\thead_row: \"flex\",\n\t\t\t\thead_cell:\n\t\t\t\t\t\"text-muted-foreground rounded-md w-input font-normal text-caption\",\n\t\t\t\trow: \"flex w-full mt-2\",\n\t\t\t\tcell: cn(\n\t\t\t\t\t\"relative p-0 text-center body focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n\t\t\t\t\tprops.mode === \"range\"\n\t\t\t\t\t\t? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n\t\t\t\t\t\t: \"[&:has([aria-selected])]:rounded-md\",\n\t\t\t\t),\n\t\t\t\tday: cn(\n\t\t\t\t\tbuttonVariants({ variant: \"ghost\" }),\n\t\t\t\t\t\"size-input p-0 font-normal aria-selected:opacity-100\",\n\t\t\t\t),\n\t\t\t\tday_range_start: \"day-range-start\",\n\t\t\t\tday_range_end: \"day-range-end\",\n\t\t\t\tday_selected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n\t\t\t\tday_today: \"bg-accent text-accent-foreground\",\n\t\t\t\tday_outside:\n\t\t\t\t\t\"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n\t\t\t\tday_disabled: \"text-muted-foreground opacity-50\",\n\t\t\t\tday_range_middle:\n\t\t\t\t\t\"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n\t\t\t\tday_hidden: \"invisible\",\n\t\t\t\t...classNames,\n\t\t\t}}\n\t\t\tcomponents={{\n\t\t\t\t// IconLeft: () => <ChevronLeft className=\"size-icon\" />,\n\t\t\t\t// IconRight: () => <ChevronRight className=\"size-icon\" />,\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","props","jsx","DayPicker","cn","buttonVariants"],"mappings":";;;;AAQO,SAASA,EAAS;AAAA,EACxB,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGC;AACJ,GAAkB;AACjB,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,iBAAAH;AAAA,MACA,WAAWI,EAAG,OAAON,CAAS;AAAA,MAC9B,YAAY;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,YAAYM;AAAA,UACXC,EAAe,EAAE,SAAS,WAAW;AAAA,UACrC;AAAA,QAAA;AAAA,QAED,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WACC;AAAA,QACD,KAAK;AAAA,QACL,MAAMD;AAAA,UACL;AAAA,UACAH,EAAM,SAAS,UACZ,yKACA;AAAA,QAAA;AAAA,QAEJ,KAAKG;AAAA,UACJC,EAAe,EAAE,SAAS,SAAS;AAAA,UACnC;AAAA,QAAA;AAAA,QAED,iBAAiB;AAAA,QACjB,eAAe;AAAA,QACf,cACC;AAAA,QACD,WAAW;AAAA,QACX,aACC;AAAA,QACD,cAAc;AAAA,QACd,kBACC;AAAA,QACD,YAAY;AAAA,QACZ,GAAGN;AAAA,MAAA;AAAA,MAEJ,YAAY;AAAA;AAAA;AAAA,MAAA;AAAA,MAIX,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGP;"}