@widgetic/design-system 0.5.22 → 0.5.23

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 (246) hide show
  1. package/README.md +2 -0
  2. package/dist/components/CopyableHeader.svelte +260 -448
  3. package/dist/components/CopyableHeader.svelte.d.ts +8 -5
  4. package/dist/components/EmptyState.svelte +100 -128
  5. package/dist/components/EmptyState.svelte.d.ts +16 -19
  6. package/dist/components/GenerateLoader.svelte +17 -10
  7. package/dist/components/PasswordInput.svelte +41 -44
  8. package/dist/components/PasswordInput.svelte.d.ts +2 -0
  9. package/dist/components/ThumbHashImage.svelte +117 -119
  10. package/dist/components/WScrollArea.svelte +47 -41
  11. package/dist/components/chat/ActivityRow.svelte +115 -0
  12. package/dist/components/chat/ActivityRow.svelte.d.ts +18 -0
  13. package/dist/components/chat/ChatHeader.svelte +114 -0
  14. package/dist/components/chat/ChatHeader.svelte.d.ts +26 -0
  15. package/dist/components/chat/Composer.svelte +172 -0
  16. package/dist/components/chat/Composer.svelte.d.ts +27 -0
  17. package/dist/components/chat/Message.svelte +158 -0
  18. package/dist/components/chat/Message.svelte.d.ts +28 -0
  19. package/dist/components/chat/OptionRow.svelte +59 -0
  20. package/dist/components/chat/OptionRow.svelte.d.ts +14 -0
  21. package/dist/components/chat/PlanCard.svelte +220 -0
  22. package/dist/components/chat/PlanCard.svelte.d.ts +34 -0
  23. package/dist/components/chat/QuestionCard.svelte +265 -0
  24. package/dist/components/chat/QuestionCard.svelte.d.ts +38 -0
  25. package/dist/components/chat/ScrollToBottom.svelte +51 -0
  26. package/dist/components/chat/ScrollToBottom.svelte.d.ts +11 -0
  27. package/dist/components/chat/SuggestionCard.svelte +79 -0
  28. package/dist/components/chat/SuggestionCard.svelte.d.ts +20 -0
  29. package/dist/components/chat/TaskRow.svelte +59 -0
  30. package/dist/components/chat/TaskRow.svelte.d.ts +11 -0
  31. package/dist/components/chat/composerLogic.d.ts +16 -0
  32. package/dist/components/chat/composerLogic.js +29 -0
  33. package/dist/components/chat/index.d.ts +16 -0
  34. package/dist/components/chat/index.js +16 -0
  35. package/dist/components/chat/questionCardLogic.d.ts +11 -0
  36. package/dist/components/chat/questionCardLogic.js +39 -0
  37. package/dist/components/index.d.ts +10 -1
  38. package/dist/components/index.js +10 -0
  39. package/dist/components/modals/ActionModal.svelte +186 -180
  40. package/dist/components/modals/BaseModal.svelte +402 -399
  41. package/dist/components/modals/BaseModal.svelte.d.ts +1 -0
  42. package/dist/components/modals/NewItemDialog.svelte +200 -243
  43. package/dist/components/modals/Portal.svelte +107 -105
  44. package/dist/components/modals/README.md +16 -2
  45. package/dist/components/modals/RenameDialog.svelte +234 -292
  46. package/dist/components/navigation/Breadcrumbs.svelte +415 -377
  47. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +3 -2
  48. package/dist/components/navigation/types.d.ts +2 -0
  49. package/dist/components/pdf/PDFViewer.svelte +1 -1
  50. package/dist/components/search-input/SearchInput.svelte +51 -104
  51. package/dist/components/search-input/SearchInput.svelte.d.ts +9 -27
  52. package/dist/components/shad-editor/editor.css +1 -1
  53. package/dist/components/shad-editor/i18n/messages.d.ts +1 -1
  54. package/dist/components/shad-editor/i18n/messages.js +1 -1
  55. package/dist/components/shell/AppShell.svelte +52 -0
  56. package/dist/components/shell/AppShell.svelte.d.ts +13 -0
  57. package/dist/components/shell/Banner.svelte +90 -0
  58. package/dist/components/shell/Banner.svelte.d.ts +61 -0
  59. package/dist/components/shell/ErrorState.svelte +60 -0
  60. package/dist/components/shell/ErrorState.svelte.d.ts +13 -0
  61. package/dist/components/shell/Link.svelte +63 -0
  62. package/dist/components/shell/Link.svelte.d.ts +53 -0
  63. package/dist/components/shell/NavDrawer.svelte +117 -0
  64. package/dist/components/shell/NavDrawer.svelte.d.ts +10 -0
  65. package/dist/components/shell/NavRow.svelte +128 -0
  66. package/dist/components/shell/NavRow.svelte.d.ts +65 -0
  67. package/dist/components/shell/NavSectionLabel.svelte +27 -0
  68. package/dist/components/shell/NavSectionLabel.svelte.d.ts +9 -0
  69. package/dist/components/shell/NotificationRow.svelte +76 -0
  70. package/dist/components/shell/NotificationRow.svelte.d.ts +16 -0
  71. package/dist/components/shell/PageHeader.svelte +42 -0
  72. package/dist/components/shell/PageHeader.svelte.d.ts +12 -0
  73. package/dist/components/shell/ProfileRow.svelte +95 -0
  74. package/dist/components/shell/ProfileRow.svelte.d.ts +54 -0
  75. package/dist/components/shell/SettingsDialog.svelte +118 -0
  76. package/dist/components/shell/SettingsDialog.svelte.d.ts +19 -0
  77. package/dist/components/shell/SettingsNav.svelte +46 -0
  78. package/dist/components/shell/SettingsNav.svelte.d.ts +11 -0
  79. package/dist/components/shell/Sidebar.svelte +82 -0
  80. package/dist/components/shell/Sidebar.svelte.d.ts +25 -0
  81. package/dist/components/shell/Stat.svelte +63 -0
  82. package/dist/components/shell/Stat.svelte.d.ts +58 -0
  83. package/dist/components/shell/TopBar.svelte +37 -0
  84. package/dist/components/shell/TopBar.svelte.d.ts +11 -0
  85. package/dist/components/shell/WidgetRow.svelte +126 -0
  86. package/dist/components/shell/WidgetRow.svelte.d.ts +78 -0
  87. package/dist/components/shell/error-state-messages.d.ts +7 -0
  88. package/dist/components/shell/error-state-messages.js +9 -0
  89. package/dist/components/shell/index.d.ts +22 -0
  90. package/dist/components/shell/index.js +25 -0
  91. package/dist/components/shell/link-external.d.ts +2 -0
  92. package/dist/components/shell/link-external.js +7 -0
  93. package/dist/components/shell/messages.d.ts +7 -0
  94. package/dist/components/shell/messages.js +5 -0
  95. package/dist/components/shell/settings-nav-types.d.ts +12 -0
  96. package/dist/components/shell/settings-nav-types.js +3 -0
  97. package/dist/components/shell/shell-utils.d.ts +7 -0
  98. package/dist/components/shell/shell-utils.js +27 -0
  99. package/dist/components/shell/stat-tone.d.ts +3 -0
  100. package/dist/components/shell/stat-tone.js +11 -0
  101. package/dist/components/toast/ToasterModal.svelte +102 -168
  102. package/dist/components/toast/ToasterModal.svelte.d.ts +2 -12
  103. package/dist/components/ui/accordion/accordion-content.svelte +3 -2
  104. package/dist/components/ui/accordion/accordion-item.svelte +10 -1
  105. package/dist/components/ui/accordion/accordion-trigger.svelte +4 -3
  106. package/dist/components/ui/alert/alert-description.svelte +5 -1
  107. package/dist/components/ui/alert/alert-title.svelte +2 -1
  108. package/dist/components/ui/alert/index.d.ts +13 -11
  109. package/dist/components/ui/alert/index.js +4 -4
  110. package/dist/components/ui/avatar/avatar-utils.d.ts +2 -0
  111. package/dist/components/ui/avatar/avatar-utils.js +9 -0
  112. package/dist/components/ui/avatar/avatar.svelte +63 -0
  113. package/dist/components/ui/avatar/avatar.svelte.d.ts +80 -0
  114. package/dist/components/ui/avatar/index.d.ts +4 -0
  115. package/dist/components/ui/avatar/index.js +4 -0
  116. package/dist/components/ui/badge/badge.svelte +22 -10
  117. package/dist/components/ui/badge/badge.svelte.d.ts +14 -15
  118. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
  119. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  120. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  121. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  122. package/dist/components/ui/button/button-padding.d.ts +9 -0
  123. package/dist/components/ui/button/button-padding.js +15 -0
  124. package/dist/components/ui/button/button.svelte +81 -31
  125. package/dist/components/ui/button/button.svelte.d.ts +48 -29
  126. package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
  127. package/dist/components/ui/calendar/calendar-head-cell.svelte +1 -1
  128. package/dist/components/ui/calendar/calendar-next-button.svelte +2 -2
  129. package/dist/components/ui/calendar/calendar-prev-button.svelte +2 -2
  130. package/dist/components/ui/card/card-description.svelte +1 -1
  131. package/dist/components/ui/card/card-title.svelte +1 -1
  132. package/dist/components/ui/card/card.svelte +1 -1
  133. package/dist/components/ui/checkbox/checkbox.svelte +9 -5
  134. package/dist/components/ui/chip/chip.svelte +48 -0
  135. package/dist/components/ui/chip/chip.svelte.d.ts +13 -0
  136. package/dist/components/ui/chip/index.d.ts +2 -0
  137. package/dist/components/ui/chip/index.js +2 -0
  138. package/dist/components/ui/command/command-dialog.svelte +1 -1
  139. package/dist/components/ui/command/command-input.svelte +4 -4
  140. package/dist/components/ui/command/command-item.svelte +1 -1
  141. package/dist/components/ui/command/command.svelte +1 -1
  142. package/dist/components/ui/dialog/dialog-content.svelte +4 -4
  143. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  144. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  145. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  146. package/dist/components/ui/drawer/drawer-content.svelte +1 -1
  147. package/dist/components/ui/drawer/drawer-overlay.svelte +1 -1
  148. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +5 -5
  149. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  150. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
  151. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +20 -2
  152. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +4 -0
  153. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +5 -1
  154. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +3 -3
  155. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +2 -1
  156. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  157. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +3 -3
  158. package/dist/components/ui/field/field-ids.d.ts +7 -0
  159. package/dist/components/ui/field/field-ids.js +15 -0
  160. package/dist/components/ui/field/field.svelte +62 -0
  161. package/dist/components/ui/field/field.svelte.d.ts +21 -0
  162. package/dist/components/ui/field/index.d.ts +3 -0
  163. package/dist/components/ui/field/index.js +3 -0
  164. package/dist/components/ui/hover-card/hover-card-content.svelte +1 -1
  165. package/dist/components/ui/icon-button/icon-button.svelte +72 -0
  166. package/dist/components/ui/icon-button/icon-button.svelte.d.ts +90 -0
  167. package/dist/components/ui/icon-button/index.d.ts +2 -0
  168. package/dist/components/ui/icon-button/index.js +4 -0
  169. package/dist/components/ui/input/index.d.ts +1 -0
  170. package/dist/components/ui/input/input.svelte +11 -4
  171. package/dist/components/ui/input/input.svelte.d.ts +4 -1
  172. package/dist/components/ui/input-otp/input-otp-separator.svelte +2 -2
  173. package/dist/components/ui/input-otp/input-otp-slot.svelte +5 -4
  174. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +1 -1
  175. package/dist/components/ui/input-otp/input-otp.svelte +1 -1
  176. package/dist/components/ui/label/label.svelte +3 -2
  177. package/dist/components/ui/popover/popover-content.svelte +1 -1
  178. package/dist/components/ui/progress/progress.svelte +19 -5
  179. package/dist/components/ui/progress/progress.svelte.d.ts +4 -2
  180. package/dist/components/ui/radio-group/radio-group-item.svelte +4 -4
  181. package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +1 -1
  182. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +2 -2
  183. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +2 -2
  184. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +4 -1
  185. package/dist/components/ui/scroll-area/scroll-area.svelte +1 -1
  186. package/dist/components/ui/select/select-content.svelte +1 -3
  187. package/dist/components/ui/select/select-item.svelte +5 -4
  188. package/dist/components/ui/select/select-scroll-down-button.svelte +2 -2
  189. package/dist/components/ui/select/select-scroll-up-button.svelte +2 -2
  190. package/dist/components/ui/select/select-trigger.svelte +4 -3
  191. package/dist/components/ui/skeleton/index.d.ts +2 -0
  192. package/dist/components/ui/skeleton/index.js +2 -0
  193. package/dist/components/ui/skeleton/skeleton.svelte +24 -0
  194. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +8 -0
  195. package/dist/components/ui/slider/slider.svelte +5 -10
  196. package/dist/components/ui/sonner/sonner.svelte +19 -13
  197. package/dist/components/ui/stepper-button/index.d.ts +3 -0
  198. package/dist/components/ui/stepper-button/index.js +2 -0
  199. package/dist/components/ui/stepper-button/stepper-button.svelte +37 -0
  200. package/dist/components/ui/stepper-button/stepper-button.svelte.d.ts +9 -0
  201. package/dist/components/ui/switch/switch.svelte +8 -3
  202. package/dist/components/ui/table/table-cell.svelte +1 -1
  203. package/dist/components/ui/table/table-head.svelte +1 -1
  204. package/dist/components/ui/table/table-row.svelte +1 -1
  205. package/dist/components/ui/tabs/tabs-list.svelte +1 -1
  206. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -1
  207. package/dist/components/ui/tag/index.d.ts +2 -0
  208. package/dist/components/ui/tag/index.js +2 -0
  209. package/dist/components/ui/tag/tag.svelte +42 -0
  210. package/dist/components/ui/tag/tag.svelte.d.ts +11 -0
  211. package/dist/components/ui/textarea/textarea.svelte +4 -3
  212. package/dist/components/ui/textarea/textarea.svelte.d.ts +2 -2
  213. package/dist/components/ui/toggle/toggle.svelte +9 -9
  214. package/dist/components/ui/toggle/toggle.svelte.d.ts +14 -21
  215. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  216. package/dist/fonts/Inter/Inter-Black.woff2 +0 -0
  217. package/dist/fonts/Inter/Inter-BlackItalic.woff2 +0 -0
  218. package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
  219. package/dist/fonts/Inter/Inter-BoldItalic.woff2 +0 -0
  220. package/dist/fonts/Inter/Inter-ExtraBold.woff2 +0 -0
  221. package/dist/fonts/Inter/Inter-ExtraBoldItalic.woff2 +0 -0
  222. package/dist/fonts/Inter/Inter-ExtraLight-BETA.woff2 +0 -0
  223. package/dist/fonts/Inter/Inter-ExtraLightItalic-BETA.woff2 +0 -0
  224. package/dist/fonts/Inter/Inter-Italic.woff2 +0 -0
  225. package/dist/fonts/Inter/Inter-Light-BETA.woff2 +0 -0
  226. package/dist/fonts/Inter/Inter-LightItalic-BETA.woff2 +0 -0
  227. package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
  228. package/dist/fonts/Inter/Inter-MediumItalic.woff2 +0 -0
  229. package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
  230. package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  231. package/dist/fonts/Inter/Inter-SemiBoldItalic.woff2 +0 -0
  232. package/dist/fonts/Inter/Inter-Thin-BETA.woff2 +0 -0
  233. package/dist/fonts/Inter/Inter-ThinItalic-BETA.woff2 +0 -0
  234. package/dist/fonts/Inter/Inter-italic.var.woff2 +0 -0
  235. package/dist/fonts/Inter/Inter-upright.var.woff2 +0 -0
  236. package/dist/fonts/Inter/Inter.var.woff2 +0 -0
  237. package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  238. package/dist/i18n/audit/designSystemWords.d.ts +1 -1
  239. package/dist/i18n/audit/designSystemWords.js +1 -1
  240. package/dist/styles/fonts.css +18 -14
  241. package/dist/styles/global.css +7 -19
  242. package/dist/styles/tokens.css +332 -0
  243. package/dist/utils.d.ts +27 -0
  244. package/dist/utils.js +33 -2
  245. package/package.json +2 -1
  246. package/tailwind.config.ts +7 -47
