@placeholderco/placeholder-ui 1.0.11 → 2.0.0

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 (289) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +134 -130
  3. package/dist/app.css +178 -0
  4. package/dist/bootstrap.min.css +3600 -0
  5. package/dist/cards/GitCard.svelte +115 -0
  6. package/dist/cards/GitCard.svelte.d.ts +22 -0
  7. package/dist/display/Avatar.svelte +29 -17
  8. package/dist/display/Avatar.svelte.d.ts +12 -2
  9. package/dist/display/LinkCollection.svelte +40 -18
  10. package/dist/display/LinkCollection.svelte.d.ts +9 -2
  11. package/dist/display/Paper.svelte +31 -19
  12. package/dist/display/Paper.svelte.d.ts +12 -3
  13. package/dist/display/alert/Alert.svelte +129 -0
  14. package/dist/display/alert/Alert.svelte.d.ts +15 -0
  15. package/dist/display/alert/AlertVariant.d.ts +1 -0
  16. package/dist/display/alert/AlertVariant.js +1 -0
  17. package/dist/display/filetree/FileTree.svelte +259 -0
  18. package/dist/display/filetree/FileTree.svelte.d.ts +76 -0
  19. package/dist/display/filetree/FileTreeItem.svelte +396 -0
  20. package/dist/display/filetree/FileTreeItem.svelte.d.ts +40 -0
  21. package/dist/display/filetree/FileTreeNode.d.ts +46 -0
  22. package/dist/display/filetree/FileTreeNode.js +115 -0
  23. package/dist/display/filetree/index.d.ts +5 -0
  24. package/dist/display/filetree/index.js +3 -0
  25. package/dist/editors/CodeMirror.svelte +306 -0
  26. package/dist/editors/CodeMirror.svelte.d.ts +31 -0
  27. package/dist/editors/tiptap/LinkActionMenu.svelte +307 -0
  28. package/dist/editors/tiptap/LinkActionMenu.svelte.d.ts +8 -0
  29. package/dist/editors/tiptap/TipTap.svelte +856 -0
  30. package/dist/editors/tiptap/TipTap.svelte.d.ts +54 -0
  31. package/dist/editors/tiptap/TipTapBubble.svelte +790 -0
  32. package/dist/editors/tiptap/TipTapBubble.svelte.d.ts +44 -0
  33. package/dist/editors/tiptap/collaboration.d.ts +55 -0
  34. package/dist/editors/tiptap/collaboration.js +1 -0
  35. package/dist/editors/tiptap/extensions/Alert.d.ts +18 -0
  36. package/dist/editors/tiptap/extensions/Alert.js +72 -0
  37. package/dist/editors/tiptap/extensions/CodeBlockEditor.d.ts +21 -0
  38. package/dist/editors/tiptap/extensions/CodeBlockEditor.js +326 -0
  39. package/dist/editors/tiptap/extensions/Div.d.ts +19 -0
  40. package/dist/editors/tiptap/extensions/Div.js +89 -0
  41. package/dist/editors/tiptap/extensions/Span.d.ts +5 -0
  42. package/dist/editors/tiptap/extensions/Span.js +56 -0
  43. package/dist/editors/tiptap/extensions/codeBlockEditor.css +236 -0
  44. package/dist/editors/tiptap/extensions/codeBlockLanguages.d.ts +17 -0
  45. package/dist/editors/tiptap/extensions/codeBlockLanguages.js +124 -0
  46. package/dist/editors/tiptap/extensions/index.d.ts +7 -0
  47. package/dist/editors/tiptap/extensions/index.js +5 -0
  48. package/dist/editors/tiptap/toolbar/AlertButton.svelte +261 -0
  49. package/dist/editors/tiptap/toolbar/AlertButton.svelte.d.ts +7 -0
  50. package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte +18 -0
  51. package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte.d.ts +7 -0
  52. package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte +18 -0
  53. package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte.d.ts +7 -0
  54. package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte +18 -0
  55. package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte.d.ts +7 -0
  56. package/dist/editors/tiptap/toolbar/AlignRightButton.svelte +18 -0
  57. package/dist/editors/tiptap/toolbar/AlignRightButton.svelte.d.ts +7 -0
  58. package/dist/editors/tiptap/toolbar/BoldButton.svelte +18 -0
  59. package/dist/editors/tiptap/toolbar/BoldButton.svelte.d.ts +7 -0
  60. package/dist/editors/tiptap/toolbar/BulletListButton.svelte +18 -0
  61. package/dist/editors/tiptap/toolbar/BulletListButton.svelte.d.ts +7 -0
  62. package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte +18 -0
  63. package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte.d.ts +7 -0
  64. package/dist/editors/tiptap/toolbar/CodeButton.svelte +18 -0
  65. package/dist/editors/tiptap/toolbar/CodeButton.svelte.d.ts +7 -0
  66. package/dist/editors/tiptap/toolbar/ColorButton.svelte +299 -0
  67. package/dist/editors/tiptap/toolbar/ColorButton.svelte.d.ts +20 -0
  68. package/dist/editors/tiptap/toolbar/DocumentButton.svelte +58 -0
  69. package/dist/editors/tiptap/toolbar/DocumentButton.svelte.d.ts +9 -0
  70. package/dist/editors/tiptap/toolbar/HeadingButton.svelte +30 -0
  71. package/dist/editors/tiptap/toolbar/HeadingButton.svelte.d.ts +8 -0
  72. package/dist/editors/tiptap/toolbar/HtmlButton.svelte +68 -0
  73. package/dist/editors/tiptap/toolbar/HtmlButton.svelte.d.ts +7 -0
  74. package/dist/editors/tiptap/toolbar/ImageButton.svelte +54 -0
  75. package/dist/editors/tiptap/toolbar/ImageButton.svelte.d.ts +8 -0
  76. package/dist/editors/tiptap/toolbar/ItalicButton.svelte +18 -0
  77. package/dist/editors/tiptap/toolbar/ItalicButton.svelte.d.ts +7 -0
  78. package/dist/editors/tiptap/toolbar/LinkButton.svelte +257 -0
  79. package/dist/editors/tiptap/toolbar/LinkButton.svelte.d.ts +7 -0
  80. package/dist/editors/tiptap/toolbar/OrderedListButton.svelte +18 -0
  81. package/dist/editors/tiptap/toolbar/OrderedListButton.svelte.d.ts +7 -0
  82. package/dist/editors/tiptap/toolbar/RedoButton.svelte +18 -0
  83. package/dist/editors/tiptap/toolbar/RedoButton.svelte.d.ts +7 -0
  84. package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte +18 -0
  85. package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte.d.ts +7 -0
  86. package/dist/editors/tiptap/toolbar/SubscriptButton.svelte +18 -0
  87. package/dist/editors/tiptap/toolbar/SubscriptButton.svelte.d.ts +7 -0
  88. package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte +18 -0
  89. package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte.d.ts +7 -0
  90. package/dist/editors/tiptap/toolbar/TableButton.svelte +258 -0
  91. package/dist/editors/tiptap/toolbar/TableButton.svelte.d.ts +7 -0
  92. package/dist/editors/tiptap/toolbar/ToolbarButton.svelte +84 -0
  93. package/dist/editors/tiptap/toolbar/ToolbarButton.svelte.d.ts +10 -0
  94. package/dist/editors/tiptap/toolbar/UnderlineButton.svelte +18 -0
  95. package/dist/editors/tiptap/toolbar/UnderlineButton.svelte.d.ts +7 -0
  96. package/dist/editors/tiptap/toolbar/UndoButton.svelte +18 -0
  97. package/dist/editors/tiptap/toolbar/UndoButton.svelte.d.ts +7 -0
  98. package/dist/form/Autocomplete.svelte +270 -137
  99. package/dist/form/Autocomplete.svelte.d.ts +58 -10
  100. package/dist/form/AutocompleteMulti.svelte +385 -227
  101. package/dist/form/AutocompleteMulti.svelte.d.ts +59 -10
  102. package/dist/form/Checkbox.svelte +124 -43
  103. package/dist/form/Checkbox.svelte.d.ts +26 -2
  104. package/dist/form/Chips.svelte +47 -17
  105. package/dist/form/Chips.svelte.d.ts +24 -3
  106. package/dist/form/ComboBox.svelte +30 -20
  107. package/dist/form/ComboBox.svelte.d.ts +1 -1
  108. package/dist/form/ComboBoxItemBuilder.svelte +161 -188
  109. package/dist/form/ComboBoxItemBuilder.svelte.d.ts +19 -2
  110. package/dist/form/ComboBoxMulti.svelte +38 -24
  111. package/dist/form/ComboBoxMulti.svelte.d.ts +1 -1
  112. package/dist/form/CronBuilder.svelte +84 -67
  113. package/dist/form/CronBuilder.svelte.d.ts +16 -3
  114. package/dist/form/DatePicker.svelte +177 -191
  115. package/dist/form/DatePicker.svelte.d.ts +17 -2
  116. package/dist/form/DateRangePicker.svelte +775 -0
  117. package/dist/form/DateRangePicker.svelte.d.ts +23 -0
  118. package/dist/form/DateTimePicker.svelte +168 -209
  119. package/dist/form/DateTimePicker.svelte.d.ts +10 -2
  120. package/dist/form/FormGroup.svelte +33 -10
  121. package/dist/form/FormGroup.svelte.d.ts +12 -2
  122. package/dist/form/Number.svelte +71 -29
  123. package/dist/form/Number.svelte.d.ts +39 -6
  124. package/dist/form/Radio.svelte +174 -0
  125. package/dist/form/Radio.svelte.d.ts +21 -0
  126. package/dist/form/RadioGroup.svelte +52 -138
  127. package/dist/form/RadioGroup.svelte.d.ts +19 -2
  128. package/dist/form/SegmentedControl.svelte +103 -57
  129. package/dist/form/SegmentedControl.svelte.d.ts +12 -2
  130. package/dist/form/Select.svelte +160 -229
  131. package/dist/form/Select.svelte.d.ts +35 -6
  132. package/dist/form/SelectMulti.svelte +166 -277
  133. package/dist/form/SelectMulti.svelte.d.ts +37 -6
  134. package/dist/form/Slider.svelte +185 -268
  135. package/dist/form/Slider.svelte.d.ts +33 -16
  136. package/dist/form/StringArrayBuilder.svelte +249 -0
  137. package/dist/form/StringArrayBuilder.svelte.d.ts +15 -0
  138. package/dist/form/Switch.svelte +164 -106
  139. package/dist/form/Switch.svelte.d.ts +22 -3
  140. package/dist/form/TextArea.svelte +80 -45
  141. package/dist/form/TextArea.svelte.d.ts +35 -10
  142. package/dist/form/Textbox.svelte +80 -47
  143. package/dist/form/Textbox.svelte.d.ts +41 -8
  144. package/dist/form/TimePicker.svelte +42 -47
  145. package/dist/form/TimePicker.svelte.d.ts +12 -2
  146. package/dist/form/comboBoxCore.svelte.d.ts +99 -0
  147. package/dist/form/comboBoxCore.svelte.js +243 -0
  148. package/dist/icon/Icon.svelte +8 -3
  149. package/dist/icon/Icon.svelte.d.ts +8 -3
  150. package/dist/icon/cube-send.svg +1 -0
  151. package/dist/icon/file-type-bmp.svg +1 -0
  152. package/dist/icon/file-type-csv.svg +1 -0
  153. package/dist/icon/file-type-doc.svg +1 -0
  154. package/dist/icon/file-type-docx.svg +1 -0
  155. package/dist/icon/file-type-jpg.svg +1 -0
  156. package/dist/icon/file-type-pdf.svg +1 -0
  157. package/dist/icon/file-type-png.svg +1 -0
  158. package/dist/icon/file-type-ppt.svg +1 -0
  159. package/dist/icon/file-type-svg.svg +1 -0
  160. package/dist/icon/file-type-txt.svg +1 -0
  161. package/dist/icon/file-type-xls.svg +1 -0
  162. package/dist/icon/file-type-zip.svg +1 -0
  163. package/dist/icon/index.d.ts +166 -145
  164. package/dist/icon/index.js +166 -146
  165. package/dist/icon/layout-sidebar-left-collapse.svg +1 -0
  166. package/dist/icon/layout-sidebar-left-expand.svg +1 -0
  167. package/dist/icon/logo-placeholder.svg +6 -0
  168. package/dist/icon/paperclip.svg +1 -0
  169. package/dist/icon/source-code.svg +1 -0
  170. package/dist/icon/sun-moon.svg +1 -0
  171. package/dist/icon/table.svg +6 -0
  172. package/dist/icon/thumb-down.svg +1 -0
  173. package/dist/icon/thumb-up.svg +1 -0
  174. package/dist/index.d.ts +93 -22
  175. package/dist/index.js +28 -27
  176. package/dist/layout/AppShell.svelte +12 -162
  177. package/dist/layout/AppShell.svelte.d.ts +6 -27
  178. package/dist/layout/CustomNavbar.svelte +9 -7
  179. package/dist/layout/CustomNavbar.svelte.d.ts +4 -2
  180. package/dist/layout/Navbar.svelte +158 -110
  181. package/dist/layout/Navbar.svelte.d.ts +26 -12
  182. package/dist/layout/NavbarItemDisplay.svelte +2 -2
  183. package/dist/layout/NavbarItemView.svelte +182 -0
  184. package/dist/layout/NavbarItemView.svelte.d.ts +10 -0
  185. package/dist/layout/Sidenav.svelte +280 -341
  186. package/dist/layout/Sidenav.svelte.d.ts +36 -4
  187. package/dist/models/ComboBoxItem.d.ts +2 -0
  188. package/dist/models/Employee.d.ts +53 -0
  189. package/dist/models/Employee.js +23 -0
  190. package/dist/models/Hyperlink.d.ts +3 -1
  191. package/dist/models/LinkCollectionItem.d.ts +3 -1
  192. package/dist/models/NavbarItem.d.ts +6 -2
  193. package/dist/theme.svelte.d.ts +0 -1
  194. package/dist/theme.svelte.js +46 -58
  195. package/dist/ui/Accordion.svelte +81 -242
  196. package/dist/ui/Accordion.svelte.d.ts +37 -14
  197. package/dist/ui/AccordionItem.svelte +303 -0
  198. package/dist/ui/AccordionItem.svelte.d.ts +21 -0
  199. package/dist/ui/ActionIcon.svelte +25 -21
  200. package/dist/ui/ActionIcon.svelte.d.ts +15 -2
  201. package/dist/ui/Badge.svelte +170 -161
  202. package/dist/ui/Badge.svelte.d.ts +16 -4
  203. package/dist/ui/Button.svelte +178 -205
  204. package/dist/ui/Button.svelte.d.ts +19 -2
  205. package/dist/ui/ButtonVariant.d.ts +15 -1
  206. package/dist/ui/ContextMenu.svelte +146 -0
  207. package/dist/ui/ContextMenu.svelte.d.ts +37 -0
  208. package/dist/ui/ContextMenuList.svelte +188 -0
  209. package/dist/ui/ContextMenuList.svelte.d.ts +12 -0
  210. package/dist/ui/Dialog.svelte +183 -104
  211. package/dist/ui/Dialog.svelte.d.ts +21 -2
  212. package/dist/ui/Drawer.svelte +237 -184
  213. package/dist/ui/Drawer.svelte.d.ts +20 -2
  214. package/dist/ui/Dropdown.svelte +24 -14
  215. package/dist/ui/Dropdown.svelte.d.ts +11 -2
  216. package/dist/ui/Dropzone.svelte +159 -57
  217. package/dist/ui/Dropzone.svelte.d.ts +29 -2
  218. package/dist/ui/Link.svelte +12 -4
  219. package/dist/ui/Link.svelte.d.ts +8 -2
  220. package/dist/ui/Loader.svelte +23 -18
  221. package/dist/ui/Loader.svelte.d.ts +5 -2
  222. package/dist/ui/Logo.svelte +37 -0
  223. package/dist/ui/Logo.svelte.d.ts +16 -0
  224. package/dist/ui/MultiSortable.svelte +287 -0
  225. package/dist/ui/MultiSortable.svelte.d.ts +50 -0
  226. package/dist/ui/Pagination.svelte +12 -6
  227. package/dist/ui/Pagination.svelte.d.ts +6 -2
  228. package/dist/ui/Popover.svelte +43 -65
  229. package/dist/ui/Popover.svelte.d.ts +14 -5
  230. package/dist/ui/ProgressBar.svelte +169 -0
  231. package/dist/ui/ProgressBar.svelte.d.ts +30 -0
  232. package/dist/ui/ProgressBarVariant.d.ts +7 -0
  233. package/dist/ui/ProgressBarVariant.js +1 -0
  234. package/dist/ui/SegmentedControl.svelte +0 -0
  235. package/dist/ui/SegmentedControl.svelte.d.ts +26 -0
  236. package/dist/ui/Sortable.svelte +163 -0
  237. package/dist/ui/Sortable.svelte.d.ts +47 -0
  238. package/dist/ui/Table.svelte +497 -56
  239. package/dist/ui/Table.svelte.d.ts +64 -2
  240. package/dist/ui/Tabs.svelte +22 -18
  241. package/dist/ui/Tabs.svelte.d.ts +6 -2
  242. package/dist/ui/ThemeSwitcher.svelte +26 -7
  243. package/dist/ui/ThemeSwitcher.svelte.d.ts +4 -2
  244. package/dist/ui/Tooltip.svelte +312 -180
  245. package/dist/ui/Tooltip.svelte.d.ts +4 -3
  246. package/dist/uiTheme.svelte.d.ts +86 -0
  247. package/dist/uiTheme.svelte.js +214 -0
  248. package/dist/util/DateFunctions.js +1 -1
  249. package/dist/util/DragDrop.d.ts +50 -0
  250. package/dist/util/DragDrop.js +154 -0
  251. package/dist/util/NavigateTo.js +2 -2
  252. package/dist/util/dayjs.d.ts +4 -0
  253. package/dist/util/dayjs.js +15 -0
  254. package/dist/util/interceptLinkClick.d.ts +13 -0
  255. package/dist/util/interceptLinkClick.js +33 -0
  256. package/package.json +66 -26
  257. package/dist/display/Alert.svelte +0 -179
  258. package/dist/display/Alert.svelte.d.ts +0 -13
  259. package/dist/form/FileInput.svelte +0 -235
  260. package/dist/form/FileInput.svelte.d.ts +0 -23
  261. package/dist/form/PasswordInput.svelte +0 -252
  262. package/dist/form/PasswordInput.svelte.d.ts +0 -33
  263. package/dist/form/Rating.svelte +0 -235
  264. package/dist/form/Rating.svelte.d.ts +0 -21
  265. package/dist/styles/components.css +0 -199
  266. package/dist/styles/dark.css +0 -146
  267. package/dist/styles/index.css +0 -116
  268. package/dist/styles/reset.css +0 -110
  269. package/dist/styles/semantic.css +0 -86
  270. package/dist/styles/tokens.css +0 -203
  271. package/dist/styles/utilities.css +0 -523
  272. package/dist/ui/Breadcrumbs.svelte +0 -131
  273. package/dist/ui/Breadcrumbs.svelte.d.ts +0 -16
  274. package/dist/ui/LoadingOverlay.svelte +0 -53
  275. package/dist/ui/LoadingOverlay.svelte.d.ts +0 -11
  276. package/dist/ui/Progress.svelte +0 -191
  277. package/dist/ui/Progress.svelte.d.ts +0 -15
  278. package/dist/ui/RingProgress.svelte +0 -141
  279. package/dist/ui/RingProgress.svelte.d.ts +0 -18
  280. package/dist/ui/Skeleton.svelte +0 -85
  281. package/dist/ui/Skeleton.svelte.d.ts +0 -12
  282. package/dist/ui/Stepper.svelte +0 -355
  283. package/dist/ui/Stepper.svelte.d.ts +0 -24
  284. package/dist/ui/Timeline.svelte +0 -225
  285. package/dist/ui/Timeline.svelte.d.ts +0 -23
  286. /package/dist/{actions → util}/ClickOutside.d.ts +0 -0
  287. /package/dist/{actions → util}/ClickOutside.js +0 -0
  288. /package/dist/{transitions → util}/Transitions.d.ts +0 -0
  289. /package/dist/{transitions → util}/Transitions.js +0 -0
