sv5ui-plus 5.0.4 → 5.0.6

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 (215) hide show
  1. package/README.md +6 -6
  2. package/dist/adapters/notify.d.ts +1 -1
  3. package/dist/adapters/notify.js +18 -18
  4. package/dist/compat.d.ts +2 -2
  5. package/dist/compat.js +2 -2
  6. package/dist/components/BentoGrid/BentoCard.svelte +33 -33
  7. package/dist/components/BentoGrid/BentoCard.svelte.d.ts +1 -1
  8. package/dist/components/BentoGrid/BentoGrid.svelte +1 -1
  9. package/dist/components/BentoGrid/BentoGrid.svelte.d.ts +1 -1
  10. package/dist/components/BentoGrid/bento-grid.types.d.ts +2 -2
  11. package/dist/components/BentoGrid/bento-grid.variants.d.ts +1 -1
  12. package/dist/components/BentoGrid/bento-grid.variants.js +10 -10
  13. package/dist/components/BentoGrid/index.d.ts +4 -4
  14. package/dist/components/BentoGrid/index.js +4 -4
  15. package/dist/components/Chart/Chart.svelte +1 -1
  16. package/dist/components/Chart/Chart.svelte.d.ts +1 -1
  17. package/dist/components/Chart/chart.types.d.ts +3 -3
  18. package/dist/components/Chart/index.d.ts +2 -2
  19. package/dist/components/Chart/index.js +2 -2
  20. package/dist/components/Chat/ChatBubble.svelte +19 -19
  21. package/dist/components/Chat/ChatBubble.svelte.d.ts +1 -1
  22. package/dist/components/Chat/ChatInput.svelte +26 -27
  23. package/dist/components/Chat/ChatInput.svelte.d.ts +1 -1
  24. package/dist/components/Chat/ChatMessage.svelte +1 -1
  25. package/dist/components/Chat/ChatMessage.svelte.d.ts +1 -1
  26. package/dist/components/Chat/chat.types.d.ts +6 -6
  27. package/dist/components/Chat/chat.variants.d.ts +1 -1
  28. package/dist/components/Chat/chat.variants.js +29 -29
  29. package/dist/components/Chat/index.d.ts +5 -5
  30. package/dist/components/Chat/index.js +5 -5
  31. package/dist/components/CodeBlock/CodeBlock.svelte +15 -15
  32. package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +1 -1
  33. package/dist/components/CodeBlock/code-block.types.d.ts +5 -5
  34. package/dist/components/CodeBlock/code-block.variants.d.ts +1 -1
  35. package/dist/components/CodeBlock/code-block.variants.js +40 -40
  36. package/dist/components/CodeBlock/index.d.ts +2 -2
  37. package/dist/components/CodeBlock/index.js +1 -1
  38. package/dist/components/ConfirmDialog/ConfirmDialog.svelte +93 -97
  39. package/dist/components/ConfirmDialog/ConfirmDialog.svelte.d.ts +1 -1
  40. package/dist/components/ConfirmDialog/confirm.d.ts +1 -1
  41. package/dist/components/ConfirmDialog/confirm.js +9 -9
  42. package/dist/components/ConfirmDialog/confirm.types.d.ts +4 -4
  43. package/dist/components/ConfirmDialog/index.d.ts +4 -4
  44. package/dist/components/ConfirmDialog/index.js +2 -2
  45. package/dist/components/DatePickerField/DatePickerField.svelte +11 -11
  46. package/dist/components/DatePickerField/DatePickerField.svelte.d.ts +2 -2
  47. package/dist/components/DatePickerField/date-picker-field.types.d.ts +1 -1
  48. package/dist/components/DatePickerField/index.d.ts +2 -2
  49. package/dist/components/DatePickerField/index.js +1 -1
  50. package/dist/components/DateRangePickerField/DateRangePickerField.svelte +26 -26
  51. package/dist/components/DateRangePickerField/DateRangePickerField.svelte.d.ts +2 -2
  52. package/dist/components/DateRangePickerField/date-range-picker-field.types.d.ts +1 -1
  53. package/dist/components/DateRangePickerField/index.d.ts +2 -2
  54. package/dist/components/DateRangePickerField/index.js +1 -1
  55. package/dist/components/Fonts/Fonts.svelte +12 -12
  56. package/dist/components/Fonts/Fonts.svelte.d.ts +1 -1
  57. package/dist/components/Fonts/fonts.d.ts +1 -1
  58. package/dist/components/Fonts/fonts.js +42 -42
  59. package/dist/components/Fonts/fonts.types.d.ts +6 -6
  60. package/dist/components/Fonts/index.d.ts +3 -3
  61. package/dist/components/Fonts/index.js +2 -2
  62. package/dist/components/FormSelect/FormSelect.svelte +4 -4
  63. package/dist/components/FormSelect/FormSelect.svelte.d.ts +2 -2
  64. package/dist/components/FormSelect/form-select.types.d.ts +3 -3
  65. package/dist/components/FormSelect/index.d.ts +2 -2
  66. package/dist/components/FormSelect/index.js +1 -1
  67. package/dist/components/List/List.svelte +1 -1
  68. package/dist/components/List/List.svelte.d.ts +1 -1
  69. package/dist/components/List/ListItem.svelte +31 -39
  70. package/dist/components/List/ListItem.svelte.d.ts +1 -1
  71. package/dist/components/List/index.d.ts +4 -4
  72. package/dist/components/List/index.js +4 -4
  73. package/dist/components/List/list.types.d.ts +4 -4
  74. package/dist/components/List/list.variants.d.ts +1 -1
  75. package/dist/components/List/list.variants.js +22 -22
  76. package/dist/components/LocaleButton/LocaleButton.svelte +104 -108
  77. package/dist/components/LocaleButton/LocaleButton.svelte.d.ts +1 -1
  78. package/dist/components/LocaleButton/index.d.ts +2 -2
  79. package/dist/components/LocaleButton/index.js +1 -1
  80. package/dist/components/LocaleButton/locale-button.types.d.ts +12 -12
  81. package/dist/components/LocaleButton/locale-button.variants.d.ts +2 -2
  82. package/dist/components/LocaleButton/locale-button.variants.js +68 -68
  83. package/dist/components/Marquee/Marquee.svelte +34 -34
  84. package/dist/components/Marquee/Marquee.svelte.d.ts +1 -1
  85. package/dist/components/Marquee/index.d.ts +3 -3
  86. package/dist/components/Marquee/index.js +3 -3
  87. package/dist/components/Marquee/marquee.types.d.ts +4 -4
  88. package/dist/components/Marquee/marquee.variants.d.ts +1 -1
  89. package/dist/components/Marquee/marquee.variants.js +15 -15
  90. package/dist/components/NavigationMenu/NavigationMenu.svelte +366 -379
  91. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +1 -1
  92. package/dist/components/NavigationMenu/index.d.ts +2 -2
  93. package/dist/components/NavigationMenu/index.js +1 -1
  94. package/dist/components/NavigationMenu/navigation-menu.types.d.ts +17 -17
  95. package/dist/components/NavigationMenu/navigation-menu.variants.d.ts +1 -1
  96. package/dist/components/NavigationMenu/navigation-menu.variants.js +177 -177
  97. package/dist/components/NumberTicker/NumberTicker.svelte +1 -5
  98. package/dist/components/NumberTicker/NumberTicker.svelte.d.ts +1 -1
  99. package/dist/components/NumberTicker/index.d.ts +3 -3
  100. package/dist/components/NumberTicker/index.js +3 -3
  101. package/dist/components/NumberTicker/number-ticker.types.d.ts +1 -1
  102. package/dist/components/NumberTicker/number-ticker.variants.d.ts +1 -1
  103. package/dist/components/NumberTicker/number-ticker.variants.js +3 -3
  104. package/dist/components/PasswordInput/PasswordInput.svelte +58 -58
  105. package/dist/components/PasswordInput/PasswordInput.svelte.d.ts +1 -1
  106. package/dist/components/PasswordInput/index.d.ts +2 -2
  107. package/dist/components/PasswordInput/index.js +1 -1
  108. package/dist/components/PasswordInput/password-input.types.d.ts +9 -9
  109. package/dist/components/PasswordInput/password-input.variants.d.ts +2 -2
  110. package/dist/components/PasswordInput/password-input.variants.js +62 -62
  111. package/dist/components/Prose/Prose.svelte +5 -5
  112. package/dist/components/Prose/Prose.svelte.d.ts +1 -1
  113. package/dist/components/Prose/index.d.ts +3 -3
  114. package/dist/components/Prose/index.js +3 -3
  115. package/dist/components/Prose/prose.types.d.ts +4 -4
  116. package/dist/components/Prose/prose.variants.d.ts +1 -1
  117. package/dist/components/Prose/prose.variants.js +27 -27
  118. package/dist/components/{Resizable/Resizable.svelte → ResizeContainer/ResizeContainer.svelte} +3 -3
  119. package/dist/components/ResizeContainer/ResizeContainer.svelte.d.ts +4 -0
  120. package/dist/components/ResizeContainer/index.d.ts +4 -0
  121. package/dist/components/ResizeContainer/index.js +4 -0
  122. package/dist/components/ResizeContainer/resize-container.types.d.ts +18 -0
  123. package/dist/components/ResizeContainer/resize-container.variants.d.ts +30 -0
  124. package/dist/components/ResizeContainer/resize-container.variants.js +17 -0
  125. package/dist/components/SafeTable/SafeTable.svelte +74 -74
  126. package/dist/components/SafeTable/SafeTable.svelte.d.ts +2 -2
  127. package/dist/components/SafeTable/index.d.ts +2 -2
  128. package/dist/components/SafeTable/index.js +1 -1
  129. package/dist/components/SafeTable/safe-table.types.d.ts +1 -1
  130. package/dist/components/Search/Search.svelte +63 -63
  131. package/dist/components/Search/Search.svelte.d.ts +1 -1
  132. package/dist/components/Search/index.d.ts +2 -2
  133. package/dist/components/Search/index.js +1 -1
  134. package/dist/components/Search/search.types.d.ts +5 -5
  135. package/dist/components/SortableGroup/SortableGroup.svelte +16 -10
  136. package/dist/components/SortableGroup/SortableGroup.svelte.d.ts +3 -3
  137. package/dist/components/SortableGroup/index.d.ts +1 -1
  138. package/dist/components/SortableGroup/index.js +1 -1
  139. package/dist/components/SortableList/SortableList.svelte +49 -46
  140. package/dist/components/SortableList/SortableList.svelte.d.ts +2 -2
  141. package/dist/components/SortableList/index.d.ts +2 -2
  142. package/dist/components/SortableList/index.js +1 -1
  143. package/dist/components/SortableList/sortable-list.types.d.ts +3 -3
  144. package/dist/components/Spotlight/Spotlight.svelte +13 -13
  145. package/dist/components/Spotlight/Spotlight.svelte.d.ts +1 -1
  146. package/dist/components/Spotlight/index.d.ts +3 -3
  147. package/dist/components/Spotlight/index.js +3 -3
  148. package/dist/components/Spotlight/spotlight.types.d.ts +2 -2
  149. package/dist/components/Spotlight/spotlight.variants.d.ts +1 -1
  150. package/dist/components/Spotlight/spotlight.variants.js +5 -5
  151. package/dist/components/TableBulkActionBar/TableBulkActionBar.svelte +23 -23
  152. package/dist/components/TableBulkActionBar/TableBulkActionBar.svelte.d.ts +1 -1
  153. package/dist/components/TableBulkActionBar/index.d.ts +2 -2
  154. package/dist/components/TableBulkActionBar/index.js +1 -1
  155. package/dist/components/TableBulkActionBar/table-bulk-action-bar.types.d.ts +3 -3
  156. package/dist/components/TableBulkActionBar/table-bulk-action-bar.variants.d.ts +1 -1
  157. package/dist/components/TableBulkActionBar/table-bulk-action-bar.variants.js +7 -7
  158. package/dist/components/TreeView/TreeView.svelte +59 -59
  159. package/dist/components/TreeView/TreeView.svelte.d.ts +1 -1
  160. package/dist/components/TreeView/index.d.ts +3 -3
  161. package/dist/components/TreeView/index.js +2 -2
  162. package/dist/components/TreeView/tree-view.types.d.ts +4 -4
  163. package/dist/components/TreeView/tree-view.variants.d.ts +1 -1
  164. package/dist/components/TreeView/tree-view.variants.js +19 -19
  165. package/dist/config.d.ts +1 -1
  166. package/dist/config.js +28 -28
  167. package/dist/editor.d.ts +1 -1
  168. package/dist/editor.js +1 -1
  169. package/dist/form/resolve-form-field-name.js +1 -1
  170. package/dist/hooks/internal/DragDropProviderScope.svelte +1 -1
  171. package/dist/hooks/internal/DragDropProviderScope.svelte.d.ts +1 -1
  172. package/dist/hooks/internal/SortableProvider.svelte +16 -11
  173. package/dist/hooks/internal/SortableProvider.svelte.d.ts +1 -1
  174. package/dist/hooks/internal/drag-drop-context.d.ts +1 -1
  175. package/dist/hooks/internal/drag-drop-context.js +1 -1
  176. package/dist/hooks/internal/sortable-context.d.ts +6 -6
  177. package/dist/hooks/internal/sortable-context.js +2 -2
  178. package/dist/hooks/useDragDrop/index.d.ts +1 -1
  179. package/dist/hooks/useDragDrop/index.js +1 -1
  180. package/dist/hooks/useDragDrop/useDragDrop.svelte.d.ts +3 -3
  181. package/dist/hooks/useDragDrop/useDragDrop.svelte.js +15 -15
  182. package/dist/hooks/useSortable/index.d.ts +2 -2
  183. package/dist/hooks/useSortable/index.js +2 -2
  184. package/dist/hooks/useSortable/useSortable.svelte.d.ts +4 -4
  185. package/dist/hooks/useSortable/useSortable.svelte.js +23 -23
  186. package/dist/hooks/utils.js +1 -1
  187. package/dist/index.d.ts +29 -31
  188. package/dist/index.js +28 -30
  189. package/dist/mcp/install-template.mjs +44 -44
  190. package/dist/mcp/server.mjs +262 -263
  191. package/dist/mcp/sv5ui-plus-docs.data.json +4 -10
  192. package/package.json +17 -14
  193. package/dist/components/ColorPicker/ColorPicker.svelte +0 -109
  194. package/dist/components/ColorPicker/ColorPicker.svelte.d.ts +0 -4
  195. package/dist/components/ColorPicker/color-picker.types.d.ts +0 -26
  196. package/dist/components/ColorPicker/color-picker.variants.d.ts +0 -69
  197. package/dist/components/ColorPicker/color-picker.variants.js +0 -13
  198. package/dist/components/ColorPicker/index.d.ts +0 -4
  199. package/dist/components/ColorPicker/index.js +0 -4
  200. package/dist/components/Resizable/Resizable.svelte.d.ts +0 -4
  201. package/dist/components/Resizable/index.d.ts +0 -4
  202. package/dist/components/Resizable/index.js +0 -4
  203. package/dist/components/Resizable/resizable.types.d.ts +0 -18
  204. package/dist/components/Resizable/resizable.types.js +0 -1
  205. package/dist/components/Resizable/resizable.variants.d.ts +0 -48
  206. package/dist/components/Resizable/resizable.variants.js +0 -17
  207. package/dist/components/ScrollArea/ScrollArea.svelte +0 -54
  208. package/dist/components/ScrollArea/ScrollArea.svelte.d.ts +0 -4
  209. package/dist/components/ScrollArea/index.d.ts +0 -4
  210. package/dist/components/ScrollArea/index.js +0 -4
  211. package/dist/components/ScrollArea/scroll-area.types.d.ts +0 -27
  212. package/dist/components/ScrollArea/scroll-area.types.js +0 -1
  213. package/dist/components/ScrollArea/scroll-area.variants.d.ts +0 -45
  214. package/dist/components/ScrollArea/scroll-area.variants.js +0 -27
  215. /package/dist/components/{ColorPicker/color-picker.types.js → ResizeContainer/resize-container.types.js} +0 -0