@@ -0,0 +1,39 @@
1
+ /** Pure selection and keyboard helpers for QuestionCard. */
2
+ export function toggleOption(selected, optionId, multiple) {
3
+ if (multiple) {
4
+ return selected.includes(optionId)
5
+ ? selected.filter((id) => id !== optionId)
6
+ : [...selected, optionId];
7
+ }
8
+ return [optionId];
9
+ }
10
+ export function moveFocusedIndex(current, direction, count) {
11
+ if (count <= 0)
12
+ return 0;
13
+ if (direction === 'up') {
14
+ return current <= 0 ? count - 1 : current - 1;
15
+ }
16
+ return current >= count - 1 ? 0 : current + 1;
17
+ }
18
+ export function canSubmitQuestion(selected) {
19
+ return selected.length > 0;
20
+ }
21
+ export function selectionRole(multiple) {
22
+ return multiple ? 'group' : 'radiogroup';
23
+ }
24
+ export function optionItemRole(multiple) {
25
+ return multiple ? 'checkbox' : 'radio';
26
+ }
27
+ /** Format the step line (1-based `current`). */
28
+ export function formatQuestionStep(template, current, total) {
29
+ return template.replace('{current}', String(current)).replace('{total}', String(total));
30
+ }
31
+ export function isFirstQuestion(index) {
32
+ return index <= 0;
33
+ }
34
+ export function isLastQuestion(index, total) {
35
+ return total <= 0 || index >= total - 1;
36
+ }
37
+ export function primaryQuestionLabel(isLast, nextLabel, submitLabel) {
38
+ return isLast ? submitLabel : nextLabel;
39
+ }
@@ -4,32 +4,38 @@ export { default as GenerateLoader } from './GenerateLoader.svelte';
4
4
  export { default as PasswordInput } from './PasswordInput.svelte';
