From b72f04cb4e4bb21bc6e9a17d3ce5c4b3be4baf0c Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 9 Jul 2026 08:52:32 +0200 Subject: [PATCH] Add project files. --- Tmt.SaqaTravel.slnx | 3 + Tmt.SaqaTravel/Components/App.razor | 21 + .../Components/Layout/MainLayout.razor | 23 + .../Components/Layout/NavMenu.razor | 32 + .../Components/Layout/ReconnectModal.razor | 118 +++ Tmt.SaqaTravel/Components/Pages/Counter.razor | 19 + Tmt.SaqaTravel/Components/Pages/Error.razor | 36 + Tmt.SaqaTravel/Components/Pages/Home.razor | 7 + .../Components/Pages/NotFound.razor | 5 + Tmt.SaqaTravel/Components/Pages/Weather.razor | 66 ++ Tmt.SaqaTravel/Components/Routes.razor | 6 + Tmt.SaqaTravel/Components/_Imports.razor | 11 + Tmt.SaqaTravel/Program.cs | 27 + Tmt.SaqaTravel/Properties/launchSettings.json | 23 + Tmt.SaqaTravel/Styles/app.css | 4 + Tmt.SaqaTravel/Tmt.SaqaTravel.csproj | 18 + Tmt.SaqaTravel/appsettings.Development.json | 8 + Tmt.SaqaTravel/appsettings.json | 9 + Tmt.SaqaTravel/package.json | 10 + Tmt.SaqaTravel/wwwroot/app.min.css | 897 ++++++++++++++++++ Tmt.SaqaTravel/wwwroot/favicon.png | Bin 0 -> 1148 bytes Tmt.SaqaTravel/yarn.lock | 468 +++++++++ 22 files changed, 1811 insertions(+) create mode 100644 Tmt.SaqaTravel.slnx create mode 100644 Tmt.SaqaTravel/Components/App.razor create mode 100644 Tmt.SaqaTravel/Components/Layout/MainLayout.razor create mode 100644 Tmt.SaqaTravel/Components/Layout/NavMenu.razor create mode 100644 Tmt.SaqaTravel/Components/Layout/ReconnectModal.razor create mode 100644 Tmt.SaqaTravel/Components/Pages/Counter.razor create mode 100644 Tmt.SaqaTravel/Components/Pages/Error.razor create mode 100644 Tmt.SaqaTravel/Components/Pages/Home.razor create mode 100644 Tmt.SaqaTravel/Components/Pages/NotFound.razor create mode 100644 Tmt.SaqaTravel/Components/Pages/Weather.razor create mode 100644 Tmt.SaqaTravel/Components/Routes.razor create mode 100644 Tmt.SaqaTravel/Components/_Imports.razor create mode 100644 Tmt.SaqaTravel/Program.cs create mode 100644 Tmt.SaqaTravel/Properties/launchSettings.json create mode 100644 Tmt.SaqaTravel/Styles/app.css create mode 100644 Tmt.SaqaTravel/Tmt.SaqaTravel.csproj create mode 100644 Tmt.SaqaTravel/appsettings.Development.json create mode 100644 Tmt.SaqaTravel/appsettings.json create mode 100644 Tmt.SaqaTravel/package.json create mode 100644 Tmt.SaqaTravel/wwwroot/app.min.css create mode 100644 Tmt.SaqaTravel/wwwroot/favicon.png create mode 100644 Tmt.SaqaTravel/yarn.lock diff --git a/Tmt.SaqaTravel.slnx b/Tmt.SaqaTravel.slnx new file mode 100644 index 0000000..c8e977a --- /dev/null +++ b/Tmt.SaqaTravel.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Tmt.SaqaTravel/Components/App.razor b/Tmt.SaqaTravel/Components/App.razor new file mode 100644 index 0000000..1780eee --- /dev/null +++ b/Tmt.SaqaTravel/Components/App.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Tmt.SaqaTravel/Components/Layout/MainLayout.razor b/Tmt.SaqaTravel/Components/Layout/MainLayout.razor new file mode 100644 index 0000000..f190449 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Layout/MainLayout.razor @@ -0,0 +1,23 @@ +@inherits LayoutComponentBase + +
+
+ +
+ +
+
+ About +
+ +
+ @Body +
+
+
+ + \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Layout/NavMenu.razor b/Tmt.SaqaTravel/Components/Layout/NavMenu.razor new file mode 100644 index 0000000..e32c905 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Layout/NavMenu.razor @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Layout/ReconnectModal.razor b/Tmt.SaqaTravel/Components/Layout/ReconnectModal.razor new file mode 100644 index 0000000..cc42d43 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Layout/ReconnectModal.razor @@ -0,0 +1,118 @@ + + + +
+ +

