Full Code of realvjy/temperature-swiftui for AI

main 79c72b76f0d5 cached
38 files
67.6 KB
19.0k tokens
1 requests
Download .txt
Repository: realvjy/temperature-swiftui
Branch: main
Commit: 79c72b76f0d5
Files: 38
Total size: 67.6 KB

Directory structure:
gitextract_3w52m8_3/

├── README.md
├── Temperature/
│   ├── Assets.xcassets/
│   │   ├── AccentColor.colorset/
│   │   │   └── Contents.json
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Avatar 1.imageset/
│   │   │   └── Contents.json
│   │   ├── Avatar5.imageset/
│   │   │   └── Contents.json
│   │   ├── BG.colorset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Spline.imageset/
│   │   │   └── Contents.json
│   │   ├── cold.imageset/
│   │   │   └── Contents.json
│   │   ├── curve-nob.imageset/
│   │   │   └── Contents.json
│   │   ├── fire.imageset/
│   │   │   └── Contents.json
│   │   ├── mark-num.imageset/
│   │   │   └── Contents.json
│   │   ├── nob.imageset/
│   │   │   └── Contents.json
│   │   └── normal.imageset/
│   │       └── Contents.json
│   ├── ContentView.swift
│   ├── Preview Content/
│   │   └── Preview Assets.xcassets/
│   │       └── Contents.json
│   ├── RiveAssets/
│   │   ├── button.riv
│   │   ├── check.riv
│   │   ├── confetti.riv
│   │   ├── house.riv
│   │   ├── icons.riv
│   │   ├── menu_button.riv
│   │   ├── shapes.riv
│   │   └── water.riv
│   ├── TemperatureApp.swift
│   ├── Utilities/
│   │   └── Extensions.swift
│   ├── View/
│   │   ├── Home.swift
│   │   └── Tube.swift
│   └── WaterWave.swift
├── Temperature.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── IDEWorkspaceChecks.plist
│   ├── xcshareddata/
│   │   └── xcschemes/
│   │       └── Temperature.xcscheme
│   └── xcuserdata/
│       └── vijayverma.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               └── xcschememanagement.plist
├── TemperatureTests/
│   └── TemperatureTests.swift
└── TemperatureUITests/
    ├── TemperatureUITests.swift
    └── TemperatureUITestsLaunchTests.swift

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
# temperature-swiftui


![temperature](https://user-images.githubusercontent.com/7387461/228286617-0a7b1d6e-5085-4756-b0cc-38d1f5c0f66c.gif)

More behind the story here https://twitter.com/realvjy/status/1640342553563217920


================================================
FILE: Temperature/Assets.xcassets/AccentColor.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "AppIcon.png",
      "idiom" : "universal",
      "platform" : "ios",
      "size" : "1024x1024"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/Avatar 1.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "Avatar 1.jpg",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/Avatar5.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "Avatar 5.jpg",
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "properties" : {
    "template-rendering-intent" : "original"
  }
}


================================================
FILE: Temperature/Assets.xcassets/BG.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0.951",
          "green" : "0.943",
          "red" : "0.933"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/Spline.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "Spline.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/cold.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "cold.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "cold@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "cold@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/curve-nob.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "curve-nob.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "curve-nob@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "curve-nob@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/fire.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "fire.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "fire@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "fire@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/mark-num.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "mark-num.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "mark-num@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "mark-num@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/nob.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "nob.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "nob@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "nob@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/Assets.xcassets/normal.imageset/Contents.json
================================================
{
  "images" : [
    {
      "filename" : "normal.png",
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "normal@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "normal@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/ContentView.swift
================================================
//
//  ContentView.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//

import SwiftUI


struct ContentView: View {
    @State private var waveOffset: CGFloat = 0
    
    @State var progress: CGFloat = 0.5
    @State var startAnimation: CGFloat = 0
    
    @State var waterFill: CGFloat = 0.5
    var body: some View {
        
        ZStack {
            LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 1), Color(red: 0.93, green: 0.94, blue: 0.97, opacity: 1)]), startPoint: .init(x: 0.0, y: 0.75), endPoint: .init(x: 1.0, y: 1.0))
                .edgesIgnoringSafeArea(.all)
            Tube()
            
        }


//        VStack {
//            WaterWave()
//            VStack {
//                Image(systemName: "globe")
//                    .imageScale(.large)
//                    .foregroundColor(.accentColor)
//                Text("Hello, world!")
//            }
//            .padding()
//            Spacer()
//        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}



================================================
FILE: Temperature/Preview Content/Preview Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Temperature/TemperatureApp.swift
================================================
//
//  TemperatureApp.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//

import SwiftUI

@main
struct TemperatureApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}


================================================
FILE: Temperature/Utilities/Extensions.swift
================================================
//
//  Extensions.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//
import SwiftUI



extension UIColor {
    convenience init(hex: String) {
        var hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
        if hexString.hasPrefix("#") {
            hexString.remove(at: hexString.startIndex)
        }
        var rgbValue: UInt64 = 0
        Scanner(string: hexString).scanHexInt64(&rgbValue)
        let red = CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0
        let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0
        let blue = CGFloat(rgbValue & 0x0000FF) / 255.0
        self.init(red: red, green: green, blue: blue, alpha: 1.0)
    }
}


================================================
FILE: Temperature/View/Home.swift
================================================
//
//  Home.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//  This is testing out screen. Check Tube.swift for final code

import SwiftUI


struct Home: View {
    