5
5
  export { default as ThumbHashImage } from './ThumbHashImage.svelte';
6
6
  export { default as WScrollArea } from './WScrollArea.svelte';
7
+ export { Composer, type ComposerMessages, type ComposerProps, Message, type MessageMessages, type MessageProps, type MessageRole, ActivityRow, type ActivityRowProps, type ActivityRowStatus, OptionRow, type OptionRowProps, type OptionRowSelectionMode, TaskRow, type TaskRowProps, type TaskRowStatus, ScrollToBottom, type ScrollToBottomProps, canSendText, clampTextareaHeight, shouldSendOnKeyDown, ChatHeader, PlanCard, QuestionCard, canSubmitQuestion, formatQuestionStep, isFirstQuestion, isLastQuestion, moveFocusedIndex, optionItemRole, primaryQuestionLabel, selectionRole, toggleOption, SuggestionCard } from './chat';
7
8
  export { default as DebugGrid } from './debug-grid/DebugGrid.svelte';
8
9
  export { default as BrowserInputController } from './ic/browser/BrowserInputController.svelte';
9
10
  export { default as ActionModal } from './modals/ActionModal.svelte';
10
11
  export { default as BaseModal } from './modals/BaseModal.svelte';
11
12
  export { default as NewItemDialog } from './modals/NewItemDialog.svelte';