@@ -1,17 +1,11 @@
1
1
  {
2
2
  "version": 1,
3
3
  "packageName": "sv5ui-plus",
4
- "packageVersion": "5.0.4",
5
- "generatedAt": "2026-08-20T08:57:41.119Z",
4
+ "packageVersion": "5.0.6",
5
+ "generatedAt": "2026-09-10T03:20:34.995Z",
6
6
  "slugs": {
7
7
  "components": [],
8
- "hooks": [
9
- "use-drag-drop",
10
- "use-sortable"
11
- ]
8
+ "hooks": []
12
9
  },
13
- "pages": {
14
- "use-drag-drop": "<script lang=\"ts\">\n import { Badge, Button, Card, Link, useDragDrop } from '$lib/compat.js'\n\n type Task = { id: string; label: string; lane: 'todo' | 'done' }\n\n let board = $state<{ todo: Task[]; done: Task[] }>({\n todo: [\n { id: 't1', label: 'Design tokens', lane: 'todo' },\n { id: 't2', label: 'Sortable hook', lane: 'todo' },\n { id: 't3', label: 'Docs page', lane: 'todo' }\n ],\n done: [{ id: 'd1', label: 'Kickoff meeting', lane: 'done' }]\n })\n\n let dropDisabled = $state(false)\n let lastDrop = $state('')\n\n const dragDrop = useDragDrop()\n\n function moveTask(task: Task, target: 'todo' | 'done') {\n const source: 'todo' | 'done' = target === 'todo' ? 'done' : 'todo'\n const item = board[source].find((entry) => entry.id === task.id)\n if (!item) return\n\n board = {\n ...board,\n [source]: board[source].filter((entry) => entry.id !== task.id),\n [target]: [...board[target], { ...item, lane: target }]\n }\n lastDrop = `${task.label} → ${target}`\n }\n\n const draggableOptionsReference = [\n { name: 'id', type: 'string', description: 'Unique id for the draggable element.' },\n { name: 'container', type: 'string', description: 'Source zone id — must match the droppable id of the column this item is in.' },\n { name: 'data', type: 'unknown', description: 'Payload passed to droppable onDrop.' },\n { name: 'disabled', type: 'boolean | (() => boolean)', description: 'Prevent dragging.' },\n { name: 'handle', type: 'string', description: 'Optional CSS selector for a drag handle.' }\n ] as const\n\n const droppableOptionsReference = [\n { name: 'id', type: 'string', description: 'Zone id — drops from the same id are ignored.' },\n { name: 'onDrop', type: '(payload) => void', description: 'Called with { id, data? } from the draggable.' },\n { name: 'accept', type: '(payload) => boolean', description: 'Optional filter — return false to reject the drop.' },\n { name: 'disabled', type: 'boolean | (() => boolean)', description: 'Prevent dropping on this zone.' }\n ] as const\n\n const returnReference = [\n { name: 'Provider', type: 'Component', description: 'Required wrapper — mounts @dnd-kit/svelte DragDropProvider.' },\n { name: 'draggable', type: 'Action<HTMLElement, UseDraggableOptions>', description: 'Attach to drag sources.' },\n { name: 'droppable', type: 'Action<HTMLElement, UseDroppableOptions>', description: 'Attach to drop targets.' },\n { name: 'draggingId', type: 'string | null', description: 'Id of the item currently being dragged.' }\n ] as const\n</script>\n\n<div class=\"space-y-8\">\n <div class=\"space-y-2\">\n <h1 class=\"text-2xl font-bold\">useDragDrop</h1>\n <p class=\"text-on-surface-variant\">\n Cross-container drag and drop powered by\n <a href=\"https://clauderic-dnd-kit.mintlify.app/frameworks/svelte\" class=\"text-primary underline\" target=\"_blank\" rel=\"noreferrer\">@dnd-kit/svelte</a>.\n Wrap markup in\n <code class=\"rounded bg-surface-container-high px-1\">dragDrop.Provider</code>,\n use\n <code class=\"rounded bg-surface-container-high px-1\">use:dragDrop.draggable</code>\n on sources and\n <code class=\"rounded bg-surface-container-high px-1\">use:dragDrop.droppable</code>\n on targets. Browse all demos in the\n <Link href=\"/docs/drag-and-drop\" class=\"text-primary underline\">Drag & Drop playground</Link>.\n For reordering within one list, use\n <Link href=\"/docs/hooks/use-sortable\" class=\"text-primary underline\">useSortable</Link>.\n </p>\n </div>\n\n <section class=\"space-y-3\">\n <h2 id=\"When-to-use-what\" class=\"text-lg font-semibold\">\n <a href=\"#When-to-use-what\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n When to use what\n </a>\n </h2>\n <Card class=\"border border-info/20 bg-info/10 p-4 text-sm text-on-surface-variant\">\n <p>\n <strong class=\"text-on-surface\">useDragDrop</strong> — kanban, trays, moving cards between columns.\n <strong class=\"text-on-surface\">useSortable</strong> —\n <Link href=\"/docs/hooks/use-sortable\" class=\"text-primary underline\">reorder inside one list</Link>.\n <strong class=\"text-on-surface\">FileUpload</strong> —\n <Link href=\"/docs/components/file-upload\" class=\"text-primary underline\">OS file drops</Link>.\n <strong class=\"text-on-surface\">Editor</strong> —\n <Link href=\"/docs/components/editor#Drag-handle-Phase-3\" class=\"text-primary underline\">block reorder in rich text</Link>.\n </p>\n </Card>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"Kanban-board\" class=\"text-lg font-semibold\">\n <a href=\"#Kanban-board\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n Kanban board\n </a>\n </h2>\n <dragDrop.Provider>\n <div class=\"grid gap-4 md:grid-cols-2\">\n <div\n class=\"space-y-3 rounded-lg border border-outline-variant/70 bg-surface-container-low p-4\"\n use:dragDrop.droppable={{\n id: 'todo',\n disabled: () => dropDisabled,\n onDrop: ({ data }) => moveTask(data as Task, 'todo')\n }}\n >\n <h3 class=\"font-semibold\">To do</h3>\n <div class=\"space-y-2\">\n {#each board.todo as task (task.id)}\n <div\n use:dragDrop.draggable={{ id: task.id, container: 'todo', data: task }}\n class={[\n 'cursor-grab rounded-lg border border-outline-variant/60 bg-surface px-3 py-2 active:cursor-grabbing',\n dragDrop.draggingId === task.id && 'opacity-80'\n ]}\n >\n {task.label}\n </div>\n {/each}\n </div>\n </div>\n\n <div\n class=\"space-y-3 rounded-lg border border-outline-variant/70 bg-surface-container-low p-4\"\n use:dragDrop.droppable={{\n id: 'done',\n disabled: () => dropDisabled,\n accept: (payload) => String((payload.data as Task)?.label ?? '').length > 0,\n onDrop: ({ data }) => moveTask(data as Task, 'done')\n }}\n >\n <h3 class=\"font-semibold\">Done</h3>\n <p class=\"text-xs text-on-surface-variant\">accept — rejects empty labels</p>\n <div class=\"space-y-2\">\n {#each board.done as task (task.id)}\n <div\n use:dragDrop.draggable={{ id: task.id, container: 'done', data: task }}\n class={[\n 'cursor-grab rounded-lg border border-success/30 bg-success/10 px-3 py-2 active:cursor-grabbing',\n dragDrop.draggingId === task.id && 'opacity-80'\n ]}\n >\n {task.label}\n </div>\n {/each}\n </div>\n </div>\n </div>\n </dragDrop.Provider>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n {#if dragDrop.draggingId}\n <Badge label=\"Dragging: {dragDrop.draggingId}\" color=\"primary\" variant=\"soft\" />\n {/if}\n {#if lastDrop}\n <Badge label=\"Last drop: {lastDrop}\" color=\"success\" variant=\"soft\" />\n {/if}\n <Button\n variant={dropDisabled ? 'solid' : 'outline'}\n size=\"sm\"\n label={dropDisabled ? 'Drops disabled' : 'Disable drops'}\n onclick={() => (dropDisabled = !dropDisabled)}\n />\n </div>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"API-Reference\" class=\"text-lg font-semibold\">\n <a href=\"#API-Reference\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n API Reference\n </a>\n </h2>\n <div class=\"grid gap-4 lg:grid-cols-2\">\n <Card class=\"border border-outline-variant/70\">\n <div class=\"space-y-4\">\n <h3 class=\"text-base font-semibold\">draggable options</h3>\n <div class=\"space-y-3\">\n {#each draggableOptionsReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-primary\">{item.name}</p>\n <p class=\"mt-1 text-sm font-medium\">{item.type}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n </div>\n </Card>\n <Card class=\"border border-outline-variant/70\">\n <div class=\"space-y-4\">\n <h3 class=\"text-base font-semibold\">droppable options</h3>\n <div class=\"space-y-3\">\n {#each droppableOptionsReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-primary\">{item.name}</p>\n <p class=\"mt-1 text-sm font-medium\">{item.type}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n </div>\n </Card>\n </div>\n <Card class=\"border border-outline-variant/70\">\n <div class=\"space-y-3\">\n <h3 class=\"text-base font-semibold\">Return value</h3>\n {#each returnReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-primary\">{item.name}</p>\n <p class=\"mt-1 text-sm font-medium\">{item.type}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n </Card>\n </section>\n</div>\n",
15
- "use-sortable": "<script lang=\"ts\">\n import { Badge, Button, Card, Link, SortableList, useSortable } from '$lib/compat.js'\n\n type Task = { id: string; title: string; color: 'primary' | 'success' | 'warning' }\n\n let tasks = $state<Task[]>([\n { id: 'design', title: 'Design system tokens', color: 'primary' },\n { id: 'build', title: 'Build sortable hook', color: 'success' },\n { id: 'docs', title: 'Write documentation', color: 'warning' },\n { id: 'ship', title: 'Ship release', color: 'primary' }\n ])\n\n let horizontalItems = $state([\n { id: 'a', label: 'Alpha' },\n { id: 'b', label: 'Beta' },\n { id: 'c', label: 'Gamma' }\n ])\n\n let sortDisabled = $state(false)\n\n const sortable = useSortable({\n getItems: () => tasks,\n getId: (task) => task.id,\n handle: '[data-sortable-handle]',\n disabled: () => sortDisabled,\n onReorder: (next) => {\n tasks = next\n }\n })\n\n const horizontalSortable = useSortable({\n getItems: () => horizontalItems,\n getId: (item) => item.id,\n axis: 'horizontal',\n handle: '[data-sortable-handle]',\n onReorder: (next) => {\n horizontalItems = next\n }\n })\n\n const sortableOptionsReference = [\n { name: 'getItems', type: '() => T[]', description: 'Reactive getter for the current array.' },\n { name: 'getId', type: '(item: T) => string | number', description: 'Stable id per row (must match data-sortable-id).' },\n { name: 'onReorder', type: '(items: T[]) => void', description: 'Called with the reordered array after drop.' },\n { name: 'axis', type: \"'vertical' | 'horizontal' | 'grid' | (() => ...)\", description: 'Drag axis. Default: vertical. Use grid for CSS grid layouts.' },\n { name: 'handle', type: 'string | (() => string | undefined)', description: 'Handle selector. Omit to drag the whole row.' },\n { name: 'disabled', type: 'boolean | (() => boolean)', description: 'Disable sorting. Default: false.' }\n ] as const\n\n const sortableReturnReference = [\n { name: 'Provider', type: 'Component', description: 'Required wrapper — mounts @dnd-kit/svelte DragDropProvider. Accepts an optional `overlay` snippet for custom drag overlays.' },\n { name: 'container', type: 'Action<HTMLElement>', description: 'Optional list wrapper — sets data-sortable-active while dragging.' },\n { name: 'item', type: 'Action<HTMLElement, { index, item }>', description: 'Attach to each row with the current index and item.' },\n { name: 'draggingId', type: 'string | number | null', description: 'Readonly id of the row currently being dragged.' }\n ] as const\n\n const markupReference = [\n { name: 'use:sortable.item', description: 'Required on each row — pass { index, item } from the #each block.' },\n { name: 'data-sortable-handle', description: 'Optional handle element when using handle selector.' },\n { name: 'data-sortable-item / data-sortable-id', description: 'Set automatically by use:sortable.item for styling hooks.' }\n ] as const\n\n function resetOrder() {\n tasks = [\n { id: 'design', title: 'Design system tokens', color: 'primary' },\n { id: 'build', title: 'Build sortable hook', color: 'success' },\n { id: 'docs', title: 'Write documentation', color: 'warning' },\n { id: 'ship', title: 'Ship release', color: 'primary' }\n ]\n }\n</script>\n\n<div class=\"space-y-8\">\n <div class=\"space-y-2\">\n <h1 class=\"text-2xl font-bold\">useSortable</h1>\n <p class=\"text-on-surface-variant\">\n Sortable list reordering powered by\n <a href=\"https://clauderic-dnd-kit.mintlify.app/frameworks/svelte\" class=\"text-primary underline\" target=\"_blank\" rel=\"noreferrer\">@dnd-kit/svelte</a>.\n Wrap markup in\n <code class=\"rounded bg-surface-container-high px-1\">sortable.Provider</code>,\n attach\n <code class=\"rounded bg-surface-container-high px-1\">use:sortable.item</code>\n to each row, and optionally use\n <code class=\"rounded bg-surface-container-high px-1\">use:sortable.container</code>\n on the list wrapper. Browse all demos in the\n <Link href=\"/docs/drag-and-drop\" class=\"text-primary underline\">Drag & Drop playground</Link>.\n </p>\n </div>\n\n <section class=\"space-y-3\">\n <h2 id=\"When-to-use-what\" class=\"text-lg font-semibold\">\n <a href=\"#When-to-use-what\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n When to use what\n </a>\n </h2>\n <div class=\"grid gap-3 md:grid-cols-2\">\n <Card class=\"space-y-2 border border-outline-variant/70 p-4\">\n <p class=\"font-semibold text-on-surface\">useSortable / SortableList</p>\n <p class=\"text-sm text-on-surface-variant\">Reorder items inside one list (tasks, menu items, table rows).</p>\n </Card>\n <Card class=\"space-y-2 border border-outline-variant/70 p-4\">\n <p class=\"font-semibold text-on-surface\">\n <Link href=\"/docs/hooks/use-drag-drop\" class=\"text-primary underline\">useDragDrop</Link>\n </p>\n <p class=\"text-sm text-on-surface-variant\">Move items between containers (kanban columns, trays).</p>\n </Card>\n <Card class=\"space-y-2 border border-outline-variant/70 p-4\">\n <p class=\"font-semibold text-on-surface\">\n <Link href=\"/docs/components/file-upload\" class=\"text-primary underline\">FileUpload</Link>\n </p>\n <p class=\"text-sm text-on-surface-variant\">Drag files from the OS onto a dropzone — not for reordering UI lists.</p>\n </Card>\n <Card class=\"space-y-2 border border-outline-variant/70 p-4\">\n <p class=\"font-semibold text-on-surface\">\n <Link href=\"/docs/components/editor\" class=\"text-primary underline\">Editor dragHandle</Link>\n </p>\n <p class=\"text-sm text-on-surface-variant\">Reorder rich-text blocks inside TipTap — built into Editor, not this hook.</p>\n </Card>\n </div>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"Manual-markup\" class=\"text-lg font-semibold\">\n <a href=\"#Manual-markup\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n Manual markup\n </a>\n </h2>\n <sortable.Provider>\n {#snippet overlay({ item })}\n <div class=\"flex items-center gap-3 rounded-lg border border-outline-variant/60 bg-surface px-3 py-2 z-50 shadow-xl scale-[1.02] opacity-95\">\n <button type=\"button\" class=\"cursor-grab rounded-md p-1 text-on-surface-variant\">::</button>\n <Badge label={item.title} color={item.color} variant=\"soft\" />\n </div>\n {/snippet}\n <div use:sortable.container class=\"space-y-2 rounded-lg bg-surface-container-high p-4\">\n {#each tasks as task, index (task.id)}\n <div\n use:sortable.item={{ index, item: task }}\n class={[\n 'relative flex items-center gap-3 rounded-lg border border-outline-variant/60 px-3 py-2 transition-colors',\n sortable.draggingId === task.id ? 'bg-transparent border-transparent' : 'bg-surface'\n ]}\n aria-grabbed={sortable.draggingId === task.id}\n >\n {#if sortable.draggingId === task.id}\n <div class=\"absolute inset-0 z-10 rounded-lg border-2 border-dashed border-primary/50 bg-primary/5 pointer-events-none\"></div>\n {/if}\n <div class={['flex w-full items-center gap-3', sortable.draggingId === task.id && 'invisible']}>\n <button\n type=\"button\"\n data-sortable-handle\n class=\"cursor-grab rounded-md p-1 text-on-surface-variant active:cursor-grabbing\"\n aria-label=\"Drag to reorder\"\n >\n ::\n </button>\n <Badge label={task.title} color={task.color} variant=\"soft\" />\n </div>\n </div>\n {/each}\n </div>\n </sortable.Provider>\n <div class=\"flex flex-wrap gap-2\">\n <Button variant=\"outline\" size=\"sm\" label=\"Reset order\" onclick={resetOrder} />\n <Button\n variant={sortDisabled ? 'solid' : 'outline'}\n size=\"sm\"\n label={sortDisabled ? 'Sorting disabled' : 'Disable sorting'}\n onclick={() => (sortDisabled = !sortDisabled)}\n />\n </div>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"Horizontal-axis\" class=\"text-lg font-semibold\">\n <a href=\"#Horizontal-axis\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n Horizontal axis\n </a>\n </h2>\n <horizontalSortable.Provider>\n <div use:horizontalSortable.container class=\"flex flex-wrap gap-2 rounded-lg bg-surface-container-high p-4\">\n {#each horizontalItems as item, index (item.id)}\n <div\n use:horizontalSortable.item={{ index, item }}\n class={[\n 'flex items-center gap-2 rounded-lg border border-outline-variant/60 bg-surface px-3 py-2',\n horizontalSortable.draggingId === item.id && 'opacity-80 shadow-md'\n ]}\n >\n <button type=\"button\" data-sortable-handle class=\"cursor-grab px-1\" aria-label=\"Drag\">::</button>\n <span class=\"text-sm font-medium\">{item.label}</span>\n </div>\n {/each}\n </div>\n </horizontalSortable.Provider>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"SortableList-component\" class=\"text-lg font-semibold\">\n <a href=\"#SortableList-component\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n SortableList component\n </a>\n </h2>\n <p class=\"text-sm text-on-surface-variant\">\n Prefer a styled wrapper? See\n <Link href=\"/docs/components/sortable-list\" class=\"text-primary underline\">SortableList</Link>.\n </p>\n <Card class=\"border border-outline-variant/70 p-4\">\n <SortableList bind:items={tasks} getKey={(task) => task.id}>\n {#snippet children({ item })}\n <span class=\"text-sm font-medium\">{item.title}</span>\n {/snippet}\n </SortableList>\n </Card>\n </section>\n\n <section class=\"space-y-3\">\n <h2 id=\"API-Reference\" class=\"text-lg font-semibold\">\n <a href=\"#API-Reference\" class=\"group relative inline-flex items-center no-underline hover:underline focus:outline-none focus-visible:underline w-fit\">\n <span class=\"absolute -left-5 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 text-primary/60 font-normal text-base leading-none\" aria-hidden=\"true\">#</span>\n API Reference\n </a>\n </h2>\n <div class=\"grid gap-4 lg:grid-cols-2\">\n <Card class=\"border border-outline-variant/70\">\n <div class=\"space-y-4\">\n <h3 class=\"text-base font-semibold\">useSortable options</h3>\n <div class=\"space-y-3\">\n {#each sortableOptionsReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-primary\">{item.name}</p>\n <p class=\"mt-1 text-sm font-medium\">{item.type}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n </div>\n </Card>\n <Card class=\"border border-outline-variant/70\">\n <div class=\"space-y-4\">\n <h3 class=\"text-base font-semibold\">Return value</h3>\n <div class=\"space-y-3\">\n {#each sortableReturnReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-primary\">{item.name}</p>\n <p class=\"mt-1 text-sm font-medium\">{item.type}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n <h3 class=\"pt-2 text-base font-semibold\">Markup attributes</h3>\n <div class=\"space-y-3\">\n {#each markupReference as item (item.name)}\n <div class=\"border-b border-outline-variant/60 pb-3 last:border-b-0 last:pb-0\">\n <p class=\"font-mono text-xs text-on-surface-variant\">{item.name}</p>\n <p class=\"mt-1 text-sm text-on-surface-variant\">{item.description}</p>\n </div>\n {/each}\n </div>\n </div>\n </Card>\n </div>\n </section>\n</div>\n"
16
- }
10
+ "pages": {}
17
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sv5ui-plus",
3
- "version": "5.0.4",
3
+ "version": "5.0.6",
4
4
  "description": "Community companion components and hooks for SV5UI and Svelte 5",
5
5
  "packageManager": "bun@1.3.14",
6
6
  "author": "asphum",
@@ -29,9 +29,11 @@
29
29
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
30
30
  "precheck": "bun run paraglide:compile",
31
31
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
32
- "lint": "biome check .",
33
- "format": "biome format --write .",
34
- "lint:fix": "biome check --write .",
32
+ "lint": "oxlint .",
33
+ "lint:fix": "oxlint --fix .",
34
+ "format": "oxfmt --write .",
35
+ "format:check": "oxfmt --check .",
36
+ "check:fix": "bun run lint:fix && bun run format",
35
37
  "test:unit": "vitest",
36
38
  "pretest:unit": "bun run paraglide:compile",
37
39
  "test": "bun run test:unit -- --run",
@@ -120,19 +122,20 @@
120
122
  }