    @State var maxHeight: CGFloat = UIScreen.main.bounds.height / 3
    @State var progress: CGFloat = 0.5
    @State var startAnimation: CGFloat = 0
    @State var sliderHeight: CGFloat = 0
    @State var sliderProgress: CGFloat = 0
    @State var lastDragValue: CGFloat = 0
    var body: some View {
        VStack{

            // Mark: Wave Form
            GeometryReader{proxy in
                let size = proxy.size
                
                ZStack {
                    
                  
                    WaterWaveS(progress: progress, waveHeight: 0.02, offset: startAnimation)
                        .fill(
                            LinearGradient(gradient: Gradient(colors: [
                                Color(UIColor(hex: "#EE3A32")),
                                Color(UIColor(hex: "#EF803B")),
                                Color(UIColor(hex: "#EBAC38")),
                                Color(UIColor(hex: "#D7C05E")),
                                Color(UIColor(hex: "#ABC770")),
                                Color(UIColor(hex: "#55C1DC")),
                            ]), startPoint: .top, endPoint: .bottom)
                        )
                        .frame(width: 96, height: 456)
                        .mask(RoundedRectangle(cornerRadius: 48))

                    //Water Drops shapes
                        .overlay(content: {
                            ZStack{
                                Circle()
                                    .fill(.white.opacity(0.1))
                                    .frame(width: 15, height: 15)
                                    .offset(x: -20)
                                
                                Circle()
                                    .fill(.white.opacity(0.2))
                                    .frame(width: 15, height: 15)
                                    .offset(x:40, y: 30)
                                Circle()
                                    .fill(.white.opacity(0.2))
                                    .frame(width: 25, height: 25)
                                    .offset(x: -30, y: 80)
                                
                                Circle()
                                    .fill(.white.opacity(0.2))
                                    .frame(width: 10, height: 10)
                                    .offset(x: 40, y: 100)
                                
                                Circle()
                                    .fill(.white.opacity(0.2))
                                    .frame(width: 20, height: 20)
                                    .offset(x: 50, y: 70)
                            }
                        })
                    
                    //Masking in drop
//                        .mask {
//                            Image(systemName: "square.fill")
//                                .resizable()
//                                .renderingMode(.template)
//                                .aspectRatio(contentMode: .fit)
//                                .padding(20)
//                        }
                    // Add button
                        .overlay(alignment: .bottom) {
//                            Button{
//                                progress += 0.01
//                            } label: {
//                                Image(systemName: "plus")
//                                    .font(.system(size: 40, weight: .black))
//                                    .foregroundColor(Color(.blue))
//                                    .shadow(radius: 2)
//                                    .padding(25)
//                                    .background(.white, in: Circle())
//                            }
//                            .offset(y: 40)
                        }
                    
                }
                .frame(width: size.width, height: size.height, alignment: .center)
                .onAppear{
                        //Looping animation
                    withAnimation(.easeInOut(duration: 0.8).repeatForever(autoreverses: false)){
                        //loop will not finish if staranimation will be larger than rect width
                        startAnimation = size.width
                    }
                }
                
            }
            VStack {
                // Slider...
                
                ZStack(alignment: .bottom, content: {
                    Rectangle()
                        .fill(Color(.gray).opacity(0.15))
                    Rectangle()
                        .fill(Color.blue)
                        .frame(height: sliderHeight)
                })
                .frame(width: 120, height: maxHeight)
                .cornerRadius(32)
                .gesture(DragGesture(minimumDistance: 0).onChanged({ (value) in
                    //getting dragvalue...
                    let translation = value.translation
                    
                    sliderHeight = -translation.height + lastDragValue
                    
                    //Limiing slide height value
                    sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight
                    
                    sliderHeight = sliderHeight >= 0 ? sliderHeight : 0
                    
                    //updating progress
                    let progres = sliderHeight / maxHeight
                    sliderProgress = progres <= 1.0 ? progres : 1
                    
                    
                }).onEnded({ (value) in
                    
                    // Storing las drag value for restorating
                    
                    sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight
                    
                    // Negative height...
                    
                    sliderHeight = sliderHeight >= 0 ? sliderHeight : 0
                    
                    lastDragValue = sliderHeight
                    
                    
                    
                    
                }))
                .overlay(
                    Text("\(Int(sliderProgress * 100))%")
                        .fontWeight(.semibold)
                        .foregroundColor(.black)
                        .padding(.vertical, 10)
                        .padding(.horizontal, 18)
                        .background(.white)
                        .cornerRadius(12)
                        .padding(.vertical, 25)
                        .offset(y: sliderHeight < maxHeight - 105 ? -sliderHeight : -maxHeight+105)
                    ,alignment: .bottom
                )
            }
            Slider(value: $progress)
                
        }
        .padding()
        .frame(minWidth: 0, maxWidth: .infinity)

    }
}


struct Home_Previews: PreviewProvider {
    static var previews: some View {
        Home()
    }
}

struct WaterWaveS: Shape{
    
    var progress: CGFloat
    
    // Wave Height
    var waveHeight: CGFloat
    // Initial Animation Start
    
    var offset: CGFloat

    //Enabling animation
    
    var animatableData: CGFloat{
        get{offset}
        set{offset = newValue}
    }
    
    func path(in rect: CGRect) -> Path {
        return Path{path in
            path.move(to: .zero)
            
            //Mark: Drawing Waves using Sine
            let progressHeight: CGFloat = (1 - progress) * rect.height
            let height = waveHeight * rect.height
            
            
            for value in stride(from: 0, through: rect.width, by: 1){
                let x: CGFloat = value
                let sine: CGFloat = sin(Angle(degrees: value + offset).radians)
//                let sine: CGFloat = sin(1)
                let y: CGFloat = progressHeight + (height * sine)
                
                path.addLine(to: CGPoint(x: x, y: y))
                
            }
            
            // Bottom Portion
            path.addLine(to: CGPoint(x: rect.width, y: rect.height))
            path.addLine(to: CGPoint(x: 0, y: rect.height))
        }
    }
}




================================================
FILE: Temperature/View/Tube.swift
================================================
//
//  Tube.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//

import SwiftUI

struct Tube: View {
    @State var progress: CGFloat = 0.25
    @State var startAnimation: CGFloat = 0
    @State private var position = CGPoint(x: 100, y: 0)
    @State private var dragOffset = CGSize.zero
    let maskSize = CGSize(width: 122, height: 400)
    @State private var sliderValue = 0.5
    
    
    @State var maxHeight: CGFloat = 420
    //Slider properties
    @State var sliderHeight: CGFloat = 0
    @State var sliderProgress: CGFloat = 0
    @State var lastDragValue: CGFloat = 0
    let menuItems = [
        ("Menu 1", "cold"),
        ("Menu 2", "normal"),
        ("Menu 3", "fire")
    ]
    @State private var selectedMenuIndex = 1
    @State private var backgroundColor = Color(UIColor(hex: "#A4FFEF"))
    
    // selected item index
    @State private var selectedMenu = 0
    
    // slide background position
    @State private var backgroundOffset: CGFloat = 0
    @State private var previousSelectedMenu = 0
    
