twintrinsic 0.0.1
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.
- package/LICENSE +674 -0
- package/README.md +150 -0
- package/dist/App/App.svelte +54 -0
- package/dist/App/App.svelte.d.ts +65 -0
- package/dist/Section.svelte +25 -0
- package/dist/Section.svelte.d.ts +34 -0
- package/dist/actions/clickOutside.d.ts +9 -0
- package/dist/actions/clickOutside.js +19 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.js +1 -0
- package/dist/components/Accordion/Accordion.svelte +75 -0
- package/dist/components/Accordion/Accordion.svelte.d.ts +39 -0
- package/dist/components/Accordion/AccordionItem.svelte +150 -0
- package/dist/components/Accordion/AccordionItem.svelte.d.ts +30 -0
- package/dist/components/App/App.story.md +8 -0
- package/dist/components/App/App.story.svelte +170 -0
- package/dist/components/App/App.story.svelte.d.ts +22 -0
- package/dist/components/App/App.svelte +77 -0
- package/dist/components/App/App.svelte.d.ts +66 -0
- package/dist/components/App/Split.svelte +346 -0
- package/dist/components/App/Split.svelte.d.ts +54 -0
- package/dist/components/App/index.d.ts +2 -0
- package/dist/components/App/index.js +3 -0
- package/dist/components/AppHeader/AppHeader.svelte +439 -0
- package/dist/components/AppHeader/AppHeader.svelte.d.ts +24 -0
- package/dist/components/Avatar/Avatar.svelte +300 -0
- package/dist/components/Avatar/Avatar.svelte.d.ts +48 -0
- package/dist/components/Avatar/AvatarGroup.svelte +185 -0
- package/dist/components/Avatar/AvatarGroup.svelte.d.ts +46 -0
- package/dist/components/Badge/Badge.svelte +186 -0
- package/dist/components/Badge/Badge.svelte.d.ts +51 -0
- package/dist/components/BottomBar/BottomBar.svelte +146 -0
- package/dist/components/BottomBar/BottomBar.svelte.d.ts +38 -0
- package/dist/components/Breadcrumb/Breadcrumb.svelte +77 -0
- package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +42 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.svelte +171 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.svelte.d.ts +38 -0
- package/dist/components/Button/Button.svelte +252 -0
- package/dist/components/Button/Button.svelte.d.ts +80 -0
- package/dist/components/Button/ButtonGroup.svelte +127 -0
- package/dist/components/Button/ButtonGroup.svelte.d.ts +44 -0
- package/dist/components/Card/Card.svelte +152 -0
- package/dist/components/Card/Card.svelte.d.ts +55 -0
- package/dist/components/Carousel/Carousel.svelte +461 -0
- package/dist/components/Carousel/Carousel.svelte.d.ts +79 -0
- package/dist/components/Carousel/CarouselItem.svelte +149 -0
- package/dist/components/Carousel/CarouselItem.svelte.d.ts +35 -0
- package/dist/components/Chip/Chip.svelte +288 -0
- package/dist/components/Chip/Chip.svelte.d.ts +71 -0
- package/dist/components/Chip/ChipGroup.svelte +190 -0
- package/dist/components/Chip/ChipGroup.svelte.d.ts +71 -0
- package/dist/components/CodeBlock/CodeBlock.svelte +356 -0
- package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +44 -0
- package/dist/components/CodeBlock/index.d.ts +1 -0
- package/dist/components/CodeBlock/index.js +1 -0
- package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte +145 -0
- package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte.d.ts +44 -0
- package/dist/components/CodeEditor/CodeEditor.svelte +229 -0
- package/dist/components/CodeEditor/CodeEditor.svelte.d.ts +23 -0
- package/dist/components/Combobox/Combobox.svelte +279 -0
- package/dist/components/Combobox/Combobox.svelte.d.ts +34 -0
- package/dist/components/Container/Container.svelte +45 -0
- package/dist/components/Container/Container.svelte.d.ts +36 -0
- package/dist/components/DataTable/DataTable.svelte +879 -0
- package/dist/components/DataTable/DataTable.svelte.d.ts +102 -0
- package/dist/components/Form/AutoComplete.svelte +357 -0
- package/dist/components/Form/AutoComplete.svelte.d.ts +73 -0
- package/dist/components/Form/Calendar.svelte +429 -0
- package/dist/components/Form/Calendar.svelte.d.ts +53 -0
- package/dist/components/Form/Checkbox.svelte +196 -0
- package/dist/components/Form/Checkbox.svelte.d.ts +50 -0
- package/dist/components/Form/ColorPicker.svelte +396 -0
- package/dist/components/Form/ColorPicker.svelte.d.ts +43 -0
- package/dist/components/Form/Combobox.svelte +645 -0
- package/dist/components/Form/Combobox.svelte.d.ts +93 -0
- package/dist/components/Form/Dropdown.svelte +773 -0
- package/dist/components/Form/Dropdown.svelte.d.ts +81 -0
- package/dist/components/Form/FileUpload.svelte +796 -0
- package/dist/components/Form/FileUpload.svelte.d.ts +78 -0
- package/dist/components/Form/FloatLabel.svelte +245 -0
- package/dist/components/Form/FloatLabel.svelte.d.ts +44 -0
- package/dist/components/Form/Form.svelte +281 -0
- package/dist/components/Form/Form.svelte.d.ts +54 -0
- package/dist/components/Form/FormField.svelte +218 -0
- package/dist/components/Form/FormField.svelte.d.ts +47 -0
- package/dist/components/Form/Input.svelte +340 -0
- package/dist/components/Form/Input.svelte.d.ts +79 -0
- package/dist/components/Form/InputSwitch.svelte +189 -0
- package/dist/components/Form/InputSwitch.svelte.d.ts +46 -0
- package/dist/components/Form/InvalidState.svelte +97 -0
- package/dist/components/Form/InvalidState.svelte.d.ts +37 -0
- package/dist/components/Form/Knob.svelte +537 -0
- package/dist/components/Form/Knob.svelte.d.ts +78 -0
- package/dist/components/Form/ListInput.svelte +469 -0
- package/dist/components/Form/ListInput.svelte.d.ts +70 -0
- package/dist/components/Form/Listbox.svelte +513 -0
- package/dist/components/Form/Listbox.svelte.d.ts +74 -0
- package/dist/components/Form/NumberInput.svelte +452 -0
- package/dist/components/Form/NumberInput.svelte.d.ts +82 -0
- package/dist/components/Form/Radio.svelte +192 -0
- package/dist/components/Form/Radio.svelte.d.ts +53 -0
- package/dist/components/Form/RadioGroup.svelte +155 -0
- package/dist/components/Form/RadioGroup.svelte.d.ts +48 -0
- package/dist/components/Form/Rating.svelte +380 -0
- package/dist/components/Form/Rating.svelte.d.ts +64 -0
- package/dist/components/Form/Select.svelte +436 -0
- package/dist/components/Form/Select.svelte.d.ts +49 -0
- package/dist/components/Form/SelectGroup.svelte +34 -0
- package/dist/components/Form/SelectGroup.svelte.d.ts +33 -0
- package/dist/components/Form/Slider.svelte +622 -0
- package/dist/components/Form/Slider.svelte.d.ts +73 -0
- package/dist/components/Form/Switch.svelte +192 -0
- package/dist/components/Form/Switch.svelte.d.ts +46 -0
- package/dist/components/Form/TextInput.svelte +274 -0
- package/dist/components/Form/TextInput.svelte.d.ts +74 -0
- package/dist/components/Form/Textarea.svelte +207 -0
- package/dist/components/Form/Textarea.svelte.d.ts +62 -0
- package/dist/components/Icon/Icon.svelte +140 -0
- package/dist/components/Icon/Icon.svelte.d.ts +25 -0
- package/dist/components/Icon/index.d.ts +1 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/Lazy/Lazy.svelte +158 -0
- package/dist/components/Lazy/Lazy.svelte.d.ts +42 -0
- package/dist/components/Masonry/Masonry.svelte +299 -0
- package/dist/components/Masonry/Masonry.svelte.d.ts +55 -0
- package/dist/components/Menu/Menu/Menu.svelte +65 -0
- package/dist/components/Menu/Menu/Menu.svelte.d.ts +17 -0
- package/dist/components/Menu/Menu/MenuItem.svelte +90 -0
- package/dist/components/Menu/Menu/MenuItem.svelte.d.ts +27 -0
- package/dist/components/Modal/Modal.svelte +334 -0
- package/dist/components/Modal/Modal.svelte.d.ts +55 -0
- package/dist/components/Panel/Card.svelte +141 -0
- package/dist/components/Panel/Card.svelte.d.ts +52 -0
- package/dist/components/Panel/Hero/Hero.story.md +9 -0
- package/dist/components/Panel/Hero/Hero.story.svelte +49 -0
- package/dist/components/Panel/Hero/Hero.story.svelte.d.ts +21 -0
- package/dist/components/Panel/Hero/Hero.svelte +24 -0
- package/dist/components/Panel/Hero/Hero.svelte.d.ts +32 -0
- package/dist/components/Panel/LazyPanel.svelte +110 -0
- package/dist/components/Panel/LazyPanel.svelte.d.ts +46 -0
- package/dist/components/Panel/Panel.svelte +205 -0
- package/dist/components/Panel/Panel.svelte.d.ts +23 -0
- package/dist/components/Progress/Progress.svelte +220 -0
- package/dist/components/Progress/Progress.svelte.d.ts +61 -0
- package/dist/components/Separator/Separator.svelte +109 -0
- package/dist/components/Separator/Separator.svelte.d.ts +35 -0
- package/dist/components/Sidebar/Sidebar.svelte +213 -0
- package/dist/components/Sidebar/Sidebar.svelte.d.ts +60 -0
- package/dist/components/Skeleton/Skeleton.svelte +170 -0
- package/dist/components/Skeleton/Skeleton.svelte.d.ts +48 -0
- package/dist/components/Stepper/Stepper.svelte +111 -0
- package/dist/components/Stepper/Stepper.svelte.d.ts +54 -0
- package/dist/components/Stepper/StepperStep.svelte +369 -0
- package/dist/components/Stepper/StepperStep.svelte.d.ts +63 -0
- package/dist/components/Table/Table.svelte +167 -0
- package/dist/components/Table/Table.svelte.d.ts +56 -0
- package/dist/components/Table/TableBody.svelte +41 -0
- package/dist/components/Table/TableBody.svelte.d.ts +33 -0
- package/dist/components/Table/TableCell.svelte +76 -0
- package/dist/components/Table/TableCell.svelte.d.ts +36 -0
- package/dist/components/Table/TableHead.svelte +41 -0
- package/dist/components/Table/TableHead.svelte.d.ts +32 -0
- package/dist/components/Table/TableHeader.svelte +148 -0
- package/dist/components/Table/TableHeader.svelte.d.ts +42 -0
- package/dist/components/Table/TableRow.svelte +99 -0
- package/dist/components/Table/TableRow.svelte.d.ts +40 -0
- package/dist/components/Tabs/Tab.svelte +145 -0
- package/dist/components/Tabs/Tab.svelte.d.ts +36 -0
- package/dist/components/Tabs/TabList.svelte +60 -0
- package/dist/components/Tabs/TabList.svelte.d.ts +32 -0
- package/dist/components/Tabs/TabPanel.svelte +118 -0
- package/dist/components/Tabs/TabPanel.svelte.d.ts +38 -0
- package/dist/components/Tabs/Tabs.svelte +287 -0
- package/dist/components/Tabs/Tabs.svelte.d.ts +50 -0
- package/dist/components/Tag/Tag.svelte +260 -0
- package/dist/components/Tag/Tag.svelte.d.ts +54 -0
- package/dist/components/Tag/TagGroup.svelte +147 -0
- package/dist/components/Tag/TagGroup.svelte.d.ts +62 -0
- package/dist/components/ThemeToggle/ThemeToggle.svelte +93 -0
- package/dist/components/ThemeToggle/ThemeToggle.svelte.d.ts +12 -0
- package/dist/components/Timeline/Timeline.svelte +144 -0
- package/dist/components/Timeline/Timeline.svelte.d.ts +48 -0
- package/dist/components/Timeline/TimelineItem.svelte +391 -0
- package/dist/components/Timeline/TimelineItem.svelte.d.ts +63 -0
- package/dist/components/Toast/Toast.svelte +313 -0
- package/dist/components/Toast/Toast.svelte.d.ts +44 -0
- package/dist/components/Toast/toastStore.d.ts +40 -0
- package/dist/components/Toast/toastStore.js +293 -0
- package/dist/components/Tooltip/Tooltip.svelte +282 -0
- package/dist/components/Tooltip/Tooltip.svelte.d.ts +55 -0
- package/dist/components/Tree/Tree.svelte +129 -0
- package/dist/components/Tree/Tree.svelte.d.ts +61 -0
- package/dist/components/Tree/TreeNode.svelte +332 -0
- package/dist/components/Tree/TreeNode.svelte.d.ts +55 -0
- package/dist/components/icons/TwintrinsicLogo.svelte +73 -0
- package/dist/components/icons/TwintrinsicLogo.svelte.d.ts +17 -0
- package/dist/components/icons/twintrinsic-source.svg +73 -0
- package/dist/components/icons/twintrinsic.svg +38 -0
- package/dist/docs/EventsTable.svelte +86 -0
- package/dist/docs/EventsTable.svelte.d.ts +27 -0
- package/dist/docs/PropsTable.svelte +103 -0
- package/dist/docs/PropsTable.svelte.d.ts +28 -0
- package/dist/docs/index.d.ts +2 -0
- package/dist/docs/index.js +2 -0
- package/dist/helpers/detectLanguage.d.ts +6 -0
- package/dist/helpers/detectLanguage.js +60 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +1 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +94 -0
- package/dist/twintrinsic.css +347 -0
- package/package.json +98 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
TimelineItem - An individual item within a Timeline component.
|
|
4
|
+
Provides consistent styling, accessibility features, and various display options.
|
|
5
|
+
|
|
6
|
+
Usage:
|
|
7
|
+
```svelte
|
|
8
|
+
<TimelineItem title="Event Title">
|
|
9
|
+
Content for the event
|
|
10
|
+
</TimelineItem>
|
|
11
|
+
|
|
12
|
+
<TimelineItem
|
|
13
|
+
title="Important Milestone"
|
|
14
|
+
date="January 15, 2023"
|
|
15
|
+
icon="<svg>...</svg>"
|
|
16
|
+
variant="success"
|
|
17
|
+
>
|
|
18
|
+
Detailed description of the milestone
|
|
19
|
+
</TimelineItem>
|
|
20
|
+
|
|
21
|
+
<TimelineItem
|
|
22
|
+
title="Error Occurred"
|
|
23
|
+
variant="error"
|
|
24
|
+
iconBackground="bg-error-500"
|
|
25
|
+
>
|
|
26
|
+
Details about the error
|
|
27
|
+
</TimelineItem>
|
|
28
|
+
```
|
|
29
|
+
-->
|
|
30
|
+
<script>
|
|
31
|
+
import { getContext, onMount } from "svelte"
|
|
32
|
+
|
|
33
|
+
const {
|
|
34
|
+
/** @type {string} - Additional CSS classes */
|
|
35
|
+
class: className = "",
|
|
36
|
+
|
|
37
|
+
/** @type {string} - HTML id for accessibility */
|
|
38
|
+
id = crypto.randomUUID(),
|
|
39
|
+
|
|
40
|
+
/** @type {string} - Title of the timeline item */
|
|
41
|
+
title,
|
|
42
|
+
|
|
43
|
+
/** @type {string} - Subtitle or date of the timeline item */
|
|
44
|
+
date,
|
|
45
|
+
|
|
46
|
+
/** @type {string} - Visual style variant */
|
|
47
|
+
variant,
|
|
48
|
+
|
|
49
|
+
/** @type {string} - Custom icon (HTML or SVG string) */
|
|
50
|
+
icon,
|
|
51
|
+
|
|
52
|
+
/** @type {string} - Background color for the icon */
|
|
53
|
+
iconBackground,
|
|
54
|
+
|
|
55
|
+
/** @type {boolean} - Whether the item is the last in the timeline */
|
|
56
|
+
last = false,
|
|
57
|
+
|
|
58
|
+
/** @type {boolean} - Whether the item is completed */
|
|
59
|
+
completed = false,
|
|
60
|
+
|
|
61
|
+
/** @type {boolean} - Whether the item is currently active */
|
|
62
|
+
active = false,
|
|
63
|
+
|
|
64
|
+
/** @type {boolean} - Whether the item is disabled */
|
|
65
|
+
disabled = false,
|
|
66
|
+
|
|
67
|
+
/** @type {string} - Position override for this specific item */
|
|
68
|
+
position,
|
|
69
|
+
|
|
70
|
+
children,
|
|
71
|
+
} = $props()
|
|
72
|
+
|
|
73
|
+
// Get timeline context
|
|
74
|
+
const timelineContext = getContext("timeline")
|
|
75
|
+
|
|
76
|
+
// Component state
|
|
77
|
+
let itemElement
|
|
78
|
+
let isVisible = $state(false)
|
|
79
|
+
let index = $state(0)
|
|
80
|
+
|
|
81
|
+
// Determine variant
|
|
82
|
+
const itemVariant = $derived(variant || timelineContext?.variant || "primary")
|
|
83
|
+
|
|
84
|
+
// Determine position
|
|
85
|
+
const itemPosition = $derived(position || timelineContext?.position || "left")
|
|
86
|
+
|
|
87
|
+
// Determine orientation
|
|
88
|
+
const orientation = $derived(timelineContext?.orientation || "vertical")
|
|
89
|
+
|
|
90
|
+
// Determine if connected
|
|
91
|
+
const connected = $derived(timelineContext?.connected !== false)
|
|
92
|
+
|
|
93
|
+
// Determine if animated
|
|
94
|
+
const animated = $derived(timelineContext?.animated === true)
|
|
95
|
+
|
|
96
|
+
// Determine effective position based on alternate setting and index
|
|
97
|
+
const effectivePosition = $derived(() => {
|
|
98
|
+
if (itemPosition !== "alternate") return itemPosition
|
|
99
|
+
return index % 2 === 0 ? "left" : "right"
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
// Determine variant classes
|
|
103
|
+
const variantClasses = $derived(
|
|
104
|
+
{
|
|
105
|
+
default: "text-text dark:text-text",
|
|
106
|
+
primary: "text-primary-500 dark:text-primary-500",
|
|
107
|
+
secondary: "text-secondary-500 dark:text-secondary-500",
|
|
108
|
+
success: "text-success-500 dark:text-success-500",
|
|
109
|
+
warning: "text-warning-500 dark:text-warning-500",
|
|
110
|
+
error: "text-error-500 dark:text-error-500",
|
|
111
|
+
info: "text-info-500 dark:text-info-500",
|
|
112
|
+
}[itemVariant] || "text-primary-500 dark:text-primary-500"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
// Determine icon background classes
|
|
116
|
+
const iconBgClasses = $derived(
|
|
117
|
+
iconBackground ||
|
|
118
|
+
{
|
|
119
|
+
default: "bg-surface dark:bg-surface",
|
|
120
|
+
primary: "bg-primary-100 dark:bg-primary-900",
|
|
121
|
+
secondary: "bg-secondary-100 dark:bg-secondary-900",
|
|
122
|
+
success: "bg-success-100 dark:bg-success-900",
|
|
123
|
+
warning: "bg-warning-100 dark:bg-warning-900",
|
|
124
|
+
error: "bg-error-100 dark:bg-error-900",
|
|
125
|
+
info: "bg-info-100 dark:bg-info-900",
|
|
126
|
+
}[itemVariant] ||
|
|
127
|
+
"bg-primary-100 dark:bg-primary-900"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
// Determine state classes
|
|
131
|
+
const stateClasses = $derived({
|
|
132
|
+
completed: "timeline-item-completed",
|
|
133
|
+
active: "timeline-item-active",
|
|
134
|
+
disabled: "timeline-item-disabled",
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
// Register with parent on mount and set up intersection observer
|
|
138
|
+
onMount(() => {
|
|
139
|
+
if (itemElement) {
|
|
140
|
+
// Find our index among siblings
|
|
141
|
+
const parent = itemElement.parentElement
|
|
142
|
+
if (parent) {
|
|
143
|
+
const items = Array.from(parent.children)
|
|
144
|
+
index = items.indexOf(itemElement)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Set up intersection observer for animations
|
|
148
|
+
if (animated) {
|
|
149
|
+
const observer = new IntersectionObserver(
|
|
150
|
+
(entries) => {
|
|
151
|
+
entries.forEach((entry) => {
|
|
152
|
+
if (entry.isIntersecting) {
|
|
153
|
+
isVisible = true
|
|
154
|
+
observer.unobserve(entry.target)
|
|
155
|
+
}
|
|
156
|
+
})
|
|
157
|
+
},
|
|
158
|
+
{ threshold: 0.2 }
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
observer.observe(itemElement)
|
|
162
|
+
|
|
163
|
+
return () => {
|
|
164
|
+
observer.disconnect()
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
})
|
|
169
|
+
</script>
|
|
170
|
+
|
|
171
|
+
<div
|
|
172
|
+
{id}
|
|
173
|
+
class="
|
|
174
|
+
timeline-item
|
|
175
|
+
timeline-item-{orientation}
|
|
176
|
+
timeline-item-{effectivePosition}
|
|
177
|
+
{completed ? stateClasses.completed : ''}
|
|
178
|
+
{active ? stateClasses.active : ''}
|
|
179
|
+
{disabled ? stateClasses.disabled : ''}
|
|
180
|
+
{last ? 'timeline-item-last' : ''}
|
|
181
|
+
{animated && !isVisible ? 'timeline-item-hidden' : ''}
|
|
182
|
+
{className}
|
|
183
|
+
"
|
|
184
|
+
role="listitem"
|
|
185
|
+
aria-disabled={disabled ? true : undefined}
|
|
186
|
+
bind:this={itemElement}
|
|
187
|
+
>
|
|
188
|
+
<div class="timeline-item-connector">
|
|
189
|
+
<div class="timeline-item-dot {variantClasses} {iconBgClasses}">
|
|
190
|
+
{#if icon}
|
|
191
|
+
<span class="timeline-item-icon">
|
|
192
|
+
{@html icon}
|
|
193
|
+
</span>
|
|
194
|
+
{:else if completed}
|
|
195
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
196
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
|
197
|
+
</svg>
|
|
198
|
+
{/if}
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
{#if connected && !last}
|
|
202
|
+
<div class="timeline-item-line"></div>
|
|
203
|
+
{/if}
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<div class="timeline-item-content">
|
|
207
|
+
{#if title}
|
|
208
|
+
<div class="timeline-item-header">
|
|
209
|
+
<h3 class="timeline-item-title {variantClasses}">
|
|
210
|
+
{title}
|
|
211
|
+
</h3>
|
|
212
|
+
|
|
213
|
+
{#if date}
|
|
214
|
+
<div class="timeline-item-date">
|
|
215
|
+
{date}
|
|
216
|
+
</div>
|
|
217
|
+
{/if}
|
|
218
|
+
</div>
|
|
219
|
+
{/if}
|
|
220
|
+
|
|
221
|
+
<div class="timeline-item-body">
|
|
222
|
+
{@render children?.()}
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
<style>
|
|
228
|
+
@reference "../../twintrinsic.css";
|
|
229
|
+
|
|
230
|
+
.timeline-item {
|
|
231
|
+
@apply relative;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* Vertical timeline layout */
|
|
235
|
+
.timeline-item-vertical {
|
|
236
|
+
@apply pb-6;
|
|
237
|
+
@apply flex;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.timeline-item-vertical.timeline-item-last {
|
|
241
|
+
@apply pb-0;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.timeline-item-vertical.timeline-item-left {
|
|
245
|
+
@apply flex-row;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.timeline-item-vertical.timeline-item-right {
|
|
249
|
+
@apply flex-row-reverse;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Horizontal timeline layout */
|
|
253
|
+
.timeline-item-horizontal {
|
|
254
|
+
@apply pr-6;
|
|
255
|
+
@apply flex flex-col;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.timeline-item-horizontal.timeline-item-last {
|
|
259
|
+
@apply pr-0;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.timeline-item-horizontal.timeline-item-left {
|
|
263
|
+
@apply flex-col;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.timeline-item-horizontal.timeline-item-right {
|
|
267
|
+
@apply flex-col-reverse;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* Connector styles */
|
|
271
|
+
.timeline-item-connector {
|
|
272
|
+
@apply flex-shrink-0;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.timeline-item-vertical .timeline-item-connector {
|
|
276
|
+
@apply flex flex-col items-center;
|
|
277
|
+
@apply w-12;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.timeline-item-horizontal .timeline-item-connector {
|
|
281
|
+
@apply flex flex-row items-center;
|
|
282
|
+
@apply h-12;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.timeline-item-dot {
|
|
286
|
+
@apply flex items-center justify-center;
|
|
287
|
+
@apply rounded-full;
|
|
288
|
+
@apply z-10;
|
|
289
|
+
@apply w-6 h-6;
|
|
290
|
+
@apply border-2 border-white dark:border-gray-900;
|
|
291
|
+
@apply transition-colors duration-150;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.timeline-item-icon {
|
|
295
|
+
@apply w-3 h-3;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.timeline-item-line {
|
|
299
|
+
@apply bg-border dark:bg-border;
|
|
300
|
+
@apply flex-grow;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.timeline-item-vertical .timeline-item-line {
|
|
304
|
+
@apply w-0.5;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.timeline-item-horizontal .timeline-item-line {
|
|
308
|
+
@apply h-0.5;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/* Content styles */
|
|
312
|
+
.timeline-item-content {
|
|
313
|
+
@apply flex-grow;
|
|
314
|
+
@apply py-0.5;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.timeline-item-vertical.timeline-item-left .timeline-item-content {
|
|
318
|
+
@apply pl-4;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.timeline-item-vertical.timeline-item-right .timeline-item-content {
|
|
322
|
+
@apply pr-4;
|
|
323
|
+
@apply text-right;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.timeline-item-horizontal.timeline-item-left .timeline-item-content {
|
|
327
|
+
@apply pt-4;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.timeline-item-horizontal.timeline-item-right .timeline-item-content {
|
|
331
|
+
@apply pb-4;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.timeline-item-header {
|
|
335
|
+
@apply mb-2;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.timeline-item-title {
|
|
339
|
+
@apply font-medium text-base;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.timeline-item-date {
|
|
343
|
+
@apply text-sm text-muted dark:text-muted;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.timeline-item-body {
|
|
347
|
+
@apply text-sm text-text dark:text-text;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* State styles */
|
|
351
|
+
.timeline-item-completed .timeline-item-dot {
|
|
352
|
+
@apply bg-success-100 dark:bg-success-900;
|
|
353
|
+
@apply text-success-500 dark:text-success-500;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.timeline-item-active .timeline-item-dot {
|
|
357
|
+
@apply ring-2 ring-offset-2 ring-primary-500 dark:ring-primary-500;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.timeline-item-disabled {
|
|
361
|
+
@apply opacity-50;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/* Animation styles */
|
|
365
|
+
.timeline-item-hidden {
|
|
366
|
+
@apply opacity-0;
|
|
367
|
+
@apply translate-y-4;
|
|
368
|
+
@apply transition-none;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.timeline-item-vertical.timeline-item-left.timeline-item-hidden {
|
|
372
|
+
@apply -translate-x-4 translate-y-0;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.timeline-item-vertical.timeline-item-right.timeline-item-hidden {
|
|
376
|
+
@apply translate-x-4 translate-y-0;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.timeline-item-horizontal.timeline-item-left.timeline-item-hidden {
|
|
380
|
+
@apply -translate-y-4 translate-x-0;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.timeline-item-horizontal.timeline-item-right.timeline-item-hidden {
|
|
384
|
+
@apply translate-y-4 translate-x-0;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.timeline-item:not(.timeline-item-hidden) {
|
|
388
|
+
@apply opacity-100 translate-x-0 translate-y-0;
|
|
389
|
+
@apply transition-all duration-300 ease-out;
|
|
390
|
+
}
|
|
391
|
+
</style>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export default TimelineItem;
|
|
2
|
+
type TimelineItem = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<$$ComponentProps>): void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* TimelineItem - An individual item within a Timeline component.
|
|
8
|
+
* Provides consistent styling, accessibility features, and various display options.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ```svelte
|
|
12
|
+
* <TimelineItem title="Event Title">
|
|
13
|
+
* Content for the event
|
|
14
|
+
* </TimelineItem>
|
|
15
|
+
*
|
|
16
|
+
* <TimelineItem
|
|
17
|
+
* title="Important Milestone"
|
|
18
|
+
* date="January 15, 2023"
|
|
19
|
+
* icon="<svg>...</svg>"
|
|
20
|
+
* variant="success"
|
|
21
|
+
* >
|
|
22
|
+
* Detailed description of the milestone
|
|
23
|
+
* </TimelineItem>
|
|
24
|
+
*
|
|
25
|
+
* <TimelineItem
|
|
26
|
+
* title="Error Occurred"
|
|
27
|
+
* variant="error"
|
|
28
|
+
* iconBackground="bg-error-500"
|
|
29
|
+
* >
|
|
30
|
+
* Details about the error
|
|
31
|
+
* </TimelineItem>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare const TimelineItem: import("svelte").Component<{
|
|
35
|
+
class?: string;
|
|
36
|
+
id?: any;
|
|
37
|
+
title: any;
|
|
38
|
+
date: any;
|
|
39
|
+
variant: any;
|
|
40
|
+
icon: any;
|
|
41
|
+
iconBackground: any;
|
|
42
|
+
last?: boolean;
|
|
43
|
+
completed?: boolean;
|
|
44
|
+
active?: boolean;
|
|
45
|
+
disabled?: boolean;
|
|
46
|
+
position: any;
|
|
47
|
+
children: any;
|
|
48
|
+
}, {}, "">;
|
|
49
|
+
type $$ComponentProps = {
|
|
50
|
+
class?: string;
|
|
51
|
+
id?: any;
|
|
52
|
+
title: any;
|
|
53
|
+
date: any;
|
|
54
|
+
variant: any;
|
|
55
|
+
icon: any;
|
|
56
|
+
iconBackground: any;
|
|
57
|
+
last?: boolean;
|
|
58
|
+
completed?: boolean;
|
|
59
|
+
active?: boolean;
|
|
60
|
+
disabled?: boolean;
|
|
61
|
+
position: any;
|
|
62
|
+
children: any;
|
|
63
|
+
};
|