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.
Files changed (212) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +150 -0
  3. package/dist/App/App.svelte +54 -0
  4. package/dist/App/App.svelte.d.ts +65 -0
  5. package/dist/Section.svelte +25 -0
  6. package/dist/Section.svelte.d.ts +34 -0
  7. package/dist/actions/clickOutside.d.ts +9 -0
  8. package/dist/actions/clickOutside.js +19 -0
  9. package/dist/actions/index.d.ts +1 -0
  10. package/dist/actions/index.js +1 -0
  11. package/dist/components/Accordion/Accordion.svelte +75 -0
  12. package/dist/components/Accordion/Accordion.svelte.d.ts +39 -0
  13. package/dist/components/Accordion/AccordionItem.svelte +150 -0
  14. package/dist/components/Accordion/AccordionItem.svelte.d.ts +30 -0
  15. package/dist/components/App/App.story.md +8 -0
  16. package/dist/components/App/App.story.svelte +170 -0
  17. package/dist/components/App/App.story.svelte.d.ts +22 -0
  18. package/dist/components/App/App.svelte +77 -0
  19. package/dist/components/App/App.svelte.d.ts +66 -0
  20. package/dist/components/App/Split.svelte +346 -0
  21. package/dist/components/App/Split.svelte.d.ts +54 -0
  22. package/dist/components/App/index.d.ts +2 -0
  23. package/dist/components/App/index.js +3 -0
  24. package/dist/components/AppHeader/AppHeader.svelte +439 -0
  25. package/dist/components/AppHeader/AppHeader.svelte.d.ts +24 -0
  26. package/dist/components/Avatar/Avatar.svelte +300 -0
  27. package/dist/components/Avatar/Avatar.svelte.d.ts +48 -0
  28. package/dist/components/Avatar/AvatarGroup.svelte +185 -0
  29. package/dist/components/Avatar/AvatarGroup.svelte.d.ts +46 -0
  30. package/dist/components/Badge/Badge.svelte +186 -0
  31. package/dist/components/Badge/Badge.svelte.d.ts +51 -0
  32. package/dist/components/BottomBar/BottomBar.svelte +146 -0
  33. package/dist/components/BottomBar/BottomBar.svelte.d.ts +38 -0
  34. package/dist/components/Breadcrumb/Breadcrumb.svelte +77 -0
  35. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +42 -0
  36. package/dist/components/Breadcrumb/BreadcrumbItem.svelte +171 -0
  37. package/dist/components/Breadcrumb/BreadcrumbItem.svelte.d.ts +38 -0
  38. package/dist/components/Button/Button.svelte +252 -0
  39. package/dist/components/Button/Button.svelte.d.ts +80 -0
  40. package/dist/components/Button/ButtonGroup.svelte +127 -0
  41. package/dist/components/Button/ButtonGroup.svelte.d.ts +44 -0
  42. package/dist/components/Card/Card.svelte +152 -0
  43. package/dist/components/Card/Card.svelte.d.ts +55 -0
  44. package/dist/components/Carousel/Carousel.svelte +461 -0
  45. package/dist/components/Carousel/Carousel.svelte.d.ts +79 -0
  46. package/dist/components/Carousel/CarouselItem.svelte +149 -0
  47. package/dist/components/Carousel/CarouselItem.svelte.d.ts +35 -0
  48. package/dist/components/Chip/Chip.svelte +288 -0
  49. package/dist/components/Chip/Chip.svelte.d.ts +71 -0
  50. package/dist/components/Chip/ChipGroup.svelte +190 -0
  51. package/dist/components/Chip/ChipGroup.svelte.d.ts +71 -0
  52. package/dist/components/CodeBlock/CodeBlock.svelte +356 -0
  53. package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +44 -0
  54. package/dist/components/CodeBlock/index.d.ts +1 -0
  55. package/dist/components/CodeBlock/index.js +1 -0
  56. package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte +145 -0
  57. package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte.d.ts +44 -0
  58. package/dist/components/CodeEditor/CodeEditor.svelte +229 -0
  59. package/dist/components/CodeEditor/CodeEditor.svelte.d.ts +23 -0
  60. package/dist/components/Combobox/Combobox.svelte +279 -0
  61. package/dist/components/Combobox/Combobox.svelte.d.ts +34 -0
  62. package/dist/components/Container/Container.svelte +45 -0
  63. package/dist/components/Container/Container.svelte.d.ts +36 -0
  64. package/dist/components/DataTable/DataTable.svelte +879 -0
  65. package/dist/components/DataTable/DataTable.svelte.d.ts +102 -0
  66. package/dist/components/Form/AutoComplete.svelte +357 -0
  67. package/dist/components/Form/AutoComplete.svelte.d.ts +73 -0
  68. package/dist/components/Form/Calendar.svelte +429 -0
  69. package/dist/components/Form/Calendar.svelte.d.ts +53 -0
  70. package/dist/components/Form/Checkbox.svelte +196 -0
  71. package/dist/components/Form/Checkbox.svelte.d.ts +50 -0
  72. package/dist/components/Form/ColorPicker.svelte +396 -0
  73. package/dist/components/Form/ColorPicker.svelte.d.ts +43 -0
  74. package/dist/components/Form/Combobox.svelte +645 -0
  75. package/dist/components/Form/Combobox.svelte.d.ts +93 -0
  76. package/dist/components/Form/Dropdown.svelte +773 -0
  77. package/dist/components/Form/Dropdown.svelte.d.ts +81 -0
  78. package/dist/components/Form/FileUpload.svelte +796 -0
  79. package/dist/components/Form/FileUpload.svelte.d.ts +78 -0
  80. package/dist/components/Form/FloatLabel.svelte +245 -0
  81. package/dist/components/Form/FloatLabel.svelte.d.ts +44 -0
  82. package/dist/components/Form/Form.svelte +281 -0
  83. package/dist/components/Form/Form.svelte.d.ts +54 -0
  84. package/dist/components/Form/FormField.svelte +218 -0
  85. package/dist/components/Form/FormField.svelte.d.ts +47 -0
  86. package/dist/components/Form/Input.svelte +340 -0
  87. package/dist/components/Form/Input.svelte.d.ts +79 -0
  88. package/dist/components/Form/InputSwitch.svelte +189 -0
  89. package/dist/components/Form/InputSwitch.svelte.d.ts +46 -0
  90. package/dist/components/Form/InvalidState.svelte +97 -0
  91. package/dist/components/Form/InvalidState.svelte.d.ts +37 -0
  92. package/dist/components/Form/Knob.svelte +537 -0
  93. package/dist/components/Form/Knob.svelte.d.ts +78 -0
  94. package/dist/components/Form/ListInput.svelte +469 -0
  95. package/dist/components/Form/ListInput.svelte.d.ts +70 -0
  96. package/dist/components/Form/Listbox.svelte +513 -0
  97. package/dist/components/Form/Listbox.svelte.d.ts +74 -0
  98. package/dist/components/Form/NumberInput.svelte +452 -0
  99. package/dist/components/Form/NumberInput.svelte.d.ts +82 -0
  100. package/dist/components/Form/Radio.svelte +192 -0
  101. package/dist/components/Form/Radio.svelte.d.ts +53 -0
  102. package/dist/components/Form/RadioGroup.svelte +155 -0
  103. package/dist/components/Form/RadioGroup.svelte.d.ts +48 -0
  104. package/dist/components/Form/Rating.svelte +380 -0
  105. package/dist/components/Form/Rating.svelte.d.ts +64 -0
  106. package/dist/components/Form/Select.svelte +436 -0
  107. package/dist/components/Form/Select.svelte.d.ts +49 -0
  108. package/dist/components/Form/SelectGroup.svelte +34 -0
  109. package/dist/components/Form/SelectGroup.svelte.d.ts +33 -0
  110. package/dist/components/Form/Slider.svelte +622 -0
  111. package/dist/components/Form/Slider.svelte.d.ts +73 -0
  112. package/dist/components/Form/Switch.svelte +192 -0
  113. package/dist/components/Form/Switch.svelte.d.ts +46 -0
  114. package/dist/components/Form/TextInput.svelte +274 -0
  115. package/dist/components/Form/TextInput.svelte.d.ts +74 -0
  116. package/dist/components/Form/Textarea.svelte +207 -0
  117. package/dist/components/Form/Textarea.svelte.d.ts +62 -0
  118. package/dist/components/Icon/Icon.svelte +140 -0
  119. package/dist/components/Icon/Icon.svelte.d.ts +25 -0
  120. package/dist/components/Icon/index.d.ts +1 -0
  121. package/dist/components/Icon/index.js +1 -0
  122. package/dist/components/Lazy/Lazy.svelte +158 -0
  123. package/dist/components/Lazy/Lazy.svelte.d.ts +42 -0
  124. package/dist/components/Masonry/Masonry.svelte +299 -0
  125. package/dist/components/Masonry/Masonry.svelte.d.ts +55 -0
  126. package/dist/components/Menu/Menu/Menu.svelte +65 -0
  127. package/dist/components/Menu/Menu/Menu.svelte.d.ts +17 -0
  128. package/dist/components/Menu/Menu/MenuItem.svelte +90 -0
  129. package/dist/components/Menu/Menu/MenuItem.svelte.d.ts +27 -0
  130. package/dist/components/Modal/Modal.svelte +334 -0
  131. package/dist/components/Modal/Modal.svelte.d.ts +55 -0
  132. package/dist/components/Panel/Card.svelte +141 -0
  133. package/dist/components/Panel/Card.svelte.d.ts +52 -0
  134. package/dist/components/Panel/Hero/Hero.story.md +9 -0
  135. package/dist/components/Panel/Hero/Hero.story.svelte +49 -0
  136. package/dist/components/Panel/Hero/Hero.story.svelte.d.ts +21 -0
  137. package/dist/components/Panel/Hero/Hero.svelte +24 -0
  138. package/dist/components/Panel/Hero/Hero.svelte.d.ts +32 -0
  139. package/dist/components/Panel/LazyPanel.svelte +110 -0
  140. package/dist/components/Panel/LazyPanel.svelte.d.ts +46 -0
  141. package/dist/components/Panel/Panel.svelte +205 -0
  142. package/dist/components/Panel/Panel.svelte.d.ts +23 -0
  143. package/dist/components/Progress/Progress.svelte +220 -0
  144. package/dist/components/Progress/Progress.svelte.d.ts +61 -0
  145. package/dist/components/Separator/Separator.svelte +109 -0
  146. package/dist/components/Separator/Separator.svelte.d.ts +35 -0
  147. package/dist/components/Sidebar/Sidebar.svelte +213 -0
  148. package/dist/components/Sidebar/Sidebar.svelte.d.ts +60 -0
  149. package/dist/components/Skeleton/Skeleton.svelte +170 -0
  150. package/dist/components/Skeleton/Skeleton.svelte.d.ts +48 -0
  151. package/dist/components/Stepper/Stepper.svelte +111 -0
  152. package/dist/components/Stepper/Stepper.svelte.d.ts +54 -0
  153. package/dist/components/Stepper/StepperStep.svelte +369 -0
  154. package/dist/components/Stepper/StepperStep.svelte.d.ts +63 -0
  155. package/dist/components/Table/Table.svelte +167 -0
  156. package/dist/components/Table/Table.svelte.d.ts +56 -0
  157. package/dist/components/Table/TableBody.svelte +41 -0
  158. package/dist/components/Table/TableBody.svelte.d.ts +33 -0
  159. package/dist/components/Table/TableCell.svelte +76 -0
  160. package/dist/components/Table/TableCell.svelte.d.ts +36 -0
  161. package/dist/components/Table/TableHead.svelte +41 -0
  162. package/dist/components/Table/TableHead.svelte.d.ts +32 -0
  163. package/dist/components/Table/TableHeader.svelte +148 -0
  164. package/dist/components/Table/TableHeader.svelte.d.ts +42 -0
  165. package/dist/components/Table/TableRow.svelte +99 -0
  166. package/dist/components/Table/TableRow.svelte.d.ts +40 -0
  167. package/dist/components/Tabs/Tab.svelte +145 -0
  168. package/dist/components/Tabs/Tab.svelte.d.ts +36 -0
  169. package/dist/components/Tabs/TabList.svelte +60 -0
  170. package/dist/components/Tabs/TabList.svelte.d.ts +32 -0
  171. package/dist/components/Tabs/TabPanel.svelte +118 -0
  172. package/dist/components/Tabs/TabPanel.svelte.d.ts +38 -0
  173. package/dist/components/Tabs/Tabs.svelte +287 -0
  174. package/dist/components/Tabs/Tabs.svelte.d.ts +50 -0
  175. package/dist/components/Tag/Tag.svelte +260 -0
  176. package/dist/components/Tag/Tag.svelte.d.ts +54 -0
  177. package/dist/components/Tag/TagGroup.svelte +147 -0
  178. package/dist/components/Tag/TagGroup.svelte.d.ts +62 -0
  179. package/dist/components/ThemeToggle/ThemeToggle.svelte +93 -0
  180. package/dist/components/ThemeToggle/ThemeToggle.svelte.d.ts +12 -0
  181. package/dist/components/Timeline/Timeline.svelte +144 -0
  182. package/dist/components/Timeline/Timeline.svelte.d.ts +48 -0
  183. package/dist/components/Timeline/TimelineItem.svelte +391 -0
  184. package/dist/components/Timeline/TimelineItem.svelte.d.ts +63 -0
  185. package/dist/components/Toast/Toast.svelte +313 -0
  186. package/dist/components/Toast/Toast.svelte.d.ts +44 -0
  187. package/dist/components/Toast/toastStore.d.ts +40 -0
  188. package/dist/components/Toast/toastStore.js +293 -0
  189. package/dist/components/Tooltip/Tooltip.svelte +282 -0
  190. package/dist/components/Tooltip/Tooltip.svelte.d.ts +55 -0
  191. package/dist/components/Tree/Tree.svelte +129 -0
  192. package/dist/components/Tree/Tree.svelte.d.ts +61 -0
  193. package/dist/components/Tree/TreeNode.svelte +332 -0
  194. package/dist/components/Tree/TreeNode.svelte.d.ts +55 -0
  195. package/dist/components/icons/TwintrinsicLogo.svelte +73 -0
  196. package/dist/components/icons/TwintrinsicLogo.svelte.d.ts +17 -0
  197. package/dist/components/icons/twintrinsic-source.svg +73 -0
  198. package/dist/components/icons/twintrinsic.svg +38 -0
  199. package/dist/docs/EventsTable.svelte +86 -0
  200. package/dist/docs/EventsTable.svelte.d.ts +27 -0
  201. package/dist/docs/PropsTable.svelte +103 -0
  202. package/dist/docs/PropsTable.svelte.d.ts +28 -0
  203. package/dist/docs/index.d.ts +2 -0
  204. package/dist/docs/index.js +2 -0
  205. package/dist/helpers/detectLanguage.d.ts +6 -0
  206. package/dist/helpers/detectLanguage.js +60 -0
  207. package/dist/helpers/index.d.ts +1 -0
  208. package/dist/helpers/index.js +1 -0
  209. package/dist/index.d.ts +86 -0
  210. package/dist/index.js +94 -0
  211. package/dist/twintrinsic.css +347 -0
  212. package/package.json +98 -0