    var body: some View {
        
        
        ZStack {
            LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 1), Color(red: 0.96, green: 0.96, blue: 0.97, opacity: 1)]), startPoint: .init(x: 0.5, y: 0.75), endPoint: .init(x: 1.0, y: 1.0))
                .edgesIgnoringSafeArea(.all)
            GeometryReader{ proxy in
                let size = proxy.size
                ZStack {
                    ZStack {
                        ZStack(alignment: .top, content: {
                            Text("\(Int((sliderProgress*(30))+20 ))")
                                .fontWeight(.bold)
                                .foregroundColor(Color(UIColor(hex: "#BFC7D7")).opacity(0.6))
                                .padding(.vertical, 10)
                                .multilineTextAlignment(.trailing)
                                .padding(.horizontal, 18)
                                .font(.system(size: 120))
                                .cornerRadius(12)
                            Text("°")
                                .fontWeight(.regular)
                                .foregroundColor(Color(UIColor(hex: "#BFC7D7")).opacity(0.6))
                                .padding(.vertical, 10)
                                .padding(.horizontal, 18)
                                .font(.system(size: 80))
                                .cornerRadius(12)
                                .offset(x: 100)
                        })
                    }
                    .frame(width: size.width, height: size.height, alignment: .top)
                    .offset(y: -10)
                    
                    
                    //Marker
                    ZStack(alignment: .bottom, content:{
                        Rectangle()
                            .fill(Color(UIColor(hex: "#DFE5F1")).opacity(0.5))
                            .frame(width: 52, height: 430, alignment: .bottom)
                        Rectangle()
                            .fill(Color(UIColor(hex: "#A1A7B4")).opacity(0.8))
                            .frame(width: 52, height: sliderHeight, alignment: .bottom)
                    })
                    .frame(width: 52, height: 430, alignment: .bottom)
                    .mask(Image("mark-num"))
                    .offset(x:-120)
                    
                    //Tube
                    ZStack{
                        RoundedRectangle(cornerRadius: 20)
                            .fill(
                                LinearGradient(gradient: Gradient(colors: [
                                    Color(UIColor(hex: "#EE3A32")),
                                    Color(UIColor(hex: "#EF803B")),
                                    Color(UIColor(hex: "#EBAC38")),
                                    Color(UIColor(hex: "#D7C05E")),
                                    Color(UIColor(hex: "#ABC770")),
                                    Color(UIColor(hex: "#55C1DC")),
                                ]), startPoint: .top, endPoint: .bottom))
                            .frame(width: 50, height: 406)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .blur(radius: 32)
                            .opacity(0.8)
                            .offset(x: -50, y: 0)
                        RoundedRectangle(cornerRadius: 20)
                            .fill(
                                LinearGradient(gradient: Gradient(colors: [
                                    Color(UIColor(hex: "#ECECEC")),
                                    Color(UIColor(hex: "#FFFFFF")),
                                    
                                ]), startPoint: .top, endPoint: .bottom)
                            )
                            .frame(width: 96, height: 456)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .opacity(0.8)
                        
                        WaterWaveS(progress: sliderProgress, waveHeight: 0.04, offset: startAnimation+190)
                            .fill(
                                LinearGradient(gradient: Gradient(colors: [
                                    Color(UIColor(hex: "#EE3A32")),
                                    Color(UIColor(hex: "#EF803B")),
                                    Color(UIColor(hex: "#EBAC38")),
                                    Color(UIColor(hex: "#D7C05E")),
                                    Color(UIColor(hex: "#ABC770")),
                                    Color(UIColor(hex: "#55C1DC")),
                                ]), startPoint: .top, endPoint: .bottom)
                            )
                            .frame(width: 96, height: 456)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .overlay(
                                Capsule()
                                    .stroke(Color(red: 236/255, green: 234/255, blue: 235/255),
                                            lineWidth: 1)
                                    .shadow(color: Color.black.opacity(0.7), radius: 10, x: 0, y: 0)
                                    .clipShape(
                                        Capsule()
                                    )
                            )
                        
                        WaterWaveS(progress: sliderProgress, waveHeight: 0.04, offset: startAnimation)
                            .fill(
                                LinearGradient(gradient: Gradient(colors: [
                                    Color(UIColor(hex: "#EE3A32")),
                                    Color(UIColor(hex: "#EF803B")),
                                    Color(UIColor(hex: "#EBAC38")),
                                    Color(UIColor(hex: "#D7C05E")),
                                    Color(UIColor(hex: "#ABC770")),
                                    Color(UIColor(hex: "#55C1DC")),
                                ]), startPoint: .top, endPoint: .bottom)
                            )
                            .frame(width: 96, height: 456)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .opacity(0.5)
                        RoundedRectangle(cornerRadius: 54)
                            .strokeBorder(
                                LinearGradient(gradient: Gradient(colors: [Color(red: 1.0, green: 1.0, blue: 1.0, opacity: 0.8), Color(red: 0.93, green: 0.94, blue: 0.97, opacity: 1)]), startPoint: .top, endPoint: .bottom)
                                , lineWidth: 6)
                            .frame(width: 108, height: 468)
                        
                        
                        RoundedRectangle(cornerRadius: 20)
                            .fill(.white)
                            .frame(width: 26, height: 390)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .blur(radius: 7)
                            .opacity(0.5)
                            .blendMode(.overlay)
                            .offset(x: 16, y: 0)
                        
                        RoundedRectangle(cornerRadius: 20)
                            .fill(.white)
                            .frame(width: 12, height: 370)
                            .mask(RoundedRectangle(cornerRadius: 48))
                            .blur(radius: 4)
                            .opacity(0.3)
                            .blendMode(.overlay)
                            .offset(x: -24, y: 0)
                        
                    }
                    
                    .frame(width: size.width, height: size.height, alignment: .center)
                    .onAppear{
                        //Looping animation
                        withAnimation(.linear(duration: 0.7).repeatForever(autoreverses: false)){
                            //loop will not finish if staranimation will be larger than rect width
                            startAnimation = size.width
                        }
                    }
                    
                    ZStack{
                        //Other stack for slider
                        VStack {
                            ZStack{
                                
                                Rectangle()
                                    .fill(getModifiedColor(Color.teal))
                                    .frame(height: 1000)
                                    .cornerRadius(10)
                                    .padding(8)
                                
                                Rectangle()
                                    .fill(.red)
                                    .frame(width: 100, height: 100)
                                    .blur(radius: 8)
                            }
                            .mask(Image("curve-nob"))
                            .offset(x: -24, y: position.y + 210 - sliderHeight)
                        }
                        .frame(width: 200)
                        .mask(
                            LinearGradient(gradient: Gradient(colors: [.clear, .black, .black, .black, .clear]), startPoint: .top, endPoint: .bottom)
                                .frame(height: maxHeight + 100)
                        )
                        
                        VStack {
                            // Slider...
                            
                            ZStack(alignment: .bottom, content: {
                                Rectangle()
                                    .fill(Color(.gray).opacity(0.01))
                                
                                
                                // - (maxheight - 48)
                                //sliderHeight <= max ? -sliderHeight : -(sliderHeight - 48)
                            })
                            .frame(width: 120, height: maxHeight)
                            .cornerRadius(32)
                            .gesture(DragGesture(minimumDistance: 0).onChanged({ (value) in
                                //getting dragvalue...
                                let translation = value.translation
                                
                                sliderHeight = -translation.height + lastDragValue
                                
                                //Limiing slide height value
                                sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight
                                
                                sliderHeight = sliderHeight >= 0 ? sliderHeight : 0
                                
                                //updating progress
                                let progres = sliderHeight / maxHeight
                                sliderProgress = progres <= 1.0 ? progres : 1
                                
                                switch sliderProgress {
                                case 0..<0.5:
                                    backgroundColor = Color(UIColor(hex: "#A4FFEF"))
                                    selectedMenu = 0
                                case 0.5..<0.8:
                                    backgroundColor = Color(UIColor(hex: "#FFEDAE"))
                                    selectedMenu = 1
                                default:
                                    backgroundColor = Color(UIColor(hex: "#FFC5C5"))
                                    selectedMenu = 2
                                }
                                    
                                
                                
                            }).onEnded({ (value) in
                                
                                // Storing las drag value for restorating
                                
                                sliderHeight = sliderHeight > maxHeight ? maxHeight : sliderHeight
                                
                                // Negative height...
                                
                                sliderHeight = sliderHeight >= 0 ? sliderHeight : 0
                                
                                lastDragValue = sliderHeight
                                
                                
                            }))
                            
                        }.offset( y:0)
                        VStack{
                            Image("nob")
                                .resizable()
                                .frame(width: 48, height: 48)
                                .offset(x: 0, y: -sliderHeight  )
                        }
                        .frame(width: 120, height: maxHeight+48, alignment: .bottom)
                        .zIndex(-1)
                    }
                    .frame(width: 200, height: 600)
                    .offset(x: 130)
                    
                    
                }
                
            }
            
            VStack{
                Spacer()
                HStack(spacing: 20) {
                    MenuButton(imageName: "cold", label: "cold", isSelected: selectedMenu == 0)
                        .scaleEffect(selectedMenu == 0 ? 1.2 : 1.0) // Scale up when selected
                        .onTapGesture {
                            backgroundColor = Color(UIColor(hex: "#A4FFEF"))
                            previousSelectedMenu = selectedMenu
                            sliderProgress = 0
                            withAnimation {
                                self.selectedMenu = 0
                            }
                        }
                    MenuButton(imageName: "normal", label: "normal", isSelected: selectedMenu == 1)
                        .scaleEffect(selectedMenu == 1 ? 1.2 : 1.0) // Scale up when selected
                        .onTapGesture {
                            backgroundColor = Color(UIColor(hex: "#FFEDAE"))
                            previousSelectedMenu = selectedMenu
                            sliderProgress = 0.5
                            
                            withAnimation {
                                self.selectedMenu = 1
                            }
                        }
                    
                    MenuButton(imageName: "fire", label: "fire", isSelected: selectedMenu == 2)
                        .scaleEffect(selectedMenu == 2 ? 1.2 : 1.0) // Scale up when selected
                        .onTapGesture {
                            backgroundColor = Color(UIColor(hex: "#FFC5C5"))
                            previousSelectedMenu = selectedMenu
                            sliderProgress = 1
                            withAnimation {
                                self.selectedMenu = 2
                            }
                        }
                }
                
                .background(
                    GeometryReader { proxy in
                        let iconWidth = CGFloat(60) // change this to the actual width of your icon
                        let backgroundWidth = proxy.size.width / 3
                        let extraOffset = (proxy.size.width - backgroundWidth * 3 - 10) / 2 // calculate extra offset for first and last background
                        let menuOffset = CGFloat(selectedMenu) * (backgroundWidth + 10)
                        let centerOffset = (backgroundWidth - iconWidth) / 2
                        let leadingOffset = centerOffset + menuOffset + extraOffset * (selectedMenu == 0 ? -1 : selectedMenu == 2 ? 1 : 0)

                     
                        RoundedRectangle(cornerRadius: 30)
                            .foregroundColor(backgroundColor)
                            .frame(width: iconWidth, height: proxy.size.height)
                            .offset(x: leadingOffset - 10)
                            .blur(radius: 7)
                            .animation(.easeInOut(duration: 0.3), value: selectedMenu)
                            .opacity(0.5)
                            .onTapGesture {
                                withAnimation {
                                    self.selectedMenu = 2
                                }
                            }
                    }
                )
                .frame(maxWidth: .infinity)
                    .padding(.horizontal, 30)
   
            }
            .offset(y: -10)
            
        }
        
        
    }
    
    
    
    private func getModifiedColor(_ color: Color) -> Color {
        let teal = Color.teal
        let green = Color.green
        let yellow = Color.yellow
        let orange = Color.orange
        let red = Color.red
        
        switch sliderProgress {
        case 0..<0.125:
            return blendColors(teal, green, fraction: sliderProgress / 0.125)
        case 0.125..<0.25:
            return blendColors(green, yellow, fraction: (sliderProgress - 0.125) / 0.125)
        case 0.25..<0.5:
            return blendColors(yellow, orange, fraction: (sliderProgress - 0.25) / 0.25)
        case 0.5..<0.75:
            return blendColors(orange, red, fraction: (sliderProgress - 0.5) / 0.25)
        case 0.75...1:
            return red
        default:
            return color
        }
    }
    
    private func blendColors(_ color1: Color, _ color2: Color, fraction: Double) -> Color {
        let cgColor1 = color1.cgColor
        let cgColor2 = color2.cgColor
        
        guard let components1 = cgColor1?.components, let components2 = cgColor2?.components else {
            return color1
        }
        
        let red = components1[0] * (1 - fraction) + components2[0] * fraction
        let green = components1[1] * (1 - fraction) + components2[1] * fraction
        let blue = components1[2] * (1 - fraction) + components2[2] * fraction
        let alpha = components1[3] * (1 - fraction) + components2[3] * fraction
        
        return Color(red: Double(red), green: Double(green), blue: Double(blue), opacity: Double(alpha))
    }
}


