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.

78 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 color: "red" | "green" | "blue" | "yellow" | "purple" | undefined = undefined;
  7. export let disabled: 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 on:click={handleClick} class={`option ${color}`} class:disabled><slot></slot></div>
  17. <style>
  18. div.option {
  19. display: inline-block;
  20. font-size: 0.9em;
  21. padding: 0.125em 0.75ch;
  22. cursor: pointer;
  23. color: #aa8822;
  24. user-select: none;
  25. -webkit-user-select: none;
  26. -moz-user-select: none;
  27. }
  28. div.option:hover {
  29. color: #FC1;
  30. text-decoration: underline;
  31. }
  32. div.option.green {
  33. color: #484;
  34. }
  35. div.option.green:hover {
  36. color: #78ff78;
  37. }
  38. div.option.red {
  39. color: #852a24;
  40. }
  41. div.option.red:hover {
  42. color: #ff4545;
  43. }
  44. div.option.blue {
  45. color: #446d88;
  46. }
  47. div.option.blue:hover {
  48. color: #78c9ff;
  49. }
  50. div.option.yellow {
  51. color: #7a7429;
  52. }
  53. div.option.yellow:hover {
  54. color: #e7e55e;
  55. }
  56. div.option.purple {
  57. color: #7a2973;
  58. }
  59. div.option.purple:hover {
  60. color: #e75ed0;
  61. }
  62. div.option.disabled {
  63. opacity: 0.5;
  64. }
  65. </style>