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.

68 lines
1.4 KiB

4 years ago
4 years ago
4 years ago
4 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. export let compacter: boolean = false;
  9. export let tiny: boolean = false;
  10. const dispatch = createEventDispatcher();
  11. function handleClick() {
  12. dispatch("click", {open});
  13. if (open.name !== "none") {
  14. modalStore.set(open);
  15. }
  16. }
  17. </script>
  18. <div class="boi" class:disabled class:compact class:compacter class:tiny on:click={handleClick}><slot></slot></div>
  19. <style>
  20. div.boi {
  21. border: 6px dashed;
  22. padding: 0.5em;
  23. margin: 1em 0.5ch;
  24. text-align: center;
  25. color: #777;
  26. border-color: #333;
  27. cursor: pointer;
  28. border-bottom-right-radius: 0.25em;
  29. font-size: 2em;
  30. -webkit-user-select: none;
  31. -moz-user-select: none;
  32. }
  33. div.boi:hover {
  34. color: #AAA;
  35. border-color: #444;
  36. }
  37. div.boi.disabled {
  38. color: #333;
  39. border-color: #222;
  40. cursor: wait;
  41. }
  42. div.boi.compact {
  43. margin: 0;
  44. border-width: 4px;
  45. padding: 0.25em;
  46. }
  47. div.boi.compacter {
  48. font-size: 1em;
  49. margin: 0 1ch;
  50. border-width: 3px;
  51. padding: 0.25em;
  52. }
  53. div.boi.tiny {
  54. display: inline-block;
  55. margin: auto;
  56. font-size: 1em;
  57. border-width: 3px;
  58. }
  59. </style>