struct Tube_Previews: PreviewProvider {
    static var previews: some View {
        Tube()
    }
}


struct MenuButton: View {
    var imageName: String
    var label: String
    var isSelected: Bool
    
    var body: some View {
        ZStack(alignment: .center, content:{
            Image(imageName)
                //.foregroundColor(isSelected ? .blue : .gray)
                .frame(width: 48, height: 48)
            Rectangle()
                .fill(Color(UIColor(hex: "#BFC7D7")).opacity(isSelected ? 0.0 : 1.0))
                .frame(width: 52, height: 430, alignment: .bottom)
                
        })
        .mask(Image(imageName))
        .frame(width: 48, height: 48)
        .padding(.horizontal, 10)
        .padding(.vertical, 10)
        
    }
}


================================================
FILE: Temperature/WaterWave.swift
================================================
//
//  WaterWave.swift
//  Temperature
//
//  Created by vijay verma on 24/03/23.
//


import SwiftUI

struct WaterWave: View {
    @State private var waveOffset: CGFloat = 0
        
    var body: some View {
            ZStack {
                LinearGradient(gradient: Gradient(colors: [.blue, .purple]), startPoint: .topLeading, endPoint: .bottomTrailing)
                    .edgesIgnoringSafeArea(.all)
                Path { path in
                    let width = UIScreen.main.bounds.width
                    let height = UIScreen.main.bounds.height
                    let midY = height / 2
                    let waveWidth = CGFloat(0.8)
                    let xOffset = waveOffset * width
                    path.move(to: CGPoint(x: 0, y: midY))
                    path.addLine(to: CGPoint(x: 0, y: height))
                    path.addLine(to: CGPoint(x: width, y: height))
                    path.addLine(to: CGPoint(x: width, y: midY))
                    path.addCurve(to: CGPoint(x: 0, y: midY),
                                  control1: CGPoint(x: width * waveWidth * 0.25 + xOffset, y: height * 0.75),
                                  control2: CGPoint(x: width * waveWidth * 0.75 + xOffset, y: height * 0.25))
                }
                .fill(Color.white)
                .opacity(0.4)
            }
            .onAppear {
                withAnimation(Animation.linear(duration: 1).repeatForever()) {
                    self.waveOffset = 1
                }
            }
        }
}