12
- export type { NewItemDialogMessages, RenameDialogMessages } from './modals/messages';
13
13
  export { default as Portal } from './modals/Portal.svelte';
14
14
  export { default as RenameDialog } from './modals/RenameDialog.svelte';
15
15
  export { Breadcrumbs, type BreadcrumbsProps } from './navigation';
16
16
  export { default as PDFViewer } from './pdf/PDFViewer.svelte';
17
17
  export { SearchInput } from './search-input';
18
+ export { ShadEditor, checkShadEditorMessages, type ShadEditorMessageKey, type TipTapEditor, type TipTapEditorLevel } from './shad-editor';
19
+ export { NavRow, navRowVariants, NavSectionLabel, ProfileRow, profileRowVariants, Sidebar, WidgetRow, widgetRowVariants, PageHeader, TopBar, NavDrawer, AppShell, ErrorState, defaultErrorStateMessages, type ErrorStateMessages, NotificationRow, type NotificationRowProps, SettingsNav, type SettingsNavProps, SettingsDialog, type SettingsDialogProps, Stat, type StatProps, statVariants, Banner, type BannerProps, type BannerTone, bannerVariants, Link, type LinkProps, type LinkSize, linkVariants, type SettingsNavGroup, type SettingsNavItem, settingsNavItemIsActive, externalLinkAttributes, statHintClass, type StatTone, type SettingsDialogMessages, defaultSettingsDialogMessages } from './shell';
18
20
  export { ToasterModal, showToast } from './toast';