121
123
  },
122
124
  "devDependencies": {
123
- "@biomejs/biome": "2.5.9",
124
- "@inlang/paraglide-js": "^2.24.1",
125
+ "@inlang/paraglide-js": "^2.25.1",
125
126
  "@sveltejs/adapter-vercel": "^6.3.4",
126
127
  "@sveltejs/kit": "^2.70.3",
127
128
  "@sveltejs/package": "^2.5.8",
128
129
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
129
130
  "@tailwindcss/vite": "^4.3.3",
130
- "@types/node": "^26.2.0",
131
+ "@types/node": "^26.3.0",
131
132
  "@vitest/browser-playwright": "^4.1.11",
132
- "playwright": "^1.62.1",
133
+ "oxfmt": "^0.67.0",
134
+ "oxlint": "^1.82.0",
135
+ "playwright": "^1.63.0",
133
136
  "publint": "^0.3.24",
134
- "sv5ui": "^2.5.0",
135
- "svelte": "^5.56.9",
137
+ "sv5ui": "^2.7.0",
138
+ "svelte": "^5.57.0",
136
139
  "svelte-check": "^4.7.6",
137
140
  "tailwindcss": "^4.3.3",
138
141
  "typescript": "6.0.3",
@@ -161,14 +164,14 @@
161
164
  "@dnd-kit/dom": "^0.5.0",
162
165
  "@dnd-kit/helpers": "^0.5.0",
163
166
  "@dnd-kit/svelte": "^0.5.0",
164
- "@internationalized/date": "^3.12.3",
167
+ "@internationalized/date": "^3.12.4",
165
168
  "@modelcontextprotocol/sdk": "^1.30.0",
166
- "apexcharts": "^6.10.0",
167
- "bits-ui": "^2.19.0",
169
+ "apexcharts": "^7.1.0",
170
+ "bits-ui": "^2.19.2",
168
171
  "shiki": "^4.4.3",
169
172
  "tailwind-merge": "^3.6.0",
170
173
  "tailwind-variants": "^3.3.1",
171
- "zod": "^4.4.3"
174
+ "zod": "^4.6.1"
172
175
  },