struct WaterWave_Previews: PreviewProvider {
    static var previews: some View {
        WaterWave()
    }
}


================================================
FILE: Temperature.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 56;
	objects = {

/* Begin PBXBuildFile section */
		1E16F2DC29CCE1C900AC642B /* TemperatureApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */; };
		1E16F2DE29CCE1C900AC642B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2DD29CCE1C900AC642B /* ContentView.swift */; };
		1E16F2E029CCE1CA00AC642B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */; };
		1E16F2E329CCE1CA00AC642B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */; };
		1E16F2ED29CCE1CA00AC642B /* TemperatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */; };
		1E16F2F729CCE1CA00AC642B /* TemperatureUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */; };
		1E16F2F929CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */; };
		1E16F30629CCE78400AC642B /* WaterWave.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F30529CCE78400AC642B /* WaterWave.swift */; };
		1E16F32729CCFF6B00AC642B /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32629CCFF6B00AC642B /* Home.swift */; };
		1E16F32929CE1F8000AC642B /* Tube.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32829CE1F8000AC642B /* Tube.swift */; };
		1E16F32C29CE216D00AC642B /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E16F32B29CE216D00AC642B /* Extensions.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		1E16F2E929CCE1CA00AC642B /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 1E16F2D029CCE1C900AC642B /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 1E16F2D729CCE1C900AC642B;
			remoteInfo = Temperature;
		};
		1E16F2F329CCE1CA00AC642B /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 1E16F2D029CCE1C900AC642B /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 1E16F2D729CCE1C900AC642B;
			remoteInfo = Temperature;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		1E16F2D829CCE1C900AC642B /* Temperature.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Temperature.app; sourceTree = BUILT_PRODUCTS_DIR; };
		1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureApp.swift; sourceTree = "<group>"; };
		1E16F2DD29CCE1C900AC642B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
		1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
		1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemperatureTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureTests.swift; sourceTree = "<group>"; };
		1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemperatureUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureUITests.swift; sourceTree = "<group>"; };
		1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureUITestsLaunchTests.swift; sourceTree = "<group>"; };
		1E16F30529CCE78400AC642B /* WaterWave.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaterWave.swift; sourceTree = "<group>"; };
		1E16F32629CCFF6B00AC642B /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = "<group>"; };
		1E16F32829CE1F8000AC642B /* Tube.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tube.swift; sourceTree = "<group>"; };
		1E16F32B29CE216D00AC642B /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		1E16F2D529CCE1C900AC642B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2E529CCE1CA00AC642B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2EF29CCE1CA00AC642B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		1E16F2CF29CCE1C900AC642B = {
			isa = PBXGroup;
			children = (
				1E16F2DA29CCE1C900AC642B /* Temperature */,
				1E16F2EB29CCE1CA00AC642B /* TemperatureTests */,
				1E16F2F529CCE1CA00AC642B /* TemperatureUITests */,
				1E16F2D929CCE1C900AC642B /* Products */,
			);
			sourceTree = "<group>";
		};
		1E16F2D929CCE1C900AC642B /* Products */ = {
			isa = PBXGroup;
			children = (
				1E16F2D829CCE1C900AC642B /* Temperature.app */,
				1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */,
				1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		1E16F2DA29CCE1C900AC642B /* Temperature */ = {
			isa = PBXGroup;
			children = (
				1E16F32A29CE213300AC642B /* Utilities */,
				1E16F32529CCFF4700AC642B /* View */,
				1E16F2DB29CCE1C900AC642B /* TemperatureApp.swift */,
				1E16F30529CCE78400AC642B /* WaterWave.swift */,
				1E16F2DD29CCE1C900AC642B /* ContentView.swift */,
				1E16F2DF29CCE1CA00AC642B /* Assets.xcassets */,
				1E16F2E129CCE1CA00AC642B /* Preview Content */,
			);
			path = Temperature;
			sourceTree = "<group>";
		};
		1E16F2E129CCE1CA00AC642B /* Preview Content */ = {
			isa = PBXGroup;
			children = (
				1E16F2E229CCE1CA00AC642B /* Preview Assets.xcassets */,
			);
			path = "Preview Content";
			sourceTree = "<group>";
		};
		1E16F2EB29CCE1CA00AC642B /* TemperatureTests */ = {
			isa = PBXGroup;
			children = (
				1E16F2EC29CCE1CA00AC642B /* TemperatureTests.swift */,
			);
			path = TemperatureTests;
			sourceTree = "<group>";
		};
		1E16F2F529CCE1CA00AC642B /* TemperatureUITests */ = {
			isa = PBXGroup;
			children = (
				1E16F2F629CCE1CA00AC642B /* TemperatureUITests.swift */,
				1E16F2F829CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift */,
			);
			path = TemperatureUITests;
			sourceTree = "<group>";
		};
		1E16F32529CCFF4700AC642B /* View */ = {
			isa = PBXGroup;
			children = (
				1E16F32629CCFF6B00AC642B /* Home.swift */,
				1E16F32829CE1F8000AC642B /* Tube.swift */,
			);
			path = View;
			sourceTree = "<group>";
		};
		1E16F32A29CE213300AC642B /* Utilities */ = {
			isa = PBXGroup;
			children = (
				1E16F32B29CE216D00AC642B /* Extensions.swift */,
			);
			path = Utilities;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		1E16F2D729CCE1C900AC642B /* Temperature */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 1E16F2FC29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "Temperature" */;
			buildPhases = (
				1E16F2D429CCE1C900AC642B /* Sources */,
				1E16F2D529CCE1C900AC642B /* Frameworks */,
				1E16F2D629CCE1C900AC642B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = Temperature;
			packageProductDependencies = (
			);
			productName = Temperature;
			productReference = 1E16F2D829CCE1C900AC642B /* Temperature.app */;
			productType = "com.apple.product-type.application";
		};
		1E16F2E729CCE1CA00AC642B /* TemperatureTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 1E16F2FF29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "TemperatureTests" */;
			buildPhases = (
				1E16F2E429CCE1CA00AC642B /* Sources */,
				1E16F2E529CCE1CA00AC642B /* Frameworks */,
				1E16F2E629CCE1CA00AC642B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				1E16F2EA29CCE1CA00AC642B /* PBXTargetDependency */,
			);
			name = TemperatureTests;
			productName = TemperatureTests;
			productReference = 1E16F2E829CCE1CA00AC642B /* TemperatureTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		1E16F2F129CCE1CA00AC642B /* TemperatureUITests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 1E16F30229CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "TemperatureUITests" */;
			buildPhases = (
				1E16F2EE29CCE1CA00AC642B /* Sources */,
				1E16F2EF29CCE1CA00AC642B /* Frameworks */,
				1E16F2F029CCE1CA00AC642B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				1E16F2F429CCE1CA00AC642B /* PBXTargetDependency */,
			);
			name = TemperatureUITests;
			productName = TemperatureUITests;
			productReference = 1E16F2F229CCE1CA00AC642B /* TemperatureUITests.xctest */;
			productType = "com.apple.product-type.bundle.ui-testing";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		1E16F2D029CCE1C900AC642B /* Project object */ = {
			isa = PBXProject;
			attributes = {
				BuildIndependentTargetsInParallel = 1;
				LastSwiftUpdateCheck = 1420;
				LastUpgradeCheck = 1420;
				TargetAttributes = {
					1E16F2D729CCE1C900AC642B = {
						CreatedOnToolsVersion = 14.2;
					};
					1E16F2E729CCE1CA00AC642B = {
						CreatedOnToolsVersion = 14.2;
						TestTargetID = 1E16F2D729CCE1C900AC642B;
					};
					1E16F2F129CCE1CA00AC642B = {
						CreatedOnToolsVersion = 14.2;
						TestTargetID = 1E16F2D729CCE1C900AC642B;
					};
				};
			};
			buildConfigurationList = 1E16F2D329CCE1C900AC642B /* Build configuration list for PBXProject "Temperature" */;
			compatibilityVersion = "Xcode 14.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 1E16F2CF29CCE1C900AC642B;
			packageReferences = (
			);
			productRefGroup = 1E16F2D929CCE1C900AC642B /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				1E16F2D729CCE1C900AC642B /* Temperature */,
				1E16F2E729CCE1CA00AC642B /* TemperatureTests */,
				1E16F2F129CCE1CA00AC642B /* TemperatureUITests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		1E16F2D629CCE1C900AC642B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1E16F2E329CCE1CA00AC642B /* Preview Assets.xcassets in Resources */,
				1E16F2E029CCE1CA00AC642B /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2E629CCE1CA00AC642B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2F029CCE1CA00AC642B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		1E16F2D429CCE1C900AC642B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1E16F30629CCE78400AC642B /* WaterWave.swift in Sources */,
				1E16F32C29CE216D00AC642B /* Extensions.swift in Sources */,
				1E16F32929CE1F8000AC642B /* Tube.swift in Sources */,
				1E16F2DE29CCE1C900AC642B /* ContentView.swift in Sources */,
				1E16F32729CCFF6B00AC642B /* Home.swift in Sources */,
				1E16F2DC29CCE1C900AC642B /* TemperatureApp.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2E429CCE1CA00AC642B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1E16F2ED29CCE1CA00AC642B /* TemperatureTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		1E16F2EE29CCE1CA00AC642B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1E16F2F729CCE1CA00AC642B /* TemperatureUITests.swift in Sources */,
				1E16F2F929CCE1CA00AC642B /* TemperatureUITestsLaunchTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		1E16F2EA29CCE1CA00AC642B /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 1E16F2D729CCE1C900AC642B /* Temperature */;
			targetProxy = 1E16F2E929CCE1CA00AC642B /* PBXContainerItemProxy */;
		};
		1E16F2F429CCE1CA00AC642B /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 1E16F2D729CCE1C900AC642B /* Temperature */;
			targetProxy = 1E16F2F329CCE1CA00AC642B /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		1E16F2FA29CCE1CA00AC642B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		1E16F2FB29CCE1CA00AC642B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = iphoneos;
				SWIFT_COMPILATION_MODE = wholemodule;
				SWIFT_OPTIMIZATION_LEVEL = "-O";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		1E16F2FD29CCE1CA00AC642B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Temperature/Preview Content\"";
				DEVELOPMENT_TEAM = 9GRRFW5PQZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.Temperature;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		1E16F2FE29CCE1CA00AC642B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Temperature/Preview Content\"";
				DEVELOPMENT_TEAM = 9GRRFW5PQZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.Temperature;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
		1E16F30029CCE1CA00AC642B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				BUNDLE_LOADER = "$(TEST_HOST)";
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				GENERATE_INFOPLIST_FILE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = NO;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Temperature.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Temperature";
			};
			name = Debug;
		};
		1E16F30129CCE1CA00AC642B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				BUNDLE_LOADER = "$(TEST_HOST)";
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				GENERATE_INFOPLIST_FILE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = NO;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Temperature.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Temperature";
			};
			name = Release;
		};
		1E16F30329CCE1CA00AC642B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				GENERATE_INFOPLIST_FILE = YES;
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureUITests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = NO;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_TARGET_NAME = Temperature;
			};
			name = Debug;
		};
		1E16F30429CCE1CA00AC642B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				GENERATE_INFOPLIST_FILE = YES;
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = overlayz.studio.TemperatureUITests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_EMIT_LOC_STRINGS = NO;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_TARGET_NAME = Temperature;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		1E16F2D329CCE1C900AC642B /* Build configuration list for PBXProject "Temperature" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1E16F2FA29CCE1CA00AC642B /* Debug */,
				1E16F2FB29CCE1CA00AC642B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		1E16F2FC29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "Temperature" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1E16F2FD29CCE1CA00AC642B /* Debug */,
				1E16F2FE29CCE1CA00AC642B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		1E16F2FF29CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "TemperatureTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1E16F30029CCE1CA00AC642B /* Debug */,
				1E16F30129CCE1CA00AC642B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		1E16F30229CCE1CA00AC642B /* Build configuration list for PBXNativeTarget "TemperatureUITests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1E16F30329CCE1CA00AC642B /* Debug */,
				1E16F30429CCE1CA00AC642B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 1E16F2D029CCE1C900AC642B /* Project object */;
}


