daisy-ui-kit 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/package.json +2 -2
  2. package/components/.DS_Store +0 -0
  3. package/components/Home/AlternatingFeatureSections.vue +0 -219
  4. package/components/Home/BitoviConsulting.vue +0 -53
  5. package/components/Home/BitoviOpenSource.vue +0 -51
  6. package/components/Home/Footer.vue +0 -127
  7. package/components/Home/GradientFeatureSections.vue +0 -87
  8. package/components/Home/Header.vue +0 -95
  9. package/components/Home/Hero.vue +0 -53
  10. package/components/Home/PremiumCTA.vue +0 -28
  11. package/components/Home/Testimonial.vue +0 -23
  12. package/components/Mask.config.ts +0 -77
  13. package/components/content/Badge.ts +0 -3
  14. package/components/content/CodePreview.vue +0 -28
  15. package/components/content/ColorBadge.vue +0 -24
  16. package/components/content/DemoExample.vue +0 -23
  17. package/components/content/DemoExampleResponsive.vue +0 -59
  18. package/components/content/IframeRenderer.ts +0 -53
  19. package/components/content/Indent.vue +0 -3
  20. package/components/content/LocalLinks.vue +0 -31
  21. package/components/content/NotFound.vue +0 -42
  22. package/components/content/PageNext.vue +0 -24
  23. package/components/content/PagePrevious.vue +0 -24
  24. package/components/content/PrevNext.vue +0 -40
  25. package/components/content/ProseA.vue +0 -19
  26. package/components/content/ProseAlert.vue +0 -11
  27. package/components/content/ProseBlockquote.vue +0 -5
  28. package/components/content/ProseCode.vue +0 -62
  29. package/components/content/ProseCodeInline.vue +0 -3
  30. package/components/content/ProseEm.vue +0 -5
  31. package/components/content/ProseH1.vue +0 -16
  32. package/components/content/ProseH2.vue +0 -16
  33. package/components/content/ProseH3.vue +0 -16
  34. package/components/content/ProseH4.vue +0 -16
  35. package/components/content/ProseH5.vue +0 -16
  36. package/components/content/ProseH6.vue +0 -16
  37. package/components/content/ProseHr.vue +0 -3
  38. package/components/content/ProseImg.vue +0 -34
  39. package/components/content/ProseLi.vue +0 -3
  40. package/components/content/ProseOl.vue +0 -5
  41. package/components/content/ProseP.vue +0 -3
  42. package/components/content/ProseStrong.vue +0 -5
  43. package/components/content/ProseTable.vue +0 -7
  44. package/components/content/ProseTbody.vue +0 -5
  45. package/components/content/ProseTd.vue +0 -5
  46. package/components/content/ProseTh.vue +0 -5
  47. package/components/content/ProseThead.vue +0 -5
  48. package/components/content/ProseTr.vue +0 -5
  49. package/components/content/ProseUl.vue +0 -5
  50. package/components/content/Search.vue +0 -160
  51. package/components/content/Sidebar.vue +0 -65
  52. package/components/content/SidebarMenuSection.vue +0 -38
  53. package/components/content/SigninForm.vue +0 -47
  54. package/components/content/TableOfContents.vue +0 -80
  55. package/components/content/TypeBadge.vue +0 -17
  56. package/components/content/UserMenu.vue +0 -62
  57. package/components/theme/Builder.vue +0 -284
  58. package/components/theme/Output.vue +0 -70
  59. package/components/theme/Picker.vue +0 -47
  60. package/components/theme/Preview.vue +0 -1684
  61. package/components/theme/Provider.vue +0 -43
  62. package/components/theme/Snooper.vue +0 -41
  63. package/components/theme/Swatch.vue +0 -47
  64. package/components/theme/custom-themes.ts +0 -34
  65. package/components/theme/theme-utils.ts +0 -175