19
21
  export * as Accordion from './ui/accordion';
20
22
  export * as Alert from './ui/alert';
23
+ export { avatarInitials, avatarVariants, type AvatarSize, Avatar } from './ui/avatar';
21
24
  export { Badge, badgeVariants, type BadgeVariant } from './ui/badge';
22
25
  export * as Breadcrumb from './ui/breadcrumb';
23
26
  export { type Props, Button, buttonVariants, type ButtonProps, type ButtonSize, type ButtonVariant } from './ui/button';
24
27
  export { Calendar } from './ui/calendar';
25
28
  export * as Card from './ui/card';
26
29
  export { Checkbox } from './ui/checkbox';
30
+ export { Chip } from './ui/chip';
27
31
  export * as Collapsible from './ui/collapsible';
28
32
  export * as Command from './ui/command';
29
33
  export * as Dialog from './ui/dialog';
30
34
  export * as Drawer from './ui/drawer';
31
35
  export * as DropdownMenu from './ui/dropdown-menu';
36
+ export { createFieldIds, fieldDescribedBy, type FieldIds, Field } from './ui/field';
32
37
  export * as HoverCard from './ui/hover-card';
38
+ export { IconButton, iconButtonVariants, type IconButtonProps, type IconButtonSize, type IconButtonVariant } from './ui/icon-button';
33
39
  export { Input } from './ui/input';
34
40
  export * as InputOtp from './ui/input-otp';
35
41
  export { Label } from './ui/label';
@@ -40,11 +46,14 @@ export { RangeCalendar } from './ui/range-calendar';
40
46
  export { ScrollArea, ScrollAreaScrollbar } from './ui/scroll-area';
41
47
  export * as Select from './ui/select';
42
48
  export { Separator } from './ui/separator';
49
+ export { Skeleton } from './ui/skeleton';
43
50
  export { Slider, type SliderProps } from './ui/slider';
44
51
  export { Toaster, toast } from './ui/sonner';
52
+ export { StepperButton } from './ui/stepper-button';
45
53
  export { Switch } from './ui/switch';
46
54
  export * as Table from './ui/table';
47
55
  export * as Tabs from './ui/tabs';
56
+ export { Tag } from './ui/tag';
48
57
  export { Textarea, type TextareaEvents, type FormTextareaEvent } from './ui/textarea';
49
58
  export { toggleVariants, type ToggleSize, type ToggleVariant, type ToggleVariants, Toggle } from './ui/toggle';
50
59
  export * as ToggleGroup from './ui/toggle-group';
@@ -5,6 +5,7 @@ export { default as GenerateLoader } from './GenerateLoader.svelte';
5
5
  export { default as PasswordInput } from './PasswordInput.svelte';
6
6
  export { default as ThumbHashImage } from './ThumbHashImage.svelte';
7
7
  export { default as WScrollArea } from './WScrollArea.svelte';
8
+ export { Composer, Message, ActivityRow, OptionRow, TaskRow, ScrollToBottom, canSendText, clampTextareaHeight, shouldSendOnKeyDown, ChatHeader, PlanCard, QuestionCard, canSubmitQuestion, formatQuestionStep, isFirstQuestion, isLastQuestion, moveFocusedIndex, optionItemRole, primaryQuestionLabel, selectionRole, toggleOption, SuggestionCard } from './chat';
8
9
  export { default as DebugGrid } from './debug-grid/DebugGrid.svelte';
9
10
  export { default as BrowserInputController } from './ic/browser/BrowserInputController.svelte';
10
11
  export { default as ActionModal } from './modals/ActionModal.svelte';
@@ -15,21 +16,27 @@ export { default as RenameDialog } from './modals/RenameDialog.svelte';
15
16
  export { Breadcrumbs } from './navigation';
16
17
  export { default as PDFViewer } from './pdf/PDFViewer.svelte';
17
18
  export { SearchInput } from './search-input';
19
+ export { ShadEditor, checkShadEditorMessages } from './shad-editor';
20
+ export { NavRow, navRowVariants, NavSectionLabel, ProfileRow, profileRowVariants, Sidebar, WidgetRow, widgetRowVariants, PageHeader, TopBar, NavDrawer, AppShell, ErrorState, defaultErrorStateMessages, NotificationRow, SettingsNav, SettingsDialog, Stat, statVariants, Banner, bannerVariants, Link, linkVariants, settingsNavItemIsActive, externalLinkAttributes, statHintClass, defaultSettingsDialogMessages } from './shell';
18
21
  export { ToasterModal, showToast } from './toast';
19
22
  export * as Accordion from './ui/accordion';
20
23
  export * as Alert from './ui/alert';