================================================
FILE: Temperature.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: Temperature.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Temperature.xcodeproj/xcshareddata/xcschemes/Temperature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1420"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "1E16F2D729CCE1C900AC642B"
               BuildableName = "Temperature.app"
               BlueprintName = "Temperature"
               ReferencedContainer = "container:Temperature.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO"
            parallelizable = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "1E16F2E729CCE1CA00AC642B"
               BuildableName = "TemperatureTests.xctest"
               BlueprintName = "TemperatureTests"
               ReferencedContainer = "container:Temperature.xcodeproj">
            </BuildableReference>
         </TestableReference>
         <TestableReference
            skipped = "NO"
            parallelizable = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "1E16F2F129CCE1CA00AC642B"
               BuildableName = "TemperatureUITests.xctest"
               BlueprintName = "TemperatureUITests"
               ReferencedContainer = "container:Temperature.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "1E16F2D729CCE1C900AC642B"
            BuildableName = "Temperature.app"
            BlueprintName = "Temperature"
            ReferencedContainer = "container:Temperature.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "1E16F2D729CCE1C900AC642B"
            BuildableName = "Temperature.app"
            BlueprintName = "Temperature"
            ReferencedContainer = "container:Temperature.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   uuid = "984A9CBE-6AAE-43DD-9AC2-A4667B21E9AA"
   type = "1"
   version = "2.0">