@@ -1,53 +0,0 @@
1
- <template>
2
- <!-- Hero section -->
3
- <div class="relative">
4
- <div class="absolute inset-x-0 bottom-0 bg-base-200 h-1/2" />
5
- <div class="mx-auto max-w-7xl sm:px-6 lg:px-8">
6
- <div class="relative shadow-xl sm:rounded-2xl sm:overflow-hidden">
7
- <div class="absolute inset-0">
8
- <img
9
- class="object-cover w-full h-full"
10
- src="/img/unsplash-devs-sm.jpg"
11
- alt="People working on laptops"
12
- >
13
- <div
14
- class="absolute inset-0 bg-gradient-to-r from-primary to-secondary mix-blend-multiply"
15
- />
16
- </div>
17
-
18
- <div class="relative px-4 py-16 sm:px-6 sm:py-24 lg:py-32 lg:px-8">
19
- <Text is="h1" extrabold center class="text-4xl tracking-tight sm:text-5xl lg:text-6xl">
20
- <Text class="text-white" block>
21
- DaisyUI Kit
22
- </Text>
23
- <Text secondary block class="text-3xl sm:text-4xl lg:text-5xl">
24
- Build Beautiful Apps
25
- </Text>
26
- </Text>
27
- <Text center class="block max-w-lg mx-auto mt-6 text-xl text-indigo-200 sm:max-w-3xl">
28
- Bring the masterfully-crafted DaisyUI into your Vue app. <br>Built for you with ❤️ by
29
- <NuxtLink to="https://www.bitovi.com">
30
- Bitovi
31
- </NuxtLink>.
32
- </Text>
33
-
34
- <div class="max-w-sm mx-auto mt-10 sm:max-w-none sm:flex sm:justify-center">
35
- <Flex class="gap-2 sm:space-y-0 sm:mx-auto sm:inline-grid sm:grid-cols-2 items-center justify-center">
36
- <NuxtLink to="/docs/button" class="block">
37
- <Button class="w-full border-0 bg-base-100 text-base-content hover:bg-base-200">
38
- Learn more
39
- </Button>
40
- </NuxtLink>
41
-
42
- <NuxtLink to="/docs/install" class="block">
43
- <Button primary class="w-full">
44
- Start Building
45
- </Button>
46
- </NuxtLink>
47
- </Flex>
48
- </div>
49
- </div>
50
- </div>
51
- </div>
52
- </div>
53
- </template>
@@ -1,28 +0,0 @@
1
- <template>
2
- <!-- CTA Section -->
3
- <div class="bg-neutral">
4
- <div
5
- class="max-w-4xl px-4 py-16 mx-auto sm:px-6 sm:py-24 lg:max-w-7xl lg:px-8 lg:flex lg:items-center lg:justify-between"
6
- >
7
- <Text is="h2" size="4xl" extrabold class="tracking-tight">
8
- <Text block class="text-neutral-content">
9
- Build faster with
10
- <Text secondary>
11
- DaisyUI Kit Premium
12
- </Text>
13
- </Text>
14
- <Text block class="mt-4 text-2xl text-transparent lg:mt-0 xl:text-3xl bg-gradient-secondary-r bg-clip-text">
15
- Templates for App Layout, Marketing and E-Commerce
16
- </Text>
17
- </Text>
18
-
19
- <div class="mt-6 space-y-4 sm:space-y-0 sm:flex sm:space-x-4">
20
- <Tooltip primary tip="Coming Soon">
21
- <Button primary lg>
22
- Learn more
23
- </Button>
24
- </Tooltip>
25
- </div>
26
- </div>
27
- </div>
28
- </template>
@@ -1,23 +0,0 @@
1
- <template>
2
- <blockquote>
3
- <div>
4
- <Text block base class="text-base-content/80">
5
- &ldquo;Cras velit quis eros eget rhoncus lacus ultrices
6
- sed diam. Sit orci risus aenean curabitur donec aliquet.
7
- Mi venenatis in euismod ut.&rdquo;
8
- </Text>
9
- </div>
10
- <footer class="mt-3">
11
- <Flex class="space-x-3 items-center">
12
- <Avatar circle class="flex-shrink-0 w-8 h-8">
13
- <img
14
- src="https://images.unsplash.com/photo-1509783236416-c9ad59bae472?ixlib=rb-=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=8&w=1024&h=1024&q=80"
15
- >
16
- </Avatar>
17
- <Text base medium block class="text-base-content/80">
18
- Marcia Hill, Digital Marketing Manager
19
- </Text>
20
- </Flex>
21
- </footer>
22
- </blockquote>
23
- </template>
@@ -1,77 +0,0 @@
1
- import { computed } from 'vue'
2
-
3
- export const maskProps = {
4
- shape: { type: String },
5
- squircle: Boolean,
6
- heart: Boolean,
7
- hexagon: Boolean,
8
- hexagon2: Boolean,
9
- decagon: Boolean,
10
- pentagon: Boolean,
11
- diamond: Boolean,
12
- square: Boolean,
13
- circle: Boolean,
14
- parallelogram: Boolean,
15
- parallelogram2: Boolean,
16
- parallelogram3: Boolean,
17
- parallelogram4: Boolean,
18
- star: Boolean,
19
- star2: Boolean,
20
- triangle: Boolean,
21
- triangle2: Boolean,
22
- triangle3: Boolean,
23
- triangle4: Boolean,
24
- }
25
-
26
- export function makeMaskClasses(props: any) {
27
- const classes = computed(() => {
28
- return {
29
- 'mask-squircle': props.squircle || props.shape === 'squircle',
30
- 'mask-heart': props.heart || props.shape === 'heart',
31
- 'mask-hexagon': props.hexagon || props.shape === 'hexagon',
32
- 'mask-hexagon-2': props.hexagon2 || props.shape === 'hexagon-2',
33
- 'mask-decagon': props.decagon || props.shape === 'decagon',
34
- 'mask-pentagon': props.pentagon || props.shape === 'pentagon',
35
- 'mask-diamond': props.diamond || props.shape === 'diamond',
36
- 'mask-square': props.square || props.shape === 'square',
37
- 'mask-circle': props.circle || props.shape === 'circle',
38
- 'mask-parallelogram':
39
- props.parallelogram || props.shape === 'parallelogram',
40
- 'mask-parallelogram-2':
41
- props.parallelogram2 || props.shape === 'parallelogram-2',
42
- 'mask-parallelogram-3':
43
- props.parallelogram3 || props.shape === 'parallelogram-3',
44
- 'mask-parallelogram-4':
45
- props.parallelogram4 || props.shape === 'parallelogram-4',
46
- 'mask-star': props.star || props.shape === 'star',
47
- 'mask-star-2': props.star2 || props.shape === 'star-2',
48
- 'mask-triangle': props.triangle || props.shape === 'triangle',
49
- 'mask-triangle-2': props.triangle2 || props.shape === 'triangle-2',
50
- 'mask-triangle-3': props.triangle3 || props.shape === 'triangle-3',
51
- 'mask-triangle-4': props.triangle4 || props.shape === 'triangle-4',
52
- }
53
- })
54
- return classes
55
- }
56
-
57
- export const shapes = [
58
- 'squircle',
59
- 'heart',
60
- 'hexagon',
61
- 'hexagon-2',
62
- 'decagon',
63
- 'pentagon',
64
- 'diamond',
65
- 'square',
66
- 'circle',
67
- 'parallelogram',
68
- 'parallelogram-2',
69
- 'parallelogram-3',
70
- 'parallelogram-4',
71
- 'star',
72
- 'star-2',
73
- 'triangle',
74
- 'triangle-2',
75
- 'triangle-3',
76
- 'triangle-4',
77
- ]
@@ -1,3 +0,0 @@
1
- import Badge from '../../components/Badge.vue'
2
-
3
- export default Badge
@@ -1,28 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
-
4
- const slotWrapper = ref(null)
5
- const innerHtml = computed(() => {
6
- if (slotWrapper.value)
7
- return slotWrapper.value.innerHtml
8
- else
9
- return ''
10
- })
11
-
12
- onMounted(() => {
13
- if (!import.meta.env.SSR)
14
- (window as any).innerHtml = innerHtml
15
- })
16
- </script>
17
-
18
- <template>
19
- <div>
20
- <div v-html="innerHtml" />
21
-
22
- <div class="hidden">
23
- <div ref="slotWrapper">
24
- <slot />
25
- </div>
26
- </div>
27
- </div>
28
- </template>
@@ -1,24 +0,0 @@
1
- <script setup lang="ts">
2
- const props = defineProps<{
3
- color: string
4
- }>()
5
-
6
- const classes = computed(() => {
7
- return {
8
- 'bg-primary-content text-primary': props.color === 'primary-content',
9
- 'bg-secondary-content text-secondary': props.color === 'secondary-content',
10
- 'bg-neutral-content text-neutral': props.color === 'neutral-content',
11
- 'bg-accent-content text-accent': props.color === 'accent-content',
12
- 'bg-info-content text-info': props.color === 'info-content',
13
- 'bg-success-content text-success': props.color === 'success-content',
14
- 'bg-warning-content text-warning': props.color === 'warning-content',
15
- 'bg-error-content text-error': props.color === 'error-content',
16
- }
17
- })
18
- </script>
19
-
20
- <template>
21
- <Badge :color="color" class="whitespace-nowrap rounded-[0.375rem] px-1 h-[1.5rem] font-mono" :class="classes">
22
- {{ color }}
23
- </Badge>
24
- </template>
@@ -1,23 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
-
4
- const props = defineProps({
5
- noPadding: Boolean,
6
- allowProse: Boolean,
7
- })
8
- const classes = computed(() => {
9
- return {
10
- 'p-6 lg:p-12': !props.noPadding,
11
- 'not-prose': !props.allowProse,
12
- }
13
- })
14
- </script>
15
-
16
- <template>
17
- <div
18
- class="demo-example flex flex-row items-start mt-4 border-4 rounded-t-xl border-base-200 lg:max-w-[calc(100vw-390px)]"
19
- :class="classes"
20
- >
21
- <slot />
22
- </div>
23
- </template>
@@ -1,59 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue'
3
-
4
- const props = defineProps({
5
- iframeClasses: {
6
- type: String,
7
- default: '',
8
- },
9
- allowProse: Boolean,
10
- })
11
- const { theme } = useTheme()
12
-
13
- const iframe = ref()
14
- const { pressed } = useMousePressed()
15
- const { x: mouseX } = useMouse()
16
- const { width } = useElementBounding(iframe)
17
-
18
- const referenceX = ref(0)
19
- const _width = ref('100%')
20
-
21
- watch(pressed, (val) => {
22
- if (val)
23
- referenceX.value = mouseX.value
24
- })
25
- watch(mouseX, (val) => {
26
- if (pressed.value) {
27
- const delta = val - referenceX.value
28
- referenceX.value = mouseX.value
29
- _width.value = `${width.value + (delta * 1.2)}px`
30
- }
31
- })
32
-
33
- const classes = computed(() => {
34
- return `${props.iframeClasses} not-prose ${pressed ? 'pointer-events-none' : ''}`
35
- })
36
- </script>
37
-
38
- <template>
39
- <div
40
- class="flex flex-row flex-wrap items-center mt-4 border-4 rounded-t-xl border-base-200 overflow-hidden"
41
- :class="classes"
42
- >
43
- <div class="flex flex-row w-full bg-black/50">
44
- <IframeRenderer
45
- ref="iframe"
46
- :style="{ width: _width }"
47
- class="w-full min-h-full"
48
- :classes="classes"
49
- :iframe-classes="iframeClasses"
50
- :theme="theme"
51
- >
52
- <slot />
53
- </IframeRenderer>
54
- <Tooltip draggable primary tip="Drag to Resize" left class="flex items-center justify-center bg-primary cursor-move">
55
- <Icon name="radix-icons:drag-handle-vertical" class="text-primary-content" />
56
- </Tooltip>
57
- </div>
58
- </div>
59
- </template>
@@ -1,53 +0,0 @@
1
- import { createApp, h, onMounted, ref } from 'vue'
2
-
3
- export default {
4
- name: 'RenderToIFrame',
5
- props: {
6
- classes: { type: String },
7
- iframeClasses: { type: String },
8
- theme: { type: String },
9
- },
10
- setup(props: any, { slots }: any) {
11
- const iframeRef = ref()
12
- const iframeBody = ref()
13
- const iframeHead = ref()
14
- const iframeStyle = ref()
15
-
16
- onMounted(() => {
17
- iframeBody.value = iframeRef.value.contentDocument.body
18
- iframeHead.value = iframeRef.value.contentDocument.head
19
- const el = document.createElement('div')
20
- iframeBody.value.appendChild(el)
21
- iframeStyle.value = document.createElement('style')
22
- iframeStyle.value.innerHTML = props.css
23
- iframeHead.value.appendChild(iframeStyle.value)
24
-
25
- createApp({
26
- name: 'IframeRender',
27
- setup() {
28
- const script = iframeRef.value.contentDocument.createElement('script')
29
- script.type = 'text/javascript'
30
- // create dynamic script
31
- script.text = `const oHead = document.getElementsByTagName('head')[0]
32
- const arrStyleSheets = parent.document.getElementsByTagName('style')
33
- for (let i = 0; i < arrStyleSheets.length; i++)
34
- oHead.appendChild(arrStyleSheets[i].cloneNode(true))
35
- `
36
-
37
- if (props.iframeClasses.length)
38
- iframeRef.value.classList.add(props.iframeClasses)
39
- iframeBody.value.classList.add('p-6')
40
- iframeHead.value.appendChild(script)
41
-
42
- watch(() => props.theme, (theme) => {
43
- iframeBody.value.setAttribute('data-theme', theme)
44
- }, { immediate: true })
45
- return () => slots.default()
46
- },
47
- }).mount(el)
48
- })
49
- return () => h('iframe', {
50
- ref: iframeRef,
51
- })
52
- },
53
- }
@@ -1,3 +0,0 @@
1
- <template>
2
- <span>&nbsp;&nbsp;&nbsp;</span>
3
- </template>
@@ -1,31 +0,0 @@
1
- <script setup lang="ts">
2
- const props = defineProps<{
3
- values: string
4
- }>()
5
- const links = computed(() => {
6
- const values = props.values.split(',').map(name => name.trim())
7
- return values.map((value) => {
8
- if (value.includes('#')) {
9
- const [name, url] = value.split('#')
10
- return {
11
- name,
12
- url: `#${url}`,
13
- }
14
- }
15
- else {
16
- return {
17
- name: value,
18
- url: `#${value.toLowerCase()}`,
19
- }
20
- }
21
- })
22
- })
23
- </script>
24
-
25
- <template>
26
- <ul>
27
- <li v-for="link in links" :key="link.name">
28
- <a :href="link.url" class="link link-primary">{{ link.name }}</a>
29
- </li>
30
- </ul>
31
- </template>
@@ -1,42 +0,0 @@
1
- <script setup lang="ts">
2
- import { useFuse } from '@vueuse/integrations/useFuse'
3
-
4
- const props = defineProps({
5
- error: Object,
6
- })
7
-
8
- const route = useRoute()
9
- const { allLinks } = useNav()
10
-
11
- const lastPathSegment = computed(() => {
12
- const segments = route.path.split('/')
13
- return segments[segments.length - 1]
14
- })
15
-
16
- const { results } = useFuse(lastPathSegment, allLinks, {
17
- fuseOptions: { keys: ['label', 'tags'], includeScore: true, distance: 3 },
18
- resultLimit: 5,
19
- })
20
- </script>
21
-
22
- <template>
23
- <Hero class="not-prose h-[32rem]">
24
- <HeroContent center>
25
- <div class="max-w-md">
26
- <Text is="h1" size="5xl" bold class="mb-5">
27
- 404
28
- </Text>
29
- <Text is="p" class="mb-5">
30
- We couldn't find that page. Did you mean one of these pages?
31
- </Text>
32
- <Menu class="border border-base-300 rounded-xl">
33
- <MenuItem v-for="result in results" :key="result.item.label">
34
- <NuxtLink :to="result.item.to">
35
- {{ result.item.label }}
36
- </NuxtLink>
37
- </MenuItem>
38
- </Menu>
39
- </div>
40
- </HeroContent>
41
- </Hero>
42
- </template>
@@ -1,24 +0,0 @@
1
- <script setup lang="ts">
2
- defineProps<{
3
- url: string
4
- title: string
5
- }>()
6
- </script>
7
-
8
- <template>
9
- <NuxtLink
10
- :to="url"
11
- class="btn md:btn-lg gap-2 normal-case lg:gap-3"
12
- >
13
- <Flex col items-start>
14
- <Text class="text-base-content/50 hidden text-xs font-normal md:block">
15
- Next
16
- </Text>
17
- <Text>{{ title }}</Text>
18
- </Flex>
19
-
20
- <svg class="h-6 w-6 fill-current md:h-8 md:w-8" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
21
- <path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" />
22
- </svg>
23
- </NuxtLink>
24
- </template>
@@ -1,24 +0,0 @@
1
- <script setup lang="ts">
2
- defineProps<{
3
- url: string
4
- title: string
5
- }>()
6
- </script>
7
-
8
- <template>
9
- <NuxtLink
10
- :to="url"
11
- class="btn md:btn-lg gap-2 normal-case lg:gap-3"
12
- >
13
- <svg class="h-6 w-6 fill-current md:h-8 md:w-8" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
14
- <path d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" />
15
- </svg>
16
-
17
- <Flex col items-start>
18
- <Text class="text-base-content/50 hidden text-xs font-normal md:block">
19
- Prev
20
- </Text>
21
- <Text>{{ title }}</Text>
22
- </Flex>
23
- </NuxtLink>
24
- </template>
@@ -1,40 +0,0 @@
1
- <script setup lang="ts">
2
- import { useNav } from '~/composables/use-nav'
3
-
4
- const props = defineProps<{
5
- currentPageLabel: string
6
- }>()
7
-
8
- const { allLinks: links } = useNav()
9
-
10
- const current = computed(() => links.find(link => link.label === props.currentPageLabel))
11
- const prev = computed(() => links[links.indexOf(current.value as any) - 1])
12
- const next = computed(() => links[links.indexOf(current.value as any) + 1])
13
-
14
- function toTop() {
15
- window.scrollTo({
16
- top: 0,
17
- behavior: 'smooth',
18
- })
19
- setTimeout(() => {
20
- window.location.hash = ''
21
- }, 600)
22
- }
23
- </script>
24
-
25
- <template>
26
- <div>
27
- <div class="flex flex-row justify-between mt-16">
28
- <PagePrevious v-if="prev" :url="prev.to" :title="prev.label" />
29
- <span v-else />
30
-
31
- <PageNext v-if="next" :url="next.to" :title="next.label" />
32
- <span v-else />
33
- </div>
34
-
35
- <Button ghost class="mt-6" @click="toTop">
36
- to top
37
- <Icon name="feather:arrow-up" class="ml-2" />
38
- </Button>
39
- </div>
40
- </template>
@@ -1,19 +0,0 @@
1
- <script setup lang="ts">
2
- defineProps({
3
- href: {
4
- type: String,
5
- default: '',
6
- },
7
- target: {
8
- type: String,
9
- default: undefined,
10
- required: false,
11
- },
12
- })
13
- </script>
14
-
15
- <template>
16
- <NuxtLink :href="href" :target="target" class="daisy-link link-primary">
17
- <slot />
18
- </NuxtLink>
19
- </template>
@@ -1,11 +0,0 @@
1
- <script setup lang="ts">
2
- defineProps<{
3
- type: string
4
- }>()
5
- </script>
6
-
7
- <template>
8
- <Alert class="not-prose" v-bind="$props">
9
- <slot />
10
- </Alert>
11
- </template>
@@ -1,5 +0,0 @@
1
- <template>
2
- <blockquote>
3
- <slot />
4
- </blockquote>
5
- </template>
@@ -1,62 +0,0 @@
1
- <script setup lang="ts">
2
- const props = defineProps({
3
- code: {
4
- type: String,
5
- default: '',
6
- },
7
- language: {
8
- type: String,
9
- default: null,
10
- },
11
- filename: {
12
- type: String,
13
- default: null,
14
- },
15
- highlights: {
16
- type: Array as () => number[],
17
- default: () => [],
18
- },
19
- meta: {
20
- type: String,
21
- default: null,
22
- },
23
- })
24
-
25
- const { copy, copied } = useClipboard({ source: computed(() => props.code) })
26
- </script>
27
-
28
- <template>
29
- <div>
30
- <CodeWrapper v-if="meta?.includes('collapse=true')" class="code-wrapper">
31
- <div class="relative -my-6">
32
- <div class="absolute flex flex-row items-center top-0 right-0">
33
- <div v-if="copied" class="pr-2 text-sm text-neutral-content">
34
- copied
35
- </div>
36
- <Button
37
- ghost sm
38
- class="text-neutral-content hover:bg-secondary hover:text-secondary-content rounded-tl-none rounded-br-none rounded-tr-md rounded-bl-md"
39
- @click="() => copy(code)"
40
- >
41
- copy
42
- </Button>
43
- </div>
44
- <div class="lg:max-w-[calc(100vw-380px)]">
45
- <slot />
46
- </div>
47
- </div>
48
- </CodeWrapper>
49
- <slot v-else />
50
- </div>
51
- </template>
52
-
53
- <style>
54
- .code-wrapper pre code .line {
55
- display: block;
56
- min-height: 1rem;
57
- }
58
-
59
- .code-wrapper pre {
60
- max-width: calc(100vw - 3.5rem);
61
- }
62
- </style>
@@ -1,3 +0,0 @@
1
- <template>
2
- <code class="bg-base-300 rounded-md py-1 px-1 whitespace-nowrap"><slot /></code>
3
- </template>
@@ -1,5 +0,0 @@
1
- <template>
2
- <em>
3
- <slot />
4
- </em>
5
- </template>