PricingTopSection.jsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. Copyright (C) 2025 QuantumNous
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Affero General Public License as
  5. published by the Free Software Foundation, either version 3 of the
  6. License, or (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Affero General Public License for more details.
  11. You should have received a copy of the GNU Affero General Public License
  12. along with this program. If not, see <https://www.gnu.org/licenses/>.
  13. For commercial licensing, please contact support@quantumnous.com
  14. */
  15. import React, { useState, memo } from 'react';
  16. import PricingFilterModal from '../../modal/PricingFilterModal';
  17. import PricingVendorIntroWithSkeleton from './PricingVendorIntroWithSkeleton';
  18. const PricingTopSection = memo(({
  19. selectedRowKeys,
  20. copyText,
  21. handleChange,
  22. handleCompositionStart,
  23. handleCompositionEnd,
  24. isMobile,
  25. sidebarProps,
  26. filterVendor,
  27. models,
  28. filteredModels,
  29. loading,
  30. searchValue,
  31. t
  32. }) => {
  33. const [showFilterModal, setShowFilterModal] = useState(false);
  34. return (
  35. <>
  36. <PricingVendorIntroWithSkeleton
  37. loading={loading}
  38. filterVendor={filterVendor}
  39. models={filteredModels}
  40. allModels={models}
  41. t={t}
  42. selectedRowKeys={selectedRowKeys}
  43. copyText={copyText}
  44. handleChange={handleChange}
  45. handleCompositionStart={handleCompositionStart}
  46. handleCompositionEnd={handleCompositionEnd}
  47. isMobile={isMobile}
  48. searchValue={searchValue}
  49. setShowFilterModal={setShowFilterModal}
  50. />
  51. {isMobile && (
  52. <PricingFilterModal
  53. visible={showFilterModal}
  54. onClose={() => setShowFilterModal(false)}
  55. sidebarProps={sidebarProps}
  56. t={t}
  57. />
  58. )}
  59. </>
  60. );
  61. });
  62. PricingTopSection.displayName = 'PricingTopSection';
  63. export default PricingTopSection;