24
+ export { avatarInitials, avatarVariants, Avatar } from './ui/avatar';
21
25
  export { Badge, badgeVariants } from './ui/badge';
22
26
  export * as Breadcrumb from './ui/breadcrumb';
23
27
  export { Button, buttonVariants } from './ui/button';
24
28
  export { Calendar } from './ui/calendar';
25
29
  export * as Card from './ui/card';
26
30
  export { Checkbox } from './ui/checkbox';
31
+ export { Chip } from './ui/chip';
27
32
  export * as Collapsible from './ui/collapsible';
28
33
  export * as Command from './ui/command';
29
34
  export * as Dialog from './ui/dialog';
30
35
  export * as Drawer from './ui/drawer';
31
36
  export * as DropdownMenu from './ui/dropdown-menu';
37
+ export { createFieldIds, fieldDescribedBy, Field } from './ui/field';
32
38
  export * as HoverCard from './ui/hover-card';
39
+ export { IconButton, iconButtonVariants } from './ui/icon-button';
33
40
  export { Input } from './ui/input';
34
41
  export * as InputOtp from './ui/input-otp';
35
42
  export { Label } from './ui/label';
@@ -40,11 +47,14 @@ export { RangeCalendar } from './ui/range-calendar';
40
47
  export { ScrollArea, ScrollAreaScrollbar } from './ui/scroll-area';
41
48
  export * as Select from './ui/select';
42
49
  export { Separator } from './ui/separator';
50
+ export { Skeleton } from './ui/skeleton';
43
51
  export { Slider } from './ui/slider';
44
52
  export { Toaster, toast } from './ui/sonner';
53
+ export { StepperButton } from './ui/stepper-button';
45
54
  export { Switch } from './ui/switch';
46
55
  export * as Table from './ui/table';
47
56
  export * as Tabs from './ui/tabs';
57
+ export { Tag } from './ui/tag';
48
58
  export { Textarea } from './ui/textarea';
49
59
  export { toggleVariants, Toggle } from './ui/toggle';
50
60
  export * as ToggleGroup from './ui/toggle-group';
@@ -1,187 +1,193 @@
1
1
  <script lang="ts">