+ Rejoining the server... +

+

+ Rejoin failed... trying again in seconds. +

+

+ Failed to rejoin.
Please retry or reload the page. +

+ +

+ The session has been paused by the server. +

+

+ Failed to resume the session.
Please retry or reload the page. +

+ +
+
+ + \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Pages/Counter.razor b/Tmt.SaqaTravel/Components/Pages/Counter.razor new file mode 100644 index 0000000..e7bb815 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Pages/Counter.razor @@ -0,0 +1,19 @@ +@page "/counter" +@rendermode InteractiveServer + +Counter + +

Counter

+ +

Current count: @currentCount

+ + + +@code { + private int currentCount = 0; + + private void IncrementCount() + { + currentCount++; + } +} \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Pages/Error.razor b/Tmt.SaqaTravel/Components/Pages/Error.razor new file mode 100644 index 0000000..cecf40f --- /dev/null +++ b/Tmt.SaqaTravel/Components/Pages/Error.razor @@ -0,0 +1,36 @@ +@page "/Error" +@using System.Diagnostics + +Error + +

Error.

+

An error occurred while processing your request.

+ +@if (ShowRequestId) +{ +

+ Request ID: @RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+ +@code { + [CascadingParameter] + private HttpContext? HttpContext { get; set; } + + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + protected override void OnInitialized() => + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; +} \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Pages/Home.razor b/Tmt.SaqaTravel/Components/Pages/Home.razor new file mode 100644 index 0000000..6b68c28 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Pages/Home.razor @@ -0,0 +1,7 @@ +@page "/" + +Home + +

Hello, world!

+ +

Welcome to your new app.

\ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Pages/NotFound.razor b/Tmt.SaqaTravel/Components/Pages/NotFound.razor new file mode 100644 index 0000000..917ada1 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Pages/NotFound.razor @@ -0,0 +1,5 @@ +@page "/not-found" +@layout MainLayout + +

Not Found

+

Sorry, the content you are looking for does not exist.

\ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Pages/Weather.razor b/Tmt.SaqaTravel/Components/Pages/Weather.razor new file mode 100644 index 0000000..faa4c54 --- /dev/null +++ b/Tmt.SaqaTravel/Components/Pages/Weather.razor @@ -0,0 +1,66 @@ +@page "/weather" +@attribute [StreamRendering] + +Weather + +

Weather

+ +

This component demonstrates showing data.

+ +@if (forecasts == null) +{ +

Loading...

+} +else +{ +
+ + + + + + + + + + + @foreach (var forecast in forecasts) + { + + + + + + + } + +
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
+
+} + +@code { + private WeatherForecast[]? forecasts; + + protected override async Task OnInitializedAsync() + { + // Simulate asynchronous loading to demonstrate streaming rendering + await Task.Delay(500); + + var startDate = DateOnly.FromDateTime(DateTime.Now); + var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; + forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = startDate.AddDays(index), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = summaries[Random.Shared.Next(summaries.Length)] + }).ToArray(); + } + + private class WeatherForecast + { + public DateOnly Date { get; set; } + public int TemperatureC { get; set; } + public string? Summary { get; set; } + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + } +} \ No newline at end of file diff --git a/Tmt.SaqaTravel/Components/Routes.razor b/Tmt.SaqaTravel/Components/Routes.razor new file mode 100644 index 0000000..105855d --- /dev/null +++ b/Tmt.SaqaTravel/Components/Routes.razor @@ -0,0 +1,6 @@ + + + + + + diff --git a/Tmt.SaqaTravel/Components/_Imports.razor b/Tmt.SaqaTravel/Components/_Imports.razor new file mode 100644 index 0000000..99b9008 --- /dev/null +++ b/Tmt.SaqaTravel/Components/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Tmt.SaqaTravel +@using Tmt.SaqaTravel.Components +@using Tmt.SaqaTravel.Components.Layout diff --git a/Tmt.SaqaTravel/Program.cs b/Tmt.SaqaTravel/Program.cs new file mode 100644 index 0000000..b1340a7 --- /dev/null +++ b/Tmt.SaqaTravel/Program.cs @@ -0,0 +1,27 @@ +using Tmt.SaqaTravel.Components; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} +app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true); +app.UseHttpsRedirection(); + +app.UseAntiforgery(); + +app.MapStaticAssets(); +app.MapRazorComponents() + .AddInteractiveServerRenderMode(); + +app.Run(); diff --git a/Tmt.SaqaTravel/Properties/launchSettings.json b/Tmt.SaqaTravel/Properties/launchSettings.json new file mode 100644 index 0000000..0b8ffce --- /dev/null +++ b/Tmt.SaqaTravel/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5132", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7131;http://localhost:5132", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/Tmt.SaqaTravel/Styles/app.css b/Tmt.SaqaTravel/Styles/app.css new file mode 100644 index 0000000..5aa4461 --- /dev/null +++ b/Tmt.SaqaTravel/Styles/app.css @@ -0,0 +1,4 @@ +@import "tailwindcss"; + +body { +} diff --git a/Tmt.SaqaTravel/Tmt.SaqaTravel.csproj b/Tmt.SaqaTravel/Tmt.SaqaTravel.csproj new file mode 100644 index 0000000..bfb2748 --- /dev/null +++ b/Tmt.SaqaTravel/Tmt.SaqaTravel.csproj @@ -0,0 +1,18 @@ + + + + net10.0 + enable + enable + true + + + + + + + + + + + diff --git a/Tmt.SaqaTravel/appsettings.Development.json b/Tmt.SaqaTravel/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Tmt.SaqaTravel/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Tmt.SaqaTravel/appsettings.json b/Tmt.SaqaTravel/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Tmt.SaqaTravel/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Tmt.SaqaTravel/package.json b/Tmt.SaqaTravel/package.json new file mode 100644 index 0000000..f24948e --- /dev/null +++ b/Tmt.SaqaTravel/package.json @@ -0,0 +1,10 @@ +{ + "name": "tmtsaqatravel", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "devDependencies": { + "@tailwindcss/cli": "^4.3.2", + "tailwindcss": "^4.3.2" + } +} diff --git a/Tmt.SaqaTravel/wwwroot/app.min.css b/Tmt.SaqaTravel/wwwroot/app.min.css new file mode 100644 index 0000000..e68700e --- /dev/null +++ b/Tmt.SaqaTravel/wwwroot/app.min.css @@ -0,0 +1,897 @@ +/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */ +@layer properties; +@layer theme, base, components, utilities; +@layer theme { + :root, :host { + --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + --color-red-600: oklch(57.7% 0.245 27.325); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-blue-700: oklch(48.8% 0.243 264.376); + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-900: oklch(21% 0.034 264.665); + --color-black: #000; + --color-white: #fff; + --spacing: 0.25rem; + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-lg: 1.125rem; + --text-lg--line-height: calc(1.75 / 1.125); + --text-xl: 1.25rem; + --text-xl--line-height: calc(1.75 / 1.25); + --text-3xl: 1.875rem; + --text-3xl--line-height: calc(2.25 / 1.875); + --font-weight-semibold: 600; + --font-weight-bold: 700; + --radius-lg: 0.5rem; + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + } +} +@layer base { + *, ::after, ::before, ::backdrop, ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; + } + html, :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; + } + hr { + height: 0; + color: inherit; + border-top-width: 1px; + } + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-weight: inherit; + } + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + b, strong { + font-weight: bolder; + } + code, kbd, samp, pre { + font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, ul, menu { + list-style: none; + } + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + vertical-align: middle; + } + img, video { + max-width: 100%; + height: auto; + } + button, input, select, optgroup, textarea, ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + } + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + ::-webkit-calendar-picker-indicator { + line-height: 1; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden="until-found"])) { + display: none !important; + } +} +@layer utilities { + .visible { + visibility: visible; + } + .absolute { + position: absolute; + } + .fixed { + position: fixed; + } + .relative { + position: relative; + } + .static { + position: static; + } + .top-2 { + top: calc(var(--spacing) * 2); + } + .right-3 { + right: calc(var(--spacing) * 3); + } + .right-4 { + right: calc(var(--spacing) * 4); + } + .bottom-0 { + bottom: 0; + } + .left-0 { + left: 0; + } + .z-10 { + z-index: 10; + } + .z-\[1000\] { + z-index: 1000; + } + .m-0 { + margin: 0; + } + .mx-auto { + margin-inline: auto; + } + .my-\[20vh\] { + margin-block: 20vh; + } + .mt-4 { + margin-top: calc(var(--spacing) * 4); + } + .mr-3 { + margin-right: calc(var(--spacing) * 3); + } + .mb-2 { + margin-bottom: calc(var(--spacing) * 2); + } + .mb-4 { + margin-bottom: calc(var(--spacing) * 4); + } + .mb-6 { + margin-bottom: calc(var(--spacing) * 6); + } + .flex { + display: flex; + } + .hidden { + display: none; + } + .h-5 { + height: calc(var(--spacing) * 5); + } + .h-10 { + height: calc(var(--spacing) * 10); + } + .h-12 { + height: calc(var(--spacing) * 12); + } + .h-14 { + height: calc(var(--spacing) * 14); + } + .h-20 { + height: calc(var(--spacing) * 20); + } + .min-h-\[3\.5rem\] { + min-height: 3.5rem; + } + .min-h-screen { + min-height: 100vh; + } + .w-5 { + width: calc(var(--spacing) * 5); + } + .w-14 { + width: calc(var(--spacing) * 14); + } + .w-20 { + width: calc(var(--spacing) * 20); + } + .w-80 { + width: calc(var(--spacing) * 80); + } + .w-full { + width: 100%; + } + .min-w-full { + min-width: 100%; + } + .flex-1 { + flex: 1; + } + .border-collapse { + border-collapse: collapse; + } + .animate-\[ping_1\.5s_cubic-bezier\(0\,0\.2\,0\.8\,1\)_infinite\] { + animation: ping 1.5s cubic-bezier(0,0.2,0.8,1) infinite; + } + .cursor-pointer { + cursor: pointer; + } + .appearance-none { + appearance: none; + } + .flex-col { + flex-direction: column; + } + .items-center { + align-items: center; + } + .justify-between { + justify-content: space-between; + } + .gap-4 { + gap: calc(var(--spacing) * 4); + } + .divide-y { + :where(& > :not(:last-child)) { + --tw-divide-y-reverse: 0; + border-bottom-style: var(--tw-border-style); + border-top-style: var(--tw-border-style); + border-top-width: calc(1px * var(--tw-divide-y-reverse)); + border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); + } + } + .divide-gray-200 { + :where(& > :not(:last-child)) { + border-color: var(--color-gray-200); + } + } + .overflow-hidden { + overflow: hidden; + } + .overflow-x-auto { + overflow-x: auto; + } + .rounded { + border-radius: 0.25rem; + } + .rounded-full { + border-radius: calc(infinity * 1px); + } + .rounded-lg { + border-radius: var(--radius-lg); + } + .border { + border-style: var(--tw-border-style); + border-width: 1px; + } + .border-0 { + border-style: var(--tw-border-style); + border-width: 0px; + } + .border-\[3px\] { + border-style: var(--tw-border-style); + border-width: 3px; + } + .border-b { + border-bottom-style: var(--tw-border-style); + border-bottom-width: 1px; + } + .border-\[\#0087ff\] { + border-color: #0087ff; + } + .border-\[\#d6d5d5\] { + border-color: #d6d5d5; + } + .border-gray-300 { + border-color: var(--color-gray-300); + } + .border-white\/10 { + border-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + .bg-\[\#6b9ed2\] { + background-color: #6b9ed2; + } + .bg-\[\#f7f7f7\] { + background-color: #f7f7f7; + } + .bg-\[\#ffffe0\] { + background-color: #ffffe0; + } + .bg-black\/40 { + background-color: color-mix(in srgb, #000 40%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-black) 40%, transparent); + } + } + .bg-blue-600 { + background-color: var(--color-blue-600); + } + .bg-gray-50 { + background-color: var(--color-gray-50); + } + .bg-gray-100 { + background-color: var(--color-gray-100); + } + .bg-white { + background-color: var(--color-white); + } + .bg-gradient-to-b { + --tw-gradient-position: to bottom in oklab; + background-image: linear-gradient(var(--tw-gradient-stops)); + } + .bg-\[url\(\'data\:image\/svg\+xml\,\%3csvg_xmlns\=\%27http\:\/\/www\.w3\.org\/2000\/svg\%27_viewBox\=\%270_0_30_30\%27\%3e\%3cpath_stroke\=\%27rgba\(255\,255\,255\,0\.55\)\%27_stroke-linecap\=\%27round\%27_stroke-miterlimit\=\%2710\%27_stroke-width\=\%272\%27_d\=\%27M4_7h22M4_15h22M4_23h22\%27\/\%3e\%3c\/svg\%3e\'\)\] { + background-image: url('data:image/svg+xml,%3csvg_xmlns=%27http://www.w3.org/2000/svg%27_viewBox=%270_0_30_30%27%3e%3cpath_stroke=%27rgba(255,255,255,0.55)%27_stroke-linecap=%27round%27_stroke-miterlimit=%2710%27_stroke-width=%272%27_d=%27M4_7h22M4_15h22M4_23h22%27/%3e%3c/svg%3e'); + } + .from-\[\#052767\] { + --tw-gradient-from: #052767; + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .to-\[\#3a0647\] { + --tw-gradient-to: #3a0647; + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .bg-\[length\:1\.75rem\] { + background-size: 1.75rem; + } + .bg-center { + background-position: center; + } + .bg-no-repeat { + background-repeat: no-repeat; + } + .p-3 { + padding: calc(var(--spacing) * 3); + } + .p-8 { + padding: calc(var(--spacing) * 8); + } + .px-1 { + padding-inline: var(--spacing); + } + .px-3 { + padding-inline: calc(var(--spacing) * 3); + } + .px-4 { + padding-inline: calc(var(--spacing) * 4); + } + .px-6 { + padding-inline: calc(var(--spacing) * 6); + } + .py-1 { + padding-block: var(--spacing); + } + .py-2 { + padding-block: calc(var(--spacing) * 2); + } + .py-3 { + padding-block: calc(var(--spacing) * 3); + } + .py-4 { + padding-block: calc(var(--spacing) * 4); + } + .pt-4 { + padding-top: calc(var(--spacing) * 4); + } + .pb-2 { + padding-bottom: calc(var(--spacing) * 2); + } + .pb-4 { + padding-bottom: calc(var(--spacing) * 4); + } + .text-center { + text-align: center; + } + .text-left { + text-align: left; + } + .text-3xl { + font-size: var(--text-3xl); + line-height: var(--tw-leading, var(--text-3xl--line-height)); + } + .text-lg { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + } + .text-sm { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + .text-xl { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); + } + .text-\[0\.9rem\] { + font-size: 0.9rem; + } + .text-\[1\.1rem\] { + font-size: 1.1rem; + } + .font-bold { + --tw-font-weight: var(--font-weight-bold); + font-weight: var(--font-weight-bold); + } + .font-semibold { + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + } + .text-ellipsis { + text-overflow: ellipsis; + } + .whitespace-nowrap { + white-space: nowrap; + } + .text-\[\#d7d7d7\] { + color: #d7d7d7; + } + .text-blue-600 { + color: var(--color-blue-600); + } + .text-gray-500 { + color: var(--color-gray-500); + } + .text-gray-700 { + color: var(--color-gray-700); + } + .text-gray-900 { + color: var(--color-gray-900); + } + .text-red-600 { + color: var(--color-red-600); + } + .text-white { + color: var(--color-white); + } + .italic { + font-style: italic; + } + .no-underline { + text-decoration-line: none; + } + .underline { + text-decoration-line: underline; + } + .opacity-0 { + opacity: 0%; + } + .shadow-\[0_-1px_2px_rgba\(0\,0\,0\,0\.2\)\] { + --tw-shadow: 0 -1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .shadow-lg { + --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .shadow-sm { + --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .ring-1 { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .ring-black { + --tw-ring-color: var(--color-black); + } + .transition-all { + transition-property: all; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .transition-colors { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .duration-500 { + --tw-duration: 500ms; + transition-duration: 500ms; + } + .peer-checked\:block { + &:is(:where(.peer):checked ~ *) { + display: block; + } + } + .backdrop\:animate-\[fadeIn_0\.5s_ease-in-out\] { + &::backdrop { + animation: fadeIn 0.5s ease-in-out; + } + } + .backdrop\:bg-black\/40 { + &::backdrop { + background-color: color-mix(in srgb, #000 40%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-black) 40%, transparent); + } + } + } + .open\:animate-\[slideUp_1\.5s_cubic-bezier\(0\.05\,0\.89\,0\.25\,1\.02\)_0\.3s\,fadeIn_0\.5s_ease-in-out_0\.3s\] { + &:is([open], :popover-open, :open) { + animation: slideUp 1.5s cubic-bezier(0.05,0.89,0.25,1.02) 0.3s,fadeIn 0.5s ease-in-out 0.3s; + } + } + .checked\:bg-white\/50 { + &:checked { + background-color: color-mix(in srgb, #fff 50%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 50%, transparent); + } + } + } + .hover\:bg-\[\#3b6ea2\] { + &:hover { + @media (hover: hover) { + background-color: #3b6ea2; + } + } + } + .hover\:bg-blue-700 { + &:hover { + @media (hover: hover) { + background-color: var(--color-blue-700); + } + } + } + .hover\:bg-gray-50 { + &:hover { + @media (hover: hover) { + background-color: var(--color-gray-50); + } + } + } + .hover\:bg-white\/10 { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + } + } + .hover\:text-white { + &:hover { + @media (hover: hover) { + color: var(--color-white); + } + } + } + .hover\:underline { + &:hover { + @media (hover: hover) { + text-decoration-line: underline; + } + } + } + .active\:bg-\[\#6b9ed2\] { + &:active { + background-color: #6b9ed2; + } + } + .sm\:sticky { + @media (width >= 40rem) { + position: sticky; + } + } + .sm\:top-0 { + @media (width >= 40rem) { + top: 0; + } + } + .sm\:ml-6 { + @media (width >= 40rem) { + margin-left: calc(var(--spacing) * 6); + } + } + .sm\:block { + @media (width >= 40rem) { + display: block; + } + } + .sm\:hidden { + @media (width >= 40rem) { + display: none; + } + } + .sm\:h-\[calc\(100vh-3\.5rem\)\] { + @media (width >= 40rem) { + height: calc(100vh - 3.5rem); + } + } + .sm\:h-screen { + @media (width >= 40rem) { + height: 100vh; + } + } + .sm\:w-\[250px\] { + @media (width >= 40rem) { + width: 250px; + } + } + .sm\:flex-row { + @media (width >= 40rem) { + flex-direction: row; + } + } + .sm\:justify-end { + @media (width >= 40rem) { + justify-content: flex-end; + } + } + .sm\:overflow-y-auto { + @media (width >= 40rem) { + overflow-y: auto; + } + } + .sm\:px-8 { + @media (width >= 40rem) { + padding-inline: calc(var(--spacing) * 8); + } + } + .\[\&\.active\]\:bg-white\/\[0\.37\] { + &.active { + background-color: color-mix(in srgb, #fff 37%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 37%, transparent); + } + } + } + .\[\&\.active\]\:text-white { + &.active { + color: var(--color-white); + } + } +} +@property --tw-divide-y-reverse { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-border-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} +@property --tw-gradient-position { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-from { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-via { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-to { + syntax: ""; + inherits: false; + initial-value: #0000; +} +@property --tw-gradient-stops { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-via-stops { + syntax: "*"; + inherits: false; +} +@property --tw-gradient-from-position { + syntax: ""; + inherits: false; + initial-value: 0%; +} +@property --tw-gradient-via-position { + syntax: ""; + inherits: false; + initial-value: 50%; +} +@property --tw-gradient-to-position { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-font-weight { + syntax: "*"; + inherits: false; +} +@property --tw-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-inset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-ring-inset { + syntax: "*"; + inherits: false; +} +@property --tw-ring-offset-width { + syntax: ""; + inherits: false; + initial-value: 0px; +} +@property --tw-ring-offset-color { + syntax: "*"; + inherits: false; + initial-value: #fff; +} +@property --tw-ring-offset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-duration { + syntax: "*"; + inherits: false; +} +@keyframes ping { + 75%, 100% { + transform: scale(2); + opacity: 0; + } +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-divide-y-reverse: 0; + --tw-border-style: solid; + --tw-gradient-position: initial; + --tw-gradient-from: #0000; + --tw-gradient-via: #0000; + --tw-gradient-to: #0000; + --tw-gradient-stops: initial; + --tw-gradient-via-stops: initial; + --tw-gradient-from-position: 0%; + --tw-gradient-via-position: 50%; + --tw-gradient-to-position: 100%; + --tw-font-weight: initial; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + --tw-duration: initial; + } + } +} diff --git a/Tmt.SaqaTravel/wwwroot/favicon.png b/Tmt.SaqaTravel/wwwroot/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8422b59695935d180d11d5dbe99653e711097819 GIT binary patch literal 1148 zcmV-?1cUpDP)9h26h2-Cs%i*@Moc3?#6qJID|D#|3|2Hn7gTIYEkr|%Xjp);YgvFmB&0#2E2b=| zkVr)lMv9=KqwN&%obTp-$<51T%rx*NCwceh-E+=&e(oLO`@Z~7gybJ#U|^tB2Pai} zRN@5%1qsZ1e@R(XC8n~)nU1S0QdzEYlWPdUpH{wJ2Pd4V8kI3BM=)sG^IkUXF2-j{ zrPTYA6sxpQ`Q1c6mtar~gG~#;lt=s^6_OccmRd>o{*=>)KS=lM zZ!)iG|8G0-9s3VLm`bsa6e ze*TlRxAjXtm^F8V`M1%s5d@tYS>&+_ga#xKGb|!oUBx3uc@mj1%=MaH4GR0tPBG_& z9OZE;->dO@`Q)nr<%dHAsEZRKl zedN6+3+uGHejJp;Q==pskSAcRcyh@6mjm2z-uG;s%dM-u0*u##7OxI7wwyCGpS?4U zBFAr(%GBv5j$jS@@t@iI8?ZqE36I^4t+P^J9D^ELbS5KMtZ z{Qn#JnSd$15nJ$ggkF%I4yUQC+BjDF^}AtB7w348EL>7#sAsLWs}ndp8^DsAcOIL9 zTOO!!0!k2`9BLk25)NeZp7ev>I1Mn={cWI3Yhx2Q#DnAo4IphoV~R^c0x&nw*MoIV zPthX?{6{u}sMS(MxD*dmd5rU(YazQE59b|TsB5Tm)I4a!VaN@HYOR)DwH1U5y(E)z zQqQU*B%MwtRQ$%x&;1p%ANmc|PkoFJZ%<-uq%PX&C!c-7ypis=eP+FCeuv+B@h#{4 zGx1m0PjS~FJt}3mdt4c!lel`1;4W|03kcZRG+DzkTy|7-F~eDsV2Tx!73dM0H0CTh zl)F-YUkE1zEzEW(;JXc|KR5{ox%YTh{$%F$a36JP6Nb<0%#NbSh$dMYF-{ z1_x(Vx)}fs?5_|!5xBTWiiIQHG<%)*e=45Fhjw_tlnmlixq;mUdC$R8v#j( zhQ$9YR-o%i5Uc`S?6EC51!bTRK=Xkyb<18FkCKnS2;o*qlij1YA@-nRpq#OMTX&RbL<^2q@0qja!uIvI;j$6>~k@IMwD42=8$$!+R^@5o6HX(*n~