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,167 @@
1
+ <!--
2
+ @component
3
+ Table - A component for displaying structured data in rows and columns.
4
+ Provides accessible, responsive tables with sorting, selection, and pagination options.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <Table>
9
+ <TableHead>
10
+ <TableRow>
11
+ <TableHeader>Name</TableHeader>
12
+ <TableHeader>Email</TableHeader>
13
+ <TableHeader>Role</TableHeader>
14
+ </TableRow>
15
+ </TableHead>
16
+ <TableBody>
17
+ <TableRow>
18
+ <TableCell>John Doe</TableCell>
19
+ <TableCell>john@example.com</TableCell>
20
+ <TableCell>Admin</TableCell>
21
+ </TableRow>
22
+ <!-- More rows --\>
23
+ </TableBody>
24
+ </Table>
25
+ ```
26
+ -->
27
+ <script>
28
+ import { setContext } from "svelte"
29
+
30
+ const {
31
+ /** @type {string} - Additional CSS classes */
32
+ class: className = "",
33
+
34
+ /** @type {string} - HTML id for accessibility */
35
+ id = crypto.randomUUID(),
36
+
37
+ /** @type {boolean} - Whether the table has borders */
38
+ bordered = false,
39
+
40
+ /** @type {boolean} - Whether the table has striped rows */
41
+ striped = false,
42
+
43
+ /** @type {boolean} - Whether the table has hover effects on rows */
44
+ hoverable = false,
45
+
46
+ /** @type {boolean} - Whether the table is compact (less padding) */
47
+ compact = false,
48
+
49
+ /** @type {boolean} - Whether the table has a fixed layout */
50
+ fixed = false,
51
+
52
+ /** @type {boolean} - Whether the table is responsive (horizontal scrolling) */
53
+ responsive = true,
54
+
55
+ /** @type {string} - Caption for the table (for accessibility) */
56
+ caption,
57
+
58
+ /** @type {string} - ARIA description for the table */
59
+ ariaDescription,
60
+
61
+ children,
62
+ } = $props()
63
+
64
+ // Provide context for child components
65
+ $effect(() => {
66
+ setContext("table", {
67
+ bordered,
68
+ striped,
69
+ hoverable,
70
+ compact,
71
+ })
72
+ })
73
+ </script>
74
+
75
+ {#if responsive}
76
+ <div class="table-responsive">
77
+ <table
78
+ {id}
79
+ class="
80
+ table
81
+ {bordered ? 'table-bordered' : ''}
82
+ {striped ? 'table-striped' : ''}
83
+ {hoverable ? 'table-hoverable' : ''}
84
+ {compact ? 'table-compact' : ''}
85
+ {fixed ? 'table-fixed' : ''}
86
+ {className}
87
+ "
88
+ aria-describedby={ariaDescription ? `${id}-description` : undefined}
89
+ >
90
+ {#if caption}
91
+ <caption>{caption}</caption>
92
+ {/if}
93
+
94
+ {@render children?.()}
95
+ </table>
96
+
97
+ {#if ariaDescription}
98
+ <div id="{id}-description" class="sr-only">{ariaDescription}</div>
99
+ {/if}
100
+ </div>
101
+ {:else}
102
+ <table
103
+ {id}
104
+ class="
105
+ table
106
+ {bordered ? 'table-bordered' : ''}
107
+ {striped ? 'table-striped' : ''}
108
+ {hoverable ? 'table-hoverable' : ''}
109
+ {compact ? 'table-compact' : ''}
110
+ {fixed ? 'table-fixed' : ''}
111
+ {className}
112
+ "
113
+ aria-describedby={ariaDescription ? `${id}-description` : undefined}
114
+ >
115
+ {#if caption}
116
+ <caption>{caption}</caption>
117
+ {/if}
118
+
119
+ {@render children?.()}
120
+ </table>
121
+
122
+ {#if ariaDescription}
123
+ <div id="{id}-description" class="sr-only">{ariaDescription}</div>
124
+ {/if}
125
+ {/if}
126
+
127
+ <style>
128
+ @reference "../../twintrinsic.css";
129
+
130
+ .table-responsive {
131
+ @apply w-full overflow-x-auto;
132
+ }
133
+
134
+ .table {
135
+ @apply w-full border-collapse text-text dark:text-text;
136
+ }
137
+
138
+ .table-fixed {
139
+ @apply table-fixed;
140
+ }
141
+
142
+ .table-bordered {
143
+ @apply border border-border dark:border-border;
144
+ }
145
+
146
+ .table-bordered :global(th),
147
+ .table-bordered :global(td) {
148
+ @apply border border-border dark:border-border;
149
+ }
150
+
151
+ .table-striped :global(tbody tr:nth-child(odd)) {
152
+ @apply bg-surface dark:bg-surface;
153
+ }
154
+
155
+ .table-hoverable :global(tbody tr) {
156
+ @apply hover:bg-hover dark:hover:bg-hover transition-colors duration-150;
157
+ }
158
+
159
+ .table-compact :global(th),
160
+ .table-compact :global(td) {
161
+ @apply py-1 px-2;
162
+ }
163
+
164
+ .table :global(caption) {
165
+ @apply caption-top text-muted dark:text-muted text-sm py-2;
166
+ }
167
+ </style>
@@ -0,0 +1,56 @@
1
+ export default Table;
2
+ type Table = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * Table - A component for displaying structured data in rows and columns.
8
+ * Provides accessible, responsive tables with sorting, selection, and pagination options.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <Table>
13
+ * <TableHead>
14
+ * <TableRow>
15
+ * <TableHeader>Name</TableHeader>
16
+ * <TableHeader>Email</TableHeader>
17
+ * <TableHeader>Role</TableHeader>
18
+ * </TableRow>
19
+ * </TableHead>
20
+ * <TableBody>
21
+ * <TableRow>
22
+ * <TableCell>John Doe</TableCell>
23
+ * <TableCell>john@example.com</TableCell>
24
+ * <TableCell>Admin</TableCell>
25
+ * </TableRow>
26
+ * <!-- More rows --\>
27
+ * </TableBody>
28
+ * </Table>
29
+ * ```
30
+ */
31
+ declare const Table: import("svelte").Component<{
32
+ class?: string;
33
+ id?: any;
34
+ bordered?: boolean;
35
+ striped?: boolean;
36
+ hoverable?: boolean;
37
+ compact?: boolean;
38
+ fixed?: boolean;
39
+ responsive?: boolean;
40
+ caption: any;
41
+ ariaDescription: any;
42
+ children: any;
43
+ }, {}, "">;
44
+ type $$ComponentProps = {
45
+ class?: string;
46
+ id?: any;
47
+ bordered?: boolean;
48
+ striped?: boolean;
49
+ hoverable?: boolean;
50
+ compact?: boolean;
51
+ fixed?: boolean;
52
+ responsive?: boolean;
53
+ caption: any;
54
+ ariaDescription: any;
55
+ children: any;
56
+ };
@@ -0,0 +1,41 @@
1
+ <!--
2
+ @component
3
+ TableBody - A component for the body section of a Table.
4
+ Provides consistent styling for the table body.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <Table>
9
+ <TableHead>
10
+ <!-- Table header content --\>
11
+ </TableHead>
12
+ <TableBody>
13
+ <TableRow>
14
+ <TableCell>John Doe</TableCell>
15
+ <TableCell>john@example.com</TableCell>
16
+ </TableRow>
17
+ <!-- More rows --\>
18
+ </TableBody>
19
+ </Table>
20
+ ```
21
+ -->
22
+ <script>
23
+ const {
24
+ /** @type {string} - Additional CSS classes */
25
+ class: className = "",
26
+
27
+ children,
28
+ } = $props()
29
+ </script>
30
+
31
+ <tbody class="table-body {className}">
32
+ {@render children?.()}
33
+ </tbody>
34
+
35
+ <style>
36
+ @reference "../../twintrinsic.css";
37
+
38
+ .table-body {
39
+ @apply bg-background dark:bg-background;
40
+ }
41
+ </style>
@@ -0,0 +1,33 @@
1
+ export default TableBody;
2
+ type TableBody = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * TableBody - A component for the body section of a Table.
8
+ * Provides consistent styling for the table body.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <Table>
13
+ * <TableHead>
14
+ * <!-- Table header content --\>
15
+ * </TableHead>
16
+ * <TableBody>
17
+ * <TableRow>
18
+ * <TableCell>John Doe</TableCell>
19
+ * <TableCell>john@example.com</TableCell>
20
+ * </TableRow>
21
+ * <!-- More rows --\>
22
+ * </TableBody>
23
+ * </Table>
24
+ * ```
25
+ */
26
+ declare const TableBody: import("svelte").Component<{
27
+ class?: string;
28
+ children: any;
29
+ }, {}, "">;
30
+ type $$ComponentProps = {
31
+ class?: string;
32
+ children: any;
33
+ };
@@ -0,0 +1,76 @@
1
+ <!--
2
+ @component
3
+ TableCell - A component for data cells within a Table.
4
+ Provides consistent styling for table cells with alignment and truncation options.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <TableCell>John Doe</TableCell>
9
+
10
+ <TableCell align="right">$25.00</TableCell>
11
+
12
+ <TableCell truncate>This is a very long text that will be truncated</TableCell>
13
+ ```
14
+ -->
15
+ <script>
16
+ const {
17
+ /** @type {string} - Additional CSS classes */
18
+ class: className = "",
19
+
20
+ /** @type {string} - Cell alignment (left, center, right) */
21
+ align = "left",
22
+
23
+ /** @type {boolean} - Whether to truncate overflowing text */
24
+ truncate = false,
25
+
26
+ /** @type {boolean} - Whether the cell contains numeric data */
27
+ numeric = false,
28
+
29
+ /** @type {number} - Number of columns this cell spans */
30
+ colspan,
31
+
32
+ /** @type {number} - Number of rows this cell spans */
33
+ rowspan,
34
+
35
+ children,
36
+
37
+ ...restProps
38
+ } = $props()
39
+
40
+ // Determine alignment classes
41
+ const alignClasses = $derived(
42
+ {
43
+ left: "text-left",
44
+ center: "text-center",
45
+ right: "text-right",
46
+ }[align] || "text-left"
47
+ )
48
+ </script>
49
+
50
+ <td
51
+ class="
52
+ table-cell
53
+ {alignClasses}
54
+ {truncate ? 'truncate' : ''}
55
+ {numeric ? 'font-mono tabular-nums' : ''}
56
+ {className}
57
+ "
58
+ colspan={colspan}
59
+ rowspan={rowspan}
60
+ {...restProps}
61
+ >
62
+ {@render children?.()}
63
+ </td>
64
+
65
+ <style>
66
+ @reference "../../twintrinsic.css";
67
+
68
+ .table-cell {
69
+ @apply py-3 px-4 text-text dark:text-text;
70
+ @apply border-t border-border dark:border-border;
71
+ }
72
+
73
+ .truncate {
74
+ @apply max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap;
75
+ }
76
+ </style>
@@ -0,0 +1,36 @@
1
+ export default TableCell;
2
+ type TableCell = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * TableCell - A component for data cells within a Table.
8
+ * Provides consistent styling for table cells with alignment and truncation options.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <TableCell>John Doe</TableCell>
13
+ *
14
+ * <TableCell align="right">$25.00</TableCell>
15
+ *
16
+ * <TableCell truncate>This is a very long text that will be truncated</TableCell>
17
+ * ```
18
+ */
19
+ declare const TableCell: import("svelte").Component<{
20
+ class?: string;
21
+ align?: string;
22
+ truncate?: boolean;
23
+ numeric?: boolean;
24
+ colspan: any;
25
+ rowspan: any;
26
+ children: any;
27
+ } & Record<string, any>, {}, "">;
28
+ type $$ComponentProps = {
29
+ class?: string;
30
+ align?: string;
31
+ truncate?: boolean;
32
+ numeric?: boolean;
33
+ colspan: any;
34
+ rowspan: any;
35
+ children: any;
36
+ } & Record<string, any>;
@@ -0,0 +1,41 @@
1
+ <!--
2
+ @component
3
+ TableHead - A component for the header section of a Table.
4
+ Provides consistent styling for the table header.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <Table>
9
+ <TableHead>
10
+ <TableRow>
11
+ <TableHeader>Name</TableHeader>
12
+ <TableHeader>Email</TableHeader>
13
+ </TableRow>
14
+ </TableHead>
15
+ <TableBody>
16
+ <!-- Table body content --\>
17
+ </TableBody>
18
+ </Table>
19
+ ```
20
+ -->
21
+ <script>
22
+ const {
23
+ /** @type {string} - Additional CSS classes */
24
+ class: className = "",
25
+
26
+ children,
27
+ } = $props()
28
+ </script>
29
+
30
+ <thead class="table-head {className}">
31
+ {@render children?.()}
32
+ </thead>
33
+
34
+ <style>
35
+ @reference "../../twintrinsic.css";
36
+
37
+ .table-head {
38
+ @apply bg-surface dark:bg-surface text-text dark:text-text;
39
+ @apply border-b border-border dark:border-border;
40
+ }
41
+ </style>
@@ -0,0 +1,32 @@
1
+ export default TableHead;
2
+ type TableHead = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * TableHead - A component for the header section of a Table.
8
+ * Provides consistent styling for the table header.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <Table>
13
+ * <TableHead>
14
+ * <TableRow>
15
+ * <TableHeader>Name</TableHeader>
16
+ * <TableHeader>Email</TableHeader>
17
+ * </TableRow>
18
+ * </TableHead>
19
+ * <TableBody>
20
+ * <!-- Table body content --\>
21
+ * </TableBody>
22
+ * </Table>
23
+ * ```
24
+ */
25
+ declare const TableHead: import("svelte").Component<{
26
+ class?: string;
27
+ children: any;
28
+ }, {}, "">;
29
+ type $$ComponentProps = {
30
+ class?: string;
31
+ children: any;
32
+ };
@@ -0,0 +1,148 @@
1
+ <!--
2
+ @component
3
+ TableHeader - A component for header cells within a Table.
4
+ Provides consistent styling for table headers with sorting capabilities.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <TableHeader>Name</TableHeader>
9
+
10
+ <TableHeader sortable sortDirection="asc" onsort={handleSort}>
11
+ Age
12
+ </TableHeader>
13
+
14
+ <TableHeader align="right">Actions</TableHeader>
15
+ ```
16
+ -->
17
+ <script>
18
+ const {
19
+ /** @type {string} - Additional CSS classes */
20
+ class: className = "",
21
+
22
+ /** @type {string} - Column alignment (left, center, right) */
23
+ align = "left",
24
+
25
+ /** @type {boolean} - Whether the column is sortable */
26
+ sortable = false,
27
+
28
+ /** @type {string} - Sort direction (asc, desc, none) */
29
+ sortDirection = "none",
30
+
31
+ /** @type {string} - Column scope (col, row) */
32
+ scope = "col",
33
+
34
+ /** @type {string} - Column width (e.g., '200px', '25%') */
35
+ width,
36
+
37
+ /** @type {boolean} - Whether to truncate overflowing text */
38
+ truncate = false,
39
+
40
+ /** @type {(event: CustomEvent) => void} - Sort event handler */
41
+ onsort,
42
+
43
+ children,
44
+ /** @type {object} - Additional props to pass to the input element */
45
+ ...restProps
46
+ } = $props()
47
+
48
+ /**
49
+ * Handles sort click
50
+ */
51
+ function handleSort() {
52
+ if (!sortable) return
53
+
54
+ // Determine next sort direction
55
+ let nextDirection
56
+
57
+ switch (sortDirection) {
58
+ case "asc":
59
+ nextDirection = "desc"
60
+ break
61
+ case "desc":
62
+ nextDirection = "none"
63
+ break
64
+ default:
65
+ nextDirection = "asc"
66
+ }
67
+
68
+ onsort?.(new CustomEvent("sort", { detail: { direction: nextDirection } }))
69
+ }
70
+
71
+ // Determine alignment classes
72
+ const alignClasses = $derived(
73
+ {
74
+ left: "text-left",
75
+ center: "text-center",
76
+ right: "text-right",
77
+ }[align] || "text-left"
78
+ )
79
+ </script>
80
+
81
+ <th
82
+ class="
83
+ table-header
84
+ {alignClasses}
85
+ {sortable ? 'table-header-sortable' : ''}
86
+ {truncate ? 'truncate' : ''}
87
+ {className}
88
+ "
89
+ {scope}
90
+ style={width ? `width: ${width}` : undefined}
91
+ aria-sort={sortable ? (sortDirection === 'asc' ? 'ascending' : sortDirection === 'desc' ? 'descending' : 'none') : undefined}
92
+ onclick={sortable ? handleSort : undefined}
93
+ {...restProps}
94
+ >
95
+ <div class="table-header-content">
96
+ <span class="table-header-text">
97
+ {@render children?.()}
98
+ </span>
99
+
100
+ {#if sortable}
101
+ <span class="table-sort-icon" aria-hidden="true">
102
+ {#if sortDirection === 'asc'}
103
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
104
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"></path>
105
+ </svg>
106
+ {:else if sortDirection === 'desc'}
107
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
108
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
109
+ </svg>
110
+ {:else}
111
+ <svg class="w-4 h-4 opacity-0 hover:opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
112
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4"></path>
113
+ </svg>
114
+ {/if}
115
+ </span>
116
+ {/if}
117
+ </div>
118
+ </th>
119
+
120
+ <style>
121
+ @reference "../../twintrinsic.css";
122
+
123
+ .table-header {
124
+ @apply py-3 px-4 font-medium;
125
+ @apply bg-surface dark:bg-surface text-text dark:text-text;
126
+ }
127
+
128
+ .table-header-content {
129
+ @apply flex items-center gap-1;
130
+ }
131
+
132
+ .table-header-sortable {
133
+ @apply cursor-pointer select-none;
134
+ @apply hover:bg-hover dark:hover:bg-hover;
135
+ }
136
+
137
+ .table-header-text {
138
+ @apply flex-grow;
139
+ }
140
+
141
+ .table-sort-icon {
142
+ @apply flex-shrink-0;
143
+ }
144
+
145
+ .truncate {
146
+ @apply max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap;
147
+ }
148
+ </style>
@@ -0,0 +1,42 @@
1
+ export default TableHeader;
2
+ type TableHeader = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * TableHeader - A component for header cells within a Table.
8
+ * Provides consistent styling for table headers with sorting capabilities.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <TableHeader>Name</TableHeader>
13
+ *
14
+ * <TableHeader sortable sortDirection="asc" onsort={handleSort}>
15
+ * Age
16
+ * </TableHeader>
17
+ *
18
+ * <TableHeader align="right">Actions</TableHeader>
19
+ * ```
20
+ */
21
+ declare const TableHeader: import("svelte").Component<{
22
+ class?: string;
23
+ align?: string;
24
+ sortable?: boolean;
25
+ sortDirection?: string;
26
+ scope?: string;
27
+ width: any;
28
+ truncate?: boolean;
29
+ onsort: any;
30
+ children: any;
31
+ } & Record<string, any>, {}, "">;
32
+ type $$ComponentProps = {
33
+ class?: string;
34
+ align?: string;
35
+ sortable?: boolean;
36
+ sortDirection?: string;
37
+ scope?: string;
38
+ width: any;
39
+ truncate?: boolean;
40
+ onsort: any;
41
+ children: any;
42
+ } & Record<string, any>;