Merge pull request #118 from assasin0076/feat_timeline
feat: added timeline
This commit is contained in:
@@ -50,6 +50,7 @@ function getComponents() {
|
||||
{ text: 'Table', link: 'components/table' },
|
||||
{ text: 'Tabs', link: '/components/tabs' },
|
||||
{ text: 'ListGroup', link: 'components/list-group' },
|
||||
{ text: 'Timeline', link: 'components/timeline' },
|
||||
{ text: 'Toast', link: 'components/toast' },
|
||||
{ text: 'Tooltip', link: 'components/tooltip' },
|
||||
{ text: 'Modal', link: 'components/modal' },
|
||||
@@ -58,7 +59,6 @@ function getComponents() {
|
||||
{ text: '- Footer', link: 'components/footer' },
|
||||
{ text: '- Pagination', link: 'components/pagination' },
|
||||
{ text: '- Sidebar', link: 'components/sidebar' },
|
||||
{ text: '- Timeline', link: 'components/timeline' },
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,194 @@
|
||||
<script setup>
|
||||
import TimelineExample from './timeline/examples/TimelineExample.vue'
|
||||
import TimelineExample from './timeline/examples/TimelineExample.vue';
|
||||
import TimelineWithIconsExample from './timeline/examples/TimelineWithIconsExample.vue';
|
||||
import TimelineHorizontalExample from './timeline/examples/TimelineHorizontalExample.vue';
|
||||
</script>
|
||||
# Vue Timeline Component - Flowbite
|
||||
|
||||
```vue
|
||||
<script setup>
|
||||
import { Timeline } from 'flowbite-vue'
|
||||
</script>
|
||||
<template>
|
||||
<Timeline></Timeline>
|
||||
</template>
|
||||
```
|
||||
## Default timeline usage
|
||||
|
||||
<TimelineExample />
|
||||
|
||||
```vue
|
||||
<script setup>
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle } from 'flowbite-vue'
|
||||
</script>
|
||||
<template>
|
||||
<Timeline>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
|
||||
```
|
||||
## Timeline with icons
|
||||
You can add icons by passing svg icons as slot to `<timeline-point></timeline-point>`
|
||||
<br>
|
||||
|
||||
<TimelineWithIconsExample />
|
||||
|
||||
```vue
|
||||
<script setup>
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle } from 'flowbite-vue'
|
||||
</script>
|
||||
<template>
|
||||
<Timeline>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
|
||||
```
|
||||
## Timeline with icons
|
||||
`horizontal` prop makes timeline horizontal
|
||||
<br>
|
||||
|
||||
<TimelineHorizontalExample />
|
||||
|
||||
```vue
|
||||
<script setup>
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle } from 'flowbite-vue'
|
||||
</script>
|
||||
<template>
|
||||
<Timeline horizontal>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
|
||||
```
|
||||
|
||||
@@ -1,8 +1,52 @@
|
||||
<template>
|
||||
<div class="vp-raw flex flex-col">
|
||||
<Timeline></Timeline>
|
||||
</div>
|
||||
<Timeline class="vp-raw">
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2020
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
<script setup>
|
||||
import { Timeline } from '../../../../src/index'
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle, TimelineBody } from '../../../../src/index'
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<Timeline class="vp-raw" horizontal>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
<script setup>
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle, TimelineBody } from '../../../../src/index'
|
||||
</script>
|
||||
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<Timeline class="vp-raw">
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
<timeline-item>
|
||||
<timeline-point>
|
||||
<svg aria-hidden="true" class="w-3 h-3 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg>
|
||||
</timeline-point>
|
||||
<timeline-content>
|
||||
<timeline-time>
|
||||
February 2022
|
||||
</timeline-time>
|
||||
<timeline-title>
|
||||
Application UI code in Tailwind CSS
|
||||
</timeline-title>
|
||||
<timeline-body>
|
||||
Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.
|
||||
</timeline-body>
|
||||
</timeline-content>
|
||||
</timeline-item>
|
||||
</Timeline>
|
||||
</template>
|
||||
<script setup>
|
||||
import { Timeline, TimelineItem, TimelinePoint, TimelineTime, TimelineContent, TimelineTitle, TimelineBody } from '../../../../src/index'
|
||||
</script>
|
||||
@@ -1,39 +1,26 @@
|
||||
<template>
|
||||
<ol class="relative border-l border-gray-200 dark:border-gray-700">
|
||||
<li class="mb-10 ml-4">
|
||||
<div class="absolute w-3 h-3 bg-gray-200 rounded-full mt-1.5 -left-1.5 border border-white dark:border-gray-900 dark:bg-gray-700"></div>
|
||||
<time class="mb-1 text-sm font-normal leading-none text-gray-400 dark:text-gray-500">February 2022</time>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Application UI code in Tailwind CSS</h3>
|
||||
<p class="mb-4 text-base font-normal text-gray-500 dark:text-gray-400">Get access to over 20+ pages including a dashboard layout, charts, kanban board, calendar, and pre-order E-commerce & Marketing pages.</p>
|
||||
<a href="#" class="inline-flex items-center py-2 px-4 text-sm font-medium text-gray-900 bg-white rounded-lg border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:outline-none focus:ring-gray-200 focus:text-blue-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-gray-700">Learn more <svg class="ml-2 w-3 h-3" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg></a>
|
||||
</li>
|
||||
<li class="mb-10 ml-4">
|
||||
<div class="absolute w-3 h-3 bg-gray-200 rounded-full mt-1.5 -left-1.5 border border-white dark:border-gray-900 dark:bg-gray-700"></div>
|
||||
<time class="mb-1 text-sm font-normal leading-none text-gray-400 dark:text-gray-500">March 2022</time>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Marketing UI design in Figma</h3>
|
||||
<p class="text-base font-normal text-gray-500 dark:text-gray-400">All of the pages and components are first designed in Figma and we keep a parity between the two versions even as we update the project.</p>
|
||||
</li>
|
||||
<li class="ml-4">
|
||||
<div class="absolute w-3 h-3 bg-gray-200 rounded-full mt-1.5 -left-1.5 border border-white dark:border-gray-900 dark:bg-gray-700"></div>
|
||||
<time class="mb-1 text-sm font-normal leading-none text-gray-400 dark:text-gray-500">April 2022</time>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">E-Commerce UI code in Tailwind CSS</h3>
|
||||
<p class="text-base font-normal text-gray-500 dark:text-gray-400">Get started with dozens of web components and interactive elements built on top of Tailwind CSS.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<div>
|
||||
<ol :class="timelineClasses" v-bind="$attrs">
|
||||
<slot></slot>
|
||||
</ol>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, toRefs } from 'vue'
|
||||
import type { PropType } from 'vue'
|
||||
import classNames from 'classnames'
|
||||
import { computed, provide } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
className: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
horizontal: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
})
|
||||
|
||||
provide('horizontal', props.horizontal)
|
||||
|
||||
const defaultClasses = 'relative border-gray-200 dark:border-gray-700'
|
||||
const verticalClasses = 'border-l'
|
||||
const horizontalClasses = 'flex'
|
||||
|
||||
const timelineClasses = computed(() => classNames(defaultClasses, props.horizontal ? horizontalClasses : verticalClasses))
|
||||
</script>
|
||||
|
||||
3
src/components/Timeline/TimelineBody.vue
Normal file
3
src/components/Timeline/TimelineBody.vue
Normal file
@@ -0,0 +1,3 @@
|
||||
<template>
|
||||
<p class="mb-4 text-base font-normal text-gray-500 dark:text-gray-400"><slot></slot></p>
|
||||
</template>
|
||||
11
src/components/Timeline/TimelineContent.vue
Normal file
11
src/components/Timeline/TimelineContent.vue
Normal file
@@ -0,0 +1,11 @@
|
||||
<template>
|
||||
<div :class="classes"><slot></slot></div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, inject } from 'vue'
|
||||
import classNames from 'classnames'
|
||||
|
||||
const isHorizontal = inject('horizontal')
|
||||
const classes = computed(() => classNames(isHorizontal ? 'mt-3 sm:pr-8' : ''))
|
||||
</script>
|
||||
19
src/components/Timeline/TimelineItem.vue
Normal file
19
src/components/Timeline/TimelineItem.vue
Normal file
@@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<li :class="timelineItemClasses">
|
||||
<slot></slot>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, inject } from 'vue'
|
||||
import classNames from 'classnames'
|
||||
|
||||
const isHorizontal = inject('horizontal')
|
||||
|
||||
const defaultClasses = 'mb-10'
|
||||
const horizontalClasses = 'mb-6 sm:mb-0 relative'
|
||||
const verticalClasses = 'ml-6'
|
||||
const timelineItemClasses = computed(() => {
|
||||
return classNames(defaultClasses, isHorizontal ? horizontalClasses : verticalClasses)
|
||||
})
|
||||
</script>
|
||||
55
src/components/Timeline/TimelinePoint.vue
Normal file
55
src/components/Timeline/TimelinePoint.vue
Normal file
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<div :class="wrapperClasses">
|
||||
<div
|
||||
:class="pointClasses"
|
||||
>
|
||||
<slot />
|
||||
</div>
|
||||
<div :class="borderClasses"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, inject, useSlots } from 'vue'
|
||||
import classNames from 'classnames'
|
||||
|
||||
const slots = useSlots()
|
||||
|
||||
const hasSlot = computed(() => {
|
||||
return !!slots.default
|
||||
})
|
||||
|
||||
const isHorizontal = inject('horizontal')
|
||||
|
||||
const wrapperClasses = computed(() => {
|
||||
return classNames(isHorizontal ? 'flex items-center' : '')
|
||||
})
|
||||
|
||||
const defaultBorderClasses = 'h-0.5 w-full bg-gray-200 dark:bg-gray-700 sm:flex'
|
||||
const borderClasses = computed(() => classNames(defaultBorderClasses, { 'sm:hidden hidden': !isHorizontal }))
|
||||
|
||||
|
||||
const pointClasses = computed(() => {
|
||||
const defaultClasses = 'absolute rounded-full -left-1.5 border border-white dark:border-gray-900 dark:bg-gray-700'
|
||||
|
||||
const verticalWithNoIconClasses = 'mt-1.5 w-3 h-3 bg-gray-200'
|
||||
const verticalWithIconClasses = 'mt-1.5 w-6 h-6 -left-3 flex justify-center items-center bg-blue-200 ring-8 ring-white dark:ring-gray-900'
|
||||
const horizontalWithNoIconClasses = 'w-3 h-3 bg-gray-200'
|
||||
const horizontalWithIconClasses = 'w-6 h-6 -left-3 flex justify-center items-center bg-blue-200 ring-8 ring-white dark:ring-gray-900'
|
||||
|
||||
const isVerticalWithNoIcon = !isHorizontal && !hasSlot.value
|
||||
const isVerticalWithIcon = !isHorizontal && hasSlot.value
|
||||
const isHorizontalWithNoIcon = isHorizontal && !hasSlot.value
|
||||
const isHorizontalWithIcon = isHorizontal && hasSlot.value
|
||||
|
||||
return classNames(
|
||||
defaultClasses,
|
||||
{
|
||||
[verticalWithNoIconClasses]: isVerticalWithNoIcon,
|
||||
[verticalWithIconClasses]: isVerticalWithIcon,
|
||||
[horizontalWithNoIconClasses]: isHorizontalWithNoIcon,
|
||||
[horizontalWithIconClasses]: isHorizontalWithIcon,
|
||||
},
|
||||
)
|
||||
})
|
||||
</script>
|
||||
5
src/components/Timeline/TimelineTime.vue
Normal file
5
src/components/Timeline/TimelineTime.vue
Normal file
@@ -0,0 +1,5 @@
|
||||
<template>
|
||||
<time class="mb-1 text-sm font-normal leading-none text-gray-400 dark:text-gray-500">
|
||||
<slot></slot>
|
||||
</time>
|
||||
</template>
|
||||
5
src/components/Timeline/TimelineTitle.vue
Normal file
5
src/components/Timeline/TimelineTitle.vue
Normal file
@@ -0,0 +1,5 @@
|
||||
<template>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">
|
||||
<slot></slot>
|
||||
</h3>
|
||||
</template>
|
||||
@@ -38,6 +38,12 @@ export { default as TableHeadCell } from './components/Table/TableHeadCell.vue'
|
||||
export { default as TableRow } from './components/Table/TableRow.vue'
|
||||
export { default as TableCell } from './components/Table/TableCell.vue'
|
||||
export { default as Timeline } from './components/Timeline/Timeline.vue'
|
||||
export { default as TimelineItem } from './components/Timeline/TimelineItem.vue'
|
||||
export { default as TimelinePoint } from './components/Timeline/TimelinePoint.vue'
|
||||
export { default as TimelineContent } from './components/Timeline/TimelineContent.vue'
|
||||
export { default as TimelineTime } from './components/Timeline/TimelineTime.vue'
|
||||
export { default as TimelineTitle } from './components/Timeline/TimelineTitle.vue'
|
||||
export { default as TimelineBody } from './components/Timeline/TimelineBody.vue'
|
||||
export { default as Toast } from './components/Toast/Toast.vue'
|
||||
export { default as ToastProvider } from './components/Toast/components/ToastProvider/ToastProvider.vue'
|
||||
export { default as Tooltip } from './components/Tooltip/Tooltip.vue'
|
||||
|
||||
Reference in New Issue
Block a user