@@ -0,0 +1,147 @@
1
+ <!--
2
+ @component
3
+ TagGroup - A component for managing multiple Tag components.
4
+ Provides consistent spacing, layout options, and accessibility features.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <TagGroup>
9
+ <Tag>Tag 1</Tag>
10
+ <Tag>Tag 2</Tag>
11
+ <Tag>Tag 3</Tag>
12
+ </TagGroup>
13
+
14
+ <TagGroup variant="primary" size="lg">
15
+ <Tag>JavaScript</Tag>
16
+ <Tag>TypeScript</Tag>
17
+ <Tag>Svelte</Tag>
18
+ </TagGroup>
19
+
20
+ <TagGroup
21
+ items={['Red', 'Green', 'Blue']}
22
+ let:item
23
+ ondismiss={(e) => handleDismiss(e.detail)}
24
+ >
25
+ <Tag dismissible>{item}</Tag>
26
+ </TagGroup>
27
+ ```
28
+ -->
29
+ <script>
30
+ import { setContext } from "svelte"
31
+
32
+ const {
33
+ /** @type {string} - Additional CSS classes */
34
+ class: className = "",
35
+
36
+ /** @type {string} - HTML id for accessibility */
37
+ id = crypto.randomUUID(),
38
+
39
+ /** @type {string} - Visual style variant passed to all tags */
40
+ variant = "default",
41
+
42
+ /** @type {string} - Size passed to all tags (sm, md, lg) */
43
+ size = "md",
44
+
45
+ /** @type {boolean} - Whether all tags are dismissible */
46
+ dismissible = false,
47
+
48
+ /** @type {boolean} - Whether all tags are outlines */
49
+ outline = false,
50
+
51
+ /** @type {boolean} - Whether all tags are pills */
52
+ pill = false,
53
+
54
+ /** @type {boolean} - Whether all tags are clickable */
55
+ clickable = false,
56
+
57
+ /** @type {string} - Direction of the tag group (horizontal, vertical) */
58
+ direction = "horizontal",
59
+
60
+ /** @type {Array} - Items to render as tags */
61
+ items = [],
62
+
63
+ /** @type {string} - ARIA label for the tag group */
64
+ ariaLabel = "Tag group",
65
+
66
+ /** @type {(event: CustomEvent) => void} - Dismiss event handler */
67
+ ondismiss,
68
+
69
+ children,
70
+ } = $props()
71
+
72
+ // Provide context for child tags
73
+ $effect(() => {
74
+ setContext("tagGroup", {
75
+ variant,
76
+ size,
77
+ dismissible,
78
+ outline,
79
+ pill,
80
+ clickable,
81
+ })
82
+ })
83
+
84
+ /**
85
+ * Handles removing a tag
86
+ * @param {number} index - Index of the tag to remove
87
+ */
88
+ function handleDismiss(index) {
89
+ if (items.length > 0) {
90
+ const removedItem = items[index]
91
+ ondismiss?.(new CustomEvent("dismiss", { detail: { item: removedItem, index } }))
92
+ }
93
+ }
94
+ </script>
95
+
96
+ <div
97
+ {id}
98
+ class="
99
+ tag-group
100
+ tag-group-{direction}
101
+ {className}
102
+ "
103
+ role="group"
104
+ aria-label={ariaLabel}
105
+ >
106
+ {#if items.length > 0}
107
+ {#each items as item, index}
108
+ <div class="tag-group-item">
109
+ <svelte:component
110
+ this={children?.item}
111
+ {item}
112
+ {index}
113
+ variant={variant}
114
+ size={size}
115
+ dismissible={dismissible}
116
+ outline={outline}
117
+ pill={pill}
118
+ clickable={clickable}
119
+ ondismiss={() => handleDismiss(index)}
120
+ />
121
+ </div>
122
+ {/each}
123
+ {:else}
124
+ {@render children?.()}
125
+ {/if}
126
+ </div>
127
+
128
+ <style>
129
+ @reference "../../twintrinsic.css";
130
+
131
+ .tag-group {
132
+ @apply flex flex-wrap;
133
+ @apply gap-2;
134
+ }
135
+
136
+ .tag-group-horizontal {
137
+ @apply flex-row;
138
+ }
139
+
140
+ .tag-group-vertical {
141
+ @apply flex-col;
142
+ }
143
+
144
+ .tag-group-item {
145
+ @apply flex-none;
146
+ }
147
+ </style>
@@ -0,0 +1,62 @@
1
+ export default TagGroup;
2
+ type TagGroup = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * TagGroup - A component for managing multiple Tag components.
8
+ * Provides consistent spacing, layout options, and accessibility features.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <TagGroup>
13
+ * <Tag>Tag 1</Tag>
14
+ * <Tag>Tag 2</Tag>
15
+ * <Tag>Tag 3</Tag>
16
+ * </TagGroup>
17
+ *
18
+ * <TagGroup variant="primary" size="lg">
19
+ * <Tag>JavaScript</Tag>
20
+ * <Tag>TypeScript</Tag>
21
+ * <Tag>Svelte</Tag>
22
+ * </TagGroup>
23
+ *
24
+ * <TagGroup
25
+ * items={['Red', 'Green', 'Blue']}
26
+ * let:item
27
+ * ondismiss={(e) => handleDismiss(e.detail)}
28
+ * >
29
+ * <Tag dismissible>{item}</Tag>
30
+ * </TagGroup>
31
+ * ```
32
+ */
33
+ declare const TagGroup: import("svelte").Component<{
34
+ class?: string;
35
+ id?: any;
36
+ variant?: string;
37
+ size?: string;
38
+ dismissible?: boolean;
39
+ outline?: boolean;
40
+ pill?: boolean;
41
+ clickable?: boolean;
42
+ direction?: string;
43
+ items?: any[];
44
+ ariaLabel?: string;
45
+ ondismiss: any;
46
+ children: any;
47
+ }, {}, "">;
48
+ type $$ComponentProps = {
49
+ class?: string;
50
+ id?: any;
51
+ variant?: string;
52
+ size?: string;
53
+ dismissible?: boolean;
54
+ outline?: boolean;
55
+ pill?: boolean;
56
+ clickable?: boolean;
57
+ direction?: string;
58
+ items?: any[];
59
+ ariaLabel?: string;
60
+ ondismiss: any;
61
+ children: any;
62
+ };
@@ -0,0 +1,93 @@
1
+ <!--
2
+ @component
3
+ ThemeToggle - A toggle button for switching between light and dark themes.
4
+ Supports keyboard interaction and ARIA labels.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <ThemeToggle />
9
+ ```
10
+ -->
11
+ <script lang="ts">
12
+ import { onMount } from 'svelte';
13
+
14
+ let isDarkMode = $state(false);
15
+
16
+ onMount(() => {
17
+ // Initialize theme from localStorage or system preference
18
+ const savedTheme = localStorage.getItem('theme');
19
+ const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
20
+
21
+ isDarkMode = savedTheme ? savedTheme === 'dark' : prefersDark;
22
+ applyTheme(isDarkMode);
23
+ });
24
+
25
+ function applyTheme(dark: boolean) {
26
+ const root = document.documentElement;
27
+ if (dark) {
28
+ root.setAttribute('data-theme', 'dark');
29
+ root.classList.add('dark');
30
+ } else {
31
+ root.removeAttribute('data-theme');
32
+ root.classList.remove('dark');
33
+ }
34
+ localStorage.setItem('theme', dark ? 'dark' : 'light');
35
+ }
36
+ </script>
37
+
38
+ <label class="tw-theme-toggle" data-twintrinsic-theme-toggle aria-label="Toggle theme">
39
+ <input
40
+ type="checkbox"
41
+ class="tw-theme"
42
+ checked={isDarkMode}
43
+ onchange={(e) => {
44
+ isDarkMode = e.currentTarget.checked;
45
+ applyTheme(isDarkMode);
46
+ }}
47
+ aria-label={isDarkMode ? 'Switch to light theme' : 'Switch to dark theme'}
48
+ />
49
+ <span class="tw-theme-toggle-button" aria-hidden="true">
50
+ <svg class="tw-theme-toggle-icon tw-theme-toggle-icon-moon" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
51
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
52
+ </svg>
53
+ <svg class="tw-theme-toggle-icon tw-theme-toggle-icon-sun" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
54
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
55
+ </svg>
56
+ </span>
57
+ </label>
58
+
59
+ <style>
60
+ @reference '../../twintrinsic.css';
61
+
62
+ .tw-theme-toggle {
63
+ @apply inline-flex;
64
+ }
65
+
66
+ .tw-theme {
67
+ @apply sr-only;
68
+ }
69
+
70
+ .tw-theme-toggle-button {
71
+ @apply p-2 rounded-md text-muted hover:text-text hover:bg-hover focus:outline-none focus:ring-2 focus:ring-primary-500 transition-colors duration-200;
72
+ }
73
+
74
+ .tw-theme-toggle-icon {
75
+ @apply w-5 h-5;
76
+ }
77
+
78
+ .tw-theme-toggle-icon-sun {
79
+ @apply hidden;
80
+ }
81
+
82
+ .tw-theme:focus-visible + .tw-theme-toggle-button {
83
+ @apply ring-2 ring-primary-500;
84
+ }
85
+
86
+ .tw-theme:checked + .tw-theme-toggle-button .tw-theme-toggle-icon-moon {
87
+ @apply hidden;
88
+ }
89
+
90
+ .tw-theme:checked + .tw-theme-toggle-button .tw-theme-toggle-icon-sun {
91
+ @apply inline;
92
+ }
93
+ </style>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ThemeToggle - A toggle button for switching between light and dark themes.
3
+ * Supports keyboard interaction and ARIA labels.
4
+ *
5
+ * Usage:
6
+ * ```svelte
7
+ * <ThemeToggle />
8
+ * ```
9
+ */
10
+ declare const ThemeToggle: import("svelte").Component<Record<string, never>, {}, "">;
11
+ type ThemeToggle = ReturnType<typeof ThemeToggle>;
12
+ export default ThemeToggle;
@@ -0,0 +1,144 @@
1
+ <!--
2
+ @component
3
+ Timeline - A component for displaying chronological events or steps.
4
+ Provides consistent styling, accessibility features, and various display options.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <Timeline>
9
+ <TimelineItem title="Step 1">Content for step 1</TimelineItem>
10
+ <TimelineItem title="Step 2">Content for step 2</TimelineItem>
11
+ <TimelineItem title="Step 3">Content for step 3</TimelineItem>
12
+ </Timeline>
13
+
14
+ <Timeline variant="primary" position="alternate">
15
+ <TimelineItem title="Event 1" date="Jan 2023">Event details</TimelineItem>
16
+ <TimelineItem title="Event 2" date="Feb 2023" variant="success">Event details</TimelineItem>
17
+ <TimelineItem title="Event 3" date="Mar 2023" variant="error">Event details</TimelineItem>
18
+ </Timeline>
19
+ ```
20
+ -->
21
+ <script>
22
+ import { setContext } from "svelte"
23
+
24
+ const {
25
+ /** @type {string} - Additional CSS classes */
26
+ class: className = "",
27
+
28
+ /** @type {string} - HTML id for accessibility */
29
+ id = crypto.randomUUID(),
30
+
31
+ /** @type {string} - Visual style variant for all items */
32
+ variant = "primary",
33
+
34
+ /** @type {string} - Position of content relative to the line (left, right, alternate) */
35
+ position = "left",
36
+
37
+ /** @type {string} - Orientation of the timeline (vertical, horizontal) */
38
+ orientation = "vertical",
39
+
40
+ /** @type {boolean} - Whether to reverse the order of items */
41
+ reverse = false,
42
+
43
+ /** @type {boolean} - Whether to show connecting lines between items */
44
+ connected = true,
45
+
46
+ /** @type {boolean} - Whether to animate items when they enter the viewport */
47
+ animated = false,
48
+
49
+ /** @type {string} - ARIA label for the timeline */
50
+ ariaLabel = "Timeline",
51
+
52
+ children,
53
+ } = $props()
54
+
55
+ // Provide context for child components
56
+ $effect(() => {
57
+ setContext("timeline", {
58
+ variant,
59
+ position,
60
+ orientation,
61
+ connected,
62
+ animated,
63
+ })
64
+ })
65
+ </script>
66
+
67
+ <div
68
+ {id}
69
+ class="
70
+ timeline
71
+ timeline-{orientation}
72
+ timeline-position-{position}
73
+ {reverse ? 'timeline-reverse' : ''}
74
+ {connected ? 'timeline-connected' : ''}
75
+ {animated ? 'timeline-animated' : ''}
76
+ {className}
77
+ "
78
+ role="list"
79
+ aria-label={ariaLabel}
80
+ >
81
+ {@render children?.()}
82
+ </div>
83
+
84
+ <style>
85
+ @reference "../../twintrinsic.css";
86
+
87
+ .timeline {
88
+ @apply relative w-full;
89
+ }
90
+
91
+ .timeline-vertical {
92
+ @apply flex flex-col;
93
+ }
94
+
95
+ .timeline-horizontal {
96
+ @apply flex flex-row;
97
+ }
98
+
99
+ .timeline-reverse.timeline-vertical {
100
+ @apply flex-col-reverse;
101
+ }
102
+
103
+ .timeline-reverse.timeline-horizontal {
104
+ @apply flex-row-reverse;
105
+ }
106
+
107
+ /* Connected line for vertical timeline */
108
+ .timeline-vertical.timeline-connected::before {
109
+ content: '';
110
+ @apply absolute top-0 bottom-0 w-0.5;
111
+ @apply bg-border dark:bg-border;
112
+ }
113
+
114
+ .timeline-vertical.timeline-position-left::before {
115
+ @apply left-6;
116
+ }
117
+
118
+ .timeline-vertical.timeline-position-right::before {
119
+ @apply right-6;
120
+ }
121
+
122
+ .timeline-vertical.timeline-position-alternate::before {
123
+ @apply left-1/2 -ml-px;
124
+ }
125
+
126
+ /* Connected line for horizontal timeline */
127
+ .timeline-horizontal.timeline-connected::before {
128
+ content: '';
129
+ @apply absolute left-0 right-0 h-0.5;
130
+ @apply bg-border dark:bg-border;
131
+ }
132
+
133
+ .timeline-horizontal.timeline-position-left::before {
134
+ @apply top-6;
135
+ }
136
+
137
+ .timeline-horizontal.timeline-position-right::before {
138
+ @apply bottom-6;
139
+ }
140
+
141
+ .timeline-horizontal.timeline-position-alternate::before {
142
+ @apply top-1/2 -mt-px;
143
+ }
144
+ </style>
@@ -0,0 +1,48 @@
1
+ export default Timeline;
2
+ type Timeline = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * Timeline - A component for displaying chronological events or steps.
8
+ * Provides consistent styling, accessibility features, and various display options.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <Timeline>
13
+ * <TimelineItem title="Step 1">Content for step 1</TimelineItem>
14
+ * <TimelineItem title="Step 2">Content for step 2</TimelineItem>
15
+ * <TimelineItem title="Step 3">Content for step 3</TimelineItem>
16
+ * </Timeline>
17
+ *
18
+ * <Timeline variant="primary" position="alternate">
19
+ * <TimelineItem title="Event 1" date="Jan 2023">Event details</TimelineItem>
20
+ * <TimelineItem title="Event 2" date="Feb 2023" variant="success">Event details</TimelineItem>
21
+ * <TimelineItem title="Event 3" date="Mar 2023" variant="error">Event details</TimelineItem>
22
+ * </Timeline>
23
+ * ```
24
+ */
25
+ declare const Timeline: import("svelte").Component<{
26
+ class?: string;
27
+ id?: any;
28
+ variant?: string;
29
+ position?: string;
30
+ orientation?: string;
31
+ reverse?: boolean;
32
+ connected?: boolean;
33
+ animated?: boolean;
34
+ ariaLabel?: string;
35
+ children: any;
36
+ }, {}, "">;
37
+ type $$ComponentProps = {
38
+ class?: string;
39
+ id?: any;
40
+ variant?: string;
41
+ position?: string;
42
+ orientation?: string;
43
+ reverse?: boolean;
44
+ connected?: boolean;
45
+ animated?: boolean;
46
+ ariaLabel?: string;
47
+ children: any;
48
+ };