diff --git a/resources/css/general.css b/resources/css/general.css
new file mode 100644
index 0000000..0dee457
--- /dev/null
+++ b/resources/css/general.css
@@ -0,0 +1,43 @@
+/* ГАВРИЛОВ. ВЫЯСНИТЬ, ГДЕ ИСПОЛЬЗУЮТСЯ */
+
+#root{
+ padding: 10px;
+}
+
+.form-container{
+
+ &.form-container--small-size{
+ width: 30%;
+ }
+ &.form-container--medium-size{
+ width: 50%;
+ }
+
+ &.form-container--left-pos{
+ margin-left: 10px;
+ }
+ &.form-container--mid-pos{
+ margin: 25px auto;
+ }
+}
+
+.form__field-block{
+ margin: 15px 0;
+}
+
+.btn-block{
+ margin: 15px 0;
+ padding: 15px 0;
+ display: flex;
+ justify-content: flex-start;
+ gap: 10px;
+}
+
+
+/* OVERWRITE */
+.renButton{
+
+ &.renButton--tertiary{
+ background: #dfdfdf;
+ }
+}
diff --git a/resources/css/main_styles.css b/resources/css/main_styles.css
new file mode 100644
index 0000000..a2aa702
--- /dev/null
+++ b/resources/css/main_styles.css
@@ -0,0 +1,27 @@
+#page__content-block{
+ padding: 10px;
+}
+
+#page__header-block{
+ position: sticky;
+ top: 0;
+ z-index: 99;
+ box-shadow: 0px 2px 9px 3px #8f8d8d;
+
+ & .header-block__header-container{
+ display: flex;
+ justify-content: space-between;
+ padding: 10px;
+ background: var(--color_graphite_main);
+
+ & .header-container__block{
+ display: flex;
+ gap: 10px;
+ align-items: center;
+
+ & .header-container__block__app-name{
+ color: white;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/css/variables.css b/resources/css/variables.css
new file mode 100644
index 0000000..28a4675
--- /dev/null
+++ b/resources/css/variables.css
@@ -0,0 +1,7 @@
+:root{
+ --color_graphite_main: #323e48;
+ --color_emerald_main: #77cb10;
+ --color_emerald_light: #95fa77;
+ --color_ruby_main: #ff0078;
+ --color_purple_main: #7864eb;
+}
\ No newline at end of file
diff --git a/resources/js/main_script.tsx b/resources/js/main_script.tsx
new file mode 100644
index 0000000..5c654b6
--- /dev/null
+++ b/resources/js/main_script.tsx
@@ -0,0 +1,15 @@
+import React from "react";
+import { createRoot } from 'react-dom/client';
+import { UIKitThemeProvider } from '@SharePoint/rencredit_uikit';
+import Header from "./components/header/Header.tsx";
+
+const headerBlock:HTMLElement = document.getElementById('page__header-block')!;
+const headerRoot = createRoot(headerBlock);
+
+console.log('da')
+
+headerRoot.render(
+
+
+
+);
diff --git a/resources/js/providers/AppProvider.tsx b/resources/js/providers/AppProvider.tsx
new file mode 100644
index 0000000..5b7aae7
--- /dev/null
+++ b/resources/js/providers/AppProvider.tsx
@@ -0,0 +1,21 @@
+import React, { ReactNode } from "react";
+import { UIKitThemeProvider } from '@SharePoint/rencredit_uikit';
+import { PopupProvider } from "../contexts/PopupContext.tsx";
+import { PreloaderProvider } from "../contexts/PreloaderContext.tsx";
+
+interface AppProviderProps{
+ children: ReactNode;
+}
+
+export function AppProvider({children}: AppProviderProps){
+
+ return (
+
+
+
+ {children}
+
+
+
+ )
+}
diff --git a/resources/js/services/getCsrfService.ts b/resources/js/services/getCsrfService.ts
new file mode 100644
index 0000000..12e160d
--- /dev/null
+++ b/resources/js/services/getCsrfService.ts
@@ -0,0 +1,20 @@
+/**
+ * Сервис для полуения csrt токена для размещения в формах
+ * @date 24.07.2025
+ * @author dgavrilov
+ */
+
+export const getCsrfToken = ():string => {
+ const METATAG:HTMLElement|null = document.querySelector('meta[name="csrf-token"]');
+
+ if (!METATAG) {
+ return '';
+ }
+
+ const CSRFTOKEN:string|null = METATAG.getAttribute('content');
+ if (!CSRFTOKEN) {
+ return '';
+ }
+
+ return CSRFTOKEN;
+}