/*
*  Copyright (C) 2021 Savoir-faire Linux Inc.
*  Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
*/

#import <Cocoa/Cocoa.h>

NS_ASSUME_NONNULL_BEGIN

@interface FileToSendCollectionItem : NSCollectionViewItem

@property (nonatomic, strong) IBOutlet NSImageView* filePreview;
@property (nonatomic, strong) IBOutlet NSImageView* placeholderPreview;
@property (nonatomic, strong) IBOutlet NSTextField* fileName;
@property (nonatomic, strong) IBOutlet NSTextField* fileSize;
@property (nonatomic, strong) IBOutlet NSButton* closeButton;

@end

NS_ASSUME_NONNULL_END