@@ -5,23 +5,85 @@ export interface Column<T = any> {
5
5
  sortable?: boolean;
6
6
  width?: string;
7
7
  align?: 'left' | 'center' | 'right';
8
+ /** Snippet rendered as the cell content. Takes precedence over `render`. */
9
+ cell?: Snippet<[{
10
+ value: any;
11
+ row: T;
12
+ index: number;
13
+ }]>;
14
+ /** @deprecated Returns raw HTML injected via {@html} — unsafe for untrusted
15
+ * data and cannot render components. Use `cell` instead. */
8
16
  render?: (value: any, row: T) => any;
9
17
  }
10
- interface Props<T = any> {
18
+ export interface TableProps<T = any> {
19
+ /** Column definitions for the table */
11
20
  columns: Column<T>[];
21
+ /** Data rows to display */
12
22
  rows: T[];
23
+ /** Enable search/filter functionality */
13
24
  searchable?: boolean;
25
+ /** Placeholder text for search input */
14
26
  searchPlaceholder?: string;
27
+ /** Additional CSS classes */
15
28
  class?: string;
29
+ /** Enable alternating row colors */
16
30
  striped?: boolean;
31
+ /** Disable rounded corners on table container */
17
32
  notRounded?: boolean;
33
+ /** Enable hover effect on rows */
18
34
  hover?: boolean;
35
+ /** Message shown when no data is available */
19
36
  emptyMessage?: string;
37
+ /** Show loading state */
20
38
  loading?: boolean;
39
+ /** Content to render below the table */
21
40
  children?: Snippet;
41
+ /** Action buttons snippet, receives row data and index */
22
42
  buttons?: Snippet<[T, number]>;
43
+ /** Callback when a row is clicked */
23
44
  onrowclick?: (row: T, index: number) => void;
45
+ /** Returns a URL for a row. When provided, rows act as links: a plain click
46
+ * navigates client-side, while middle-click or ctrl/cmd/shift-click opens the
47
+ * URL in a new tab. Return a falsy value to make a row non-navigable. */
48
+ rowHref?: (row: T, index: number) => string | undefined | null;
49
+ /** Enable checkbox selection */
50
+ selectable?: boolean;
51
+ /** Field name used to uniquely identify rows (required when selectable is true) */
52
+ rowKey?: string;
53
+ /** Currently selected row objects (bindable) */
54
+ selectedRows?: T[];
55
+ /** Callback when selection changes */
56
+ onselect?: (selectedRows: T[]) => void;
57
+ /** Detail content rendered in a full-width row beneath an expanded row.
58
+ * Providing this enables row expansion: expandable rows toggle on row click
59
+ * or via their chevron button. Requires rowKey. */
60
+ expandedContent?: Snippet<[T, number]>;
61
+ /** Limits which rows can expand (e.g. only group rows). Default: all rows. */
62
+ canExpand?: (row: T, index: number) => boolean;
63
+ /** Keys (via rowKey) of currently expanded rows (bindable) */
64
+ expandedKeys?: any[];
65
+ /** Callback when a row is expanded or collapsed — trigger on-demand fetches here */
66
+ onexpand?: (row: T, index: number, expanded: boolean) => void;
67
+ /** Rows per page. Setting this enables built-in client-side pagination,
68
+ * applied after search filtering and sorting. */
69
+ pageSize?: number;
70
+ /** Current page number, 1-based (bindable) */
71
+ page?: number;
72
+ /** Callback when the current page changes */
73
+ onpagechange?: (page: number) => void;
74
+ /** Key of the column currently sorted by, or null for unsorted (bindable).
75
+ * Set it to render the sort indicator for a server-supplied sort order. */
76
+ sortKey?: string | null;
77
+ /** Current sort direction (bindable) */
78
+ sortDirection?: 'asc' | 'desc';
79
+ /** Callback when the user clicks a sortable header, after `sortKey` and
80
+ * `sortDirection` have been updated. Use it to request sorted data from a
81
+ * server. Paginated tables also reset to page 1 before this fires. */
82
+ onsort?: (key: string, direction: 'asc' | 'desc') => void;
83
+ /** Skip the built-in client-side sort and render `rows` in the order given.
84
+ * Use with `onsort` when the server returns pre-sorted rows. */
85
+ manualSort?: boolean;
24
86
  }
25
- declare const Table: import("svelte").Component<Props<any>, {}, "">;
87
+ declare const Table: import("svelte").Component<TableProps<any>, {}, "selectedRows" | "expandedKeys" | "page" | "sortKey" | "sortDirection">;
26
88
  type Table = ReturnType<typeof Table>;
27
89
  export default Table;
@@ -2,14 +2,18 @@
2
2
  import type { ComboBoxItem } from '../models/ComboBoxItem.js';
3
3
  import { onMount } from 'svelte';
4
4
 
5
- interface Props {
5
+ export interface TabsProps {
6
+ /** Available tab options */
6
7
  tabOptions: ComboBoxItem[];
8
+ /** Currently active tab value (bindable) */
7
9
  activeTab?: string;
10
+ /** Use solid background instead of transparent */
8
11
  solidBg?: boolean;
12
+ /** Callback when active tab changes */
9
13
  onchange?: (newValue: string) => void;
10
14
  }
11
15
 
12
- let { tabOptions, activeTab = $bindable(''), solidBg = false, onchange }: Props = $props();
16
+ let { tabOptions, activeTab = $bindable(''), solidBg = false, onchange }: TabsProps = $props();
13
17
  let containerRef: HTMLDivElement;
14
18
  let buttonElements = $state<HTMLButtonElement[]>([]);
15
19
  let underlineStyle = $state('');
@@ -80,7 +84,7 @@
80
84
  .tabs {
81
85
  position: relative;
82
86
  display: inline-flex;
83
- border-bottom: 1px solid var(--pui-border-default);
87
+ border-bottom: 1px solid #e5e7eb;
84
88
  user-select: none;
85
89
  }
86
90
 
@@ -89,58 +93,58 @@
89
93
  display: flex;
90
94
  align-items: center;
91
95
  justify-content: center;
92
- padding: var(--pui-spacing-3) var(--pui-spacing-6);
96
+ padding: 0.75rem 1.5rem;
93
97
  cursor: pointer;
94
98
  user-select: none;
95
99
  border: none;
96
100
  background: transparent;
97
- font-size: var(--pui-font-size-base);
98
- font-weight: var(--pui-font-weight-medium);
99
- color: var(--pui-color-gray-500);
100
- transition: color var(--pui-transition-fast) var(--pui-ease-in-out);
101
+ font-size: 0.875rem;
102
+ font-weight: 500;
103
+ color: #6b7280;
104
+ transition: color 0.2s ease-in-out;
101
105
  z-index: 1;
102
106
  border-bottom: 2px solid transparent;
103
107
  }
104
108
 
105
109
  .tab-item:hover {
106
- color: var(--pui-color-gray-700);
110
+ color: #374151;
107
111
  }
108
112
 
109
113
  .tab-item.selected {
110
- color: var(--pui-color-primary);
114
+ color: var(--ui-primary);
111
115
  }
112
116
 
113
117
  .tab-underline {
114
118
  position: absolute;
115
119
  bottom: -1px;
116
120
  height: 2px;
117
- background-color: var(--pui-color-primary);
118
- transition: all var(--pui-transition-fast) var(--pui-ease-in-out);
121
+ background-color: var(--ui-primary);
122
+ transition: all 0.2s ease-in-out;
119
123
  z-index: 2;
120
124
  }
121
125
 
122
126
  .solid {
123
- background: var(--pui-paper-body-bg);
127
+ background: var(--paper-body-bg);
124
128
  }
125
129
 
126
130
  /* Dark mode styles */
127
131
  :global(.dark) .tabs {
128
- border-bottom-color: var(--pui-color-gray-700);
132
+ border-bottom-color: #374151;
129
133
  }
130
134
 
131
135
  :global(.dark) .tab-item {
132
- color: var(--pui-color-gray-400);
136
+ color: #9ca3af;
133
137
  }
134
138
 
135
139
  :global(.dark) .tab-item:hover {
136
- color: var(--pui-color-gray-300);
140
+ color: #d1d5db;
137
141
  }
138
142
 
139
143
  :global(.dark) .tab-item.selected {
140
- color: var(--pui-color-secondary);
144
+ color: var(--ui-accent);
141
145
  }
142
146
 
143
147
  :global(.dark) .tab-underline {
144
- background-color: var(--pui-color-secondary);
148
+ background-color: var(--ui-accent);
145
149
  }
146
150
  </style>
@@ -1,10 +1,14 @@
1
1
  import type { ComboBoxItem } from '../models/ComboBoxItem.js';
2
- interface Props {
2
+ export interface TabsProps {
3
+ /** Available tab options */
3
4
  tabOptions: ComboBoxItem[];
5
+ /** Currently active tab value (bindable) */
4
6
  activeTab?: string;
7
+ /** Use solid background instead of transparent */
5
8
  solidBg?: boolean;
9
+ /** Callback when active tab changes */
6
10
  onchange?: (newValue: string) => void;
7
11
  }
8
- declare const Tabs: import("svelte").Component<Props, {}, "activeTab">;
12
+ declare const Tabs: import("svelte").Component<TabsProps, {}, "activeTab">;
9
13
  type Tabs = ReturnType<typeof Tabs>;
10
14
  export default Tabs;
@@ -3,29 +3,48 @@
3
3
 
4
4
  import sunSvg from '../icon/sun.svg?raw';
5
5
  import moonSvg from '../icon/moon.svg?raw';
6
+ import sunMoonSvg from '../icon/sun-moon.svg?raw';
6
7
  import ActionIcon from './ActionIcon.svelte';
7
8
  import type { ButtonVariant } from './ButtonVariant.js';
8
9
 
9
- interface Props {
10
+ export interface ThemeSwitcherProps {
11
+ /** Button variant to use in light mode */
10
12
  lightVariant?: ButtonVariant;
13
+ /** Button variant to use in dark mode */
11
14
  darkVariant?: ButtonVariant;
12
15
  }
13
16
 
14
- let { lightVariant = 'primary-subtle', darkVariant = 'secondary-subtle' }: Props = $props();
17
+ let { lightVariant = 'primary-subtle', darkVariant = 'accent-subtle' }: ThemeSwitcherProps = $props();
15
18
 
16
- function toggleDarkMode() {
17
- setTheme(themeState.isDarkMode ? 'light' : 'dark');
19
+ const themeCycle = ['light', 'dark', 'system'] as const;
20
+
21
+ const icons = {
22
+ light: sunSvg,
23
+ dark: moonSvg,
24
+ system: sunMoonSvg
25
+ };
26
+
27
+ const tooltips = {
28
+ light: 'Light theme',
29
+ dark: 'Dark theme',
30
+ system: 'System theme'
31
+ };
32
+
33
+ function cycleTheme() {
34
+ const index = themeCycle.indexOf(themeState.theme);
35
+ setTheme(themeCycle[(index + 1) % themeCycle.length]);
18
36
  }
19
37
  </script>
20
38
 
21
39
  <div class="theme-switcher">
22
- {#key themeState.isDarkMode}
40
+ {#key themeState.theme}
23
41
  <ActionIcon
24
42
  variant={themeState.isDarkMode ? darkVariant : lightVariant}
25
- svg={themeState.isDarkMode ? moonSvg : sunSvg}
43
+ svg={icons[themeState.theme]}
26
44
  class="action-icon"
27
45
  size="1.6em"
28
- onclick={toggleDarkMode}
46
+ onclick={cycleTheme}
47
+ tooltip={tooltips[themeState.theme]}
29
48
  />
30
49
  {/key}
31
50
  </div>
@@ -1,8 +1,10 @@
1
1
  import type { ButtonVariant } from './ButtonVariant.js';
2
- interface Props {
2
+ export interface ThemeSwitcherProps {
3
+ /** Button variant to use in light mode */
3
4
  lightVariant?: ButtonVariant;
5
+ /** Button variant to use in dark mode */
4
6
  darkVariant?: ButtonVariant;
5
7
  }
6
- declare const ThemeSwitcher: import("svelte").Component<Props, {}, "">;
8
+ declare const ThemeSwitcher: import("svelte").Component<ThemeSwitcherProps, {}, "">;
7
9
  type ThemeSwitcher = ReturnType<typeof ThemeSwitcher>;
8
10
  export default ThemeSwitcher;