You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.1 KiB

3 years ago
  1. <script lang="ts">
  2. import { createEventDispatcher } from "svelte";
  3. import type { ModalData } from "../stores/modal";
  4. import modalStore from "../stores/modal";
  5. export let open: ModalData = {name: "none"};
  6. export let disabled: boolean = false;
  7. export let compact: boolean = false;
  8. const dispatch = createEventDispatcher();
  9. function handleClick() {
  10. dispatch("click", {open});
  11. if (open.name !== "none") {
  12. modalStore.set(open);
  13. }
  14. }
  15. </script>
  16. <div class="boi" class:disabled class:compact on:click={handleClick}><slot></slot></div>
  17. <style>
  18. div.boi {
  19. border: 6px dashed;
  20. padding: 0.5em;
  21. margin: 1em 0.5ch;
  22. text-align: center;
  23. color: #777;
  24. border-color: #333;
  25. cursor: pointer;
  26. border-bottom-right-radius: 0.25em;
  27. font-size: 2em;
  28. -webkit-user-select: none;
  29. -moz-user-select: none;
  30. }
  31. div.boi:hover {
  32. color: #AAA;
  33. border-color: #444;
  34. }
  35. div.boi.disabled {
  36. color: #333;
  37. border-color: #222;
  38. cursor: wait;
  39. }
  40. div.boi.compact {
  41. margin: 0;
  42. border-width: 4px;
  43. padding: 0.25em;
  44. }
  45. </style>