index.jsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { twMerge } from "tailwind-merge";
  2. import { FileLoader } from "./file-loader";
  3. import { ColorPresetSelect } from "./color-preset-select";
  4. import { ColorPalette } from "./color-palette";
  5. import { IndexedAnimatePresence } from "../indexed-animated-presence";
  6. export const TopControls = ({
  7. isFileLoaded,
  8. palette,
  9. onPaletteColorChange,
  10. onPalettePresetSelect,
  11. }) => {
  12. const stackCenteredStyle = "absolute top-0 left-0 bottom-0 right-0 items-center";
  13. return (
  14. <div
  15. className={twMerge(
  16. "flex gap-12 mt-8 justify-center max-lg:flex-col max-lg:items-center max-lg:gap-6",
  17. isFileLoaded ? "" : stackCenteredStyle
  18. )}
  19. >
  20. <FileLoader />
  21. {isFileLoaded && (
  22. <div className="flex max-md:flex-col max-md:items-center max-md:gap-6">
  23. <IndexedAnimatePresence index={0}>
  24. <ColorPalette colors={palette.colors} onChange={onPaletteColorChange} />
  25. </IndexedAnimatePresence>
  26. <IndexedAnimatePresence index={1}>
  27. <div className="flex ml-4 gap-12 max-sm:ml-0">
  28. <ColorPresetSelect
  29. currentPalette={palette}
  30. onPresetSelect={onPalettePresetSelect}
  31. />
  32. </div>
  33. </IndexedAnimatePresence>
  34. </div>
  35. )}
  36. </div>
  37. );
  38. };