</Bucket>


================================================
FILE: Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SchemeUserState</key>
	<dict>
		<key>Temperature.xcscheme_^#shared#^_</key>
		<dict>
			<key>orderHint</key>
			<integer>0</integer>
		</dict>
	</dict>
	<key>SuppressBuildableAutocreation</key>
	<dict>
		<key>1E16F2D729CCE1C900AC642B</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
		<key>1E16F2E729CCE1CA00AC642B</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
		<key>1E16F2F129CCE1CA00AC642B</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
	</dict>
</dict>
</plist>


================================================
FILE: TemperatureTests/TemperatureTests.swift
================================================
//
//  TemperatureTests.swift
//  TemperatureTests
//
//  Created by vijay verma on 24/03/23.
//

import XCTest
@testable import Temperature

final class TemperatureTests: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() throws {
        // This is an example of a functional test case.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
        // Any test you write for XCTest can be annotated as throws and async.
        // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
        // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
    }

    func testPerformanceExample() throws {
        // This is an example of a performance test case.
        self.measure {
            // Put the code you want to measure the time of here.
        }
    }

}


================================================
FILE: TemperatureUITests/TemperatureUITests.swift
================================================
//
//  TemperatureUITests.swift
//  TemperatureUITests
//
//  Created by vijay verma on 24/03/23.
//

import XCTest

final class TemperatureUITests: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false

        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() throws {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()

        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

    func testLaunchPerformance() throws {
        if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
            // This measures how long it takes to launch your application.
            measure(metrics: [XCTApplicationLaunchMetric()]) {
                XCUIApplication().launch()
            }
        }
    }
}


================================================
FILE: TemperatureUITests/TemperatureUITestsLaunchTests.swift
================================================
//
//  TemperatureUITestsLaunchTests.swift
//  TemperatureUITests
//
//  Created by vijay verma on 24/03/23.
//

import XCTest

final class TemperatureUITestsLaunchTests: XCTestCase {

    override class var runsForEachTargetApplicationUIConfiguration: Bool {
        true
    }

    override func setUpWithError() throws {
        continueAfterFailure = false
    }

    func testLaunch() throws {
        let app = XCUIApplication()
        app.launch()

        // Insert steps here to perform after app launch but before taking a screenshot,
        // such as logging into a test account or navigating somewhere in the app

        let attachment = XCTAttachment(screenshot: app.screenshot())
        attachment.name = "Launch Screen"
        attachment.lifetime = .keepAlways
        add(attachment)
    }
}
Download .txt
gitextract_3w52m8_3/