2
- // Svelte imports
3
- import { createEventDispatcher, onMount } from 'svelte';
4
- const dispatch = createEventDispatcher();
5
-
6
- // Local imports
7
- import { Button } from '../ui/button';
8
- import { toast } from '../ui/sonner';
9
- import BaseModal from './BaseModal.svelte';
10
-
11
- // For debugging
12
- const showLogs = true; // You can set to true when debugging
13
-
14
- // Props
15
- let className = '';
16
- export { className as class };
17
- export let style: string = '';
18
- //
19
- export let isOpen = false;
20
- export let items: any[] = [];
21
- export let title: string = '';
22
- export let message: string = '';
23
- export let confirmLabel: string = 'Confirm';
24
- export let onConfirm: () => Promise<any> = async () => {};
25
- export let cancelLabel: string = 'Cancel';
26
- // The words a screen reader says for the close button (see BaseModal)
27
- export let closeLabel: string = 'Close modal';
28
- export let onCancel: () => void = () => {};
29
- export let width: string = '410px';
30
- export let height: string = '168px';
31
- export let target: string = 'action-confirmation-modal'; // target for Portal
32
- export let isConfirmDisabled: boolean = false;
33
- /** When false, a failed confirm can leave the dialog open. Callers close it themselves. */
34
- export let closeOnConfirm: boolean = true;
35
- export let confirmVariant: 'primary' | 'attention' = 'primary';
36
- export let actionType: string = 'confirm';
37
-
38
- // For backwards compatibility with specific implementations
39
- export let modalType: string = 'actionConfirmation';
40
- export let modalData: any = null;
41
-
42
- /* INTERNAL STATE */
43
- let confirmResult: string = '';
44
- let isInitialized = false;
45
-
46
- // Only initialize once mounted
47
- onMount(() => {
48
- isInitialized = true;
49
- });
50
-
51
- // Initialize modalData with our current props if not provided externally
52
- // Only do this when modal is actually open
53
- $: if (isOpen && isInitialized && modalData === null) {
54
- modalData = {
55
- items,
56
- title,
57
- message,
58
- confirmLabel,
59
- cancelLabel,
60
- confirmVariant,
61
- actionType
62
- };
63
- }
64
-
65
- // Check if buttons are present
66
- $: hasButtons = cancelLabel || confirmLabel;
67
-
68
- function handleClose(event: Event) {
69
- isOpen = false;
70
- onCancel();
71
- dispatch('cancel');
72
- }
73
-
74
- async function handleConfirm() {
75
- // call the onConfirm handler
76
- let result = await onConfirm();
77
- confirmResult = result || '';
78
-
79
- // Dispatch a confirmation event with all items
80
- dispatch('confirm', { items });
81
-
82
- // Callers that show an error inside the dialog set closeOnConfirm to false.
83
- if (closeOnConfirm) isOpen = false;
84
- }
85
-
86
- // Support for restoring modal state
87
- function handleRestore(event: CustomEvent) {
88
- // Skip restoration if modal isn't initialized
89
- if (!isInitialized) return;
90
-
91
- if (event.detail) {
92
- const data = event.detail;
93
-
94
- // Only process items if modal is actually open
95
- if (isOpen && data.items) {
96
- if (Array.isArray(data.items)) {
97
- items = data.items;
98
- } else if (typeof data.items === 'object') {
99
- items = [data.items];
100
- }
101
- }
102
-
103
- if (data.title) title = data.title;
104
- if (data.message) message = data.message;
105
- if (data.confirmLabel) confirmLabel = data.confirmLabel;
106
- if (data.cancelLabel) cancelLabel = data.cancelLabel;
107
- if (data.confirmVariant) confirmVariant = data.confirmVariant;
108
- if (data.actionType) actionType = data.actionType;
109
- }
110
- }
111
-
112
- // Only log when modal is actually open
113
- $: if (isOpen && isInitialized && items && items.length > 0 && showLogs) {
114
- // console.log('Items in open modal:', items);
115
- // console.log('First item name:', items[0]?.name);
116
- }
2
+ // Svelte imports
3
+ import { createEventDispatcher, onMount } from 'svelte';
4
+ const dispatch = createEventDispatcher();
5
+
6
+ // Local imports
7
+ import { Button } from '../ui/button';
8
+ import { toast } from '../ui/sonner';
9
+ import BaseModal from './BaseModal.svelte';
10
+
11
+ // For debugging
12
+ const showLogs = true; // You can set to true when debugging
13
+
14
+ // Props
15
+ let className = '';
16
+ export { className as class };
17
+ export let style: string = '';
18
+ //
19
+ export let isOpen = false;
20
+ export let items: any[] = [];
21
+ export let title: string = '';
22
+ export let message: string = '';
23
+ export let confirmLabel: string = 'Confirm';
24
+ export let onConfirm: () => Promise<any> = async () => {};
25
+ export let cancelLabel: string = 'Cancel';
26
+ // The words a screen reader says for the close button (see BaseModal)
27
+ export let closeLabel: string = 'Close modal';
28
+ export let onCancel: () => void = () => {};
29
+ export let width: string = '400px';
30
+ export let height: string = '168px';
31
+ export let target: string = 'action-confirmation-modal'; // target for Portal
32
+ export let isConfirmDisabled: boolean = false;
33
+ /** When false, a failed confirm can leave the dialog open. Callers close it themselves. */
34
+ export let closeOnConfirm: boolean = true;
35
+ export let confirmVariant: 'primary' | 'attention' = 'primary';
36
+ export let actionType: string = 'confirm';
37
+
38
+ // For backwards compatibility with specific implementations
39
+ export let modalType: string = 'actionConfirmation';
40
+ export let modalData: any = null;
41
+
42
+ /* INTERNAL STATE */
43
+ let confirmResult: string = '';
44
+ let isInitialized = false;
45
+
46
+ // Only initialize once mounted
47
+ onMount(() => {
48
+ isInitialized = true;
49
+ });
50
+
51
+ // Initialize modalData with our current props if not provided externally
52
+ // Only do this when modal is actually open
53
+ $: if (isOpen && isInitialized && modalData === null) {
54
+ modalData = {
55
+ items,
56
+ title,
57
+ message,
58
+ confirmLabel,
59
+ cancelLabel,
60
+ confirmVariant,
61
+ actionType
62
+ };
63
+ }
64
+
65
+ // Check if buttons are present
66
+ $: hasButtons = cancelLabel || confirmLabel;
67
+
68
+ function handleClose(event: Event) {
69
+ isOpen = false;
70
+ onCancel();
71
+ dispatch('cancel');
72
+ }
73
+
74
+ async function handleConfirm() {
75
+ // call the onConfirm handler
76
+ let result = await onConfirm();
77
+ confirmResult = result || '';
78
+
79
+ // Dispatch a confirmation event with all items
80
+ dispatch('confirm', { items });
81
+
82
+ // Callers that show an error inside the dialog set closeOnConfirm to false.
83
+ if (closeOnConfirm) isOpen = false;
84
+ }
85
+
86
+ // Support for restoring modal state
87
+ function handleRestore(event: CustomEvent) {
88
+ // Skip restoration if modal isn't initialized
89
+ if (!isInitialized) return;
90
+
91
+ if (event.detail) {
92
+ const data = event.detail;
93
+
94
+ // Only process items if modal is actually open
95
+ if (isOpen && data.items) {
96
+ if (Array.isArray(data.items)) {
97
+ items = data.items;
98
+ } else if (typeof data.items === 'object') {
99
+ items = [data.items];
100
+ }
101
+ }
102
+
103
+ if (data.title) title = data.title;
104
+ if (data.message) message = data.message;
105
+ if (data.confirmLabel) confirmLabel = data.confirmLabel;
106
+ if (data.cancelLabel) cancelLabel = data.cancelLabel;
107
+ if (data.confirmVariant) confirmVariant = data.confirmVariant;
108
+ if (data.actionType) actionType = data.actionType;
109
+ }
110
+ }
111
+
112
+ // Only log when modal is actually open
113
+ $: if (isOpen && isInitialized && items && items.length > 0 && showLogs) {
114
+ // console.log('Items in open modal:', items);
115
+ // console.log('First item name:', items[0]?.name);
116
+ }
117
117
  </script>
