Page.svelte 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <script>
  2. import { createEventDispatcher } from 'svelte';
  3. // 定义事件派发器
  4. // Define event dispatcher
  5. const dispatch = createEventDispatcher();
  6. export let active = false;
  7. export let radius = 'md'; // 'base'/'md'/'lg'/'xl'/'full'/'none'
  8. export let type = 'border'; // 'border'/'block'/'bold'
  9. const typeClass = {
  10. border: 'border-primary dark:border-dark text-primary dark:text-dark',
  11. block: 'bg-primary text-white dark:bg-dark dark:text-black',
  12. bold: 'font-bold text-primary dark:text-dark border-transparent',
  13. };
  14. const radiusClass = {
  15. base: 'rounded',
  16. md: 'rounded-md',
  17. lg: 'rounded-lg',
  18. xl: 'rounded-xl',
  19. full: 'rounded-full',
  20. none: 'rounded-none',
  21. };
  22. const clickFunc = () => {
  23. active = !active;
  24. };
  25. </script>
  26. <!-- svelte-ignore a11y-click-events-have-key-events -->
  27. <div
  28. on:click
  29. class="flex-1 py-2 border {active
  30. ? typeClass[type] || typeClass.border
  31. : 'border-transparent' + (type === 'bold' ? ' opacity-50' : '')} {radiusClass[radius] || radiusClass.base}"
  32. >
  33. <slot />
  34. </div>