├── README.md
├── Temperature/
│   ├── Assets.xcassets/
│   │   ├── AccentColor.colorset/
│   │   │   └── Contents.json
│   │   ├── AppIcon.appiconset/
│   │   │   └── Contents.json
│   │   ├── Avatar 1.imageset/
│   │   │   └── Contents.json
│   │   ├── Avatar5.imageset/
│   │   │   └── Contents.json
│   │   ├── BG.colorset/
│   │   │   └── Contents.json
│   │   ├── Contents.json
│   │   ├── Spline.imageset/
│   │   │   └── Contents.json
│   │   ├── cold.imageset/
│   │   │   └── Contents.json
│   │   ├── curve-nob.imageset/
│   │   │   └── Contents.json
│   │   ├── fire.imageset/
│   │   │   └── Contents.json
│   │   ├── mark-num.imageset/
│   │   │   └── Contents.json
│   │   ├── nob.imageset/
│   │   │   └── Contents.json
│   │   └── normal.imageset/
│   │       └── Contents.json
│   ├── ContentView.swift
│   ├── Preview Content/
│   │   └── Preview Assets.xcassets/
│   │       └── Contents.json
│   ├── RiveAssets/
│   │   ├── button.riv
│   │   ├── check.riv
│   │   ├── confetti.riv
│   │   ├── house.riv
│   │   ├── icons.riv
│   │   ├── menu_button.riv
│   │   ├── shapes.riv
│   │   └── water.riv
│   ├── TemperatureApp.swift
│   ├── Utilities/
│   │   └── Extensions.swift
│   ├── View/
│   │   ├── Home.swift
│   │   └── Tube.swift
│   └── WaterWave.swift
├── Temperature.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── IDEWorkspaceChecks.plist
│   ├── xcshareddata/
│   │   └── xcschemes/
│   │       └── Temperature.xcscheme
│   └── xcuserdata/
│       └── vijayverma.xcuserdatad/
│           ├── xcdebugger/
│           │   └── Breakpoints_v2.xcbkptlist
│           └── xcschemes/
│               └── xcschememanagement.plist
├── TemperatureTests/
│   └── TemperatureTests.swift
└── TemperatureUITests/
    ├── TemperatureUITests.swift
    └── TemperatureUITestsLaunchTests.swift
Condensed preview — 38 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (76K chars).
[
  {
    "path": "README.md",
    "chars": 224,
    "preview": "# temperature-swiftui\n\n\n![temperature](https://user-images.githubusercontent.com/7387461/228286617-0a7b1d6e-5085-4756-b0"
  },
  {
    "path": "Temperature/Assets.xcassets/AccentColor.colorset/Contents.json",
    "chars": 123,
    "preview": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }"
  },
  {
    "path": "Temperature/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 211,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"AppIcon.png\",\n      \"idiom\" : \"universal\",\n      \"platform\" : \"ios\",\n      \"s"
  },
  {
    "path": "Temperature/Assets.xcassets/Avatar 1.imageset/Contents.json",
    "chars": 306,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Avatar 1.jpg\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {"
  },
  {
    "path": "Temperature/Assets.xcassets/Avatar5.imageset/Contents.json",
    "chars": 227,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Avatar 5.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"autho"
  },
  {
    "path": "Temperature/Assets.xcassets/BG.colorset/Contents.json",
    "chars": 329,
    "preview": "{\n  \"colors\" : [\n    {\n      \"color\" : {\n        \"color-space\" : \"srgb\",\n        \"components\" : {\n          \"alpha\" : \"1"
  },
  {
    "path": "Temperature/Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/Assets.xcassets/Spline.imageset/Contents.json",
    "chars": 304,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"Spline.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n "
  },
  {
    "path": "Temperature/Assets.xcassets/cold.imageset/Contents.json",
    "chars": 370,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"cold.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n   "
  },
  {
    "path": "Temperature/Assets.xcassets/curve-nob.imageset/Contents.json",
    "chars": 385,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"curve-nob.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    "
  },
  {
    "path": "Temperature/Assets.xcassets/fire.imageset/Contents.json",
    "chars": 370,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"fire.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n   "
  },
  {
    "path": "Temperature/Assets.xcassets/mark-num.imageset/Contents.json",
    "chars": 382,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"mark-num.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {"
  },
  {
    "path": "Temperature/Assets.xcassets/nob.imageset/Contents.json",
    "chars": 367,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"nob.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n    "
  },
  {
    "path": "Temperature/Assets.xcassets/normal.imageset/Contents.json",
    "chars": 376,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"normal.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n "
  },
  {
    "path": "Temperature/ContentView.swift",
    "chars": 1133,
    "preview": "//\n//  ContentView.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\n\nstruct ContentV"
  },
  {
    "path": "Temperature/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Temperature/TemperatureApp.swift",
    "chars": 235,
    "preview": "//\n//  TemperatureApp.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\n@main\nstruct "
  },
  {
    "path": "Temperature/Utilities/Extensions.swift",
    "chars": 701,
    "preview": "//\n//  Extensions.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\nimport SwiftUI\n\n\n\nextension UIColo"
  },
  {
    "path": "Temperature/View/Home.swift",
    "chars": 8300,
    "preview": "//\n//  Home.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//  This is testing out screen. Check Tube."
  },
  {
    "path": "Temperature/View/Tube.swift",
    "chars": 19926,
    "preview": "//\n//  Tube.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport SwiftUI\n\nstruct Tube: View {\n   "
  },
  {
    "path": "Temperature/WaterWave.swift",
    "chars": 1634,
    "preview": "//\n//  WaterWave.swift\n//  Temperature\n//\n//  Created by vijay verma on 24/03/23.\n//\n\n\nimport SwiftUI\n\nstruct WaterWave:"
  },
  {
    "path": "Temperature.xcodeproj/project.pbxproj",
    "chars": 24694,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Temperature.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Temperature.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Temperature.xcodeproj/xcshareddata/xcschemes/Temperature.xcscheme",
    "chars": 3834,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1420\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "chars": 140,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   uuid = \"984A9CBE-6AAE-43DD-9AC2-A4667B21E9AA\"\n   type = \"1\"\n   version"
  },
  {
    "path": "Temperature.xcodeproj/xcuserdata/vijayverma.xcuserdatad/xcschemes/xcschememanagement.plist",
    "chars": 675,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "TemperatureTests/TemperatureTests.swift",
    "chars": 1236,
    "preview": "//\n//  TemperatureTests.swift\n//  TemperatureTests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport XCTest\n@testabl"
  },
  {
    "path": "TemperatureUITests/TemperatureUITests.swift",
    "chars": 1384,
    "preview": "//\n//  TemperatureUITests.swift\n//  TemperatureUITests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport XCTest\n\nfin"
  },
  {
    "path": "TemperatureUITests/TemperatureUITestsLaunchTests.swift",
    "chars": 814,
    "preview": "//\n//  TemperatureUITestsLaunchTests.swift\n//  TemperatureUITests\n//\n//  Created by vijay verma on 24/03/23.\n//\n\nimport "
  }
]

// ... and 8 more files (download for full content)

About this extraction

This page contains the full source code of the realvjy/temperature-swiftui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 38 files (67.6 KB), approximately 19.0k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!