118
118
 
119
- <BaseModal
120
- bind:open={isOpen}
121
- on:close={handleClose}
122
- {target}
123
- title={title}
124
- width={width}
125
- height={height}
126
- titlePadding="small"
127
- {closeLabel}
128
- {modalType}
129
- {modalData}
130
- on:restore={handleRestore}
131
- class={!hasButtons ? 'no-buttons' : ''}
119
+ <BaseModal
120
+ bind:open={isOpen}
121
+ on:close={handleClose}
122
+ {target}
123
+ {title}
124
+ {width}
125
+ {height}
126
+ {closeLabel}
127
+ {modalType}
128
+ {modalData}
129
+ on:restore={handleRestore}
130
+ class={!hasButtons ? 'no-buttons' : ''}
132
131
  >
133
- <div class="{className ? `${className} ` : ''}action-modal-container h-full flex flex-col gap-4 min-h-[99px] justify-between {!hasButtons ? 'pb-0' : ''}"
134
- style={style}
135
- >
136
-
137
- <!-- Message Container -->
138
- {#if message}
139
- <p class="body text-[hsl(var(--grey5))] text-center px-4">
140
- {message}
141
- </p>
142
- {/if}
143
-
144
- <!-- Slot for custom content -->
145
- <slot></slot>
146
-
147
- <!-- Buttons Container - Only show if at least one button label is provided -->
148
- {#if hasButtons}
149
- <div class="buttons-container flex justify-center gap-4 mb-[4px]">
150
- {#if cancelLabel}
151
- <Button
152
- type="button"
153
- variant="secondary"
154
- class="cancel-button modal-btn-secondary !h-[34px] !rounded-[100px] px-4 py-2"
155
- onclick={handleClose}
156
- >
157
- {cancelLabel}
158
- </Button>
159
- {/if}
160
- {#if confirmLabel}
161
- <Button
162
- type="button"
163
- class="{confirmVariant === 'attention' ? 'confirm-button modal-btn-attention !h-[34px] !rounded-[100px] px-4 py-2 bg-[hsl(var(--error))] hover:bg-[hsl(var(--error-dark))] text-white' : 'confirm-button modal-btn-primary !h-[34px] !rounded-[100px] px-4 py-2 bg-[hsl(var(--forest-green))] hover:bg-[hsl(var(--forest-green-dark))] text-white'}"
164
- onclick={handleConfirm}
165
- disabled={isConfirmDisabled}
166
- >
167
- {confirmLabel}
168
- </Button>
169
- {/if}
170
- </div>
171
- {/if}
172
-
173
- <!-- Update result box - Only show if there's a result -->
174
- {#if confirmResult}
175
- <p class="mt-4 text-sm text-center" class:text-[hsl(var(--sage-green))]={!confirmResult.startsWith('Error')} class:text-[hsl(var(--error))]={confirmResult.startsWith('Error')}>
176
- {@html confirmResult}
177
- </p>
178
- {/if}
179
- </div>
132
+ <div
133
+ class="{className
134
+ ? `${className} `
135
+ : ''}action-modal-container flex flex-col gap-4 {!hasButtons ? 'pb-0' : ''}"
136
+ {style}
137
+ >
138
+ <!-- Message Container -->
139
+ {#if message}
140
+ <p class="text-body text-muted-foreground text-start">
141
+ {message}
142
+ </p>
143
+ {/if}
144
+
145
+ <!-- Slot for custom content -->
146
+ <slot></slot>
147
+
148
+ <!-- Buttons Container - Only show if at least one button label is provided -->
149
+ {#if hasButtons}
150
+ <div class="buttons-container flex justify-end gap-2">
151
+ {#if cancelLabel}
152
+ <Button
153
+ type="button"
154
+ variant="outline"
155
+ class="cancel-button"
156
+ onclick={handleClose}
157
+ >
158
+ {cancelLabel}
159
+ </Button>
160
+ {/if}
161
+ {#if confirmLabel}
162
+ <Button
163
+ type="button"
164
+ variant={confirmVariant === 'attention' ? 'destructive' : 'default'}
165
+ class="confirm-button"
166
+ onclick={handleConfirm}
167
+ disabled={isConfirmDisabled}
168
+ >
169
+ {confirmLabel}
170
+ </Button>
171
+ {/if}
172
+ </div>
173
+ {/if}
174
+
175
+ <!-- Update result box - Only show if there's a result -->
176
+ {#if confirmResult}
177
+ <p
178
+ class="text-caption mt-4 text-center"
179
+ class:text-brand={!confirmResult.startsWith('Error')}
180
+ class:text-destructive={confirmResult.startsWith('Error')}
181
+ >
182
+ {@html confirmResult}
183
+ </p>
184
+ {/if}
185
+ </div>
180
186
  </BaseModal>
181
187
 
182
188
  <style>
183
- /* Remove bottom padding when no buttons are present */
184
- :global(.no-buttons .modal-content-inner-container) {
185
- padding-bottom: 0 !important;
186
- }
187
- </style>
189
+ /* Remove bottom padding when no buttons are present */
190
+ :global(.no-buttons .modal-content-inner-container) {
191
+ padding-bottom: 0 !important;
192
+ }
193
+ </style>