💄Add business cards
This commit is contained in:
@@ -6,6 +6,10 @@
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
573DAF242CF0CC54006DF58A /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 573DAF232CF0CC54006DF58A /* Lottie */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
57282ACB2CBD2810000C443E /* AlloVoisinsSwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AlloVoisinsSwiftUI.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -36,6 +40,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
573DAF242CF0CC54006DF58A /* Lottie in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -78,6 +83,7 @@
|
||||
);
|
||||
name = AlloVoisinsSwiftUI;
|
||||
packageProductDependencies = (
|
||||
573DAF232CF0CC54006DF58A /* Lottie */,
|
||||
);
|
||||
productName = AlloVoisinsSwiftUI;
|
||||
productReference = 57282ACB2CBD2810000C443E /* AlloVoisinsSwiftUI.app */;
|
||||
@@ -107,6 +113,9 @@
|
||||
);
|
||||
mainGroup = 57282AC22CBD2810000C443E;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
packageReferences = (
|
||||
573DAF222CF0CC54006DF58A /* XCRemoteSwiftPackageReference "lottie-spm" */,
|
||||
);
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 57282ACC2CBD2810000C443E /* Products */;
|
||||
projectDirPath = "";
|
||||
@@ -343,6 +352,25 @@
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
573DAF222CF0CC54006DF58A /* XCRemoteSwiftPackageReference "lottie-spm" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/airbnb/lottie-spm.git";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 4.5.0;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
573DAF232CF0CC54006DF58A /* Lottie */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 573DAF222CF0CC54006DF58A /* XCRemoteSwiftPackageReference "lottie-spm" */;
|
||||
productName = Lottie;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 57282AC32CBD2810000C443E /* Project object */;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"originHash" : "6b3386dc9ff1f3a74f1534de9c41d47137eae0901cfe819ed442f1b241549359",
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "lottie-spm",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/airbnb/lottie-spm.git",
|
||||
"state" : {
|
||||
"revision" : "b842598f1295f3ffa1475b1580672d1fe5b83580",
|
||||
"version" : "4.5.0"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 3
|
||||
}
|
||||
@@ -49,6 +49,7 @@ struct RegulatedProfessionEditProfilModal: View {
|
||||
|
||||
VStack {
|
||||
SQButton("fermer", color: .sqNeutral(100), textColor: .white) {}
|
||||
.disabled(true)
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.vertical, 24)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
// Created by Victor on 12/06/2024.
|
||||
//
|
||||
|
||||
import Lottie
|
||||
import SwiftUI
|
||||
|
||||
struct SQButton: View {
|
||||
@@ -18,6 +19,13 @@ struct SQButton: View {
|
||||
@Binding var isLoading: Bool
|
||||
let action: () -> Void
|
||||
|
||||
private var textWidth: CGFloat {
|
||||
let font = UIFont.systemFont(ofSize: textSize)
|
||||
let attributes = [NSAttributedString.Key.font: font]
|
||||
let size = (title as NSString).size(withAttributes: attributes)
|
||||
return size.width + (icon != nil ? 24 : 0)
|
||||
}
|
||||
|
||||
init(_ title: String, color: Color = .sqNeutral(10), textColor: Color = .black, textSize: CGFloat = 16, font: SQTextFont = .demiBold, icon: SQIcon? = nil, isFull: Bool = true, isLoading: Binding<Bool> = .constant(false), action: @escaping () -> Void) {
|
||||
self.title = title
|
||||
self.color = color
|
||||
@@ -34,37 +42,30 @@ struct SQButton: View {
|
||||
Button(action: {
|
||||
self.action()
|
||||
}, label: {
|
||||
if isLoading {
|
||||
ProgressView()
|
||||
.padding(.horizontal, 30)
|
||||
.padding(.vertical, 12)
|
||||
.frame(height: 40, alignment: .center)
|
||||
.background(isFull ? color : .clear)
|
||||
.cornerRadius(100)
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 100)
|
||||
.inset(by: 0.5)
|
||||
.stroke(color, lineWidth: 1)
|
||||
)
|
||||
} else {
|
||||
HStack {
|
||||
if (icon != nil) {
|
||||
HStack {
|
||||
if isLoading {
|
||||
LottieView(animation: .named("av_loader"))
|
||||
.looping()
|
||||
.frame(width: 20)
|
||||
} else {
|
||||
if icon != nil {
|
||||
icon
|
||||
}
|
||||
|
||||
SQText(title, size: textSize, font: font, textColor: textColor)
|
||||
}
|
||||
.padding(.horizontal, 30)
|
||||
.padding(.vertical, 12)
|
||||
.frame(height: 40, alignment: .center)
|
||||
.background(isFull ? color : .clear)
|
||||
.cornerRadius(100)
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 100)
|
||||
.inset(by: 0.5)
|
||||
.stroke(color, lineWidth: 1)
|
||||
)
|
||||
}
|
||||
.frame(minWidth: textWidth)
|
||||
.padding(.horizontal, 30)
|
||||
.padding(.vertical, 12)
|
||||
.frame(height: 40, alignment: .center)
|
||||
.background(isFull ? color : .clear)
|
||||
.cornerRadius(100)
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 100)
|
||||
.inset(by: 0.5)
|
||||
.stroke(color.opacity(isFull ? 0 : 1), lineWidth: 1)
|
||||
)
|
||||
})
|
||||
.buttonStyle(PlainButtonStyle())
|
||||
}
|
||||
@@ -93,11 +94,12 @@ enum SQButtonStyle {
|
||||
|
||||
#Preview {
|
||||
VStack(spacing: 16) {
|
||||
SQButton("C'est parti !", color: .sqNeutral(100), isFull: false) {}
|
||||
SQButton("C'est parti !") {}
|
||||
.sqStyle()
|
||||
SQButton("C'est parti !", color: .sqOrange(50), textColor: .white) {}
|
||||
.sqStyle()
|
||||
.disabled(true)
|
||||
SQButton("Imprimer", color: .sqNeutral(100), textColor: .white, icon: SQIcon(.print, color: .white)) {}
|
||||
.sqStyle()
|
||||
.disabled(true)
|
||||
SQButton("C'est parti !", isLoading: .constant(true)) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,9 @@ struct SQColorPicker: View {
|
||||
VStack(alignment: .leading) {
|
||||
SQText(title, size: 18, font: .bold)
|
||||
SQText(subtitle ?? "")
|
||||
.lineLimit(2)
|
||||
.lineSpacing(1)
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
}
|
||||
HStack {
|
||||
ForEach(colors, id: \.self) { color in
|
||||
@@ -76,7 +79,6 @@ struct SQColorPicker: View {
|
||||
|
||||
private func colorDot(_ color: Color) -> some View {
|
||||
HStack(alignment: .center, spacing: 8) {}
|
||||
.padding(4)
|
||||
.frame(width: 32, height: 32, alignment: .center)
|
||||
.background(color)
|
||||
.cornerRadius(32)
|
||||
|
||||
@@ -7,14 +7,20 @@
|
||||
|
||||
import SwiftUI
|
||||
|
||||
enum SQTextFieldType {
|
||||
case text
|
||||
case phoneNumber
|
||||
}
|
||||
|
||||
struct SQTextField: View {
|
||||
var label: String
|
||||
var placeholder: String
|
||||
var type: SQTextFieldType = .text
|
||||
var errorText: String
|
||||
var icon: SQIcon?
|
||||
var isDisabled: Bool = false
|
||||
var isOptional: Bool = false
|
||||
var isInError: Bool = false
|
||||
@Binding var isInError: Bool
|
||||
var minCharacters: Int?
|
||||
var maxCharacters: Int?
|
||||
@Binding var text: String
|
||||
@@ -24,15 +30,16 @@ struct SQTextField: View {
|
||||
|
||||
private var accentColor: Color = .sqNeutral(80)
|
||||
|
||||
init(_ label: String, placeholder: String, errorText: String = "", text: Binding<String>, icon: SQIcon? = nil, isDisabled: Bool = false, isOptional: Bool = false, isInError: Bool = false, minCharacters: Int? = nil, maxCharacters: Int? = nil, infoAction: (() -> Void)? = nil, iconAction: (() -> Void)? = nil) {
|
||||
init(_ label: String, placeholder: String, type: SQTextFieldType = .text, errorText: String = "", text: Binding<String>, icon: SQIcon? = nil, isDisabled: Bool = false, isOptional: Bool = false, isInError: Binding<Bool> = .constant(false), minCharacters: Int? = nil, maxCharacters: Int? = nil, infoAction: (() -> Void)? = nil, iconAction: (() -> Void)? = nil) {
|
||||
self.label = label
|
||||
self.placeholder = placeholder
|
||||
self.type = type
|
||||
self.errorText = errorText
|
||||
self._text = text
|
||||
self.icon = icon
|
||||
self.isDisabled = isDisabled
|
||||
self.isOptional = isOptional
|
||||
self.isInError = isInError
|
||||
self._isInError = isInError
|
||||
self.minCharacters = minCharacters
|
||||
self.maxCharacters = maxCharacters
|
||||
self.infoAction = infoAction
|
||||
@@ -57,17 +64,40 @@ struct SQTextField: View {
|
||||
}
|
||||
// TextField
|
||||
HStack(spacing: 4) {
|
||||
TextField(placeholder, text: Binding(
|
||||
get: { self.text },
|
||||
set: { self.text = String($0.prefix(self.maxCharacters ?? Int.max)) }
|
||||
))
|
||||
.font(.sq(.medium))
|
||||
.tint(accentColor)
|
||||
if let icon = icon {
|
||||
Button {
|
||||
iconAction?()
|
||||
} label: {
|
||||
icon
|
||||
if type == .phoneNumber {
|
||||
TextField(placeholder, text: Binding(
|
||||
get: { formatPhoneNumber(self.text) },
|
||||
set: {
|
||||
let filtered = $0.filter { $0.isNumber }
|
||||
let truncated = String(filtered.prefix(10))
|
||||
self.text = truncated
|
||||
self.isInError = !isValidPhoneNumber(truncated)
|
||||
}
|
||||
))
|
||||
.onReceive(self.text.publisher.collect()) {
|
||||
self.text = String($0.prefix(10))
|
||||
}
|
||||
.keyboardType(.numberPad)
|
||||
.font(.sq(.medium))
|
||||
.foregroundStyle(Color.sqNeutral(100))
|
||||
.tint(accentColor)
|
||||
} else {
|
||||
TextField(placeholder, text: Binding(
|
||||
get: { self.text },
|
||||
set: { self.text = String($0.prefix(self.maxCharacters ?? Int.max)) }
|
||||
))
|
||||
.onChange(of: self.text, perform: { _ in
|
||||
self.isInError = false
|
||||
})
|
||||
.font(.sq(.medium))
|
||||
.foregroundStyle(Color.sqNeutral(100))
|
||||
.tint(accentColor)
|
||||
if let icon = icon {
|
||||
Button {
|
||||
iconAction?()
|
||||
} label: {
|
||||
icon
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,7 +107,7 @@ struct SQTextField: View {
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(isFocused ? accentColor : isDisabled ? Color.sqNeutral(20) : Color.sqNeutral(30), lineWidth: 1)
|
||||
.stroke(isInError ? .sqSemanticRed : isFocused ? accentColor : isDisabled ? Color.sqNeutral(20) : Color.sqNeutral(30), lineWidth: 1)
|
||||
)
|
||||
.focused($isFocused)
|
||||
.disabled(isDisabled)
|
||||
@@ -106,6 +136,25 @@ struct SQTextField: View {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
private func formatPhoneNumber(_ number: String) -> String {
|
||||
let numbers = number.filter { $0.isNumber }
|
||||
var result = ""
|
||||
|
||||
for (index, char) in numbers.enumerated() {
|
||||
if index > 0 && index % 2 == 0 {
|
||||
result += " "
|
||||
}
|
||||
result += String(char)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
private func isValidPhoneNumber(_ number: String) -> Bool {
|
||||
let numbers = number.filter { $0.isNumber }
|
||||
return numbers.count == 10 && numbers.first == "0"
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
@@ -113,6 +162,8 @@ struct SQTextField: View {
|
||||
SQTextField("Label name", placeholder: "Placeholder", text: .constant("Bonjour, "), minCharacters: 20)
|
||||
SQTextField("Label name", placeholder: "Placeholder", text: .constant(""), isOptional: true)
|
||||
SQTextField("Label name", placeholder: "Placeholder", text: .constant(""), isDisabled: true)
|
||||
SQTextField("Label name", placeholder: "Placeholder", errorText: "Champ invalide", text: .constant(""), isInError: .constant(true))
|
||||
SQTextField("Téléphone", placeholder: "01 23 45 67 89", type: .phoneNumber, text: .constant(""))
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
|
||||
@@ -12,49 +12,66 @@ struct MarketingSupportSelectionView: View {
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
Spacer()
|
||||
.frame(height: 16)
|
||||
// Visit cards
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
SQImage("visit_card_new", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
SQText("Mes cartes de visite", size: 18, font: .bold)
|
||||
VStack(spacing: 16) {
|
||||
Spacer()
|
||||
.frame(height: 16)
|
||||
// Visit cards
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
SQImage("visit_card_new", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
HStack {
|
||||
SQText("Mes cartes de visite", size: 18, font: .bold)
|
||||
Spacer()
|
||||
SQImage("for_pro_icon", height: 13)
|
||||
}
|
||||
.padding(16)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
)
|
||||
.onTapGesture {
|
||||
self.goToNext.toggle()
|
||||
}
|
||||
.onTapGesture {
|
||||
self.goToNext.toggle()
|
||||
}
|
||||
.fixedSize(horizontal: true, vertical: false)
|
||||
|
||||
// Flyers
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
SQImage("flyers", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
SQText("Mes prospetus", size: 18, font: .bold)
|
||||
// Flyers
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
SQImage("flyers", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
HStack {
|
||||
SQText("Mes prospetus", size: 18, font: .bold)
|
||||
Spacer()
|
||||
SQImage("for_pro_icon", height: 13)
|
||||
}
|
||||
.padding(16)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
)
|
||||
.fixedSize(horizontal: true, vertical: false)
|
||||
|
||||
// Quotes
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
SQImage("quotes", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
SQText("Mes prospetus", size: 18, font: .bold)
|
||||
// Quotes
|
||||
VStack(alignment: .center, spacing: 0) {
|
||||
SQImage("quotes", height: 200)
|
||||
.cornerRadius(8, corners: [.topLeft, .topRight])
|
||||
HStack {
|
||||
SQText("Mes prospetus", size: 18, font: .bold)
|
||||
Spacer()
|
||||
SQImage("for_pro_icon", height: 13)
|
||||
}
|
||||
.padding(16)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
}
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
.inset(by: 0.5)
|
||||
.stroke(Color.sqNeutral(20), lineWidth: 1)
|
||||
)
|
||||
.fixedSize(horizontal: true, vertical: false)
|
||||
}
|
||||
}
|
||||
.scrollIndicators(.hidden)
|
||||
.sqNavigationBar(title: "Mes supports de communication")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"colors" : [
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "badge.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
BIN
AlloVoisinsSwiftUI/Resources/Assets.xcassets/Images/for_pro_icon.imageset/badge.png
vendored
Normal file
BIN
AlloVoisinsSwiftUI/Resources/Assets.xcassets/Images/for_pro_icon.imageset/badge.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
1
AlloVoisinsSwiftUI/Resources/Lottie/av_loader.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/av_loader.json
Normal file
@@ -0,0 +1 @@
|
||||
{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":61,"w":500,"h":500,"nm":"loading_6","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[360]}],"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[142,142,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.466666668653,0.54509806633,0.639215707779,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":60,"s":[99]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[1]},{"t":50,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[3]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[142,142,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.466666668653,0.54509806633,0.639215707779,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]}
|
||||
1
AlloVoisinsSwiftUI/Resources/Lottie/clap_animation.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/clap_animation.json
Normal file
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/hourglass.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/hourglass.json
Normal file
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/light_animation.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/light_animation.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/like_reaction.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/like_reaction.json
Normal file
@@ -0,0 +1 @@
|
||||
{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":45.0000018328876,"w":1050,"h":1050,"nm":"heart","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"entier/heart-regular Silhouettes","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"t":26.0000010590017,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[525,525,0],"ix":2},"a":{"a":0,"k":[525.5,455.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":17,"s":[70,70,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[100,100,100]},{"i":{"x":[0.7,0.7,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":29,"s":[85,85,100]},{"t":35.0000014255792,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.021],[0,0],[0,0],[-93.516,-15.566],[0,-143.35],[0,0],[62.344,-58.037],[0,0],[21.123,0],[15.381,14.355],[0,0],[0,85.107],[0,0],[-141.258,23.543],[-66.855,-66.917]],"o":[[0,0],[0,0],[68.701,-66.958],[141.299,23.543],[0,0],[0,85.107],[0,0],[-15.381,14.355],[-21.123,0],[0,0],[-62.262,-58.037],[0,0],[0,-143.35],[91.67,-15.566],[-1.846,0]],"v":[[-24.609,-357.358],[-1.845,-332.749],[22.764,-357.317],[280.137,-439.184],[525,-150.024],[525,-138.129],[427.383,86.431],[56.807,432.397],[0,454.751],[-56.806,432.397],[-427.403,86.431],[-525,-138.129],[-525,-150.024],[-280.136,-439.184],[-24.609,-357.358]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.235294118524,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[525.25,455],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"linéaire/heart-regular Silhouettes","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[100]},{"t":26.0000010590017,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[525,525,0],"ix":2},"a":{"a":0,"k":[525.5,455.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[1,1,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":10,"s":[100,100,100]},{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":17,"s":[70,70,100]},{"t":26.0000010590017,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[62.139,-10.335],[0,-95.157],[0,0],[-42.307,-39.375],[0,0],[0,0],[0,57.832],[0,0],[93.721,15.648],[44.502,-42.697]],"o":[[0,0],[-44.502,-42.697],[-93.823,15.648],[0,0],[0,57.832],[0,0],[0,0],[42.246,-39.375],[0,0],[0,-95.157],[-62.138,-10.335],[0,0]],"v":[[-1.846,-193.502],[-94.131,-289.479],[-263.936,-342.102],[-426.563,-150.024],[-426.563,-138.13],[-360.241,14.448],[0,350.775],[360.322,14.448],[426.562,-138.13],[426.562,-150.024],[263.935,-342.102],[94.131,-289.479]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.02],[0,0],[0,0],[-93.515,-15.565],[0,-143.35],[0,0],[62.343,-58.037],[0,0],[21.123,0],[15.381,14.356],[0,0],[0,85.108],[0,0],[-141.258,23.543],[-66.855,-66.917]],"o":[[0,0],[0,0],[68.702,-66.958],[141.299,23.543],[0,0],[0,85.108],[0,0],[-15.381,14.356],[-21.123,0],[0,0],[-62.261,-58.037],[0,0],[0,-143.35],[91.67,-15.565],[-1.845,0]],"v":[[-24.61,-357.359],[-1.846,-332.75],[22.763,-357.318],[280.136,-439.185],[525,-150.024],[525,-138.13],[427.383,86.43],[56.806,432.396],[0,454.75],[-56.807,432.396],[-427.404,86.43],[-525,-138.13],[-525,-150.024],[-280.137,-439.185],[-24.61,-357.359]],"c":true},"ix":2},"nm":"Tracé 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Fusionner les tracés 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.090196080506,0.141176477075,0.20000000298,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[525.25,455.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}],"markers":[]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":45.0000018328876,"w":1050,"h":1050,"nm":"heart white","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"entier/heart-regular Silhouettes","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"t":26.0000010590017,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[525,525,0],"ix":2},"a":{"a":0,"k":[525.5,455.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":17,"s":[70,70,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":26,"s":[100,100,100]},{"i":{"x":[0.7,0.7,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":29,"s":[85,85,100]},{"t":35.0000014255792,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.021],[0,0],[0,0],[-93.516,-15.566],[0,-143.35],[0,0],[62.344,-58.037],[0,0],[21.123,0],[15.381,14.355],[0,0],[0,85.107],[0,0],[-141.258,23.543],[-66.855,-66.917]],"o":[[0,0],[0,0],[68.701,-66.958],[141.299,23.543],[0,0],[0,85.107],[0,0],[-15.381,14.355],[-21.123,0],[0,0],[-62.262,-58.037],[0,0],[0,-143.35],[91.67,-15.566],[-1.846,0]],"v":[[-24.609,-357.358],[-1.845,-332.749],[22.764,-357.317],[280.137,-439.184],[525,-150.024],[525,-138.129],[427.383,86.431],[56.807,432.397],[0,454.751],[-56.806,432.397],[-427.403,86.431],[-525,-138.129],[-525,-150.024],[-280.136,-439.184],[-24.609,-357.358]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.235294118524,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[525.25,455],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"linéaire/heart-regular Silhouettes","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[100]},{"t":26.0000010590017,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[525,525,0],"ix":2},"a":{"a":0,"k":[525.5,455.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[1,1,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":10,"s":[100,100,100]},{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":17,"s":[70,70,100]},{"t":26.0000010590017,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[62.139,-10.335],[0,-95.157],[0,0],[-42.307,-39.375],[0,0],[0,0],[0,57.832],[0,0],[93.721,15.648],[44.502,-42.697]],"o":[[0,0],[-44.502,-42.697],[-93.823,15.648],[0,0],[0,57.832],[0,0],[0,0],[42.246,-39.375],[0,0],[0,-95.157],[-62.138,-10.335],[0,0]],"v":[[-1.846,-193.502],[-94.131,-289.479],[-263.936,-342.102],[-426.563,-150.024],[-426.563,-138.13],[-360.241,14.448],[0,350.775],[360.322,14.448],[426.562,-138.13],[426.562,-150.024],[263.935,-342.102],[94.131,-289.479]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0.02],[0,0],[0,0],[-93.515,-15.565],[0,-143.35],[0,0],[62.343,-58.037],[0,0],[21.123,0],[15.381,14.356],[0,0],[0,85.108],[0,0],[-141.258,23.543],[-66.855,-66.917]],"o":[[0,0],[0,0],[68.702,-66.958],[141.299,23.543],[0,0],[0,85.108],[0,0],[-15.381,14.356],[-21.123,0],[0,0],[-62.261,-58.037],[0,0],[0,-143.35],[91.67,-15.565],[-1.845,0]],"v":[[-24.61,-357.359],[-1.846,-332.75],[22.763,-357.318],[280.136,-439.185],[525,-150.024],[525,-138.13],[427.383,86.43],[56.806,432.396],[0,454.75],[-56.807,432.396],[-427.404,86.43],[-525,-138.13],[-525,-150.024],[-280.137,-439.185],[-24.61,-357.359]],"c":true},"ix":2},"nm":"Tracé 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Fusionner les tracés 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[525.25,455.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}],"markers":[]}
|
||||
1
AlloVoisinsSwiftUI/Resources/Lottie/location-dot.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/location-dot.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/luck_animation.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/luck_animation.json
Normal file
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/no_splash_star.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/no_splash_star.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/pumpkin.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/pumpkin.json
Normal file
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/splash_star.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/splash_star.json
Normal file
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/start_screen.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/start_screen.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
AlloVoisinsSwiftUI/Resources/Lottie/trash_button.json
Normal file
1
AlloVoisinsSwiftUI/Resources/Lottie/trash_button.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user