From ac13e2a85446d49ab504726bc75841f53dec611e Mon Sep 17 00:00:00 2001 From: "fredy.siswanto" Date: Sat, 22 Feb 2025 15:15:04 +0700 Subject: [PATCH] feat: adj component --- app/components/icons/close.tsx | 23 ++ app/components/icons/eye.tsx | 21 ++ app/components/icons/menu.tsx | 21 ++ app/components/popup/header-modal.tsx | 44 ++++ app/components/popup/modal.tsx | 29 ++- app/components/popup/succes-payment.tsx | 43 +--- app/components/popup/succes-register.tsx | 5 +- app/components/popup/succes-reset-pass.tsx | 5 +- app/components/ui/banner.tsx | 2 +- app/components/ui/form-forgot-password.tsx | 46 +--- app/components/ui/form-login.tsx | 55 ++--- app/components/ui/form-register .tsx | 44 +--- app/components/ui/form-subscription.tsx | 48 +--- app/layouts/header-menu-mobile.tsx | 38 ++-- app/pages/news-detail/index.tsx | 7 +- app/root.tsx | 4 - package.json | 2 + pnpm-lock.yaml | 246 +++++++++++++++++++++ 18 files changed, 464 insertions(+), 219 deletions(-) create mode 100644 app/components/icons/close.tsx create mode 100644 app/components/icons/eye.tsx create mode 100644 app/components/icons/menu.tsx create mode 100644 app/components/popup/header-modal.tsx diff --git a/app/components/icons/close.tsx b/app/components/icons/close.tsx new file mode 100644 index 0000000..4c56409 --- /dev/null +++ b/app/components/icons/close.tsx @@ -0,0 +1,23 @@ +import type { JSX, SVGProps } from 'react' + +export const CloseIcon = ( + properties: JSX.IntrinsicAttributes & SVGProps, +) => { + return ( + + + + ) +} diff --git a/app/components/icons/eye.tsx b/app/components/icons/eye.tsx new file mode 100644 index 0000000..73cd4b8 --- /dev/null +++ b/app/components/icons/eye.tsx @@ -0,0 +1,21 @@ +import type { JSX, SVGProps } from 'react' + +export const EyeIcon = ( + properties: JSX.IntrinsicAttributes & SVGProps, +) => { + return ( + + + + ) +} diff --git a/app/components/icons/menu.tsx b/app/components/icons/menu.tsx new file mode 100644 index 0000000..14bfd62 --- /dev/null +++ b/app/components/icons/menu.tsx @@ -0,0 +1,21 @@ +import type { JSX, SVGProps } from 'react' + +export const MenuIcon = ( + properties: JSX.IntrinsicAttributes & SVGProps, +) => { + return ( + + + + ) +} diff --git a/app/components/popup/header-modal.tsx b/app/components/popup/header-modal.tsx new file mode 100644 index 0000000..cc1f38f --- /dev/null +++ b/app/components/popup/header-modal.tsx @@ -0,0 +1,44 @@ +import type { ReactNode } from 'react' +import { Link } from 'react-router' + +import { LeftArrow } from '~/components/icons/left-arrow' +import { APP } from '~/data/meta' + +type THeaderModal = { + typeForm?: string + titleForm?: string + children: ReactNode +} +export default function HeaderModal({ typeForm, children }: THeaderModal) { + return ( + <> +
+ + + +
+
+
+ + {APP.title} + +
+ +
+ {children} +

{typeForm}

+
+
+ + ) +} diff --git a/app/components/popup/modal.tsx b/app/components/popup/modal.tsx index a41ffea..59b5265 100644 --- a/app/components/popup/modal.tsx +++ b/app/components/popup/modal.tsx @@ -1,6 +1,7 @@ +import { Dialog, DialogPanel } from '@headlessui/react' import type { ReactNode } from 'react' -interface ModalProperties { +type ModalProperties = { isOpen: boolean onClose: () => void children: ReactNode @@ -13,18 +14,22 @@ export default function PopupModal({ }: ModalProperties) { if (!isOpen) return return ( - <> -
- -
- {children} + +
+
+ + {children} +
- +
) } diff --git a/app/components/popup/succes-payment.tsx b/app/components/popup/succes-payment.tsx index 9690ab4..00a0b9d 100644 --- a/app/components/popup/succes-payment.tsx +++ b/app/components/popup/succes-payment.tsx @@ -1,48 +1,29 @@ -import { Link } from 'react-router' +import { Button } from '@headlessui/react' -import { LeftArrow } from '~/components/icons/left-arrow' +import HeaderModal from '~/components/popup/header-modal' import { APP } from '~/data/meta' export default function PopupSuccessPayment() { return ( -
-
-
- - - -
- -
- - {APP.title} - -
+ <> +
+ +

Selamat! Pembayaran anda berhasil!

+
-

Selamat! Pembayaran anda berhasil!

-
+
{APP.title}
- +
-
+ ) } diff --git a/app/components/popup/succes-register.tsx b/app/components/popup/succes-register.tsx index 7f96a37..284ee81 100644 --- a/app/components/popup/succes-register.tsx +++ b/app/components/popup/succes-register.tsx @@ -1,3 +1,4 @@ +import { Button } from '@headlessui/react' import { Link } from 'react-router' import { LeftArrow } from '~/components/icons/left-arrow' @@ -38,9 +39,9 @@ export default function PopupSuccesRegister() { className="h-[350px]" />
- +
diff --git a/app/components/popup/succes-reset-pass.tsx b/app/components/popup/succes-reset-pass.tsx index 4bf8627..8808d01 100644 --- a/app/components/popup/succes-reset-pass.tsx +++ b/app/components/popup/succes-reset-pass.tsx @@ -1,3 +1,4 @@ +import { Button } from '@headlessui/react' import { Link } from 'react-router' import { LeftArrow } from '~/components/icons/left-arrow' @@ -40,9 +41,9 @@ export default function PopupSuccessResetPass() { className="h-[350px]" /> - + diff --git a/app/components/ui/banner.tsx b/app/components/ui/banner.tsx index 02396f0..f126dd1 100644 --- a/app/components/ui/banner.tsx +++ b/app/components/ui/banner.tsx @@ -11,7 +11,7 @@ export default function Banner() { className="mt-2 h-full py-2" > {APP.title} diff --git a/app/components/ui/form-forgot-password.tsx b/app/components/ui/form-forgot-password.tsx index f7aa7d4..ec0ac89 100644 --- a/app/components/ui/form-forgot-password.tsx +++ b/app/components/ui/form-forgot-password.tsx @@ -1,40 +1,14 @@ -import { Link } from 'react-router' - -import { LeftArrow } from '~/components/icons/left-arrow' -import { APP } from '~/data/meta' +import HeaderModal from '~/components/popup/header-modal' +import { Button } from '~/components/ui/button' export default function FormForgotPassword() { return ( -
-
-
- - - -
- -
- - {APP.title} - -
- -
-

- Selamat Datang, silakan isi keterangan akun Anda untuk melanjutkan! -

-
+
+ +

Selamat Datang, silakan masukkan akun Anda untuk melanjutkan!

+
+
{/* Input Email / No Telepon */}
@@ -53,9 +27,9 @@ export default function FormForgotPassword() {
{/* Tombol Masuk */} - +
diff --git a/app/components/ui/form-login.tsx b/app/components/ui/form-login.tsx index bd69933..b0af86e 100644 --- a/app/components/ui/form-login.tsx +++ b/app/components/ui/form-login.tsx @@ -1,44 +1,21 @@ // import { EyeIcon, EyeOffIcon } from 'lucide-react' +import { Button } from '@headlessui/react' import { useState } from 'react' import { Link } from 'react-router' -import { LeftArrow } from '~/components/icons/left-arrow' -import { APP } from '~/data/meta' +import { EyeIcon } from '~/components/icons/eye' +import HeaderModal from '~/components/popup/header-modal' const FormLogin = () => { const [showPassword, setShowPassword] = useState(false) return ( -
-
-
- - - -
- -
- - {APP.title} - -
- -
-

- Selamat Datang, silakan daftarkan akun Anda untuk melanjutkan! -

-
+
+ +

Selamat Datang, silakan masukkan akun Anda untuk melanjutkan!

+
+
{/* Input Email / No Telepon */}
@@ -73,7 +50,17 @@ const FormLogin = () => { className="absolute top-9 right-3 text-gray-500" onClick={() => setShowPassword(!showPassword)} > - {/* {showPassword ? : } */} + {showPassword ? ( + + ) : ( + + )}
@@ -89,9 +76,9 @@ const FormLogin = () => {
{/* Tombol Masuk */} - + {/* Link Daftar */} diff --git a/app/components/ui/form-register .tsx b/app/components/ui/form-register .tsx index 726c0fd..f7c1dcd 100644 --- a/app/components/ui/form-register .tsx +++ b/app/components/ui/form-register .tsx @@ -1,43 +1,17 @@ -// import { EyeIcon, EyeOffIcon } from 'lucide-react' import { useState } from 'react' -import { Link } from 'react-router' -import { LeftArrow } from '~/components/icons/left-arrow' -import { APP } from '~/data/meta' +import HeaderModal from '~/components/popup/header-modal' +import { Button } from '~/components/ui/button' export default function FormRegister() { const [showPassword, setShowPassword] = useState(false) return ( -
-
-
- - - -
- -
- - {APP.title} - -
- -
-

- Selamat Datang, silakan isi keterangan akun Anda untuk melanjutkan! -

-
+
+ +

Selamat Datang, silakan masukkan data Anda untuk melanjutkan!

+
+
{/* Input Email / No Telepon */}
@@ -131,9 +105,9 @@ export default function FormRegister() {
{/* Tombol Masuk */} - +
diff --git a/app/components/ui/form-subscription.tsx b/app/components/ui/form-subscription.tsx index 7374bb6..4af05ee 100644 --- a/app/components/ui/form-subscription.tsx +++ b/app/components/ui/form-subscription.tsx @@ -1,41 +1,17 @@ -import React from 'react' -import { Link } from 'react-router' +import { Button } from '@headlessui/react' -import { LeftArrow } from '~/components/icons/left-arrow' -import { APP } from '~/data/meta' +import HeaderModal from '~/components/popup/header-modal' export default function FormSubscription() { return ( -
-
-
- - - -
- -
- - {APP.title} - -
- -
-

- Selamat Datang, silakan Pilih Subscription Anda untuk melanjutkan! -

-
+
+ +

+ Selamat Datang, silakan Pilih Subscription Anda untuk melanjutkan! +

+
+
{/* Subscribe*/}
@@ -51,9 +27,9 @@ export default function FormSubscription() {
{/* Tombol Masuk */} - +
diff --git a/app/layouts/header-menu-mobile.tsx b/app/layouts/header-menu-mobile.tsx index 4d9c535..def919b 100644 --- a/app/layouts/header-menu-mobile.tsx +++ b/app/layouts/header-menu-mobile.tsx @@ -1,6 +1,8 @@ import { useState } from 'react' import { Link } from 'react-router' +import { CloseIcon } from '~/components/icons/close' +import { MenuIcon } from '~/components/icons/menu' import { HeaderSearch } from '~/layouts/header-search' import { MENU } from './menu' @@ -13,31 +15,27 @@ export default function HeaderMenuMobile() { } return ( <> -
+
{/* Menu */}
{/* Tombol Close */} {/* List Menu */} -
    +
      {MENU.map((item, index) => (
    • - - - +
      diff --git a/app/pages/news-detail/index.tsx b/app/pages/news-detail/index.tsx index 0b57c33..988c04b 100644 --- a/app/pages/news-detail/index.tsx +++ b/app/pages/news-detail/index.tsx @@ -41,12 +41,15 @@ export const NewsDetailPage = () => { className="object-center" />
      -
      {content}
      +

      Share this post

      - +
      {tags?.map((tag) => ( diff --git a/app/root.tsx b/app/root.tsx index 99ad302..294e404 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -43,10 +43,6 @@ export function Layout({ children }: { children: React.ReactNode }) { return ( - =16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@headlessui/react@2.2.0': + resolution: {integrity: sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -1016,6 +1035,30 @@ packages: '@radix-ui/rect@1.0.1': resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@react-aria/focus@3.19.1': + resolution: {integrity: sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.23.0': + resolution: {integrity: sha512-0qR1atBIWrb7FzQ+Tmr3s8uH5mQdyRH78n0krYaG8tng9+u1JlSi8DGRSaC9ezKyNB84m7vHT207xnHXGeJ3Fg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.7': + resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.27.0': + resolution: {integrity: sha512-p681OtApnKOdbeN8ITfnnYqfdHS0z7GE+4l8EXlfLnr70Rp/9xicBO6d2rU+V/B3JujDw2gPWxYKEnEeh0CGCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@react-router/dev@7.1.3': resolution: {integrity: sha512-BPdIk4m8shjfynnkFeR30eH6aawpFHZiWqccWXNFgmFjKBcTQe/j7QTKi6gchceXDau0j2fSLciQ07rYrIGdhw==} engines: {node: '>=20.0.0'} @@ -1072,6 +1115,16 @@ packages: peerDependencies: react-router: 7.1.3 + '@react-stately/utils@3.10.5': + resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.27.0': + resolution: {integrity: sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@rollup/rollup-android-arm-eabi@4.32.1': resolution: {integrity: sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==} cpu: [arm] @@ -1175,6 +1228,9 @@ packages: engines: {node: '>=8.10'} hasBin: true + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/node@4.0.1': resolution: {integrity: sha512-lc+ly6PKHqgCVl7eO8D2JlV96Lks5bmL6pdtM6UasyUHLU2zmrOqU6jfgln120IVnCh3VC8GG/ca24xVTtSokw==} @@ -1258,6 +1314,15 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 + '@tanstack/react-virtual@3.13.0': + resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.13.0': + resolution: {integrity: sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==} + '@types/conventional-commits-parser@5.0.1': resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} @@ -1861,6 +1926,19 @@ packages: dom-helpers@3.4.0: resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -1913,6 +1991,14 @@ packages: resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -2335,10 +2421,25 @@ packages: resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + html-dom-parser@5.0.13: + resolution: {integrity: sha512-B7JonBuAfG32I7fDouUQEogBrz3jK9gAuN1r1AaXpED6dIhtg/JwiSRhjGL7aOJwRz3HU4efowCjQBaoXiREqg==} + + html-react-parser@5.2.2: + resolution: {integrity: sha512-yA5012CJGSFWYZsgYzfr6HXJgDap38/AEP4ra8Cw+WHIi2ZRDXRX/QVYdumRf1P8zKyScKd6YOrWYvVEiPfGKg==} + peerDependencies: + '@types/react': 0.14 || 15 || 16 || 17 || 18 || 19 + react: 0.14 || 15 || 16 || 17 || 18 || 19 + peerDependenciesMeta: + '@types/react': + optional: true + html@1.0.0: resolution: {integrity: sha512-lw/7YsdKiP3kk5PnR1INY17iJuzdAtJewxr14ozKJWbbR97znovZ0mh+WEMZ8rjc3lgTK+ID/htTjuyGKB52Kw==} hasBin: true + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -2389,6 +2490,9 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -3281,6 +3385,9 @@ packages: react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + react-property@2.0.2: + resolution: {integrity: sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==} + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -3639,6 +3746,12 @@ packages: resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} + style-to-js@1.1.16: + resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} @@ -3653,6 +3766,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tailwind-merge@3.0.1: resolution: {integrity: sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g==} @@ -4469,8 +4585,25 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) + '@floating-ui/react@0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@floating-ui/utils': 0.2.9 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + tabbable: 6.2.0 + '@floating-ui/utils@0.2.9': {} + '@headlessui/react@2.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-aria/focus': 3.19.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-aria/interactions': 3.23.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/react-virtual': 3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -4925,6 +5058,40 @@ snapshots: dependencies: '@babel/runtime': 7.26.7 + '@react-aria/focus@3.19.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-aria/interactions': 3.23.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-aria/utils': 3.27.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-types/shared': 3.27.0(react@19.0.0) + '@swc/helpers': 0.5.15 + clsx: 2.1.1 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@react-aria/interactions@3.23.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@19.0.0) + '@react-aria/utils': 3.27.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@react-types/shared': 3.27.0(react@19.0.0) + '@swc/helpers': 0.5.15 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@react-aria/ssr@3.9.7(react@19.0.0)': + dependencies: + '@swc/helpers': 0.5.15 + react: 19.0.0 + + '@react-aria/utils@3.27.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-aria/ssr': 3.9.7(react@19.0.0) + '@react-stately/utils': 3.10.5(react@19.0.0) + '@react-types/shared': 3.27.0(react@19.0.0) + '@swc/helpers': 0.5.15 + clsx: 2.1.1 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + '@react-router/dev@7.1.3(@react-router/serve@7.1.3(react-router@7.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3))(@types/node@20.17.16)(babel-plugin-macros@3.1.0)(lightningcss@1.29.1)(react-router@7.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3)(vite@5.4.14(@types/node@20.17.16)(lightningcss@1.29.1))': dependencies: '@babel/core': 7.26.7 @@ -5013,6 +5180,15 @@ snapshots: - supports-color - typescript + '@react-stately/utils@3.10.5(react@19.0.0)': + dependencies: + '@swc/helpers': 0.5.15 + react: 19.0.0 + + '@react-types/shared@3.27.0(react@19.0.0)': + dependencies: + react: 19.0.0 + '@rollup/rollup-android-arm-eabi@4.32.1': optional: true @@ -5078,6 +5254,10 @@ snapshots: ignore: 5.3.2 p-map: 4.0.0 + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + '@tailwindcss/node@4.0.1': dependencies: enhanced-resolve: 5.18.0 @@ -5147,6 +5327,14 @@ snapshots: tailwindcss: 4.0.1 vite: 5.4.14(@types/node@20.17.16)(lightningcss@1.29.1) + '@tanstack/react-virtual@3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@tanstack/virtual-core': 3.13.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@tanstack/virtual-core@3.13.0': {} + '@types/conventional-commits-parser@5.0.1': dependencies: '@types/node': 20.17.16 @@ -5773,6 +5961,24 @@ snapshots: dependencies: '@babel/runtime': 7.26.7 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -5828,6 +6034,10 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + entities@4.5.0: {} + + entities@6.0.0: {} + env-paths@2.2.1: {} environment@1.1.0: {} @@ -6430,10 +6640,32 @@ snapshots: dependencies: lru-cache: 7.18.3 + html-dom-parser@5.0.13: + dependencies: + domhandler: 5.0.3 + htmlparser2: 10.0.0 + + html-react-parser@5.2.2(@types/react@19.0.8)(react@19.0.0): + dependencies: + domhandler: 5.0.3 + html-dom-parser: 5.0.13 + react: 19.0.0 + react-property: 2.0.2 + style-to-js: 1.1.16 + optionalDependencies: + '@types/react': 19.0.8 + html@1.0.0: dependencies: concat-stream: 1.6.2 + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.0 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -6474,6 +6706,8 @@ snapshots: ini@4.1.1: {} + inline-style-parser@0.2.4: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -7257,6 +7491,8 @@ snapshots: react-lifecycles-compat@3.0.4: {} + react-property@2.0.2: {} + react-refresh@0.14.2: {} react-remove-scroll-bar@2.3.8(@types/react@19.0.8)(react@19.0.0): @@ -7690,6 +7926,14 @@ snapshots: strip-json-comments@5.0.1: {} + style-to-js@1.1.16: + dependencies: + style-to-object: 1.0.8 + + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + stylis@4.2.0: {} summary@2.1.0: {} @@ -7700,6 +7944,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + tabbable@6.2.0: {} + tailwind-merge@3.0.1: {} tailwindcss@4.0.1: {}