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; +}