@widgetic/design-system 0.5.21 → 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.
- package/README.md +2 -0
- package/dist/components/CopyableHeader.svelte +260 -448
- package/dist/components/CopyableHeader.svelte.d.ts +8 -5
- package/dist/components/EmptyState.svelte +100 -128
- package/dist/components/EmptyState.svelte.d.ts +16 -19
- package/dist/components/GenerateLoader.svelte +17 -10
- package/dist/components/PasswordInput.svelte +41 -44
- package/dist/components/PasswordInput.svelte.d.ts +2 -0
- package/dist/components/ThumbHashImage.svelte +117 -119
- package/dist/components/WScrollArea.svelte +47 -41
- package/dist/components/chat/ActivityRow.svelte +115 -0
- package/dist/components/chat/ActivityRow.svelte.d.ts +18 -0
- package/dist/components/chat/ChatHeader.svelte +114 -0
- package/dist/components/chat/ChatHeader.svelte.d.ts +26 -0
- package/dist/components/chat/Composer.svelte +172 -0
- package/dist/components/chat/Composer.svelte.d.ts +27 -0
- package/dist/components/chat/Message.svelte +158 -0
- package/dist/components/chat/Message.svelte.d.ts +28 -0
- package/dist/components/chat/OptionRow.svelte +59 -0
- package/dist/components/chat/OptionRow.svelte.d.ts +14 -0
- package/dist/components/chat/PlanCard.svelte +220 -0
- package/dist/components/chat/PlanCard.svelte.d.ts +34 -0
- package/dist/components/chat/QuestionCard.svelte +265 -0
- package/dist/components/chat/QuestionCard.svelte.d.ts +38 -0
- package/dist/components/chat/ScrollToBottom.svelte +51 -0
- package/dist/components/chat/ScrollToBottom.svelte.d.ts +11 -0
- package/dist/components/chat/SuggestionCard.svelte +79 -0
- package/dist/components/chat/SuggestionCard.svelte.d.ts +20 -0
- package/dist/components/chat/TaskRow.svelte +59 -0
- package/dist/components/chat/TaskRow.svelte.d.ts +11 -0
- package/dist/components/chat/composerLogic.d.ts +16 -0
- package/dist/components/chat/composerLogic.js +29 -0
- package/dist/components/chat/index.d.ts +16 -0
- package/dist/components/chat/index.js +16 -0
- package/dist/components/chat/questionCardLogic.d.ts +11 -0
- package/dist/components/chat/questionCardLogic.js +39 -0
- package/dist/components/index.d.ts +10 -1
- package/dist/components/index.js +10 -0
- package/dist/components/modals/ActionModal.svelte +186 -180
- package/dist/components/modals/BaseModal.svelte +404 -395
- package/dist/components/modals/BaseModal.svelte.d.ts +3 -0
- package/dist/components/modals/NewItemDialog.svelte +200 -243
- package/dist/components/modals/Portal.svelte +107 -105
- package/dist/components/modals/README.md +16 -2
- package/dist/components/modals/RenameDialog.svelte +234 -292
- package/dist/components/navigation/Breadcrumbs.svelte +415 -377
- package/dist/components/navigation/Breadcrumbs.svelte.d.ts +3 -2
- package/dist/components/navigation/types.d.ts +2 -0
- package/dist/components/pdf/PDFViewer.svelte +54 -1
- package/dist/components/search-input/SearchInput.svelte +51 -104
- package/dist/components/search-input/SearchInput.svelte.d.ts +9 -27
- package/dist/components/shad-editor/editor.css +1 -1
- package/dist/components/shad-editor/i18n/messages.d.ts +1 -1
- package/dist/components/shad-editor/i18n/messages.js +1 -1
- package/dist/components/shell/AppShell.svelte +52 -0
- package/dist/components/shell/AppShell.svelte.d.ts +13 -0
- package/dist/components/shell/Banner.svelte +90 -0
- package/dist/components/shell/Banner.svelte.d.ts +61 -0
- package/dist/components/shell/ErrorState.svelte +60 -0
- package/dist/components/shell/ErrorState.svelte.d.ts +13 -0
- package/dist/components/shell/Link.svelte +63 -0
- package/dist/components/shell/Link.svelte.d.ts +53 -0
- package/dist/components/shell/NavDrawer.svelte +117 -0
- package/dist/components/shell/NavDrawer.svelte.d.ts +10 -0
- package/dist/components/shell/NavRow.svelte +128 -0
- package/dist/components/shell/NavRow.svelte.d.ts +65 -0
- package/dist/components/shell/NavSectionLabel.svelte +27 -0
- package/dist/components/shell/NavSectionLabel.svelte.d.ts +9 -0
- package/dist/components/shell/NotificationRow.svelte +76 -0
- package/dist/components/shell/NotificationRow.svelte.d.ts +16 -0
- package/dist/components/shell/PageHeader.svelte +42 -0
- package/dist/components/shell/PageHeader.svelte.d.ts +12 -0
- package/dist/components/shell/ProfileRow.svelte +95 -0
- package/dist/components/shell/ProfileRow.svelte.d.ts +54 -0
- package/dist/components/shell/SettingsDialog.svelte +118 -0
- package/dist/components/shell/SettingsDialog.svelte.d.ts +19 -0
- package/dist/components/shell/SettingsNav.svelte +46 -0
- package/dist/components/shell/SettingsNav.svelte.d.ts +11 -0
- package/dist/components/shell/Sidebar.svelte +82 -0
- package/dist/components/shell/Sidebar.svelte.d.ts +25 -0
- package/dist/components/shell/Stat.svelte +63 -0
- package/dist/components/shell/Stat.svelte.d.ts +58 -0
- package/dist/components/shell/TopBar.svelte +37 -0
- package/dist/components/shell/TopBar.svelte.d.ts +11 -0
- package/dist/components/shell/WidgetRow.svelte +126 -0
- package/dist/components/shell/WidgetRow.svelte.d.ts +78 -0
- package/dist/components/shell/error-state-messages.d.ts +7 -0
- package/dist/components/shell/error-state-messages.js +9 -0
- package/dist/components/shell/index.d.ts +22 -0
- package/dist/components/shell/index.js +25 -0
- package/dist/components/shell/link-external.d.ts +2 -0
- package/dist/components/shell/link-external.js +7 -0
- package/dist/components/shell/messages.d.ts +7 -0
- package/dist/components/shell/messages.js +5 -0
- package/dist/components/shell/settings-nav-types.d.ts +12 -0
- package/dist/components/shell/settings-nav-types.js +3 -0
- package/dist/components/shell/shell-utils.d.ts +7 -0
- package/dist/components/shell/shell-utils.js +27 -0
- package/dist/components/shell/stat-tone.d.ts +3 -0
- package/dist/components/shell/stat-tone.js +11 -0
- package/dist/components/toast/ToasterModal.svelte +102 -168
- package/dist/components/toast/ToasterModal.svelte.d.ts +2 -12
- package/dist/components/ui/accordion/accordion-content.svelte +3 -2
- package/dist/components/ui/accordion/accordion-item.svelte +10 -1
- package/dist/components/ui/accordion/accordion-trigger.svelte +4 -3
- package/dist/components/ui/alert/alert-description.svelte +5 -1
- package/dist/components/ui/alert/alert-title.svelte +2 -1
- package/dist/components/ui/alert/index.d.ts +13 -11
- package/dist/components/ui/alert/index.js +4 -4
- package/dist/components/ui/avatar/avatar-utils.d.ts +2 -0
- package/dist/components/ui/avatar/avatar-utils.js +9 -0
- package/dist/components/ui/avatar/avatar.svelte +63 -0
- package/dist/components/ui/avatar/avatar.svelte.d.ts +80 -0
- package/dist/components/ui/avatar/index.d.ts +4 -0
- package/dist/components/ui/avatar/index.js +4 -0
- package/dist/components/ui/badge/badge.svelte +22 -10
- package/dist/components/ui/badge/badge.svelte.d.ts +14 -15
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
- package/dist/components/ui/button/button-padding.d.ts +9 -0
- package/dist/components/ui/button/button-padding.js +15 -0
- package/dist/components/ui/button/button.svelte +81 -31
- package/dist/components/ui/button/button.svelte.d.ts +48 -29
- package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
- package/dist/components/ui/calendar/calendar-head-cell.svelte +1 -1
- package/dist/components/ui/calendar/calendar-next-button.svelte +2 -2
- package/dist/components/ui/calendar/calendar-prev-button.svelte +2 -2
- package/dist/components/ui/card/card-description.svelte +1 -1
- package/dist/components/ui/card/card-title.svelte +1 -1
- package/dist/components/ui/card/card.svelte +1 -1
- package/dist/components/ui/checkbox/checkbox.svelte +9 -5
- package/dist/components/ui/chip/chip.svelte +48 -0
- package/dist/components/ui/chip/chip.svelte.d.ts +13 -0
- package/dist/components/ui/chip/index.d.ts +2 -0
- package/dist/components/ui/chip/index.js +2 -0
- package/dist/components/ui/command/command-dialog.svelte +1 -1
- package/dist/components/ui/command/command-input.svelte +4 -4
- package/dist/components/ui/command/command-item.svelte +1 -1
- package/dist/components/ui/command/command.svelte +1 -1
- package/dist/components/ui/dialog/dialog-content.svelte +4 -4
- package/dist/components/ui/dialog/dialog-description.svelte +1 -1
- package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
- package/dist/components/ui/dialog/dialog-title.svelte +1 -1
- package/dist/components/ui/drawer/drawer-content.svelte +1 -1
- package/dist/components/ui/drawer/drawer-overlay.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +5 -5
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +20 -2
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +4 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +5 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +3 -3
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +2 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +3 -3
- package/dist/components/ui/field/field-ids.d.ts +7 -0
- package/dist/components/ui/field/field-ids.js +15 -0
- package/dist/components/ui/field/field.svelte +62 -0
- package/dist/components/ui/field/field.svelte.d.ts +21 -0
- package/dist/components/ui/field/index.d.ts +3 -0
- package/dist/components/ui/field/index.js +3 -0
- package/dist/components/ui/hover-card/hover-card-content.svelte +1 -1
- package/dist/components/ui/icon-button/icon-button.svelte +72 -0
- package/dist/components/ui/icon-button/icon-button.svelte.d.ts +90 -0
- package/dist/components/ui/icon-button/index.d.ts +2 -0
- package/dist/components/ui/icon-button/index.js +4 -0
- package/dist/components/ui/input/index.d.ts +1 -0
- package/dist/components/ui/input/input.svelte +11 -4
- package/dist/components/ui/input/input.svelte.d.ts +4 -1
- package/dist/components/ui/input-otp/input-otp-separator.svelte +2 -2
- package/dist/components/ui/input-otp/input-otp-slot.svelte +5 -4
- package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +1 -1
- package/dist/components/ui/input-otp/input-otp.svelte +1 -1
- package/dist/components/ui/label/label.svelte +3 -2
- package/dist/components/ui/popover/popover-content.svelte +1 -1
- package/dist/components/ui/progress/progress.svelte +19 -5
- package/dist/components/ui/progress/progress.svelte.d.ts +4 -2
- package/dist/components/ui/radio-group/radio-group-item.svelte +4 -4
- package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +1 -1
- package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +2 -2
- package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +2 -2
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +4 -1
- package/dist/components/ui/scroll-area/scroll-area.svelte +1 -1
- package/dist/components/ui/select/select-content.svelte +1 -3
- package/dist/components/ui/select/select-item.svelte +5 -4
- package/dist/components/ui/select/select-scroll-down-button.svelte +2 -2
- package/dist/components/ui/select/select-scroll-up-button.svelte +2 -2
- package/dist/components/ui/select/select-trigger.svelte +4 -3
- package/dist/components/ui/skeleton/index.d.ts +2 -0
- package/dist/components/ui/skeleton/index.js +2 -0
- package/dist/components/ui/skeleton/skeleton.svelte +24 -0
- package/dist/components/ui/skeleton/skeleton.svelte.d.ts +8 -0
- package/dist/components/ui/slider/slider.svelte +5 -10
- package/dist/components/ui/sonner/sonner.svelte +19 -13
- package/dist/components/ui/stepper-button/index.d.ts +3 -0
- package/dist/components/ui/stepper-button/index.js +2 -0
- package/dist/components/ui/stepper-button/stepper-button.svelte +37 -0
- package/dist/components/ui/stepper-button/stepper-button.svelte.d.ts +9 -0
- package/dist/components/ui/switch/switch.svelte +8 -3
- package/dist/components/ui/table/table-cell.svelte +1 -1
- package/dist/components/ui/table/table-head.svelte +1 -1
- package/dist/components/ui/table/table-row.svelte +1 -1
- package/dist/components/ui/tabs/tabs-list.svelte +1 -1
- package/dist/components/ui/tabs/tabs-trigger.svelte +1 -1
- package/dist/components/ui/tag/index.d.ts +2 -0
- package/dist/components/ui/tag/index.js +2 -0
- package/dist/components/ui/tag/tag.svelte +42 -0
- package/dist/components/ui/tag/tag.svelte.d.ts +11 -0
- package/dist/components/ui/textarea/textarea.svelte +4 -3
- package/dist/components/ui/textarea/textarea.svelte.d.ts +2 -2
- package/dist/components/ui/toggle/toggle.svelte +9 -9
- package/dist/components/ui/toggle/toggle.svelte.d.ts +14 -21
- package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/fonts/Inter/Inter-Black.woff2 +0 -0
- package/dist/fonts/Inter/Inter-BlackItalic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
- package/dist/fonts/Inter/Inter-BoldItalic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-ExtraBold.woff2 +0 -0
- package/dist/fonts/Inter/Inter-ExtraBoldItalic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-ExtraLight-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-ExtraLightItalic-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Italic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Light-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-LightItalic-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
- package/dist/fonts/Inter/Inter-MediumItalic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
- package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
- package/dist/fonts/Inter/Inter-SemiBoldItalic.woff2 +0 -0
- package/dist/fonts/Inter/Inter-Thin-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-ThinItalic-BETA.woff2 +0 -0
- package/dist/fonts/Inter/Inter-italic.var.woff2 +0 -0
- package/dist/fonts/Inter/Inter-upright.var.woff2 +0 -0
- package/dist/fonts/Inter/Inter.var.woff2 +0 -0
- package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/i18n/audit/designSystemWords.d.ts +1 -1
- package/dist/i18n/audit/designSystemWords.js +1 -1
- package/dist/styles/fonts.css +18 -14
- package/dist/styles/global.css +7 -19
- package/dist/styles/tokens.css +332 -0
- package/dist/utils.d.ts +27 -0
- package/dist/utils.js +33 -2
- package/package.json +2 -1
- package/tailwind.config.ts +7 -47
|
@@ -12,21 +12,21 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
12
12
|
z_$$bindings?: Bindings;
|
|
13
13
|
}
|
|
14
14
|
declare const CopyableHeader: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
-
|
|
16
|
-
* COMPONENT PROPS
|
|
17
|
-
*/ class?: string;
|
|
15
|
+
class?: string;
|
|
18
16
|
style?: string;
|
|
19
17
|
headerText?: string;
|
|
20
18
|
content?: string;
|
|
21
19
|
helpText?: string;
|
|
22
20
|
helpUrl?: string;
|
|
21
|
+
helpPrompt?: string;
|
|
22
|
+
helpLinkAria?: string;
|
|
23
23
|
showHelp?: boolean;
|
|
24
24
|
monospaceContent?: boolean;
|
|
25
25
|
showStandaloneCopyButton?: boolean;
|
|
26
26
|
standaloneCopyButtonText?: string;
|
|
27
|
-
|
|
27
|
+
copiedTitle?: string;
|
|
28
28
|
copiedDescription?: string;
|
|
29
|
-
|
|
29
|
+
copyFailedTitle?: string;
|
|
30
30
|
copyFailedDescription?: string;
|
|
31
31
|
showButtonText?: boolean;
|
|
32
32
|
buttonClass?: string;
|
|
@@ -34,6 +34,9 @@ declare const CopyableHeader: $$__sveltets_2_IsomorphicComponent<{
|
|
|
34
34
|
headerTextClass?: string;
|
|
35
35
|
headerBackgroundColor?: string;
|
|
36
36
|
contentBorderColor?: string;
|
|
37
|
+
loading?: boolean;
|
|
38
|
+
errorTitle?: string;
|
|
39
|
+
errorDetail?: string;
|
|
37
40
|
}, {
|
|
38
41
|
copy: CustomEvent<any>;
|
|
39
42
|
copyError: CustomEvent<any>;
|
|
@@ -1,141 +1,113 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
* EmptyState
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Features:
|
|
6
|
-
* - Centered message with icon
|
|
7
|
-
* - Customizable message text
|
|
8
|
-
* - Customizable icon
|
|
9
|
-
* - Adjustable height
|
|
10
|
-
* - Optional action button
|
|
11
|
-
* - Responsive: hides icon when space is limited
|
|
2
|
+
* EmptyState — Figma: Empty State (component set 54:71, node 54:71).
|
|
3
|
+
* Centered empty view with icon tile, title, optional description, and actions.
|
|
12
4
|
-->
|
|
13
5
|
<script lang="ts">
|
|
14
|
-
|
|
6
|
+
import { onMount } from 'svelte';
|
|
7
|
+
import type { Icon } from '@tabler/icons-svelte';
|
|
8
|
+
import IconCubePlus from '@tabler/icons-svelte/icons/cube-plus';
|
|
9
|
+
import { cn } from '../utils.js';
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
11
|
+
let {
|
|
12
|
+
class: className = '',
|
|
13
|
+
style = '',
|
|
14
|
+
message = 'No items found',
|
|
15
|
+
description = undefined,
|
|
16
|
+
height = '150px',
|
|
17
|
+
showIcon = true,
|
|
18
|
+
iconColor = '',
|
|
19
|
+
textColor = '',
|
|
20
|
+
icon: IconComponent = IconCubePlus,
|
|
21
|
+
showActions = true
|
|
22
|
+
}: {
|
|
23
|
+
class?: string;
|
|
24
|
+
style?: string;
|
|
25
|
+
message?: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
height?: string;
|
|
28
|
+
showIcon?: boolean;
|
|
29
|
+
iconColor?: string;
|
|
30
|
+
textColor?: string;
|
|
31
|
+
icon?: Icon;
|
|
32
|
+
/** When false, hides the action row (Figma Show actions). */
|
|
33
|
+
showActions?: boolean;
|
|
34
|
+
} = $props();
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
let shouldShowIcon = showIcon;
|
|
36
|
+
let contentContainer = $state<HTMLDivElement | null>(null);
|
|
37
|
+
let shouldShowIcon = $state(true);
|
|
43
38
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
39
|
+
function checkSpaceForIcon() {
|
|
40
|
+
if (!contentContainer || !showIcon) {
|
|
41
|
+
shouldShowIcon = false;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
shouldShowIcon = contentContainer.clientWidth > 150;
|
|
45
|
+
}
|
|
52
46
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
});
|
|
47
|
+
$effect(() => {
|
|
48
|
+
showIcon;
|
|
49
|
+
checkSpaceForIcon();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
onMount(() => {
|
|
53
|
+
checkSpaceForIcon();
|
|
54
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
55
|
+
const resizeObserver = new ResizeObserver(() => checkSpaceForIcon());
|
|
56
|
+
if (contentContainer) resizeObserver.observe(contentContainer);
|
|
57
|
+
return () => {
|
|
58
|
+
if (contentContainer) resizeObserver.unobserve(contentContainer);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const titleStyle = $derived(textColor ? `color: ${textColor}` : undefined);
|
|
64
|
+
const iconStyle = $derived(iconColor ? `color: ${iconColor}` : undefined);
|
|
74
65
|
</script>
|
|
75
66
|
|
|
76
|
-
<div
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
67
|
+
<div
|
|
68
|
+
class={cn(
|
|
69
|
+
'empty-state-container flex w-full items-center justify-center overflow-hidden',
|
|
70
|
+
className
|
|
71
|
+
)}
|
|
72
|
+
style="height: {height}; {style}"
|
|
73
|
+
>
|
|
74
|
+
<div
|
|
75
|
+
class="empty-state-content pointer-events-auto flex w-full max-w-[30rem] flex-col items-center gap-3 px-12 py-12 text-center"
|
|
76
|
+
bind:this={contentContainer}
|
|
77
|
+
>
|
|
78
|
+
{#if shouldShowIcon}
|
|
79
|
+
<div
|
|
80
|
+
class="bg-brand-subtle flex size-12 shrink-0 items-center justify-center overflow-hidden rounded-xl"
|
|
81
|
+
>
|
|
82
|
+
<!-- Figma draws the icon of every Empty State in the foreground colour (Icon collection, Default mode); `iconColor` still overrides it, on the icon itself -->
|
|
83
|
+
<IconComponent class="text-foreground size-4" style={iconStyle} aria-hidden="true" />
|
|
84
|
+
</div>
|
|
85
|
+
{/if}
|
|
92
86
|
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
overflow: hidden;
|
|
100
|
-
z-index: 0; /* Lower z-index so it doesn't block interactive elements */
|
|
101
|
-
pointer-events: none; /* Allow clicks to pass through to elements behind */
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/* Content is centered and has proper spacing */
|
|
105
|
-
.empty-state-content {
|
|
106
|
-
display: flex;
|
|
107
|
-
align-items: center;
|
|
108
|
-
justify-content: center;
|
|
109
|
-
gap: 0.5rem;
|
|
110
|
-
text-align: center;
|
|
111
|
-
padding: 0 1rem;
|
|
112
|
-
width: 100%;
|
|
113
|
-
max-width: 100%;
|
|
114
|
-
overflow: hidden;
|
|
115
|
-
pointer-events: auto; /* Re-enable pointer events for the content itself */
|
|
116
|
-
}
|
|
87
|
+
<div class="flex w-full min-w-0 flex-col gap-1">
|
|
88
|
+
<p class="text-heading-section text-foreground" style={titleStyle}>{message}</p>
|
|
89
|
+
{#if description}
|
|
90
|
+
<p class="text-body text-muted-foreground">{description}</p>
|
|
91
|
+
{/if}
|
|
92
|
+
</div>
|
|
117
93
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
justify-content: center;
|
|
126
|
-
}
|
|
94
|
+
{#if showActions}
|
|
95
|
+
<div class="flex flex-wrap items-center justify-center gap-2 pt-3">
|
|
96
|
+
<slot name="action" />
|
|
97
|
+
</div>
|
|
98
|
+
{/if}
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
127
101
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
102
|
+
<style>
|
|
103
|
+
.empty-state-container {
|
|
104
|
+
z-index: 0;
|
|
105
|
+
pointer-events: none;
|
|
106
|
+
}
|
|
134
107
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
</style>
|
|
108
|
+
@media (max-width: 200px) {
|
|
109
|
+
.empty-state-content :global(.size-12) {
|
|
110
|
+
display: none;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Icon } from '@tabler/icons-svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
class?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
message?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
height?: string;
|
|
8
|
+
showIcon?: boolean;
|
|
9
|
+
iconColor?: string;
|
|
10
|
+
textColor?: string;
|
|
11
|
+
icon?: Icon;
|
|
12
|
+
/** When false, hides the action row (Figma Show actions). */
|
|
13
|
+
showActions?: boolean;
|
|
14
|
+
};
|
|
2
15
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
16
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
17
|
$$bindings?: Bindings;
|
|
@@ -12,26 +25,10 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
12
25
|
};
|
|
13
26
|
z_$$bindings?: Bindings;
|
|
14
27
|
}
|
|
15
|
-
declare const EmptyState: $$__sveltets_2_IsomorphicComponent
|
|
16
|
-
/**
|
|
17
|
-
* Component Props
|
|
18
|
-
* @prop {string} message - The message to display in the empty state
|
|
19
|
-
* @prop {string} height - The height of the empty state container (default: '50vh')
|
|
20
|
-
* @prop {boolean} showIcon - Whether to show the icon (default: true)
|
|
21
|
-
* @prop {string} iconColor - The color of the icon (default: 'hsl(var(--grey3))')
|
|
22
|
-
* @prop {string} textColor - The color of the text (default: 'hsl(var(--grey3))')
|
|
23
|
-
*/ class?: string;
|
|
24
|
-
style?: string;
|
|
25
|
-
message?: string;
|
|
26
|
-
height?: string;
|
|
27
|
-
showIcon?: boolean;
|
|
28
|
-
iconColor?: string;
|
|
29
|
-
textColor?: string;
|
|
30
|
-
icon?: typeof IconExclamationCircle;
|
|
31
|
-
}, {
|
|
28
|
+
declare const EmptyState: $$__sveltets_2_IsomorphicComponent<$$ComponentProps, {
|
|
32
29
|
[evt: string]: CustomEvent<any>;
|
|
33
30
|
}, {
|
|
34
31
|
action: {};
|
|
35
|
-
}, {},
|
|
32
|
+
}, {}, "">;
|
|
36
33
|
type EmptyState = InstanceType<typeof EmptyState>;
|
|
37
34
|
export default EmptyState;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
GenerateLoader — reusable hourglass loading state for code generation / preview build.
|
|
3
|
-
|
|
3
|
+
Figma: loading patterns (Skeleton / app shell); colours and motion only here.
|
|
4
4
|
-->
|
|
5
5
|
<script lang="ts">
|
|
6
6
|
let className = '';
|
|
@@ -18,33 +18,40 @@
|
|
|
18
18
|
const hourglassSizeClass: Record<typeof size, string> = {
|
|
19
19
|
sm: 'text-2xl',
|
|
20
20
|
md: 'text-3xl',
|
|
21
|
-
lg: 'text-4xl'
|
|
21
|
+
lg: 'text-4xl'
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
const titleSizeClass: Record<typeof size, string> = {
|
|
25
|
-
sm: 'text-
|
|
26
|
-
md: 'text-
|
|
27
|
-
lg: 'text-
|
|
25
|
+
sm: 'text-caption',
|
|
26
|
+
md: 'text-body',
|
|
27
|
+
lg: 'text-body-large'
|
|
28
28
|
};
|
|
29
29
|
</script>
|
|
30
30
|
|
|
31
31
|
<div
|
|
32
32
|
class="wc-generate-loader {overlay
|
|
33
|
-
? 'wc-generate-loader-overlay absolute inset-0 z-30 flex flex-col items-center justify-center
|
|
33
|
+
? 'wc-generate-loader-overlay bg-background pointer-events-none absolute inset-0 z-30 flex flex-col items-center justify-center'
|
|
34
34
|
: 'wc-generate-loader-inline flex flex-col items-center justify-center text-center'} {className}"
|
|
35
|
-
|
|
35
|
+
{style}
|
|
36
36
|
role="status"
|
|
37
37
|
aria-live="polite"
|
|
38
38
|
>
|
|
39
|
-
<div
|
|
39
|
+
<div
|
|
40
|
+
class="wc-generate-loader-hourglass text-muted-foreground mb-3 animate-spin motion-reduce:animate-none {hourglassSizeClass[
|
|
41
|
+
size
|
|
42
|
+
]}"
|
|
40
43
|
aria-hidden="true"
|
|
41
44
|
>
|
|
42
45
|
⏳
|
|
43
46
|
</div>
|
|
44
47
|
{#if title}
|
|
45
|
-
<div class="wc-generate-loader-title
|
|
48
|
+
<div class="wc-generate-loader-title text-body-medium text-foreground {titleSizeClass[size]}">
|
|
49
|
+
{title}
|
|
50
|
+
</div>
|
|
46
51
|
{/if}
|
|
47
52
|
{#if subtitle}
|
|
48
|
-
<div class="wc-generate-loader-subtitle
|
|
53
|
+
<div class="wc-generate-loader-subtitle text-caption text-muted-foreground mt-1">
|
|
54
|
+
{subtitle}
|
|
55
|
+
</div>
|
|
49
56
|
{/if}
|
|
50
57
|
</div>
|
|
@@ -1,50 +1,47 @@
|
|
|
1
|
+
<!-- Figma: Password Field (Auth tier, eye / eye-off icons). -->
|
|
1
2
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
import type { FullAutoFill } from 'svelte/elements';
|
|
4
|
+
import IconEye from '@tabler/icons-svelte/icons/eye';
|
|
5
|
+
import IconEyeOff from '@tabler/icons-svelte/icons/eye-off';
|
|
6
|
+
import { Input } from './ui/input';
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
export let value = '';
|
|
9
|
+
export let placeholder = 'Enter password';
|
|
10
|
+
export let name = 'password';
|
|
11
|
+
export let autocomplete: FullAutoFill = 'current-password';
|
|
12
|
+
export let disabled = false;
|
|
13
|
+
export let toggleLabelShow = 'Show password';
|
|
14
|
+
export let toggleLabelHide = 'Hide password';
|
|
7
15
|
|
|
8
|
-
|
|
9
|
-
import eyeIconUrl from '../icons/eye.svg?url';
|
|
10
|
-
import eyeOffIconUrl from '../icons/eye-off.svg?url';
|
|
11
|
-
|
|
12
|
-
// External Props
|
|
13
|
-
export let value = '';
|
|
14
|
-
export let placeholder = 'Enter password';
|
|
15
|
-
export let name = 'password';
|
|
16
|
-
export let autocomplete: FullAutoFill = 'current-password';
|
|
17
|
-
export let disabled = false;
|
|
18
|
-
|
|
19
|
-
// Internal Variables
|
|
20
|
-
let showPassword = false;
|
|
16
|
+
let showPassword = false;
|
|
21
17
|
</script>
|
|
22
18
|
|
|
23
|
-
<div class="relative
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/>
|
|
19
|
+
<div class="relative w-full">
|
|
20
|
+
<Input
|
|
21
|
+
class="pe-10"
|
|
22
|
+
bind:value
|
|
23
|
+
{name}
|
|
24
|
+
type={showPassword ? 'text' : 'password'}
|
|
25
|
+
{placeholder}
|
|
26
|
+
{autocomplete}
|
|
27
|
+
{disabled}
|
|
28
|
+
{...$$restProps}
|
|
29
|
+
/>
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
<button
|
|
32
|
+
type="button"
|
|
33
|
+
class="absolute end-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-lg text-foreground press-feedback hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50"
|
|
34
|
+
tabindex="-1"
|
|
35
|
+
aria-label={showPassword ? toggleLabelHide : toggleLabelShow}
|
|
36
|
+
onclick={() => {
|
|
37
|
+
showPassword = !showPassword;
|
|
38
|
+
}}
|
|
39
|
+
{disabled}
|
|
40
|
+
>
|
|
41
|
+
{#if showPassword}
|
|
42
|
+
<IconEyeOff class="size-4 stroke-[1.333]" aria-hidden="true" />
|
|
43
|
+
{:else}
|
|
44
|
+
<IconEye class="size-4 stroke-[1.333]" aria-hidden="true" />
|
|
45
|
+
{/if}
|
|
46
|
+
</button>
|
|
47
|
+
</div>
|
|
@@ -19,6 +19,8 @@ declare const PasswordInput: $$__sveltets_2_IsomorphicComponent<{
|
|
|
19
19
|
name?: string | undefined;
|
|
20
20
|
autocomplete?: FullAutoFill | undefined;
|
|
21
21
|
disabled?: boolean | undefined;
|
|
22
|
+
toggleLabelShow?: string | undefined;
|
|
23
|
+
toggleLabelHide?: string | undefined;
|
|
22
24
|
}, {
|
|
23
25
|
[evt: string]: CustomEvent<any>;
|
|
24
26
|
}, {}, {}, string>;
|