173
176
  "overrides": {
174
177
  "tailwind-merge": "^3.6.0",
@@ -1,109 +0,0 @@
1
- <script lang="ts">import { twMerge } from "tailwind-merge";
2
- import { Popover } from "sv5ui";
3
- import { Input } from "sv5ui";
4
- import { Icon } from "sv5ui";
5
- import { colorPickerVariants } from "./color-picker.variants.js";
6
- let { value = $bindable("#000000"), placeholder = "Select color", swatches = [
7
- "#ef4444",
8
- "#f97316",
9
- "#f59e0b",
10
- "#eab308",
11
- "#84cc16",
12
- "#22c55e",
13
- "#10b981",
14
- "#14b8a6",
15
- "#06b6d4",
16
- "#0ea5e9",
17
- "#3b82f6",
18
- "#6366f1",
19
- "#8b5cf6",
20
- "#a855f7",
21
- "#d946ef",
22
- "#ec4899",
23
- "#f43f5e",
24
- "#ffffff",
25
- "#94a3b8",
26
- "#000000"
27
- ], disabled = false, class: className, ...restProps } = $props();
28
- const styles = $derived(colorPickerVariants());
29
- // Validate hex
30
- let hexInput = $state(value);
31
- $effect(() => {
32
- hexInput = value;
33
- });
34
- function handleHexInput(e) {
35
- const target = e.target;
36
- let val = target.value;
37
- if (!val.startsWith("#")) {
38
- val = "#" + val;
39
- }
40
- hexInput = val;
41
- // Basic hex validation regex (3, 4, 6, or 8 digits)
42
- if (/^#([A-Fa-f0-9]{3,4}){1,2}$/.test(val)) {
43
- value = val;
44
- }
45
- }
46
- function setSwatch(swatch) {
47
- value = swatch;
48
- hexInput = swatch;
49
- }
50
- </script>
51
-
52
- <div class={twMerge(styles.base(), className)} {...restProps}>
53
- <Popover>
54
- {#snippet children({ open })}
55
- <div
56
- class={styles.trigger()}
57
- aria-disabled={disabled}
58
- >
59
- <div
60
- class={styles.colorIndicator()}
61
- style="background-color: {value || '#000'};"
62
- ></div>
63
- <span class="truncate flex-1 text-left text-on-surface">
64
- {value || placeholder}
65
- </span>
66
- <Icon name="lucide:chevron-down" class="text-on-surface-variant w-4 h-4" />
67
- </div>
68
- {/snippet}
69
-
70
- {#snippet content()}
71
- <div class={styles.content()}>
72
- <div class={styles.hexInputWrapper()}>
73
- <span class="text-sm font-medium">Hex</span>
74
- <Input
75
- value={hexInput}
76
- oninput={handleHexInput}
77
- class="h-8 font-mono text-xs"
78
- />
79
- </div>
80
-
81
- <div class={styles.swatchGrid()}>
82
- {#each swatches as swatch}
83
- <button
84
- type="button"
85
- class={styles.swatch()}
86
- style="background-color: {swatch};"
87
- title={swatch}
88
- aria-label={`Select color ${swatch}`}
89
- onclick={() => setSwatch(swatch)}
90
- ></button>
91
- {/each}
92
- </div>
93
-
94
- <div class="pt-2 border-t border-outline-variant flex flex-col gap-1">
95
- <span class="text-xs text-on-surface-variant mb-1">Custom Color</span>
96
- <!-- Native color picker wrapper -->
97
- <label class="cursor-pointer relative overflow-hidden rounded-md border border-outline-variant w-full h-8 flex items-center justify-center bg-surface-container hover:bg-surface-container-high transition-colors">
98
- <span class="text-xs font-medium z-10 pointer-events-none mix-blend-difference text-white">Pick Custom</span>
99
- <input
100
- type="color"
101
- bind:value
102
- class="absolute inset-0 opacity-0 w-full h-full cursor-pointer scale-150"
103
- />
104
- </label>
105
- </div>
106
- </div>
107
- {/snippet}
108
- </Popover>
109
- </div>
@@ -1,4 +0,0 @@
1
- import type { ColorPickerProps } from './color-picker.types.js';
2
- declare const ColorPicker: import("svelte").Component<ColorPickerProps, {}, "value">;
3
- type ColorPicker = ReturnType<typeof ColorPicker>;
4
- export default ColorPicker;
@@ -1,26 +0,0 @@
1
- import type { HTMLAttributes } from 'svelte/elements';
2
- export interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'value'> {
3
- /**
4
- * The bound color value (Hex format).
5
- * @default '#000000'
6
- */
7
- value?: string;
8
- /**
9
- * Placeholder text when no color is selected.
10
- * @default 'Select color'
11
- */
12
- placeholder?: string;
13
- /**
14
- * Array of predefined color swatches.
15
- */
16
- swatches?: string[];
17
- /**
18
- * Whether the color picker is disabled.
19
- * @default false
20
- */
21
- disabled?: boolean;
22
- /**
23
- * Additional CSS classes.
24
- */
25
- class?: string;
26
- }
@@ -1,69 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- export declare const colorPickerVariants: import("tailwind-variants").TVReturnType<{
3
- [key: string]: {
4
- [key: string]: import("tailwind-variants").ClassValue | {
5
- base?: import("tailwind-variants").ClassValue;
6
- trigger?: import("tailwind-variants").ClassValue;
7
- colorIndicator?: import("tailwind-variants").ClassValue;
8
- content?: import("tailwind-variants").ClassValue;
9
- swatchGrid?: import("tailwind-variants").ClassValue;
10
- swatch?: import("tailwind-variants").ClassValue;
11
- nativeInput?: import("tailwind-variants").ClassValue;
12
- hexInputWrapper?: import("tailwind-variants").ClassValue;
13
- };
14
- };
15
- } | {
16
- [x: string]: {
17
- [x: string]: import("tailwind-variants").ClassValue | {
18
- base?: import("tailwind-variants").ClassValue;
19
- trigger?: import("tailwind-variants").ClassValue;
20
- colorIndicator?: import("tailwind-variants").ClassValue;
21
- content?: import("tailwind-variants").ClassValue;
22
- swatchGrid?: import("tailwind-variants").ClassValue;
23
- swatch?: import("tailwind-variants").ClassValue;
24
- nativeInput?: import("tailwind-variants").ClassValue;
25
- hexInputWrapper?: import("tailwind-variants").ClassValue;
26
- };
27
- };
28
- } | {}, {
29
- base: string;
30
- trigger: string;
31
- colorIndicator: string;
32
- content: string;
33
- swatchGrid: string;
34
- swatch: string;
35
- nativeInput: string;
36
- hexInputWrapper: string;
37
- }, undefined, {
38
- [key: string]: {
39
- [key: string]: import("tailwind-variants").ClassValue | {
40
- base?: import("tailwind-variants").ClassValue;
41
- trigger?: import("tailwind-variants").ClassValue;
42
- colorIndicator?: import("tailwind-variants").ClassValue;
43
- content?: import("tailwind-variants").ClassValue;
44
- swatchGrid?: import("tailwind-variants").ClassValue;
45
- swatch?: import("tailwind-variants").ClassValue;
46
- nativeInput?: import("tailwind-variants").ClassValue;
47
- hexInputWrapper?: import("tailwind-variants").ClassValue;
48
- };
49
- };
50
- } | {}, {
51
- base: string;
52
- trigger: string;
53
- colorIndicator: string;
54
- content: string;
55
- swatchGrid: string;
56
- swatch: string;
57
- nativeInput: string;
58
- hexInputWrapper: string;
59
- }, import("tailwind-variants").TVReturnTypeLike<unknown, {
60
- base: string;
61
- trigger: string;
62
- colorIndicator: string;
63
- content: string;
64
- swatchGrid: string;
65
- swatch: string;
66
- nativeInput: string;
67
- hexInputWrapper: string;
68
- }>>;
69
- export type ColorPickerVariantProps = VariantProps<typeof colorPickerVariants>;
@@ -1,13 +0,0 @@
1
- import { tv } from 'tailwind-variants';
2
- export const colorPickerVariants = tv({
3
- slots: {
4
- base: 'relative inline-flex',
5
- trigger: 'flex items-center gap-2 px-3 py-2 border border-outline-variant rounded-md bg-surface text-sm w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary',
6
- colorIndicator: 'w-5 h-5 rounded border border-outline/50 shrink-0',
7
- content: 'w-64 p-3 flex flex-col gap-3 bg-surface border border-outline-variant rounded-md shadow-md',
8
- swatchGrid: 'grid grid-cols-6 gap-2',
9
- swatch: 'w-6 h-6 rounded border border-outline/50 cursor-pointer hover:scale-110 transition-transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary',
10
- nativeInput: 'w-full h-8 cursor-pointer rounded overflow-hidden',
11
- hexInputWrapper: 'flex items-center gap-2'
12
- }
13
- });
@@ -1,4 +0,0 @@
1
- import ColorPicker from './ColorPicker.svelte';
2
- export { ColorPicker };
3
- export * from './color-picker.types.js';
4
- export * from './color-picker.variants.js';
@@ -1,4 +0,0 @@
1
- import ColorPicker from './ColorPicker.svelte';
2
- export { ColorPicker };
3
- export * from './color-picker.types.js';
4
- export * from './color-picker.variants.js';
@@ -1,4 +0,0 @@
1
- import type { ResizableProps } from './resizable.types.js';
2
- declare const Resizable: import("svelte").Component<ResizableProps, {}, "">;
3
- type Resizable = ReturnType<typeof Resizable>;
4
- export default Resizable;
@@ -1,4 +0,0 @@
1
- import Resizable from './Resizable.svelte';
2
- export { Resizable };
3
- export * from './resizable.types.js';
4
- export * from './resizable.variants.js';
@@ -1,4 +0,0 @@
1
- import Resizable from './Resizable.svelte';
2
- export { Resizable };
3
- export * from './resizable.types.js';
4
- export * from './resizable.variants.js';
@@ -1,18 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import type { ResizableVariantProps } from './resizable.variants.js';
4
- export interface ResizableProps extends HTMLAttributes<HTMLDivElement> {
5
- /**
6
- * The direction in which the element can be resized.
7
- * @default 'both'
8
- */
9
- direction?: ResizableVariantProps['direction'];
10
- /**
11
- * Additional CSS classes.
12
- */
13
- class?: string;
14
- /**
15
- * Content inside the resizable container.
16
- */
17
- children?: Snippet;
18
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,48 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- export declare const resizableVariants: import("tailwind-variants").TVReturnType<{
3
- direction: {
4
- horizontal: {
5
- base: string;
6
- };
7
- vertical: {
8
- base: string;
9
- };
10
- both: {
11
- base: string;
12
- };
13
- };
14
- }, {
15
- base: string;
16
- handle: string;
17
- }, undefined, {
18
- direction: {
19
- horizontal: {
20
- base: string;
21
- };
22
- vertical: {
23
- base: string;
24
- };
25
- both: {
26
- base: string;
27
- };
28
- };
29
- }, {
30
- base: string;
31
- handle: string;
32
- }, import("tailwind-variants").TVReturnTypeLike<{
33
- direction: {
34
- horizontal: {
35
- base: string;
36
- };
37
- vertical: {
38
- base: string;
39
- };
40
- both: {
41
- base: string;
42
- };
43
- };
44
- }, {
45
- base: string;
46
- handle: string;
47
- }>>;
48
- export type ResizableVariantProps = VariantProps<typeof resizableVariants>;
@@ -1,17 +0,0 @@
1
- import { tv } from 'tailwind-variants';
2
- export const resizableVariants = tv({
3
- slots: {
4
- base: 'relative overflow-auto border border-outline-variant bg-surface-50 dark:bg-surface-900',
5
- handle: 'absolute right-0 bottom-0 w-4 h-4 cursor-se-resize flex items-center justify-center opacity-0 hover:opacity-100 transition-opacity'
6
- },
7
- variants: {
8
- direction: {
9
- horizontal: { base: 'resize-x' },
10
- vertical: { base: 'resize-y' },
11
- both: { base: 'resize' }
12
- }
13
- },
14
- defaultVariants: {
15
- direction: 'both'
16
- }
17
- });
@@ -1,54 +0,0 @@
1
- <script lang="ts">import { twMerge } from "tailwind-merge";
2
- import { scrollAreaVariants } from "./scroll-area.variants.js";
3
- let { orientation = "vertical", hideScrollbar = false, class: className, viewportClass, children, ...restProps } = $props();
4
- let styles = $derived(scrollAreaVariants({
5
- orientation,
6
- hideScrollbar
7
- }));
8
- </script>
9
-
10
- <div class={twMerge(styles.root(), className)} {...restProps}>
11
- <div
12
- class={twMerge(
13
- styles.viewport(),
14
- !hideScrollbar && 'sv5ui-plus-scrollbar',
15
- viewportClass
16
- )}
17
- data-orientation={orientation}
18
- >
19
- {@render children?.()}
20
- </div>
21
- </div>
22
-
23
- <style>
24
- /* Custom scrollbar styling for Webkit browsers */
25
- :global(.sv5ui-plus-scrollbar::-webkit-scrollbar) {
26
- width: 6px;
27
- height: 6px;
28
- }
29
- :global(.sv5ui-plus-scrollbar::-webkit-scrollbar-track) {
30
- background: transparent;
31
- }
32
- :global(.sv5ui-plus-scrollbar::-webkit-scrollbar-thumb) {
33
- background-color: var(--color-outline-variant, rgba(156, 163, 175, 0.5));
34
- border-radius: 9999px;
35
- }
36
- :global(.sv5ui-plus-scrollbar::-webkit-scrollbar-thumb:hover) {
37
- background-color: var(--color-outline, rgba(107, 114, 128, 0.8));
38
- }
39
-
40
- /* Firefox support */
41
- :global(.sv5ui-plus-scrollbar) {
42
- scrollbar-width: thin;
43
- scrollbar-color: var(--color-outline-variant, rgba(156, 163, 175, 0.5)) transparent;
44
- }
45
-
46
- /* Hide scrollbar utility */
47
- :global(.scrollbar-none::-webkit-scrollbar) {
48
- display: none;
49
- }
50
- :global(.scrollbar-none) {
51
- -ms-overflow-style: none; /* IE and Edge */
52
- scrollbar-width: none; /* Firefox */
53
- }
54
- </style>
@@ -1,4 +0,0 @@
1
- import type { ScrollAreaProps } from './scroll-area.types.js';
2
- declare const ScrollArea: import("svelte").Component<ScrollAreaProps, {}, "">;
3
- type ScrollArea = ReturnType<typeof ScrollArea>;
4
- export default ScrollArea;
@@ -1,4 +0,0 @@
1
- import ScrollArea from './ScrollArea.svelte';
2
- export { ScrollArea };
3
- export * from './scroll-area.types.js';
4
- export * from './scroll-area.variants.js';
@@ -1,4 +0,0 @@
1
- import ScrollArea from './ScrollArea.svelte';
2
- export { ScrollArea };
3
- export * from './scroll-area.types.js';
4
- export * from './scroll-area.variants.js';
@@ -1,27 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import type { ScrollAreaVariantProps } from './scroll-area.variants.js';
4
- export interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
5
- /**
6
- * Orientation of the scrolling area.
7
- * @default 'vertical'
8
- */
9
- orientation?: ScrollAreaVariantProps['orientation'];
10
- /**
11
- * Whether to hide the scrollbar track/thumb completely while still allowing scrolling.
12
- * @default false
13
- */
14
- hideScrollbar?: boolean;
15
- /**
16
- * Additional CSS classes for the root container.
17
- */
18
- class?: string;
19
- /**
20
- * Additional CSS classes for the viewport (the scrollable area).
21
- */
22
- viewportClass?: string;
23
- /**
24
- * Content to be scrolled.
25
- */
26
- children?: Snippet;
27
- }
@@ -1 +0,0 @@
1
- export {};