From 839a9d1dd7fe29ab8a3551ca52464e1f53597587 Mon Sep 17 00:00:00 2001 From: Philippe Torrel Date: Thu, 13 Aug 2026 09:41:01 +0200 Subject: [PATCH] --- .../01_react-with-forms/package-lock.json | 178 +- .../tag43/01_react-with-forms/package.json | 2 +- .../tag43/01_react-with-forms/src/App.jsx | 11 +- .../src/components/forms/FormContact.jsx | 1 + .../src/components/forms/joi/validate.js | 1 + .../forms/react-hook-form/FormContact.jsx | 17 +- .../tag43/02_react-api-with-hooks/src/App.jsx | 4 +- .../examples/ExampleUseEffectDidUpdate.jsx | 2 +- .../tag44/01_react-api-with-hooks.zip | Bin 0 -> 289277 bytes .../tag44/01_react-api-with-hooks/.gitignore | 24 + .../01_react-api-with-hooks/.oxlintrc.json | 8 + .../tag44/01_react-api-with-hooks/README.md | 16 + .../tag44/01_react-api-with-hooks/index.html | 13 + .../01_react-api-with-hooks/package-lock.json | 2480 +++++++++++++++++ .../01_react-api-with-hooks/package.json | 26 + .../public/favicon.svg | 1 + .../01_react-api-with-hooks/public/icons.svg | 24 + .../tag44/01_react-api-with-hooks/src/App.jsx | 23 + .../src/assets/react.svg | 1 + .../src/assets/vite.svg | 1 + .../src/components/buttons/Button.jsx | 15 + .../components/examples/ExampleUseContext.jsx | 18 + .../examples/ExampleUseEffectDidUpdate.jsx | 32 + .../examples/ExampleUseEffectMount.jsx | 28 + .../examples/ExampleUseEffectUnMount.jsx | 35 + .../src/components/examples/ExampleUseId.jsx | 24 + .../components/examples/ExampleUseReducer.jsx | 77 + .../components/examples/ExampleUseState.jsx | 41 + .../examples/theme-switcher/ThemeContext.jsx | 8 + .../examples/theme-switcher/ThemeProvider.jsx | 26 + .../src/components/footers/FooterMain.jsx | 38 + .../src/components/forms/FormNewsletter.jsx | 29 + .../src/components/headers/HeaderMain.jsx | 14 + .../src/components/icons/LogoDonkey.jsx | 80 + .../src/components/inputs/InputAmount.jsx | 37 + .../src/components/lists/ListTodo.jsx | 32 + .../src/components/lists/ListUser.jsx | 42 + .../src/components/logos/LogoMain.jsx | 13 + .../01_react-api-with-hooks/src/main.jsx | 13 + .../src/styles/01_frameworks/_index.scss | 3 + .../bootstrap-5.3.8/_accordion.scss | 153 + .../01_frameworks/bootstrap-5.3.8/_alert.scss | 68 + .../01_frameworks/bootstrap-5.3.8/_badge.scss | 38 + .../bootstrap-5.3.8/_breadcrumb.scss | 40 + .../bootstrap-5.3.8/_button-group.scss | 147 + .../bootstrap-5.3.8/_buttons.scss | 216 ++ .../01_frameworks/bootstrap-5.3.8/_card.scss | 238 ++ .../bootstrap-5.3.8/_carousel.scss | 226 ++ .../01_frameworks/bootstrap-5.3.8/_close.scss | 66 + .../bootstrap-5.3.8/_containers.scss | 41 + .../bootstrap-5.3.8/_dropdown.scss | 250 ++ .../01_frameworks/bootstrap-5.3.8/_forms.scss | 9 + .../bootstrap-5.3.8/_functions.scss | 302 ++ .../01_frameworks/bootstrap-5.3.8/_grid.scss | 39 + .../bootstrap-5.3.8/_helpers.scss | 12 + .../bootstrap-5.3.8/_images.scss | 42 + .../bootstrap-5.3.8/_list-group.scss | 199 ++ .../01_frameworks/bootstrap-5.3.8/_maps.scss | 174 ++ .../bootstrap-5.3.8/_mixins.scss | 42 + .../01_frameworks/bootstrap-5.3.8/_modal.scss | 240 ++ .../01_frameworks/bootstrap-5.3.8/_nav.scss | 197 ++ .../bootstrap-5.3.8/_navbar.scss | 289 ++ .../bootstrap-5.3.8/_offcanvas.scss | 147 + .../bootstrap-5.3.8/_pagination.scss | 109 + .../bootstrap-5.3.8/_placeholders.scss | 51 + .../bootstrap-5.3.8/_popover.scss | 196 ++ .../bootstrap-5.3.8/_progress.scss | 68 + .../bootstrap-5.3.8/_reboot.scss | 617 ++++ .../01_frameworks/bootstrap-5.3.8/_root.scss | 187 ++ .../bootstrap-5.3.8/_spinners.scss | 86 + .../bootstrap-5.3.8/_tables.scss | 171 ++ .../bootstrap-5.3.8/_toasts.scss | 73 + .../bootstrap-5.3.8/_tooltip.scss | 119 + .../bootstrap-5.3.8/_transitions.scss | 27 + .../01_frameworks/bootstrap-5.3.8/_type.scss | 106 + .../bootstrap-5.3.8/_utilities.scss | 806 ++++++ .../bootstrap-5.3.8/_variables-dark.scss | 102 + .../bootstrap-5.3.8/_variables.scss | 1753 ++++++++++++ .../bootstrap-5.3.8/bootstrap-grid.scss | 62 + .../bootstrap-5.3.8/bootstrap-reboot.scss | 10 + .../bootstrap-5.3.8/bootstrap-utilities.scss | 19 + .../bootstrap-5.3.8/bootstrap.scss | 52 + .../forms/_floating-labels.scss | 97 + .../bootstrap-5.3.8/forms/_form-check.scss | 189 ++ .../bootstrap-5.3.8/forms/_form-control.scss | 214 ++ .../bootstrap-5.3.8/forms/_form-range.scss | 91 + .../bootstrap-5.3.8/forms/_form-select.scss | 80 + .../bootstrap-5.3.8/forms/_form-text.scss | 11 + .../bootstrap-5.3.8/forms/_input-group.scss | 132 + .../bootstrap-5.3.8/forms/_labels.scss | 36 + .../bootstrap-5.3.8/forms/_validation.scss | 12 + .../bootstrap-5.3.8/helpers/_clearfix.scss | 3 + .../bootstrap-5.3.8/helpers/_color-bg.scss | 7 + .../helpers/_colored-links.scss | 30 + .../bootstrap-5.3.8/helpers/_focus-ring.scss | 5 + .../bootstrap-5.3.8/helpers/_icon-link.scss | 25 + .../bootstrap-5.3.8/helpers/_position.scss | 36 + .../bootstrap-5.3.8/helpers/_ratio.scss | 26 + .../bootstrap-5.3.8/helpers/_stacks.scss | 15 + .../helpers/_stretched-link.scss | 15 + .../helpers/_text-truncation.scss | 7 + .../helpers/_visually-hidden.scss | 8 + .../bootstrap-5.3.8/helpers/_vr.scss | 8 + .../bootstrap-5.3.8/mixins/_alert.scss | 18 + .../bootstrap-5.3.8/mixins/_backdrop.scss | 14 + .../bootstrap-5.3.8/mixins/_banner.scss | 7 + .../mixins/_border-radius.scss | 78 + .../bootstrap-5.3.8/mixins/_box-shadow.scss | 24 + .../bootstrap-5.3.8/mixins/_breakpoints.scss | 127 + .../bootstrap-5.3.8/mixins/_buttons.scss | 70 + .../bootstrap-5.3.8/mixins/_caret.scss | 69 + .../bootstrap-5.3.8/mixins/_clearfix.scss | 9 + .../bootstrap-5.3.8/mixins/_color-mode.scss | 21 + .../bootstrap-5.3.8/mixins/_color-scheme.scss | 7 + .../bootstrap-5.3.8/mixins/_container.scss | 11 + .../bootstrap-5.3.8/mixins/_deprecate.scss | 10 + .../bootstrap-5.3.8/mixins/_forms.scss | 163 ++ .../bootstrap-5.3.8/mixins/_gradients.scss | 47 + .../bootstrap-5.3.8/mixins/_grid.scss | 151 + .../bootstrap-5.3.8/mixins/_image.scss | 16 + .../bootstrap-5.3.8/mixins/_list-group.scss | 26 + .../bootstrap-5.3.8/mixins/_lists.scss | 7 + .../bootstrap-5.3.8/mixins/_pagination.scss | 10 + .../bootstrap-5.3.8/mixins/_reset-text.scss | 17 + .../bootstrap-5.3.8/mixins/_resize.scss | 6 + .../mixins/_table-variants.scss | 24 + .../mixins/_text-truncate.scss | 8 + .../bootstrap-5.3.8/mixins/_transition.scss | 26 + .../bootstrap-5.3.8/mixins/_utilities.scss | 97 + .../mixins/_visually-hidden.scss | 38 + .../bootstrap-5.3.8/tests/jasmine.js | 16 + .../_auto-import-of-variables-dark.test.scss | 7 + .../tests/mixins/_box-shadow.test.scss | 188 ++ .../tests/mixins/_color-contrast.test.scss | 139 + .../tests/mixins/_color-modes.test.scss | 69 + .../_media-query-color-mode-full.test.scss | 8 + .../tests/mixins/_utilities.test.scss | 393 +++ .../tests/sass-true/register.js | 14 + .../bootstrap-5.3.8/tests/sass-true/runner.js | 17 + .../tests/utilities/_api.test.scss | 75 + .../bootstrap-5.3.8/utilities/_api.scss | 47 + .../bootstrap-5.3.8/vendor/_rfs.scss | 348 +++ .../01_frameworks/bulma-1.04/_index.scss | 10 + .../01_frameworks/bulma-1.04/base/_index.scss | 6 + .../bulma-1.04/base/animations.scss | 15 + .../bulma-1.04/base/generic.scss | 240 ++ .../bulma-1.04/base/minireset.scss | 92 + .../bulma-1.04/base/skeleton.scss | 114 + .../bulma-1.04/components/_index.scss | 13 + .../bulma-1.04/components/breadcrumb.scss | 139 + .../bulma-1.04/components/card.scss | 162 ++ .../bulma-1.04/components/dropdown.scss | 188 ++ .../bulma-1.04/components/menu.scss | 165 ++ .../bulma-1.04/components/message.scss | 183 ++ .../bulma-1.04/components/modal.scss | 164 ++ .../bulma-1.04/components/navbar.scss | 799 ++++++ .../bulma-1.04/components/pagination.scss | 379 +++ .../bulma-1.04/components/panel.scss | 218 ++ .../bulma-1.04/components/tabs.scss | 273 ++ .../bulma-1.04/elements/_index.scss | 16 + .../bulma-1.04/elements/block.scss | 6 + .../bulma-1.04/elements/box.scss | 59 + .../bulma-1.04/elements/button.scss | 659 +++++ .../bulma-1.04/elements/content.scss | 289 ++ .../bulma-1.04/elements/delete.scss | 6 + .../bulma-1.04/elements/icon.scss | 67 + .../bulma-1.04/elements/image.scss | 64 + .../bulma-1.04/elements/loader.scss | 15 + .../bulma-1.04/elements/notification.scss | 105 + .../bulma-1.04/elements/progress.scss | 115 + .../bulma-1.04/elements/table.scss | 261 ++ .../bulma-1.04/elements/tag.scss | 219 ++ .../bulma-1.04/elements/title.scss | 130 + .../01_frameworks/bulma-1.04/form/_index.scss | 9 + .../bulma-1.04/form/checkbox-radio.scss | 36 + .../01_frameworks/bulma-1.04/form/file.scss | 330 +++ .../bulma-1.04/form/input-textarea.scss | 115 + .../01_frameworks/bulma-1.04/form/select.scss | 144 + .../01_frameworks/bulma-1.04/form/shared.scss | 178 ++ .../01_frameworks/bulma-1.04/form/tools.scss | 352 +++ .../01_frameworks/bulma-1.04/grid/_index.scss | 5 + .../bulma-1.04/grid/columns.scss | 961 +++++++ .../01_frameworks/bulma-1.04/grid/grid.scss | 209 ++ .../bulma-1.04/helpers/_index.scss | 15 + .../bulma-1.04/helpers/aspect-ratio.scss | 12 + .../bulma-1.04/helpers/border.scss | 15 + .../bulma-1.04/helpers/color.scss | 344 +++ .../bulma-1.04/helpers/flexbox.scss | 62 + .../bulma-1.04/helpers/float.scss | 28 + .../01_frameworks/bulma-1.04/helpers/gap.scss | 24 + .../bulma-1.04/helpers/other.scss | 19 + .../bulma-1.04/helpers/overflow.scss | 21 + .../bulma-1.04/helpers/position.scss | 19 + .../bulma-1.04/helpers/spacing.scss | 64 + .../bulma-1.04/helpers/typography.scss | 174 ++ .../bulma-1.04/helpers/visibility.scss | 221 ++ .../bulma-1.04/layout/_index.scss | 9 + .../bulma-1.04/layout/container.scss | 59 + .../bulma-1.04/layout/footer.scss | 23 + .../01_frameworks/bulma-1.04/layout/hero.scss | 273 ++ .../bulma-1.04/layout/level.scss | 107 + .../bulma-1.04/layout/media.scss | 106 + .../bulma-1.04/layout/section.scss | 38 + .../bulma-1.04/themes/_index.scss | 36 + .../01_frameworks/bulma-1.04/themes/dark.scss | 57 + .../bulma-1.04/themes/light.scss | 147 + .../bulma-1.04/themes/setup.scss | 174 ++ .../bulma-1.04/utilities/_index.scss | 7 + .../bulma-1.04/utilities/controls.scss | 85 + .../bulma-1.04/utilities/css-variables.scss | 502 ++++ .../utilities/derived-variables.scss | 112 + .../bulma-1.04/utilities/extends.scss | 34 + .../bulma-1.04/utilities/functions.scss | 310 +++ .../utilities/initial-variables.scss | 157 ++ .../bulma-1.04/utilities/mixins.scss | 462 +++ .../src/styles/02_fonts/_index.scss | 3 + .../02_fonts/_playfair-display-v40-latin.scss | 96 + .../02_fonts/_source-sans-3-v19-latin.scss | 134 + .../src/styles/03_base/_colors.scss | 12 + .../src/styles/03_base/_index.scss | 5 + .../src/styles/03_base/_theme.scss | 46 + .../src/styles/03_base/_typography.scss | 9 + .../src/styles/03_base/_utils.scss | 0 .../src/styles/03_base/_variables.scss | 0 .../src/styles/04_plugins/_index.scss | 4 + .../core/foundation/animations.scss | 9 + .../04_plugins/splide-4.1.4/core/index.scss | 3 + .../core/object/modifiers/draggable.scss | 8 + .../core/object/modifiers/fade.scss | 18 + .../core/object/modifiers/index.scss | 4 + .../core/object/modifiers/rtl.scss | 5 + .../core/object/modifiers/ttb.scss | 9 + .../core/object/objects/container.scss | 6 + .../core/object/objects/index.scss | 10 + .../core/object/objects/list.scss | 17 + .../core/object/objects/pagination.scss | 26 + .../core/object/objects/progress.scss | 7 + .../core/object/objects/root.scss | 9 + .../core/object/objects/slide.scss | 14 + .../core/object/objects/spinner.scss | 21 + .../splide-4.1.4/core/object/objects/sr.scss | 12 + .../core/object/objects/toggle.scss | 22 + .../core/object/objects/track.scss | 7 + .../template/default/foundation/colors.scss | 8 + .../template/default/foundation/mixins.scss | 27 + .../splide-4.1.4/template/default/index.scss | 13 + .../default/object/modifiers/index.scss | 3 + .../default/object/modifiers/nav.scss | 37 + .../default/object/modifiers/rtl.scss | 28 + .../default/object/modifiers/ttb.scss | 54 + .../default/object/objects/arrow.scss | 105 + .../default/object/objects/index.scss | 5 + .../default/object/objects/pagination.scss | 80 + .../default/object/objects/progress.scss | 13 + .../default/object/objects/slide.scss | 42 + .../default/object/objects/toggle.scss | 19 + .../splide-4.1.4/themes/default/index.scss | 1 + .../splide-4.1.4/themes/sea-green/index.scss | 52 + .../sea-green/object/objects/arrow.scss | 17 + .../sea-green/object/objects/index.scss | 3 + .../themes/sea-green/object/objects/root.scss | 3 + .../splide-4.1.4/themes/skyblue/index.scss | 37 + .../04_plugins/toastify-1.12/_toastify.scss | 88 + .../src/styles/05_modules/_button.scss | 13 + .../src/styles/05_modules/_footer-main.scss | 37 + .../src/styles/05_modules/_header-main.scss | 83 + .../src/styles/05_modules/_index.scss | 7 + .../src/styles/05_modules/_inputAmount.scss | 29 + .../src/styles/05_modules/_logo-main.scss | 14 + .../src/styles/05_modules/_menu-main.scss | 60 + .../styles/05_modules/_product-manager.scss | 37 + .../src/styles/main.scss | 16 + .../01_react-api-with-hooks/vite.config.js | 15 + 273 files changed, 27290 insertions(+), 94 deletions(-) create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks.zip create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/.gitignore create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/.oxlintrc.json create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/README.md create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/index.html create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/package-lock.json create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/package.json create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/public/favicon.svg create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/public/icons.svg create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/App.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/react.svg create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/vite.svg create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/buttons/Button.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseContext.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectMount.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectUnMount.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseId.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseReducer.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseState.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/footers/FooterMain.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/forms/FormNewsletter.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/headers/HeaderMain.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/icons/LogoDonkey.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/inputs/InputAmount.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListTodo.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListUser.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/components/logos/LogoMain.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/main.jsx create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_accordion.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_alert.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_badge.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_breadcrumb.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_button-group.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_buttons.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_card.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_carousel.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_close.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_containers.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_dropdown.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_forms.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_functions.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_grid.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_helpers.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_images.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_list-group.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_maps.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_mixins.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_modal.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_nav.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_navbar.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_offcanvas.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_pagination.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_placeholders.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_popover.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_progress.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_reboot.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_root.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_spinners.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_tables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_toasts.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_tooltip.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_transitions.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_type.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_utilities.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_variables-dark.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_variables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/bootstrap-grid.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/bootstrap-reboot.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/bootstrap-utilities.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/bootstrap.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_floating-labels.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_form-check.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_form-control.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_form-range.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_form-select.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_form-text.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_input-group.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_labels.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/forms/_validation.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_clearfix.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_color-bg.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_colored-links.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_focus-ring.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_icon-link.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_position.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_ratio.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_stacks.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_stretched-link.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_text-truncation.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_visually-hidden.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/helpers/_vr.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_alert.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_backdrop.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_banner.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_border-radius.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_box-shadow.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_breakpoints.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_buttons.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_caret.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_clearfix.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_color-mode.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_color-scheme.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_container.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_deprecate.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_forms.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_gradients.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_grid.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_image.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_list-group.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_lists.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_pagination.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_reset-text.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_resize.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_table-variants.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_text-truncate.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_transition.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_utilities.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/mixins/_visually-hidden.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/jasmine.js create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_auto-import-of-variables-dark.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_box-shadow.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_color-contrast.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_color-modes.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_media-query-color-mode-full.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/mixins/_utilities.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/sass-true/register.js create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/sass-true/runner.js create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/tests/utilities/_api.test.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/utilities/_api.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/vendor/_rfs.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/base/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/base/animations.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/base/generic.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/base/minireset.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/base/skeleton.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/breadcrumb.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/card.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/dropdown.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/menu.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/message.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/modal.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/navbar.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/pagination.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/panel.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/components/tabs.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/block.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/box.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/button.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/content.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/delete.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/icon.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/image.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/loader.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/notification.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/progress.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/table.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/tag.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/elements/title.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/checkbox-radio.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/file.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/input-textarea.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/select.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/shared.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/form/tools.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/grid/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/grid/columns.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/grid/grid.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/aspect-ratio.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/border.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/color.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/flexbox.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/float.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/gap.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/other.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/overflow.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/position.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/spacing.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/typography.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/helpers/visibility.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/container.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/footer.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/hero.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/level.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/media.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/layout/section.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/themes/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/themes/dark.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/themes/light.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/themes/setup.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/controls.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/css-variables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/derived-variables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/extends.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/functions.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/initial-variables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bulma-1.04/utilities/mixins.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/02_fonts/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/02_fonts/_playfair-display-v40-latin.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/02_fonts/_source-sans-3-v19-latin.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_colors.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_theme.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_typography.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_utils.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/03_base/_variables.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/foundation/animations.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/modifiers/draggable.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/modifiers/fade.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/modifiers/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/modifiers/rtl.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/modifiers/ttb.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/container.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/list.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/pagination.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/progress.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/root.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/slide.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/spinner.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/sr.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/toggle.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/core/object/objects/track.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/foundation/colors.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/foundation/mixins.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/modifiers/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/modifiers/nav.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/modifiers/rtl.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/modifiers/ttb.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/arrow.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/pagination.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/progress.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/slide.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/template/default/object/objects/toggle.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/default/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/sea-green/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/sea-green/object/objects/arrow.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/sea-green/object/objects/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/sea-green/object/objects/root.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/splide-4.1.4/themes/skyblue/index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/04_plugins/toastify-1.12/_toastify.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_button.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_footer-main.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_header-main.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_index.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_inputAmount.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_logo-main.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_menu-main.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/05_modules/_product-manager.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/main.scss create mode 100644 05_react/unterricht/tag44/01_react-api-with-hooks/vite.config.js diff --git a/05_react/unterricht/tag43/01_react-with-forms/package-lock.json b/05_react/unterricht/tag43/01_react-with-forms/package-lock.json index 27d7abc..b19e152 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/package-lock.json +++ b/05_react/unterricht/tag43/01_react-with-forms/package-lock.json @@ -22,7 +22,7 @@ "@types/react-dom": "^19.2.4", "@vitejs/plugin-react": "^6.0.5", "oxlint": "^1.78.0", - "sass-embedded": "^1.100.0", + "sass-embedded": "^1.102.0", "vite": "^8.2.1" } }, @@ -1107,11 +1107,15 @@ } }, "node_modules/colorjs.io": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", - "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.7.1.tgz", + "integrity": "sha512-LY7OHnJZxHwT5UlzNa9bbhHHDbzB6yE5+3MIPwJEQKRvSCt/T4G7epsj+9j2BExUIIfXFIJGsIXUKdfrK9Q5tA==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/color" + } }, "node_modules/cookie": { "version": "1.1.1", @@ -1777,9 +1781,9 @@ } }, "node_modules/sass": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz", - "integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.102.0.tgz", + "integrity": "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==", "dev": true, "license": "MIT", "optional": true, @@ -1799,14 +1803,14 @@ } }, "node_modules/sass-embedded": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.100.0.tgz", - "integrity": "sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.102.0.tgz", + "integrity": "sha512-7xZ7jbsGTpA+oRIJ3HKeiYy+RIrwHltIjKMdnRTAZiPpqvKzwy80zZqR532yk5bpHn1lTqWdZ6Fh4KI+GWSsKA==", "dev": true, "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.5.0", - "colorjs.io": "^0.5.0", + "colorjs.io": "^0.7.0", "immutable": "^5.1.5", "rxjs": "^7.4.0", "supports-color": "^8.1.1", @@ -1817,33 +1821,33 @@ "sass": "dist/bin/sass.js" }, "engines": { - "node": ">=16.0.0" + "node": ">=20.19.0" }, "optionalDependencies": { - "sass-embedded-all-unknown": "1.100.0", - "sass-embedded-android-arm": "1.100.0", - "sass-embedded-android-arm64": "1.100.0", - "sass-embedded-android-riscv64": "1.100.0", - "sass-embedded-android-x64": "1.100.0", - "sass-embedded-darwin-arm64": "1.100.0", - "sass-embedded-darwin-x64": "1.100.0", - "sass-embedded-linux-arm": "1.100.0", - "sass-embedded-linux-arm64": "1.100.0", - "sass-embedded-linux-musl-arm": "1.100.0", - "sass-embedded-linux-musl-arm64": "1.100.0", - "sass-embedded-linux-musl-riscv64": "1.100.0", - "sass-embedded-linux-musl-x64": "1.100.0", - "sass-embedded-linux-riscv64": "1.100.0", - "sass-embedded-linux-x64": "1.100.0", - "sass-embedded-unknown-all": "1.100.0", - "sass-embedded-win32-arm64": "1.100.0", - "sass-embedded-win32-x64": "1.100.0" + "sass-embedded-all-unknown": "1.102.0", + "sass-embedded-android-arm": "1.102.0", + "sass-embedded-android-arm64": "1.102.0", + "sass-embedded-android-riscv64": "1.102.0", + "sass-embedded-android-x64": "1.102.0", + "sass-embedded-darwin-arm64": "1.102.0", + "sass-embedded-darwin-x64": "1.102.0", + "sass-embedded-linux-arm": "1.102.0", + "sass-embedded-linux-arm64": "1.102.0", + "sass-embedded-linux-musl-arm": "1.102.0", + "sass-embedded-linux-musl-arm64": "1.102.0", + "sass-embedded-linux-musl-riscv64": "1.102.0", + "sass-embedded-linux-musl-x64": "1.102.0", + "sass-embedded-linux-riscv64": "1.102.0", + "sass-embedded-linux-x64": "1.102.0", + "sass-embedded-unknown-all": "1.102.0", + "sass-embedded-win32-arm64": "1.102.0", + "sass-embedded-win32-x64": "1.102.0" } }, "node_modules/sass-embedded-all-unknown": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.100.0.tgz", - "integrity": "sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.102.0.tgz", + "integrity": "sha512-BpaRCODYILywdCOI8++Q63+/ptsnWdwYuKyD5gMH0cJblXj85EePdeTTOM7Hl2PP6d4dIojg8GS9fIZhD2x8qA==", "cpu": [ "!arm", "!arm64", @@ -1854,13 +1858,13 @@ "license": "MIT", "optional": true, "dependencies": { - "sass": "1.100.0" + "sass": "1.102.0" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.100.0.tgz", - "integrity": "sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.102.0.tgz", + "integrity": "sha512-QM6sPMUtUvFopVR15qXWdobSTYW/sPrXJLxa7eaIbqr/0EtNBZirEXdiOFdDNcsFIEFX3NeZjDq8ZkBAQrxR1w==", "cpu": [ "arm" ], @@ -1875,9 +1879,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.100.0.tgz", - "integrity": "sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.102.0.tgz", + "integrity": "sha512-p34iJl04ksTA/6/NZNKv4Bda710hvpoUNUK6vgHKe53tTGhL5XOfYyTjX95lpKPSvGm4BlPEVSSo6CBhyNSDpw==", "cpu": [ "arm64" ], @@ -1892,9 +1896,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.100.0.tgz", - "integrity": "sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.102.0.tgz", + "integrity": "sha512-wcT5N3B6fIwCKCicDcUP6Jol+e1R3WxHMGU7Swp9Ds9VV8di7HYOKIFcasT25dKJv4l17SA7x5Oum0FlRnMPkg==", "cpu": [ "riscv64" ], @@ -1909,9 +1913,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.100.0.tgz", - "integrity": "sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.102.0.tgz", + "integrity": "sha512-IF4eJmoM4uzOborahHp8D4PlCIvumr6IGEbe1XkedwE57qRdk/GENiYZjGwYUQP0uy+pfb+WfvTNhMxkD2VhJg==", "cpu": [ "x64" ], @@ -1926,9 +1930,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.100.0.tgz", - "integrity": "sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.102.0.tgz", + "integrity": "sha512-txaURnQp3L/5mGgSkg6zFrI/H1BgwPxH+7fv/HMuFT1fTXGi7i5++OJNCFVPL7gFB50WFmpf02bCvgec3/gxMA==", "cpu": [ "arm64" ], @@ -1943,9 +1947,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.100.0.tgz", - "integrity": "sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.102.0.tgz", + "integrity": "sha512-KXs/y/bCVTxRy6NbgC2kK2JwmYnu4+EcDu+DVpHHIfiRgClTca++jYEqcxkthqK9ufkCgwMmrhb3tllyw5l1dw==", "cpu": [ "x64" ], @@ -1960,9 +1964,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.100.0.tgz", - "integrity": "sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.102.0.tgz", + "integrity": "sha512-1nqC2lrn91fjEsf6gSr/KigU15FrhUSDGWdSWowLXvNG8KbYUNRKjfypn+8u4P0SrL+R/v4VSVZguZiVVTI94A==", "cpu": [ "arm" ], @@ -1978,9 +1982,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.100.0.tgz", - "integrity": "sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.102.0.tgz", + "integrity": "sha512-Yg3Ga1deV+igVqjyK5gHMKbC6fdtKkVYBnzkPVbn/W2/DeActR2JFBfMwVtZJdLpNneMye3dRzOVO2QFegsTbQ==", "cpu": [ "arm64" ], @@ -1996,9 +2000,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.100.0.tgz", - "integrity": "sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.102.0.tgz", + "integrity": "sha512-WULwlrLbhHsJzGBcfztoXK47VyJugcWDmLXF893+yrMj6dF4/zJP6JqootT3EmAx9JAUdAppXI6ma7aGlnV8jw==", "cpu": [ "arm" ], @@ -2014,9 +2018,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.100.0.tgz", - "integrity": "sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.102.0.tgz", + "integrity": "sha512-UFvRNJcYFOqo0X525vXG3Buue+waoqiG58xx7J6tMHSj5K/38t+9YbbgppKGLRoKoAwZTIdW8pxPA8qBSzQC6Q==", "cpu": [ "arm64" ], @@ -2032,9 +2036,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.100.0.tgz", - "integrity": "sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.102.0.tgz", + "integrity": "sha512-7EmAMt5cX0SEN/qTNHD4VBHyjJXmFMAGuNR9R4YJR/SWGj/OZJw9VWryMfzEnMgNbG6HykiIttGfr9CyNKmZbA==", "cpu": [ "riscv64" ], @@ -2050,9 +2054,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.100.0.tgz", - "integrity": "sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.102.0.tgz", + "integrity": "sha512-HHzU5/g/MT1edbHfDzZleKcX19l6LMGk0KhZFLy66cxQl1iRLUaL22jfGstmHOdRUmVzWF3VevjSflSGvAjr4Q==", "cpu": [ "x64" ], @@ -2068,9 +2072,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.100.0.tgz", - "integrity": "sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.102.0.tgz", + "integrity": "sha512-AUc4wHQ7IUo9/0mcZQn7Xkl1t1+NZlTF+v5i3GX93HNoQUGIFic7q6qjSERLkdwQ0dLnWrMqe8KhV98V8v0ZoA==", "cpu": [ "riscv64" ], @@ -2086,9 +2090,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.100.0.tgz", - "integrity": "sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.102.0.tgz", + "integrity": "sha512-CxfhMwwbQFBCTjGysByvOw4PIOCYZ/jtz9uBU0UR5sfHtQvqqnsNyb1fVCIUsZ7piimxQAwcLV5H3Skj96QiVg==", "cpu": [ "x64" ], @@ -2104,9 +2108,9 @@ } }, "node_modules/sass-embedded-unknown-all": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.100.0.tgz", - "integrity": "sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.102.0.tgz", + "integrity": "sha512-qhqfvFD/7X0c6e5rwvzABkGlaYJju1G+hDPCiB0HdK+S7JF+YDDb9XpRYJ9+tGIopWzEHhoNnJDPtPs9IX1lOQ==", "dev": true, "license": "MIT", "optional": true, @@ -2117,13 +2121,13 @@ "!win32" ], "dependencies": { - "sass": "1.100.0" + "sass": "1.102.0" } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.100.0.tgz", - "integrity": "sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.102.0.tgz", + "integrity": "sha512-EQOTKStMf7ervyhe3AX10Pa6F7CQMN3IgmpBkfgjy9HQG4Iyt34zCl/4vNJLVBWLW03b7/KJacy2I9SRz26X9g==", "cpu": [ "arm64" ], @@ -2138,9 +2142,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.100.0.tgz", - "integrity": "sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.102.0.tgz", + "integrity": "sha512-e+26mgR+O4g/m7r+WGuvygsjgZEsfgWntIOgaNhkSa9b7vVas70l2RB/SipUM4zGXQk1jX06aOEz0w0Pq1pprQ==", "cpu": [ "x64" ], diff --git a/05_react/unterricht/tag43/01_react-with-forms/package.json b/05_react/unterricht/tag43/01_react-with-forms/package.json index a9b8104..246c39d 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/package.json +++ b/05_react/unterricht/tag43/01_react-with-forms/package.json @@ -24,7 +24,7 @@ "@types/react-dom": "^19.2.4", "@vitejs/plugin-react": "^6.0.5", "oxlint": "^1.78.0", - "sass-embedded": "^1.100.0", + "sass-embedded": "^1.102.0", "vite": "^8.2.1" } } diff --git a/05_react/unterricht/tag43/01_react-with-forms/src/App.jsx b/05_react/unterricht/tag43/01_react-with-forms/src/App.jsx index 25db3ae..1d896d2 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/src/App.jsx +++ b/05_react/unterricht/tag43/01_react-with-forms/src/App.jsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react'; import { Navigate, useNavigate } from 'react-router-dom'; import Router from './routes/Router'; @@ -5,9 +6,15 @@ import Router from './routes/Router'; import Navbar from './components/navs/Navbar'; function App() { - const navigate = useNavigate(); + const navigate = useNavigate(); // eigene Hook von react-router-dom + + // useEffect(() => { + // // mount + // navigate('/contact'); // funktioniert, aber mit useEffect() + + // return () => {}; + // }, []); - // navigate('/contact'); // funktioniert, aber mit useEffect() return ( <> diff --git a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/FormContact.jsx b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/FormContact.jsx index 3cf018a..5c7fd3d 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/FormContact.jsx +++ b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/FormContact.jsx @@ -75,6 +75,7 @@ const FormContact = (props) => { onChange={handleChange} onBlur={handleBlur} /> +
OK
{errors?.firstname || 'Error'}
diff --git a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/joi/validate.js b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/joi/validate.js index 46e9d9a..01d41df 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/joi/validate.js +++ b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/joi/validate.js @@ -31,6 +31,7 @@ const validate = (formData) => { // },...]; const errors = error.details.reduce((obj, current) => { + // obj[current.context.key] = current.message; obj[current.path[0]] = current.message; return obj; }, {}); // initalValue = {} diff --git a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/react-hook-form/FormContact.jsx b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/react-hook-form/FormContact.jsx index 13de3ef..f8d33ac 100644 --- a/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/react-hook-form/FormContact.jsx +++ b/05_react/unterricht/tag43/01_react-with-forms/src/components/forms/react-hook-form/FormContact.jsx @@ -15,6 +15,17 @@ const FormContact = (props) => { const onSubmit = (data) => { console.log('submitted'); console.log('Form data:', data); + + // fetch('/send', { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json', + // }, + // body: JSON.stringify(data), + // }) + // .then((res) => res.json()) + // .then((data) => console.log(data)) + // .catch((err) => console.error(err)); }; if (errors) { @@ -33,7 +44,11 @@ const FormContact = (props) => { type="text" name="firstname" id="input-firstname" - {...register('firstname', { required: 'Firstname is invalid' })} + {...register('firstname', { + required: 'Firstname is invalid', + minLength: { value: 2, message: 'Firstname must have at least 2 Characters' }, + maxLength: 60, + })} className={`form-control input-firstname ${errors.firstname ? 'is-invalid' : ''}`} />
OK
diff --git a/05_react/unterricht/tag43/02_react-api-with-hooks/src/App.jsx b/05_react/unterricht/tag43/02_react-api-with-hooks/src/App.jsx index 902b6f7..bcd47a7 100644 --- a/05_react/unterricht/tag43/02_react-api-with-hooks/src/App.jsx +++ b/05_react/unterricht/tag43/02_react-api-with-hooks/src/App.jsx @@ -22,13 +22,13 @@ function App(props) { return ( <>
-
+ {/*

Todos


Users

-
+
*/}

Example Hooks

diff --git a/05_react/unterricht/tag43/02_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx b/05_react/unterricht/tag43/02_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx index bb0ded2..1acaf1a 100644 --- a/05_react/unterricht/tag43/02_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx +++ b/05_react/unterricht/tag43/02_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx @@ -13,7 +13,7 @@ const ExampleUseEffectDidUpdate = (props) => { return () => { // unmount }; - }, [value]); // <-- wenn state sich ändert, wird useEffect erneut ausgeführt (update) + }, []); // <-- wenn state sich ändert, wird useEffect erneut ausgeführt (update) // EventHandlers =========== const handleClick = (e) => { diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks.zip b/05_react/unterricht/tag44/01_react-api-with-hooks.zip new file mode 100644 index 0000000000000000000000000000000000000000..900307a970771d722f75aa49fdcc0bcf182925e8 GIT binary patch literal 289277 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%0AG!}jjb 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 z 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 HHY)o+W-x~` literal 0 HcmV?d00001 diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/.gitignore b/05_react/unterricht/tag44/01_react-api-with-hooks/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/.oxlintrc.json b/05_react/unterricht/tag44/01_react-api-with-hooks/.oxlintrc.json new file mode 100644 index 0000000..1255078 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/.oxlintrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["react", "oxc"], + "rules": { + "react/rules-of-hooks": "error", + "react/only-export-components": ["warn", { "allowConstantExport": true }] + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/README.md b/05_react/unterricht/tag44/01_react-api-with-hooks/README.md new file mode 100644 index 0000000..d937833 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/README.md @@ -0,0 +1,16 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs) +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the Oxlint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and Oxlint's TypeScript related rules in your project. diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/index.html b/05_react/unterricht/tag44/01_react-api-with-hooks/index.html new file mode 100644 index 0000000..2e05695 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/index.html @@ -0,0 +1,13 @@ + + + + + + + 01_react-api-with-hooks + + +
+ + + diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/package-lock.json b/05_react/unterricht/tag44/01_react-api-with-hooks/package-lock.json new file mode 100644 index 0000000..9135da4 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/package-lock.json @@ -0,0 +1,2480 @@ +{ + "name": "01_components-with-hooks", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "01_components-with-hooks", + "version": "0.0.0", + "dependencies": { + "axios": "^1.19.0", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-icons": "^5.7.0" + }, + "devDependencies": { + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", + "oxlint": "^1.78.0", + "sass-embedded": "^1.100.0", + "vite": "^8.2.1" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.13.0.tgz", + "integrity": "sha512-acq7c49vxfm1ggJ95P70TX7ABDM0vxr1SYD3BB0o0jnBLB4OAqeHyKuN+cD3w80gXEDQ2zxHpR6CUeA+O/aU9g==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@oxc-project/types": { + "version": "0.143.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", + "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", + "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", + "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", + "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", + "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", + "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", + "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", + "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", + "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", + "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", + "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", + "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", + "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", + "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", + "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", + "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", + "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", + "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", + "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", + "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", + "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", + "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", + "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", + "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", + "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", + "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", + "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz", + "integrity": "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/oxlint": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.78.0.tgz", + "integrity": "sha512-QgQePuxIqKOzo1KSjG2EnITEeWvWnKAm77eq8nrMtf6AGoA+zyGc4PFYtDNJSD25g/ibOwfQ851hZ4/SPkMVoA==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.78.0", + "@oxlint/binding-android-arm64": "1.78.0", + "@oxlint/binding-darwin-arm64": "1.78.0", + "@oxlint/binding-darwin-x64": "1.78.0", + "@oxlint/binding-freebsd-x64": "1.78.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.78.0", + "@oxlint/binding-linux-arm-musleabihf": "1.78.0", + "@oxlint/binding-linux-arm64-gnu": "1.78.0", + "@oxlint/binding-linux-arm64-musl": "1.78.0", + "@oxlint/binding-linux-ppc64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-musl": "1.78.0", + "@oxlint/binding-linux-s390x-gnu": "1.78.0", + "@oxlint/binding-linux-x64-gnu": "1.78.0", + "@oxlint/binding-linux-x64-musl": "1.78.0", + "@oxlint/binding-openharmony-arm64": "1.78.0", + "@oxlint/binding-win32-arm64-msvc": "1.78.0", + "@oxlint/binding-win32-ia32-msvc": "1.78.0", + "@oxlint/binding-win32-x64-msvc": "1.78.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=7.0.2001", + "vite-plus": "*" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + }, + "vite-plus": { + "optional": true + } + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/react-icons": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.7.0.tgz", + "integrity": "sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rolldown": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", + "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.143.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.2.3", + "@rolldown/binding-darwin-arm64": "1.2.3", + "@rolldown/binding-darwin-x64": "1.2.3", + "@rolldown/binding-freebsd-x64": "1.2.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", + "@rolldown/binding-linux-arm64-gnu": "1.2.3", + "@rolldown/binding-linux-arm64-musl": "1.2.3", + "@rolldown/binding-linux-ppc64-gnu": "1.2.3", + "@rolldown/binding-linux-s390x-gnu": "1.2.3", + "@rolldown/binding-linux-x64-gnu": "1.2.3", + "@rolldown/binding-linux-x64-musl": "1.2.3", + "@rolldown/binding-openharmony-arm64": "1.2.3", + "@rolldown/binding-win32-arm64-msvc": "1.2.3", + "@rolldown/binding-win32-x64-msvc": "1.2.3" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sass": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz", + "integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-embedded": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.100.0.tgz", + "integrity": "sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.1.5", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-all-unknown": "1.100.0", + "sass-embedded-android-arm": "1.100.0", + "sass-embedded-android-arm64": "1.100.0", + "sass-embedded-android-riscv64": "1.100.0", + "sass-embedded-android-x64": "1.100.0", + "sass-embedded-darwin-arm64": "1.100.0", + "sass-embedded-darwin-x64": "1.100.0", + "sass-embedded-linux-arm": "1.100.0", + "sass-embedded-linux-arm64": "1.100.0", + "sass-embedded-linux-musl-arm": "1.100.0", + "sass-embedded-linux-musl-arm64": "1.100.0", + "sass-embedded-linux-musl-riscv64": "1.100.0", + "sass-embedded-linux-musl-x64": "1.100.0", + "sass-embedded-linux-riscv64": "1.100.0", + "sass-embedded-linux-x64": "1.100.0", + "sass-embedded-unknown-all": "1.100.0", + "sass-embedded-win32-arm64": "1.100.0", + "sass-embedded-win32-x64": "1.100.0" + } + }, + "node_modules/sass-embedded-all-unknown": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.100.0.tgz", + "integrity": "sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q==", + "cpu": [ + "!arm", + "!arm64", + "!riscv64", + "!x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "sass": "1.100.0" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.100.0.tgz", + "integrity": "sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.100.0.tgz", + "integrity": "sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.100.0.tgz", + "integrity": "sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.100.0.tgz", + "integrity": "sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.100.0.tgz", + "integrity": "sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.100.0.tgz", + "integrity": "sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.100.0.tgz", + "integrity": "sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.100.0.tgz", + "integrity": "sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.100.0.tgz", + "integrity": "sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.100.0.tgz", + "integrity": "sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.100.0.tgz", + "integrity": "sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.100.0.tgz", + "integrity": "sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": "musl", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.100.0.tgz", + "integrity": "sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.100.0.tgz", + "integrity": "sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": "glibc", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-unknown-all": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.100.0.tgz", + "integrity": "sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "!android", + "!darwin", + "!linux", + "!win32" + ], + "dependencies": { + "sass": "1.100.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.100.0.tgz", + "integrity": "sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.100.0.tgz", + "integrity": "sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", + "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.4.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/package.json b/05_react/unterricht/tag44/01_react-api-with-hooks/package.json new file mode 100644 index 0000000..a46b258 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/package.json @@ -0,0 +1,26 @@ +{ + "name": "01_react-api-with-hooks", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "oxlint", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.19.0", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-icons": "^5.7.0" + }, + "devDependencies": { + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", + "oxlint": "^1.78.0", + "sass-embedded": "^1.100.0", + "vite": "^8.2.1" + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/public/favicon.svg b/05_react/unterricht/tag44/01_react-api-with-hooks/public/favicon.svg new file mode 100644 index 0000000..6893eb1 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/public/icons.svg b/05_react/unterricht/tag44/01_react-api-with-hooks/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/App.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/App.jsx new file mode 100644 index 0000000..2b311cd --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/App.jsx @@ -0,0 +1,23 @@ +import ListTodo from './components/lists/ListTodo'; +import ListUser from './components/lists/ListUser'; + +function App(props) { + // const { } = props; + + return ( + <> +
+
+

API auslesen in React

+
+

Todos

+ +
+

Users

+ +
+
+ + ); +} +export default App; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/react.svg b/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/vite.svg b/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/vite.svg new file mode 100644 index 0000000..5101b67 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/assets/vite.svg @@ -0,0 +1 @@ +Vite diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/buttons/Button.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/buttons/Button.jsx new file mode 100644 index 0000000..557c493 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/buttons/Button.jsx @@ -0,0 +1,15 @@ +const Button = (props) => { + // const { } = props; + + // EventHandlers =========== + const handleClick = (e) => { + alert('button clicked'); + }; + + return ( + + ); +}; +export default Button; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseContext.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseContext.jsx new file mode 100644 index 0000000..665f3f4 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseContext.jsx @@ -0,0 +1,18 @@ +import { useContext } from 'react'; +import ThemeContext from './theme-switcher/ThemeContext'; + +const ExampleUseContext = (props) => { + // const { } = props; + + const theme = useContext(ThemeContext); + + return ( +
+

useContext

+

+ The theme of this component is: {theme} +

+
+ ); +}; +export default ExampleUseContext; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx new file mode 100644 index 0000000..1acaf1a --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectDidUpdate.jsx @@ -0,0 +1,32 @@ +import { useEffect, useState } from 'react'; +import { FaPlus } from 'react-icons/fa6'; + +const ExampleUseEffectDidUpdate = (props) => { + // const { } = props; + + const [value, setValue] = useState(0); + + useEffect(() => { + // mount + console.log('first render and rerender:', value); + + return () => { + // unmount + }; + }, []); // <-- wenn state sich ändert, wird useEffect erneut ausgeführt (update) + + // EventHandlers =========== + const handleClick = (e) => { + setValue(value + 1); + }; + + return ( +
+

The value is: {value}

+ +
+ ); +}; +export default ExampleUseEffectDidUpdate; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectMount.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectMount.jsx new file mode 100644 index 0000000..3b61117 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectMount.jsx @@ -0,0 +1,28 @@ +import { useEffect } from 'react'; + +const ExampleUseEffectMount = (props) => { + // const { } = props; + + console.log(document.querySelector('#box')); // null + + useEffect(() => { + // mount + console.log(document.querySelector('#box')); // JSX liegt als gerendertes HTML vor + document.querySelector('#box').style.color = 'white'; + document.querySelector('#box').style.backgroundColor = '#222'; + document.querySelector('#box').style.padding = '1rem'; + + return () => { + // cleanup | unmount + }; + }, []); // did update (wenn state oder state-list verändert wird) + + return ( +
+
+

Box was rendered

+
+
+ ); +}; +export default ExampleUseEffectMount; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectUnMount.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectUnMount.jsx new file mode 100644 index 0000000..252e967 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseEffectUnMount.jsx @@ -0,0 +1,35 @@ +import { useEffect, useState } from 'react'; + +const ExampleUseEffectUnMount = (props) => { + // const { } = props; + + const [timer, setTimer] = useState(0); + + useEffect(() => { + // mount + const interval = setInterval(() => { + setTimer((prevTimer) => prevTimer + 1); + }, 1000); + + window.addEventListener('resize', handleResize); + return () => { + // cleanup | unmount + clearInterval(interval); + window.removeEventListener('resize', handleResize); + }; + }, []); + + // EventHandler ====== + const handleResize = (e) => { + console.log(e); + const { x, y } = document.body.getBoundingClientRect(); + console.log('resize:', { x, y }); + }; + + return ( +
+

Timer: {timer}

+
+ ); +}; +export default ExampleUseEffectUnMount; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseId.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseId.jsx new file mode 100644 index 0000000..a486d4f --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseId.jsx @@ -0,0 +1,24 @@ +import { useId } from 'react'; +// import { v4 as uuidv4 } from 'uuid'; + +const ExampleUseId = (props) => { + // const { } = props; + const id = useId().replaceAll(/[_r.]/g, ''); + // const id2 = uuidv4(); // -> 'b18794e8-5d0d-417c-b361-ba38e78411b4' + + return ( +
+

+ ID: {id} +

+ +
+ + +
+
+ ); +}; +export default ExampleUseId; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseReducer.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseReducer.jsx new file mode 100644 index 0000000..559f808 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseReducer.jsx @@ -0,0 +1,77 @@ +import { useReducer } from 'react'; +import { FaMinus, FaPlus } from 'react-icons/fa6'; + +const initialState = { + counter: 0, + //more props... +}; + +// Reducer Funktion verwaltet das state Objekt. Über die Funktion lässt sich das state-Objekt gezielt verändern +function reducer(state, action) { + // action Objekt hat immer folgende Eigenschaften: {type: 'ACTION_NAME', payload: changeValue} + const { type, payload = 1 } = action; + switch (type) { + case 'INCREASE': + return { ...state, counter: state.counter + 1 }; + case 'DECREASE': + return { ...state, counter: state.counter - 1 }; + case 'DOUBLE': + return { ...state, counter: state.counter * 2 }; + case 'INC_VALUE': + return { ...state, counter: state.counter + payload }; + + default: + console.warn('Action Type not found'); + return state; + } +} + +const ExampleUseReducer = (props) => { + // const { } = props; + + // Hook - Toplevel + // const [counter, setCounter] = useState(0); + + const [state, dispatch] = useReducer(reducer, initialState); + + // EventHandler ============ + const handeClickInc = (e) => { + //setCounter(counter + 1); + dispatch({ type: 'INCREASE' }); + }; + const handeClickDec = (e) => { + // setCounter(counter - 1); + + // dispatch(action_object) + dispatch({ type: 'DECREASE' }); + }; + + const handleClickDouble = (e) => { + // dispatch(action_object) + dispatch({ type: 'DOUBLE' }); + }; + + const handleClickIncValue = (e) => { + dispatch({ type: 'INC_VALUE', payload: 5 }); + }; + + return ( +
+ Counter: {state.counter} + + + + +
+ ); +}; +export default ExampleUseReducer; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseState.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseState.jsx new file mode 100644 index 0000000..8a9487b --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/ExampleUseState.jsx @@ -0,0 +1,41 @@ +import { useState } from 'react'; + +import { FaPlus, FaMinus } from 'react-icons/fa6'; + +const ExampleUseState = (props) => { + // const { } = props; + + const [counter, setCounter] = useState(0); + + // let counter = 0; + + // EventHandler ======= + const handleClick = (e) => { + console.log('click'); + const btn = e.currentTarget; + const label = btn.ariaLabel; + + switch (label) { + case 'Increase': + // setCounter(counter + 1); // setter(value) + setCounter((prevState) => prevState + 1); // setter(fn(prevValue) => newValue ) + break; + case 'Decrease': + setCounter(counter - 1); + break; + } + }; + + return ( +
+ Counter: {counter} + + +
+ ); +}; +export default ExampleUseState; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx new file mode 100644 index 0000000..ee75ac4 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeContext.jsx @@ -0,0 +1,8 @@ +import { createContext } from 'react'; + +export const THEME_DEFAULT_VALUE = 'light'; + +const ThemeContext = createContext(THEME_DEFAULT_VALUE); // standard theme is light; +// ThemeContext wird durch createContext() zu einem JSX-Element + +export default ThemeContext; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx new file mode 100644 index 0000000..f21ff57 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/examples/theme-switcher/ThemeProvider.jsx @@ -0,0 +1,26 @@ +import { useState } from 'react'; +import ThemeContext, { THEME_DEFAULT_VALUE } from './ThemeContext'; + +const ThemeProvider = (props) => { + const { children } = props; + + console.log(ThemeContext._currentValue); // 'light' <- _currentValue beinhaltet initialWert. Soll aber in production Umgebung nicht verwendet werden, da kein offizieller Standard. + + const [theme, setTheme] = useState(THEME_DEFAULT_VALUE); + + // EventHandler ============== + const handleToggleTheme = () => { + console.log('click'); + setTheme((prevState) => (prevState === 'light' ? 'dark' : 'light')); + }; + + return ( + + + {children} + + ); +}; +export default ThemeProvider; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/footers/FooterMain.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/footers/FooterMain.jsx new file mode 100644 index 0000000..6c746be --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/footers/FooterMain.jsx @@ -0,0 +1,38 @@ +const FooterMain = (props) => { + // const { } = props; + + return ( +
+ ); +}; +export default FooterMain; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/forms/FormNewsletter.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/forms/FormNewsletter.jsx new file mode 100644 index 0000000..04e039d --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/forms/FormNewsletter.jsx @@ -0,0 +1,29 @@ +const FormNewsletter = (props) => { + // const { } = props; + + // EventHandlers ========= + const handleSubmit = (e) => { + e.preventDefault(); + console.log('Form data submit over Fetch/Xhr'); + }; + + return ( +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ ); +}; +export default FormNewsletter; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/headers/HeaderMain.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/headers/HeaderMain.jsx new file mode 100644 index 0000000..cacc690 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/headers/HeaderMain.jsx @@ -0,0 +1,14 @@ +import LogoMain from '../logos/LogoMain'; + +const HeaderMain = (props) => { + // const { } = props; + + return ( +
+
+ +
+
+ ); // VIEW +}; +export default HeaderMain; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/icons/LogoDonkey.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/icons/LogoDonkey.jsx new file mode 100644 index 0000000..958a172 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/icons/LogoDonkey.jsx @@ -0,0 +1,80 @@ +import React from 'react'; + +const LogoDonkey = (props) => { + // const { } = props; + + return ( + + + + + + + + + + + + + + + ); +}; +export default LogoDonkey; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/inputs/InputAmount.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/inputs/InputAmount.jsx new file mode 100644 index 0000000..516b77a --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/inputs/InputAmount.jsx @@ -0,0 +1,37 @@ +import { FaMinus, FaPlus } from 'react-icons/fa6'; +// npm install react-icons | Auf der npm Seite mit --save, ist nicht mehr nötig +const InputAmount = (props) => { + // const { } = props; + + // EventHandlers ================ + const handleChange = (e) => { + console.log(e); // Event-Objekte wurden um React Methoden und Eigenschaften erweitert. (SyntheticBaseEvent anstatt InputEvent) + console.log(e.target.value); + }; + + return ( +
+
+ + + + + + + +
+
+ ); +}; +export default InputAmount; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListTodo.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListTodo.jsx new file mode 100644 index 0000000..ff72067 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListTodo.jsx @@ -0,0 +1,32 @@ +import { useEffect, useState } from 'react'; + +const ListTodo = (props) => { + // const { } = props; + + const [todos, setTodos] = useState([]); + + useEffect(() => { + fetch('https://dummyjson.com/todos/random/6') + .then((res) => res.json()) + .then((data) => { + setTodos(data); + }) + .catch((err) => { + console.error(err); + }); + + return () => {}; + }, []); + + return ( +
    + {todos.length > 0 && + todos.map(({ id, todo, completed, userId }, idx) => ( +
  • + {todo} +
  • + ))} +
+ ); +}; +export default ListTodo; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListUser.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListUser.jsx new file mode 100644 index 0000000..289377a --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/lists/ListUser.jsx @@ -0,0 +1,42 @@ +import axios from 'axios'; +import { useEffect, useState } from 'react'; + +const ListUser = (props) => { + // const { } = props; + + const [users, setUsers] = useState([]); + + useEffect(() => { + axios + .get('https://dummyjson.com/users?limit=6') + .then(({ data }) => { + console.log(data); + setUsers(data?.users); + }) + .catch((err) => { + console.error(err); + }); + + return () => {}; + }, []); + + return ( +
    + {users.length > 0 && + users.map(({ id, firstName, lastName, age, email }, idx) => ( +
  • +

    + Name: + {firstName} {lastName} +
    + age: {age} +
    + email: {email} +
    +

    +
  • + ))} +
+ ); +}; +export default ListUser; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/logos/LogoMain.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/logos/LogoMain.jsx new file mode 100644 index 0000000..d74f500 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/components/logos/LogoMain.jsx @@ -0,0 +1,13 @@ +import LogoDonkey from '../icons/LogoDonkey'; + +const LogoMain = (props) => { + // const { } = props; + + return ( +
+ +
IA - JS Course
+
+ ); +}; +export default LogoMain; diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/main.jsx b/05_react/unterricht/tag44/01_react-api-with-hooks/src/main.jsx new file mode 100644 index 0000000..4f28fd8 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/main.jsx @@ -0,0 +1,13 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; + +// import von 'main'-Datei +import './styles/main.scss'; + +import App from './App.jsx'; + +createRoot(document.getElementById('root')).render( + + + , +); diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/_index.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/_index.scss new file mode 100644 index 0000000..dcefbc9 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/_index.scss @@ -0,0 +1,3 @@ +// @import 'bootstrap-5.3.8/bootstrap-grid'; +@import 'bootstrap-5.3.8/bootstrap'; +// @import 'bulma-1.04/index' diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_accordion.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_accordion.scss new file mode 100644 index 0000000..e9f267f --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_accordion.scss @@ -0,0 +1,153 @@ +// +// Base styles +// + +.accordion { + // scss-docs-start accordion-css-vars + --#{$prefix}accordion-color: #{$accordion-color}; + --#{$prefix}accordion-bg: #{$accordion-bg}; + --#{$prefix}accordion-transition: #{$accordion-transition}; + --#{$prefix}accordion-border-color: #{$accordion-border-color}; + --#{$prefix}accordion-border-width: #{$accordion-border-width}; + --#{$prefix}accordion-border-radius: #{$accordion-border-radius}; + --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius}; + --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x}; + --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y}; + --#{$prefix}accordion-btn-color: #{$accordion-button-color}; + --#{$prefix}accordion-btn-bg: #{$accordion-button-bg}; + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)}; + --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width}; + --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform}; + --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)}; + --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow}; + --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x}; + --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y}; + --#{$prefix}accordion-active-color: #{$accordion-button-active-color}; + --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg}; + // scss-docs-end accordion-css-vars +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x); + @include font-size($font-size-base); + color: var(--#{$prefix}accordion-btn-color); + text-align: left; // Reset button style + background-color: var(--#{$prefix}accordion-btn-bg); + border: 0; + @include border-radius(0); + overflow-anchor: none; + @include transition(var(--#{$prefix}accordion-transition)); + + &:not(.collapsed) { + color: var(--#{$prefix}accordion-active-color); + background-color: var(--#{$prefix}accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list + + &::after { + background-image: var(--#{$prefix}accordion-btn-active-icon); + transform: var(--#{$prefix}accordion-btn-icon-transform); + } + } + + // Accordion icon + &::after { + flex-shrink: 0; + width: var(--#{$prefix}accordion-btn-icon-width); + height: var(--#{$prefix}accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--#{$prefix}accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--#{$prefix}accordion-btn-icon-width); + @include transition(var(--#{$prefix}accordion-btn-icon-transition)); + } + + &:hover { + z-index: 2; + } + + &:focus { + z-index: 3; + outline: 0; + box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow); + } +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--#{$prefix}accordion-color); + background-color: var(--#{$prefix}accordion-bg); + border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color); + + &:first-of-type { + @include border-top-radius(var(--#{$prefix}accordion-border-radius)); + + > .accordion-header .accordion-button { + @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius)); + } + } + + &:not(:first-of-type) { + border-top: 0; + } + + // Only set a border-radius on the last item if the accordion is collapsed + &:last-of-type { + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); + + > .accordion-header .accordion-button { + &.collapsed { + @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius)); + } + } + + > .accordion-collapse { + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); + } + } +} + +.accordion-body { + padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x); +} + + +// Flush accordion items +// +// Remove borders and border-radius to keep accordion items edge-to-edge. + +.accordion-flush { + > .accordion-item { + border-right: 0; + border-left: 0; + @include border-radius(0); + + &:first-child { border-top: 0; } + &:last-child { border-bottom: 0; } + + // stylelint-disable selector-max-class + > .accordion-collapse, + > .accordion-header .accordion-button, + > .accordion-header .accordion-button.collapsed { + @include border-radius(0); + } + // stylelint-enable selector-max-class + } +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .accordion-button::after { + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)}; + } + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_alert.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_alert.scss new file mode 100644 index 0000000..b8cff9b --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_alert.scss @@ -0,0 +1,68 @@ +// +// Base styles +// + +.alert { + // scss-docs-start alert-css-vars + --#{$prefix}alert-bg: transparent; + --#{$prefix}alert-padding-x: #{$alert-padding-x}; + --#{$prefix}alert-padding-y: #{$alert-padding-y}; + --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom}; + --#{$prefix}alert-color: inherit; + --#{$prefix}alert-border-color: transparent; + --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color); + --#{$prefix}alert-border-radius: #{$alert-border-radius}; + --#{$prefix}alert-link-color: inherit; + // scss-docs-end alert-css-vars + + position: relative; + padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x); + margin-bottom: var(--#{$prefix}alert-margin-bottom); + color: var(--#{$prefix}alert-color); + background-color: var(--#{$prefix}alert-bg); + border: var(--#{$prefix}alert-border); + @include border-radius(var(--#{$prefix}alert-border-radius)); +} + +// Headings for larger alerts +.alert-heading { + // Specified to prevent conflicts of changing $headings-color + color: inherit; +} + +// Provide class for links that match alerts +.alert-link { + font-weight: $alert-link-font-weight; + color: var(--#{$prefix}alert-link-color); +} + + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissible { + padding-right: $alert-dismissible-padding-r; + + // Adjust close link position + .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: $stretched-link-z-index + 1; + padding: $alert-padding-y * 1.25 $alert-padding-x; + } +} + + +// scss-docs-start alert-modifiers +// Generate contextual modifier classes for colorizing the alert +@each $state in map-keys($theme-colors) { + .alert-#{$state} { + --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis); + --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle); + --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle); + --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis); + } +} +// scss-docs-end alert-modifiers diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_badge.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_badge.scss new file mode 100644 index 0000000..cc3d269 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_badge.scss @@ -0,0 +1,38 @@ +// Base class +// +// Requires one of the contextual, color modifier classes for `color` and +// `background-color`. + +.badge { + // scss-docs-start badge-css-vars + --#{$prefix}badge-padding-x: #{$badge-padding-x}; + --#{$prefix}badge-padding-y: #{$badge-padding-y}; + @include rfs($badge-font-size, --#{$prefix}badge-font-size); + --#{$prefix}badge-font-weight: #{$badge-font-weight}; + --#{$prefix}badge-color: #{$badge-color}; + --#{$prefix}badge-border-radius: #{$badge-border-radius}; + // scss-docs-end badge-css-vars + + display: inline-block; + padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x); + @include font-size(var(--#{$prefix}badge-font-size)); + font-weight: var(--#{$prefix}badge-font-weight); + line-height: 1; + color: var(--#{$prefix}badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + @include border-radius(var(--#{$prefix}badge-border-radius)); + @include gradient-bg(); + + // Empty badges collapse automatically + &:empty { + display: none; + } +} + +// Quick fix for badges in buttons +.btn .badge { + position: relative; + top: -1px; +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_breadcrumb.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_breadcrumb.scss new file mode 100644 index 0000000..b8252ff --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_breadcrumb.scss @@ -0,0 +1,40 @@ +.breadcrumb { + // scss-docs-start breadcrumb-css-vars + --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x}; + --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y}; + --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom}; + @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size); + --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg}; + --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius}; + --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color}; + --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x}; + --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color}; + // scss-docs-end breadcrumb-css-vars + + display: flex; + flex-wrap: wrap; + padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x); + margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom); + @include font-size(var(--#{$prefix}breadcrumb-font-size)); + list-style: none; + background-color: var(--#{$prefix}breadcrumb-bg); + @include border-radius(var(--#{$prefix}breadcrumb-border-radius)); +} + +.breadcrumb-item { + // The separator between breadcrumbs (by default, a forward-slash: "/") + + .breadcrumb-item { + padding-left: var(--#{$prefix}breadcrumb-item-padding-x); + + &::before { + float: left; // Suppress inline spacings and underlining of the separator + padding-right: var(--#{$prefix}breadcrumb-item-padding-x); + color: var(--#{$prefix}breadcrumb-divider-color); + content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; + } + } + + &.active { + color: var(--#{$prefix}breadcrumb-item-active-color); + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_button-group.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_button-group.scss new file mode 100644 index 0000000..78e1252 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_button-group.scss @@ -0,0 +1,147 @@ +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; // match .btn alignment given font-size hack above + + > .btn { + position: relative; + flex: 1 1 auto; + } + + // Bring the hover, focused, and "active" buttons to the front to overlay + // the borders properly + > .btn-check:checked + .btn, + > .btn-check:focus + .btn, + > .btn:hover, + > .btn:focus, + > .btn:active, + > .btn.active { + z-index: 1; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + + .input-group { + width: auto; + } +} + +.btn-group { + @include border-radius($btn-border-radius); + + // Prevent double borders when buttons are next to each other + > :not(.btn-check:first-child) + .btn, + > .btn-group:not(:first-child) { + margin-left: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list + } + + // Reset rounded corners + > .btn:not(:last-child):not(.dropdown-toggle), + > .btn.dropdown-toggle-split:first-child, + > .btn-group:not(:last-child) > .btn { + @include border-end-radius(0); + } + + // The left radius should be 0 if the button is: + // - the "third or more" child + // - the second child and the previous element isn't `.btn-check` (making it the first child visually) + // - part of a btn-group which isn't the first child + > .btn:nth-child(n + 3), + > :not(.btn-check) + .btn, + > .btn-group:not(:first-child) > .btn { + @include border-start-radius(0); + } +} + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// +// Split button dropdowns +// + +.dropdown-toggle-split { + padding-right: $btn-padding-x * .75; + padding-left: $btn-padding-x * .75; + + &::after, + .dropup &::after, + .dropend &::after { + margin-left: 0; + } + + .dropstart &::before { + margin-right: 0; + } +} + +.btn-sm + .dropdown-toggle-split { + padding-right: $btn-padding-x-sm * .75; + padding-left: $btn-padding-x-sm * .75; +} + +.btn-lg + .dropdown-toggle-split { + padding-right: $btn-padding-x-lg * .75; + padding-left: $btn-padding-x-lg * .75; +} + + +// The clickable button for toggling the menu +// Set the same inset shadow as the :active state +.btn-group.show .dropdown-toggle { + @include box-shadow($btn-active-box-shadow); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// +// Vertical button groups +// + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; + + > .btn, + > .btn-group { + width: 100%; + } + + > .btn:not(:first-child), + > .btn-group:not(:first-child) { + margin-top: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list + } + + // Reset rounded corners + > .btn:not(:last-child):not(.dropdown-toggle), + > .btn-group:not(:last-child) > .btn { + @include border-bottom-radius(0); + } + + // The top radius should be 0 if the button is: + // - the "third or more" child + // - the second child and the previous element isn't `.btn-check` (making it the first child visually) + // - part of a btn-group which isn't the first child + > .btn:nth-child(n + 3), + > :not(.btn-check) + .btn, + > .btn-group:not(:first-child) > .btn { + @include border-top-radius(0); + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_buttons.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_buttons.scss new file mode 100644 index 0000000..caa4518 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_buttons.scss @@ -0,0 +1,216 @@ +// +// Base styles +// + +.btn { + // scss-docs-start btn-css-vars + --#{$prefix}btn-padding-x: #{$btn-padding-x}; + --#{$prefix}btn-padding-y: #{$btn-padding-y}; + --#{$prefix}btn-font-family: #{$btn-font-family}; + @include rfs($btn-font-size, --#{$prefix}btn-font-size); + --#{$prefix}btn-font-weight: #{$btn-font-weight}; + --#{$prefix}btn-line-height: #{$btn-line-height}; + --#{$prefix}btn-color: #{$btn-color}; + --#{$prefix}btn-bg: transparent; + --#{$prefix}btn-border-width: #{$btn-border-width}; + --#{$prefix}btn-border-color: transparent; + --#{$prefix}btn-border-radius: #{$btn-border-radius}; + --#{$prefix}btn-hover-border-color: transparent; + --#{$prefix}btn-box-shadow: #{$btn-box-shadow}; + --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity}; + --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5); + // scss-docs-end btn-css-vars + + display: inline-block; + padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x); + font-family: var(--#{$prefix}btn-font-family); + @include font-size(var(--#{$prefix}btn-font-size)); + font-weight: var(--#{$prefix}btn-font-weight); + line-height: var(--#{$prefix}btn-line-height); + color: var(--#{$prefix}btn-color); + text-align: center; + text-decoration: if($link-decoration == none, null, none); + white-space: $btn-white-space; + vertical-align: middle; + cursor: if($enable-button-pointers, pointer, null); + user-select: none; + border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color); + @include border-radius(var(--#{$prefix}btn-border-radius)); + @include gradient-bg(var(--#{$prefix}btn-bg)); + @include box-shadow(var(--#{$prefix}btn-box-shadow)); + @include transition($btn-transition); + + &:hover { + color: var(--#{$prefix}btn-hover-color); + text-decoration: if($link-hover-decoration == underline, none, null); + background-color: var(--#{$prefix}btn-hover-bg); + border-color: var(--#{$prefix}btn-hover-border-color); + } + + .btn-check + &:hover { + // override for the checkbox/radio buttons + color: var(--#{$prefix}btn-color); + background-color: var(--#{$prefix}btn-bg); + border-color: var(--#{$prefix}btn-border-color); + } + + &:focus-visible { + color: var(--#{$prefix}btn-hover-color); + @include gradient-bg(var(--#{$prefix}btn-hover-bg)); + border-color: var(--#{$prefix}btn-hover-border-color); + outline: 0; + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + + .btn-check:focus-visible + & { + border-color: var(--#{$prefix}btn-hover-border-color); + outline: 0; + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + + .btn-check:checked + &, + :not(.btn-check) + &:active, + &:first-child:active, + &.active, + &.show { + color: var(--#{$prefix}btn-active-color); + background-color: var(--#{$prefix}btn-active-bg); + // Remove CSS gradients if they're enabled + background-image: if($enable-gradients, none, null); + border-color: var(--#{$prefix}btn-active-border-color); + @include box-shadow(var(--#{$prefix}btn-active-shadow)); + + &:focus-visible { + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + } + + .btn-check:checked:focus-visible + & { + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + + &:disabled, + &.disabled, + fieldset:disabled & { + color: var(--#{$prefix}btn-disabled-color); + pointer-events: none; + background-color: var(--#{$prefix}btn-disabled-bg); + background-image: if($enable-gradients, none, null); + border-color: var(--#{$prefix}btn-disabled-border-color); + opacity: var(--#{$prefix}btn-disabled-opacity); + @include box-shadow(none); + } +} + + +// +// Alternate buttons +// + +// scss-docs-start btn-variant-loops +@each $color, $value in $theme-colors { + .btn-#{$color} { + @if $color == "light" { + @include button-variant( + $value, + $value, + $hover-background: shade-color($value, $btn-hover-bg-shade-amount), + $hover-border: shade-color($value, $btn-hover-border-shade-amount), + $active-background: shade-color($value, $btn-active-bg-shade-amount), + $active-border: shade-color($value, $btn-active-border-shade-amount) + ); + } @else if $color == "dark" { + @include button-variant( + $value, + $value, + $hover-background: tint-color($value, $btn-hover-bg-tint-amount), + $hover-border: tint-color($value, $btn-hover-border-tint-amount), + $active-background: tint-color($value, $btn-active-bg-tint-amount), + $active-border: tint-color($value, $btn-active-border-tint-amount) + ); + } @else { + @include button-variant($value, $value); + } + } +} + +@each $color, $value in $theme-colors { + .btn-outline-#{$color} { + @include button-outline-variant($value); + } +} +// scss-docs-end btn-variant-loops + + +// +// Link buttons +// + +// Make a button look and behave like a link +.btn-link { + --#{$prefix}btn-font-weight: #{$font-weight-normal}; + --#{$prefix}btn-color: #{$btn-link-color}; + --#{$prefix}btn-bg: transparent; + --#{$prefix}btn-border-color: transparent; + --#{$prefix}btn-hover-color: #{$btn-link-hover-color}; + --#{$prefix}btn-hover-border-color: transparent; + --#{$prefix}btn-active-color: #{$btn-link-hover-color}; + --#{$prefix}btn-active-border-color: transparent; + --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color}; + --#{$prefix}btn-disabled-border-color: transparent; + --#{$prefix}btn-box-shadow: 0 0 0 #000; // Can't use `none` as keyword negates all values when used with multiple shadows + --#{$prefix}btn-focus-shadow-rgb: #{$btn-link-focus-shadow-rgb}; + + text-decoration: $link-decoration; + @if $enable-gradients { + background-image: none; + } + + &:hover, + &:focus-visible { + text-decoration: $link-hover-decoration; + } + + &:focus-visible { + color: var(--#{$prefix}btn-color); + } + + &:hover { + color: var(--#{$prefix}btn-hover-color); + } + + // No need for an active state here +} + + +// +// Button Sizes +// + +.btn-lg { + @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); +} + +.btn-sm { + @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_card.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_card.scss new file mode 100644 index 0000000..dcebe6a --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_card.scss @@ -0,0 +1,238 @@ +// +// Base styles +// + +.card { + // scss-docs-start card-css-vars + --#{$prefix}card-spacer-y: #{$card-spacer-y}; + --#{$prefix}card-spacer-x: #{$card-spacer-x}; + --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y}; + --#{$prefix}card-title-color: #{$card-title-color}; + --#{$prefix}card-subtitle-color: #{$card-subtitle-color}; + --#{$prefix}card-border-width: #{$card-border-width}; + --#{$prefix}card-border-color: #{$card-border-color}; + --#{$prefix}card-border-radius: #{$card-border-radius}; + --#{$prefix}card-box-shadow: #{$card-box-shadow}; + --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius}; + --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y}; + --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x}; + --#{$prefix}card-cap-bg: #{$card-cap-bg}; + --#{$prefix}card-cap-color: #{$card-cap-color}; + --#{$prefix}card-height: #{$card-height}; + --#{$prefix}card-color: #{$card-color}; + --#{$prefix}card-bg: #{$card-bg}; + --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding}; + --#{$prefix}card-group-margin: #{$card-group-margin}; + // scss-docs-end card-css-vars + + position: relative; + display: flex; + flex-direction: column; + min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106 + height: var(--#{$prefix}card-height); + color: var(--#{$prefix}body-color); + word-wrap: break-word; + background-color: var(--#{$prefix}card-bg); + background-clip: border-box; + border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + @include border-radius(var(--#{$prefix}card-border-radius)); + @include box-shadow(var(--#{$prefix}card-box-shadow)); + + > hr { + margin-right: 0; + margin-left: 0; + } + + > .list-group { + border-top: inherit; + border-bottom: inherit; + + &:first-child { + border-top-width: 0; + @include border-top-radius(var(--#{$prefix}card-inner-border-radius)); + } + + &:last-child { + border-bottom-width: 0; + @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius)); + } + } + + // Due to specificity of the above selector (`.card > .list-group`), we must + // use a child selector here to prevent double borders. + > .card-header + .list-group, + > .list-group + .card-footer { + border-top: 0; + } +} + +.card-body { + // Enable `flex-grow: 1` for decks and groups so that card blocks take up + // as much space as possible, ensuring footers are aligned to the bottom. + flex: 1 1 auto; + padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x); + color: var(--#{$prefix}card-color); +} + +.card-title { + margin-bottom: var(--#{$prefix}card-title-spacer-y); + color: var(--#{$prefix}card-title-color); +} + +.card-subtitle { + margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list + margin-bottom: 0; + color: var(--#{$prefix}card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link { + &:hover { + text-decoration: if($link-hover-decoration == underline, none, null); + } + + + .card-link { + margin-left: var(--#{$prefix}card-spacer-x); + } +} + +// +// Optional textual caps +// + +.card-header { + padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x); + margin-bottom: 0; // Removes the default margin-bottom of + color: var(--#{$prefix}card-cap-color); + background-color: var(--#{$prefix}card-cap-bg); + border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + + &:first-child { + @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0); + } +} + +.card-footer { + padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x); + color: var(--#{$prefix}card-cap-color); + background-color: var(--#{$prefix}card-cap-bg); + border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + + &:last-child { + @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius)); + } +} + + +// +// Header navs +// + +.card-header-tabs { + margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list + margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + border-bottom: 0; + + .nav-link.active { + background-color: var(--#{$prefix}card-bg); + border-bottom-color: var(--#{$prefix}card-bg); + } +} + +.card-header-pills { + margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list +} + +// Card image +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--#{$prefix}card-img-overlay-padding); + @include border-radius(var(--#{$prefix}card-inner-border-radius)); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch +} + +.card-img, +.card-img-top { + @include border-top-radius(var(--#{$prefix}card-inner-border-radius)); +} + +.card-img, +.card-img-bottom { + @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius)); +} + + +// +// Card groups +// + +.card-group { + // The child selector allows nested `.card` within `.card-group` + // to display properly. + > .card { + margin-bottom: var(--#{$prefix}card-group-margin); + } + + @include media-breakpoint-up(sm) { + display: flex; + flex-flow: row wrap; + // The child selector allows nested `.card` within `.card-group` + // to display properly. + > .card { + flex: 1 0 0; + margin-bottom: 0; + + + .card { + margin-left: 0; + border-left: 0; + } + + // Handle rounded corners + @if $enable-rounded { + &:not(:last-child) { + @include border-end-radius(0); + + > .card-img-top, + > .card-header { + // stylelint-disable-next-line property-disallowed-list + border-top-right-radius: 0; + } + > .card-img-bottom, + > .card-footer { + // stylelint-disable-next-line property-disallowed-list + border-bottom-right-radius: 0; + } + } + + &:not(:first-child) { + @include border-start-radius(0); + + > .card-img-top, + > .card-header { + // stylelint-disable-next-line property-disallowed-list + border-top-left-radius: 0; + } + > .card-img-bottom, + > .card-footer { + // stylelint-disable-next-line property-disallowed-list + border-bottom-left-radius: 0; + } + } + } + } + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_carousel.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_carousel.scss new file mode 100644 index 0000000..5ebf6b1 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_carousel.scss @@ -0,0 +1,226 @@ +// Notes on the classes: +// +// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically) +// even when their scroll action started on a carousel, but for compatibility (with Firefox) +// we're preventing all actions instead +// 2. The .carousel-item-start and .carousel-item-end is used to indicate where +// the active slide is heading. +// 3. .active.carousel-item is the current slide. +// 4. .active.carousel-item-start and .active.carousel-item-end is the current +// slide in its in-transition state. Only one of these occurs at a time. +// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end +// is the upcoming slide in transition. + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + @include clearfix(); +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + @include transition($carousel-transition); +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + + +// +// Alternate transitions +// + +.carousel-fade { + .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; + } + + .carousel-item.active, + .carousel-item-next.carousel-item-start, + .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; + } + + .active.carousel-item-start, + .active.carousel-item-end { + z-index: 0; + opacity: 0; + @include transition(opacity 0s $carousel-transition-duration); + } +} + + +// +// Left/right controls for nav +// + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + // Use flex for alignment (1-3) + display: flex; // 1. allow flex styles + align-items: center; // 2. vertically center contents + justify-content: center; // 3. horizontally center contents + width: $carousel-control-width; + padding: 0; + color: $carousel-control-color; + text-align: center; + background: none; + filter: var(--#{$prefix}carousel-control-icon-filter); + border: 0; + opacity: $carousel-control-opacity; + @include transition($carousel-control-transition); + + // Hover/focus state + &:hover, + &:focus { + color: $carousel-control-color; + text-decoration: none; + outline: 0; + opacity: $carousel-control-hover-opacity; + } +} +.carousel-control-prev { + left: 0; + background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null); +} +.carousel-control-next { + right: 0; + background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null); +} + +// Icons for within +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: $carousel-control-icon-width; + height: $carousel-control-icon-width; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: escape-svg($carousel-control-prev-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-next-icon-bg) + "*/"}; +} +.carousel-control-next-icon { + background-image: escape-svg($carousel-control-next-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-prev-icon-bg) + "*/"}; +} + +// Optional indicator pips/controls +// +// Add a container (such as a list) with the following class and add an item (ideally a focusable control, +// like a button) with data-bs-target for each slide your carousel holds. + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + // Use the .carousel-control's width as margin so we don't overlay those + margin-right: $carousel-control-width; + margin-bottom: 1rem; + margin-left: $carousel-control-width; + + [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: $carousel-indicator-width; + height: $carousel-indicator-height; + padding: 0; + margin-right: $carousel-indicator-spacer; + margin-left: $carousel-indicator-spacer; + text-indent: -999px; + cursor: pointer; + background-color: var(--#{$prefix}carousel-indicator-active-bg); + background-clip: padding-box; + border: 0; + // Use transparent borders to increase the hit area by 10px on top and bottom. + border-top: $carousel-indicator-hit-area-height solid transparent; + border-bottom: $carousel-indicator-hit-area-height solid transparent; + opacity: $carousel-indicator-opacity; + @include transition($carousel-indicator-transition); + } + + .active { + opacity: $carousel-indicator-active-opacity; + } +} + + +// Optional captions +// +// + +.carousel-caption { + position: absolute; + right: (100% - $carousel-caption-width) * .5; + bottom: $carousel-caption-spacer; + left: (100% - $carousel-caption-width) * .5; + padding-top: $carousel-caption-padding-y; + padding-bottom: $carousel-caption-padding-y; + color: var(--#{$prefix}carousel-caption-color); + text-align: center; +} + +// Dark mode carousel + +@mixin carousel-dark() { + --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark}; + --#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark}; + --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark}; +} + +.carousel-dark { + @include carousel-dark(); +} + +:root, +[data-bs-theme="light"] { + --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg}; + --#{$prefix}carousel-caption-color: #{$carousel-caption-color}; + --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter}; +} + +@if $enable-dark-mode { + @include color-mode(dark, true) { + @include carousel-dark(); + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_close.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_close.scss new file mode 100644 index 0000000..d53c96f --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_close.scss @@ -0,0 +1,66 @@ +// Transparent background and border properties included for button version. +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +.btn-close { + // scss-docs-start close-css-vars + --#{$prefix}btn-close-color: #{$btn-close-color}; + --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) }; + --#{$prefix}btn-close-opacity: #{$btn-close-opacity}; + --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity}; + --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow}; + --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity}; + --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity}; + // scss-docs-end close-css-vars + + box-sizing: content-box; + width: $btn-close-width; + height: $btn-close-height; + padding: $btn-close-padding-y $btn-close-padding-x; + color: var(--#{$prefix}btn-close-color); + background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements + filter: var(--#{$prefix}btn-close-filter); + border: 0; // for button elements + @include border-radius(); + opacity: var(--#{$prefix}btn-close-opacity); + + // Override 's hover style + &:hover { + color: var(--#{$prefix}btn-close-color); + text-decoration: none; + opacity: var(--#{$prefix}btn-close-hover-opacity); + } + + &:focus { + outline: 0; + box-shadow: var(--#{$prefix}btn-close-focus-shadow); + opacity: var(--#{$prefix}btn-close-focus-opacity); + } + + &:disabled, + &.disabled { + pointer-events: none; + user-select: none; + opacity: var(--#{$prefix}btn-close-disabled-opacity); + } +} + +@mixin btn-close-white() { + --#{$prefix}btn-close-filter: #{$btn-close-filter-dark}; +} + +.btn-close-white { + @include btn-close-white(); +} + +:root, +[data-bs-theme="light"] { + --#{$prefix}btn-close-filter: #{$btn-close-filter}; +} + +@if $enable-dark-mode { + @include color-mode(dark, true) { + @include btn-close-white(); + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_containers.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_containers.scss new file mode 100644 index 0000000..83b3138 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_containers.scss @@ -0,0 +1,41 @@ +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +@if $enable-container-classes { + // Single container class with breakpoint max-widths + .container, + // 100% wide container at all breakpoints + .container-fluid { + @include make-container(); + } + + // Responsive containers that are 100% wide until a breakpoint + @each $breakpoint, $container-max-width in $container-max-widths { + .container-#{$breakpoint} { + @extend .container-fluid; + } + + @include media-breakpoint-up($breakpoint, $grid-breakpoints) { + %responsive-container-#{$breakpoint} { + max-width: $container-max-width; + } + + // Extend each breakpoint which is smaller or equal to the current breakpoint + $extend-breakpoint: true; + + @each $name, $width in $grid-breakpoints { + @if ($extend-breakpoint) { + .container#{breakpoint-infix($name, $grid-breakpoints)} { + @extend %responsive-container-#{$breakpoint}; + } + + // Once the current breakpoint is reached, stop extending + @if ($breakpoint == $name) { + $extend-breakpoint: false; + } + } + } + } + } +} diff --git a/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_dropdown.scss b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_dropdown.scss new file mode 100644 index 0000000..587ebb4 --- /dev/null +++ b/05_react/unterricht/tag44/01_react-api-with-hooks/src/styles/01_frameworks/bootstrap-5.3.8/_dropdown.scss @@ -0,0 +1,250 @@ +// The dropdown wrapper (`
`) +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; + + // Generate the caret automatically + @include caret(); +} + +// The dropdown menu +.dropdown-menu { + // scss-docs-start dropdown-css-vars + --#{$prefix}dropdown-zindex: #{$zindex-dropdown}; + --#{$prefix}dropdown-min-width: #{$dropdown-min-width}; + --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x}; + --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y}; + --#{$prefix}dropdown-spacer: #{$dropdown-spacer}; + @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size); + --#{$prefix}dropdown-color: #{$dropdown-color}; + --#{$prefix}dropdown-bg: #{$dropdown-bg}; + --#{$prefix}dropdown-border-color: #{$dropdown-border-color}; + --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius}; + --#{$prefix}dropdown-border-width: #{$dropdown-border-width}; + --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius}; + --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg}; + --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y}; + --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow}; + --#{$prefix}dropdown-link-color: #{$dropdown-link-color}; + --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color}; + --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg}; + --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color}; + --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg}; + --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color}; + --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x}; + --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y}; + --#{$prefix}dropdown-header-color: #{$dropdown-header-color}; + --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x}; + --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y}; + // scss-docs-end dropdown-css-vars + + position: absolute; + z-index: var(--#{$prefix}dropdown-zindex); + display: none; // none by default, but block on "open" of the menu + min-width: var(--#{$prefix}dropdown-min-width); + padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x); + margin: 0; // Override default margin of ul + @include font-size(var(--#{$prefix}dropdown-font-size)); + color: var(--#{$prefix}dropdown-color); + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + list-style: none; + background-color: var(--#{$prefix}dropdown-bg); + background-clip: padding-box; + border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color); + @include border-radius(var(--#{$prefix}dropdown-border-radius)); + @include box-shadow(var(--#{$prefix}dropdown-box-shadow)); + + &[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--#{$prefix}dropdown-spacer); + } + + @if $dropdown-padding-y == 0 { + > .dropdown-item:first-child, + > li:first-child .dropdown-item { + @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius)); + } + > .dropdown-item:last-child, + > li:last-child .dropdown-item { + @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius)); + } + + } +} + +// scss-docs-start responsive-breakpoints +// We deliberately hardcode the `bs-` prefix because we check +// this custom property in JS to determine Popper's positioning + +@each $breakpoint in map-keys($grid-breakpoints) { + @include media-breakpoint-up($breakpoint) { + $infix: breakpoint-infix($breakpoint, $grid-breakpoints); + + .dropdown-menu#{$infix}-start { + --bs-position: start; + + &[data-bs-popper] { + right: auto; + left: 0; + } + } + + .dropdown-menu#{$infix}-end { + --bs-position: end; + + &[data-bs-popper] { + right: 0; + left: auto; + } + } + } +} +// scss-docs-end responsive-breakpoints + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// Just add .dropup after the standard .dropdown class and you're set. +.dropup { + .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(up); + } +} + +.dropend { + .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(end); + &::after { + vertical-align: 0; + } + } +} + +.dropstart { + .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(start); + &::before { + vertical-align: 0; + } + } +} + + +// Dividers (basically an `
`) within the dropdown +.dropdown-divider { + height: 0; + margin: var(--#{$prefix}dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--#{$prefix}dropdown-divider-bg); + opacity: 1; // Revisit in v6 to de-dupe styles that conflict with
element +} + +// Links, buttons, and more within the dropdown menu +// +// `