@svadmin/lite 0.16.11 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -2
- package/dist/components/LiteActivityFeed.svelte +31 -9
- package/dist/components/LiteActivityFeed.svelte.d.ts +6 -0
- package/dist/components/LiteAffix.svelte +29 -0
- package/dist/components/LiteAffix.svelte.d.ts +13 -0
- package/dist/components/LiteAnchor.svelte +38 -0
- package/dist/components/LiteAnchor.svelte.d.ts +14 -0
- package/dist/components/LiteApprovalActionCard.svelte +8 -5
- package/dist/components/LiteApprovalActionCard.svelte.d.ts +2 -0
- package/dist/components/LiteAuditLog.svelte +9 -9
- package/dist/components/LiteAutoComplete.svelte +41 -0
- package/dist/components/LiteAutoComplete.svelte.d.ts +13 -0
- package/dist/components/LiteBackTop.svelte +16 -0
- package/dist/components/LiteBackTop.svelte.d.ts +8 -0
- package/dist/components/LiteBreadcrumbs.svelte +4 -1
- package/dist/components/LiteBreadcrumbs.svelte.d.ts +2 -0
- package/dist/components/LiteCalendar.svelte +124 -0
- package/dist/components/LiteCalendar.svelte.d.ts +20 -0
- package/dist/components/LiteCanvasAnnotation.svelte +13 -13
- package/dist/components/LiteCarousel.svelte +72 -0
- package/dist/components/LiteCarousel.svelte.d.ts +14 -0
- package/dist/components/LiteChatDialog.svelte +8 -8
- package/dist/components/LiteCollapse.svelte +49 -0
- package/dist/components/LiteCollapse.svelte.d.ts +15 -0
- package/dist/components/LiteColumnHeaderFilter.svelte +4 -1
- package/dist/components/LiteColumnHeaderFilter.svelte.d.ts +2 -0
- package/dist/components/LiteColumnSettings.svelte +7 -4
- package/dist/components/LiteColumnSettings.svelte.d.ts +2 -0
- package/dist/components/LiteCommentThread.svelte +113 -0
- package/dist/components/LiteCommentThread.svelte.d.ts +26 -0
- package/dist/components/LiteConfirmDialog.svelte +2 -2
- package/dist/components/LiteCountdown.svelte +49 -0
- package/dist/components/LiteCountdown.svelte.d.ts +10 -0
- package/dist/components/LiteDecisionTable.svelte +14 -14
- package/dist/components/LiteDetailDrawer.svelte +45 -0
- package/dist/components/LiteDetailDrawer.svelte.d.ts +14 -0
- package/dist/components/LiteDraggableRowTable.svelte +5 -2
- package/dist/components/LiteDraggableRowTable.svelte.d.ts +2 -0
- package/dist/components/LiteDrawerForm.svelte +11 -8
- package/dist/components/LiteDrawerForm.svelte.d.ts +2 -0
- package/dist/components/LiteDynamicFormList.svelte +5 -5
- package/dist/components/LiteEditableTable.svelte +5 -2
- package/dist/components/LiteEditableTable.svelte.d.ts +2 -0
- package/dist/components/LiteEmptyState.svelte +11 -4
- package/dist/components/LiteEmptyState.svelte.d.ts +3 -0
- package/dist/components/LiteFilterBuilder.svelte +8 -5
- package/dist/components/LiteFilterBuilder.svelte.d.ts +2 -0
- package/dist/components/LiteFloatButton.svelte +54 -0
- package/dist/components/LiteFloatButton.svelte.d.ts +15 -0
- package/dist/components/LiteGanttChart.svelte +20 -20
- package/dist/components/LiteGrid.svelte +34 -0
- package/dist/components/LiteGrid.svelte.d.ts +11 -0
- package/dist/components/LiteImage.svelte +54 -0
- package/dist/components/LiteImage.svelte.d.ts +14 -0
- package/dist/components/LiteImageCropper.svelte +7 -4
- package/dist/components/LiteImageCropper.svelte.d.ts +2 -0
- package/dist/components/LiteImagePreview.svelte +36 -0
- package/dist/components/LiteImagePreview.svelte.d.ts +13 -0
- package/dist/components/LiteImportWizard.svelte +7 -7
- package/dist/components/LiteItemList.svelte +50 -0
- package/dist/components/LiteItemList.svelte.d.ts +15 -0
- package/dist/components/LiteJsonSchemaForm.svelte +10 -7
- package/dist/components/LiteJsonSchemaForm.svelte.d.ts +2 -0
- package/dist/components/LiteKanbanBoard.svelte +19 -19
- package/dist/components/LiteLayout.svelte +18 -6
- package/dist/components/LiteLayout.svelte.d.ts +8 -0
- package/dist/components/LiteLink.svelte +32 -0
- package/dist/components/LiteLink.svelte.d.ts +11 -0
- package/dist/components/LiteLogin.svelte +9 -2
- package/dist/components/LiteLogin.svelte.d.ts +2 -0
- package/dist/components/LiteMasterDetailView.svelte +13 -10
- package/dist/components/LiteMasterDetailView.svelte.d.ts +2 -0
- package/dist/components/LiteMediaLibraryModal.svelte +8 -5
- package/dist/components/LiteMediaLibraryModal.svelte.d.ts +2 -0
- package/dist/components/LiteMediaThumbnail.svelte +3 -3
- package/dist/components/LiteMentionsInput.svelte +9 -9
- package/dist/components/LiteMenu.svelte +22 -0
- package/dist/components/LiteMenu.svelte.d.ts +12 -0
- package/dist/components/LiteMenuList.svelte +55 -0
- package/dist/components/LiteMenuList.svelte.d.ts +17 -0
- package/dist/components/LiteModalForm.svelte +9 -6
- package/dist/components/LiteModalForm.svelte.d.ts +2 -0
- package/dist/components/LiteMultiTabKeepAlive.svelte +6 -6
- package/dist/components/LiteNotificationCenter.svelte +85 -0
- package/dist/components/LiteNotificationCenter.svelte.d.ts +22 -0
- package/dist/components/LiteOfflineSyncBanner.svelte +6 -6
- package/dist/components/LiteOtpInput.svelte +50 -0
- package/dist/components/LiteOtpInput.svelte.d.ts +15 -0
- package/dist/components/LitePageHeader.svelte +34 -0
- package/dist/components/LitePageHeader.svelte.d.ts +13 -0
- package/dist/components/LitePagination.svelte +10 -2
- package/dist/components/LitePagination.svelte.d.ts +2 -0
- package/dist/components/LitePdfDocumentViewer.svelte +14 -14
- package/dist/components/LitePermissionMatrix.svelte +8 -8
- package/dist/components/LitePivotTable.svelte +11 -11
- package/dist/components/LitePopconfirm.svelte +49 -0
- package/dist/components/LitePopconfirm.svelte.d.ts +14 -0
- package/dist/components/LitePresenceAvatarGroup.svelte +8 -5
- package/dist/components/LitePresenceAvatarGroup.svelte.d.ts +2 -0
- package/dist/components/LitePrintableBill.svelte +12 -9
- package/dist/components/LitePrintableBill.svelte.d.ts +2 -0
- package/dist/components/LiteProgress.svelte +46 -0
- package/dist/components/LiteProgress.svelte.d.ts +12 -0
- package/dist/components/LiteQRCode.svelte +62 -0
- package/dist/components/LiteQRCode.svelte.d.ts +14 -0
- package/dist/components/LiteResizeBox.svelte +34 -0
- package/dist/components/LiteResizeBox.svelte.d.ts +12 -0
- package/dist/components/LiteResult.svelte +52 -0
- package/dist/components/LiteResult.svelte.d.ts +14 -0
- package/dist/components/LiteRowActions.svelte +36 -0
- package/dist/components/LiteRowActions.svelte.d.ts +17 -0
- package/dist/components/LiteSensitiveDataMask.svelte +4 -1
- package/dist/components/LiteSensitiveDataMask.svelte.d.ts +2 -0
- package/dist/components/LiteShow.svelte +1 -1
- package/dist/components/LiteShowField.svelte +2 -2
- package/dist/components/LiteSignaturePad.svelte +9 -9
- package/dist/components/LiteSkeleton.svelte +100 -0
- package/dist/components/LiteSkeleton.svelte.d.ts +19 -0
- package/dist/components/LiteSpace.svelte +31 -0
- package/dist/components/LiteSpace.svelte.d.ts +12 -0
- package/dist/components/LiteSpin.svelte +27 -0
- package/dist/components/LiteSpin.svelte.d.ts +10 -0
- package/dist/components/LiteSplitPaneLayout.svelte +18 -6
- package/dist/components/LiteSplitPaneLayout.svelte.d.ts +8 -0
- package/dist/components/LiteSpreadsheetView.svelte +8 -8
- package/dist/components/LiteStatistic.svelte +63 -0
- package/dist/components/LiteStatistic.svelte.d.ts +15 -0
- package/dist/components/LiteStatsCard.svelte +5 -2
- package/dist/components/LiteStatsCard.svelte.d.ts +2 -0
- package/dist/components/LiteStatusBadge.svelte +33 -0
- package/dist/components/LiteStatusBadge.svelte.d.ts +12 -0
- package/dist/components/LiteStatusTabs.svelte +35 -0
- package/dist/components/LiteStatusTabs.svelte.d.ts +14 -0
- package/dist/components/LiteStepForm.svelte +14 -11
- package/dist/components/LiteStepForm.svelte.d.ts +2 -0
- package/dist/components/LiteSteps.svelte +64 -0
- package/dist/components/LiteSteps.svelte.d.ts +18 -0
- package/dist/components/LiteTable.svelte +5 -2
- package/dist/components/LiteTable.svelte.d.ts +2 -0
- package/dist/components/LiteTableSummary.svelte +8 -5
- package/dist/components/LiteTableSummary.svelte.d.ts +2 -0
- package/dist/components/LiteTabs.svelte +30 -20
- package/dist/components/LiteTabs.svelte.d.ts +11 -2
- package/dist/components/LiteTag.svelte +31 -0
- package/dist/components/LiteTag.svelte.d.ts +13 -0
- package/dist/components/LiteTimeline.svelte +48 -0
- package/dist/components/LiteTimeline.svelte.d.ts +17 -0
- package/dist/components/LiteTour.svelte +54 -0
- package/dist/components/LiteTour.svelte.d.ts +15 -0
- package/dist/components/LiteTransfer.svelte +9 -6
- package/dist/components/LiteTransfer.svelte.d.ts +2 -0
- package/dist/components/LiteTree.svelte +48 -0
- package/dist/components/LiteTree.svelte.d.ts +17 -0
- package/dist/components/LiteTreeTable.svelte +1 -1
- package/dist/components/LiteTwoFactorStepper.svelte +53 -0
- package/dist/components/LiteTwoFactorStepper.svelte.d.ts +16 -0
- package/dist/components/LiteVersionDiffViewer.svelte +16 -13
- package/dist/components/LiteVersionDiffViewer.svelte.d.ts +2 -0
- package/dist/components/LiteVideoPlayer.svelte +67 -0
- package/dist/components/LiteVideoPlayer.svelte.d.ts +22 -0
- package/dist/components/LiteVirtualTable.svelte +1 -1
- package/dist/components/advanced/LiteAutoSaveIndicator.svelte +42 -13
- package/dist/components/advanced/LiteAutoSaveIndicator.svelte.d.ts +10 -4
- package/dist/components/advanced/LiteDraggableHeader.svelte +2 -2
- package/dist/components/advanced/LiteDrawerForm.svelte +4 -1
- package/dist/components/advanced/LiteDrawerForm.svelte.d.ts +2 -0
- package/dist/components/advanced/LiteInlineEdit.svelte +1 -1
- package/dist/components/advanced/LiteModalForm.svelte +4 -1
- package/dist/components/advanced/LiteModalForm.svelte.d.ts +2 -0
- package/dist/components/advanced/LiteToast.svelte +3 -3
- package/dist/components/advanced/LiteUndoableNotification.svelte +1 -1
- package/dist/components/compatibility/LiteRealtimeStatus.svelte +41 -2
- package/dist/components/compatibility/LiteRealtimeStatus.svelte.d.ts +15 -0
- package/dist/components/fields/LiteBooleanField.svelte +4 -2
- package/dist/components/fields/LiteBooleanField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteCascader.svelte +5 -2
- package/dist/components/fields/LiteCascader.svelte.d.ts +2 -0
- package/dist/components/fields/LiteDateField.svelte +39 -9
- package/dist/components/fields/LiteDateField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteDateRangeField.svelte +1 -1
- package/dist/components/fields/LiteImageField.svelte +6 -2
- package/dist/components/fields/LiteImageField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteJsonField.svelte +1 -1
- package/dist/components/fields/LiteMarkdownField.svelte +49 -3
- package/dist/components/fields/LiteMarkdownField.svelte.d.ts +5 -0
- package/dist/components/fields/LiteNumberField.svelte +5 -3
- package/dist/components/fields/LiteNumberField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteRichTextField.svelte +49 -12
- package/dist/components/fields/LiteRichTextField.svelte.d.ts +3 -0
- package/dist/components/fields/LiteSelectField.svelte +5 -3
- package/dist/components/fields/LiteSelectField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteTagField.svelte +38 -15
- package/dist/components/fields/LiteTagField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteTextField.svelte +26 -5
- package/dist/components/fields/LiteTextField.svelte.d.ts +2 -0
- package/dist/components/fields/LiteTreeSelect.svelte +5 -2
- package/dist/components/fields/LiteTreeSelect.svelte.d.ts +2 -0
- package/dist/components/fields/LiteUrlField.svelte +5 -3
- package/dist/components/fields/LiteUrlField.svelte.d.ts +2 -0
- package/dist/components/layout/LiteAuthenticated.svelte +2 -2
- package/dist/components/layout/LiteCanAccess.svelte +1 -1
- package/dist/components/layout/LiteErrorComponent.svelte +4 -4
- package/dist/components/layout/LiteHeader.svelte +2 -2
- package/dist/components/layout/LiteSidebar.svelte +6 -3
- package/dist/components/layout/LiteSidebar.svelte.d.ts +2 -0
- package/dist/components/pages/LiteCreatePage.svelte +4 -1
- package/dist/components/pages/LiteCreatePage.svelte.d.ts +2 -0
- package/dist/components/pages/LiteEditPage.svelte +4 -1
- package/dist/components/pages/LiteEditPage.svelte.d.ts +2 -0
- package/dist/components/pages/LiteForgotPasswordPage.svelte +7 -7
- package/dist/components/pages/LiteListPage.svelte +6 -3
- package/dist/components/pages/LiteListPage.svelte.d.ts +2 -0
- package/dist/components/pages/LiteProfilePage.svelte +2 -2
- package/dist/components/pages/LiteRegisterPage.svelte +6 -6
- package/dist/components/pages/LiteShowPage.svelte +6 -3
- package/dist/components/pages/LiteShowPage.svelte.d.ts +2 -0
- package/dist/components/pages/LiteUpdatePasswordPage.svelte +4 -4
- package/dist/components/widgets/LiteAnomalyBadge.svelte +6 -3
- package/dist/components/widgets/LiteAnomalyBadge.svelte.d.ts +2 -0
- package/dist/components/widgets/LiteAreaChart.svelte +20 -0
- package/dist/components/widgets/LiteAreaChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteBarChart.svelte +6 -6
- package/dist/components/widgets/LiteChartSvg.svelte +102 -0
- package/dist/components/widgets/LiteChartSvg.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteChartTable.svelte +44 -0
- package/dist/components/widgets/LiteChartTable.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteDonutChart.svelte +20 -0
- package/dist/components/widgets/LiteDonutChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteFunnelChart.svelte +20 -0
- package/dist/components/widgets/LiteFunnelChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteGaugeChart.svelte +20 -0
- package/dist/components/widgets/LiteGaugeChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteHeatmapChart.svelte +20 -0
- package/dist/components/widgets/LiteHeatmapChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteInsightCard.svelte +35 -13
- package/dist/components/widgets/LiteInsightCard.svelte.d.ts +7 -4
- package/dist/components/widgets/LiteLineChart.svelte +13 -10
- package/dist/components/widgets/LiteLineChart.svelte.d.ts +0 -5
- package/dist/components/widgets/LitePieChart.svelte +11 -9
- package/dist/components/widgets/LitePieChart.svelte.d.ts +0 -5
- package/dist/components/widgets/LiteRadarChart.svelte +20 -0
- package/dist/components/widgets/LiteRadarChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteRoseChart.svelte +20 -0
- package/dist/components/widgets/LiteRoseChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteScatterChart.svelte +20 -0
- package/dist/components/widgets/LiteScatterChart.svelte.d.ts +10 -0
- package/dist/components/widgets/LiteWaterfallChart.svelte +20 -0
- package/dist/components/widgets/LiteWaterfallChart.svelte.d.ts +10 -0
- package/dist/components/widgets/chart-geometry.d.ts +65 -0
- package/dist/components/widgets/chart-geometry.js +229 -0
- package/dist/components/widgets/index.d.ts +10 -0
- package/dist/components/widgets/index.js +10 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +47 -0
- package/dist/lite-code-theme.css +139 -0
- package/dist/lite.css +234 -127
- package/dist/rich-content.d.ts +47 -0
- package/dist/rich-content.js +498 -0
- package/dist/schema-generator.js +3 -1
- package/dist/server-adapter.js +6 -11
- package/dist/value-normalization.d.ts +4 -0
- package/dist/value-normalization.js +13 -0
- package/package.json +18 -4
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface TourStep {
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
steps: TourStep[];
|
|
10
|
+
title?: string;
|
|
11
|
+
current?: number;
|
|
12
|
+
dismissHref?: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let { steps, title = 'Guided tour', current = 0, dismissHref, label = 'Guided tour' }: Props = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<section class="lite-tour lite-card" aria-label={label}>
|
|
20
|
+
<header>
|
|
21
|
+
<h2>{title}</h2>
|
|
22
|
+
{#if dismissHref}<a href={dismissHref} aria-label="Dismiss tour">×</a>{/if}
|
|
23
|
+
</header>
|
|
24
|
+
<ol>
|
|
25
|
+
{#each steps as step, index (step.title)}
|
|
26
|
+
<li data-active={index === current || undefined}>
|
|
27
|
+
<span>{index + 1}</span>
|
|
28
|
+
<div>
|
|
29
|
+
<strong>{step.title}</strong>
|
|
30
|
+
{#if step.description}<p>{step.description}</p>{/if}
|
|
31
|
+
{#if step.href}<a href={step.href}>View step</a>{/if}
|
|
32
|
+
</div>
|
|
33
|
+
</li>
|
|
34
|
+
{/each}
|
|
35
|
+
</ol>
|
|
36
|
+
</section>
|
|
37
|
+
|
|
38
|
+
<style>
|
|
39
|
+
.lite-tour { display: block; }
|
|
40
|
+
.lite-tour header { display: flex; align-items: baseline; justify-content: space-between; }
|
|
41
|
+
.lite-tour h2 { margin: 0; color: #1D2129; font-size: 14px; }
|
|
42
|
+
.lite-tour header a { color: #4E5969; font-size: 20px; line-height: 1; text-decoration: none; }
|
|
43
|
+
.lite-tour ol { display: block; margin: 0; padding: 0; list-style: none; }
|
|
44
|
+
.lite-tour li { display: flex; padding: 8px; border: 1px solid #F2F3F5; border-radius: 6px; }
|
|
45
|
+
.lite-tour li[data-active] { border-color: #165DFF; background: #F7F8FA; }
|
|
46
|
+
.lite-tour li > span { display: inline-grid; flex: 0 0 24px; place-items: center; width: 24px; height: 24px; border-radius: 999px; background: #E8F3FF; color: #165DFF; font-size: 12px; font-weight: 600; }
|
|
47
|
+
.lite-tour li strong { color: #1D2129; font-size: 13px; }
|
|
48
|
+
.lite-tour li p { margin: 2px 0 0; color: #4E5969; font-size: 12px; line-height: 1.5; }
|
|
49
|
+
.lite-tour li a { color: #165DFF; font-size: 12px; }
|
|
50
|
+
|
|
51
|
+
.lite-tour > * + * { margin-top: 12px; }
|
|
52
|
+
.lite-tour li + li { margin-top: 8px; }
|
|
53
|
+
.lite-tour li > span { margin-right: 10px; }
|
|
54
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface TourStep {
|
|
2
|
+
title: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
}
|
|
6
|
+
interface Props {
|
|
7
|
+
steps: TourStep[];
|
|
8
|
+
title?: string;
|
|
9
|
+
current?: number;
|
|
10
|
+
dismissHref?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
}
|
|
13
|
+
declare const LiteTour: import("svelte").Component<Props, {}, "">;
|
|
14
|
+
type LiteTour = ReturnType<typeof LiteTour>;
|
|
15
|
+
export default LiteTour;
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
label?: string;
|
|
18
18
|
description?: string;
|
|
19
|
+
/** Caller class merged with the built-in class list. */
|
|
20
|
+
class?: string;
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
let {
|
|
@@ -26,6 +28,7 @@
|
|
|
26
28
|
disabled = false,
|
|
27
29
|
label,
|
|
28
30
|
description,
|
|
31
|
+
class: className = ''
|
|
29
32
|
}: Props = $props();
|
|
30
33
|
|
|
31
34
|
const targetKeySet = $derived(new Set(targetKeys.map(String)));
|
|
@@ -33,7 +36,7 @@
|
|
|
33
36
|
const targetItems = $derived(dataSource.filter((item) => targetKeySet.has(String(item.key))));
|
|
34
37
|
</script>
|
|
35
38
|
|
|
36
|
-
<div class="lite-transfer-container lite-form-group">
|
|
39
|
+
<div class="lite-transfer-container lite-form-group {className}">
|
|
37
40
|
{#if label}
|
|
38
41
|
<span class="lite-label">{label}</span>
|
|
39
42
|
{/if}
|
|
@@ -129,7 +132,7 @@
|
|
|
129
132
|
}
|
|
130
133
|
.lite-transfer-panel {
|
|
131
134
|
flex: 1;
|
|
132
|
-
border: 1px solid #
|
|
135
|
+
border: 1px solid #E5E6EB;
|
|
133
136
|
border-radius: 6px;
|
|
134
137
|
background: #ffffff;
|
|
135
138
|
min-height: 180px;
|
|
@@ -142,8 +145,8 @@
|
|
|
142
145
|
justify-content: space-between;
|
|
143
146
|
align-items: center;
|
|
144
147
|
padding: 8px 12px;
|
|
145
|
-
background: #
|
|
146
|
-
border-bottom: 1px solid #
|
|
148
|
+
background: #F7F8FA;
|
|
149
|
+
border-bottom: 1px solid #E5E6EB;
|
|
147
150
|
font-size: 13px;
|
|
148
151
|
}
|
|
149
152
|
.lite-transfer-body {
|
|
@@ -160,7 +163,7 @@
|
|
|
160
163
|
font-size: 13px;
|
|
161
164
|
}
|
|
162
165
|
.lite-transfer-item:hover {
|
|
163
|
-
background: #
|
|
166
|
+
background: #F2F3F5;
|
|
164
167
|
}
|
|
165
168
|
.lite-transfer-item input {
|
|
166
169
|
margin-right: 8px;
|
|
@@ -179,7 +182,7 @@
|
|
|
179
182
|
.lite-transfer-empty {
|
|
180
183
|
text-align: center;
|
|
181
184
|
padding: 30px 10px;
|
|
182
|
-
color: #
|
|
185
|
+
color: #86909C;
|
|
183
186
|
font-size: 12px;
|
|
184
187
|
}
|
|
185
188
|
</style>
|
|
@@ -12,6 +12,8 @@ interface Props {
|
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
label?: string;
|
|
14
14
|
description?: string;
|
|
15
|
+
/** Caller class merged with the built-in class list. */
|
|
16
|
+
class?: string;
|
|
15
17
|
}
|
|
16
18
|
declare const LiteTransfer: import("svelte").Component<Props, {}, "">;
|
|
17
19
|
type LiteTransfer = ReturnType<typeof LiteTransfer>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface TreeNode {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
href?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
children?: TreeNode[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
nodes: TreeNode[];
|
|
14
|
+
label?: string;
|
|
15
|
+
selected?: string;
|
|
16
|
+
children?: Snippet<[TreeNode]>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let { nodes, label = 'Tree', selected, children }: Props = $props();
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
{#snippet branch(items: TreeNode[], depth: number)}
|
|
23
|
+
<ul class="lite-tree__list" role={depth === 0 ? 'tree' : 'group'} aria-label={depth === 0 ? label : undefined}>
|
|
24
|
+
{#each items as node (node.id)}
|
|
25
|
+
<li role="treeitem" aria-selected={selected === node.id} aria-disabled={node.disabled || undefined}>
|
|
26
|
+
{#if node.href && !node.disabled}
|
|
27
|
+
<a href={node.href} class:active={selected === node.id}>{node.label}</a>
|
|
28
|
+
{:else}
|
|
29
|
+
<span class:active={selected === node.id}>{node.label}</span>
|
|
30
|
+
{/if}
|
|
31
|
+
{#if node.children?.length}{@render branch(node.children, depth + 1)}{/if}
|
|
32
|
+
{#if children}{@render children(node)}{/if}
|
|
33
|
+
</li>
|
|
34
|
+
{/each}
|
|
35
|
+
</ul>
|
|
36
|
+
{/snippet}
|
|
37
|
+
|
|
38
|
+
<nav class="lite-tree" aria-label={label}>
|
|
39
|
+
{@render branch(nodes, 0)}
|
|
40
|
+
</nav>
|
|
41
|
+
|
|
42
|
+
<style>
|
|
43
|
+
.lite-tree__list { margin: 0; padding-left: 16px; list-style: none; }
|
|
44
|
+
.lite-tree > .lite-tree__list { padding-left: 0; }
|
|
45
|
+
.lite-tree__list li { padding: 2px 0; color: #1D2129; font-size: 13px; }
|
|
46
|
+
.lite-tree__list a, .lite-tree__list span { display: inline-block; padding: 4px 8px; border-radius: 4px; color: #1D2129; text-decoration: none; }
|
|
47
|
+
.lite-tree__list a:hover, .lite-tree__list .active { background: #E8F3FF; color: #165DFF; }
|
|
48
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface TreeNode {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
children?: TreeNode[];
|
|
8
|
+
}
|
|
9
|
+
interface Props {
|
|
10
|
+
nodes: TreeNode[];
|
|
11
|
+
label?: string;
|
|
12
|
+
selected?: string;
|
|
13
|
+
children?: Snippet<[TreeNode]>;
|
|
14
|
+
}
|
|
15
|
+
declare const LiteTree: import("svelte").Component<Props, {}, "">;
|
|
16
|
+
type LiteTree = ReturnType<typeof LiteTree>;
|
|
17
|
+
export default LiteTree;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLFormAttributes } from 'svelte/elements';
|
|
3
|
+
import LiteSteps from './LiteSteps.svelte';
|
|
4
|
+
import LiteOtpInput from './LiteOtpInput.svelte';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
current?: number;
|
|
8
|
+
/** Step labels; mirrors the reference `steps` prop. */
|
|
9
|
+
steps?: string[];
|
|
10
|
+
action: string;
|
|
11
|
+
method?: HTMLFormAttributes['method'];
|
|
12
|
+
codeName?: string;
|
|
13
|
+
submitLabel?: string;
|
|
14
|
+
title?: string;
|
|
15
|
+
/** Applied to the step list, matching the reference component. */
|
|
16
|
+
class?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let {
|
|
20
|
+
current = 1,
|
|
21
|
+
steps = ['Password verified', 'Enter verification code', 'Access granted'],
|
|
22
|
+
action,
|
|
23
|
+
method = 'POST',
|
|
24
|
+
codeName = 'code',
|
|
25
|
+
submitLabel = 'Verify',
|
|
26
|
+
title = 'Two-factor authentication',
|
|
27
|
+
class: className = '',
|
|
28
|
+
}: Props = $props();
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<section class="lite-card lite-two-factor" aria-label={title}>
|
|
32
|
+
<h2>{title}</h2>
|
|
33
|
+
<LiteSteps
|
|
34
|
+
current={current}
|
|
35
|
+
label="Progress"
|
|
36
|
+
class={className}
|
|
37
|
+
items={steps.map((step) => ({ title: step }))}
|
|
38
|
+
/>
|
|
39
|
+
<form {method} {action} class="lite-two-factor__form">
|
|
40
|
+
<LiteOtpInput name={codeName} />
|
|
41
|
+
<button class="lite-btn lite-btn-primary" type="submit">{submitLabel}</button>
|
|
42
|
+
</form>
|
|
43
|
+
<p class="lite-muted">Recovery codes can be used once if the authenticator is unavailable.</p>
|
|
44
|
+
</section>
|
|
45
|
+
|
|
46
|
+
<style>
|
|
47
|
+
.lite-two-factor { display: block; }
|
|
48
|
+
.lite-two-factor h2 { margin: 0; color: #1D2129; font-size: 18px; }
|
|
49
|
+
.lite-two-factor__form { display: block; justify-items: start; }
|
|
50
|
+
|
|
51
|
+
.lite-two-factor > * + * { margin-top: 16px; }
|
|
52
|
+
.lite-two-factor__form > * + * { margin-top: 12px; }
|
|
53
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { HTMLFormAttributes } from 'svelte/elements';
|
|
2
|
+
interface Props {
|
|
3
|
+
current?: number;
|
|
4
|
+
/** Step labels; mirrors the reference `steps` prop. */
|
|
5
|
+
steps?: string[];
|
|
6
|
+
action: string;
|
|
7
|
+
method?: HTMLFormAttributes['method'];
|
|
8
|
+
codeName?: string;
|
|
9
|
+
submitLabel?: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
/** Applied to the step list, matching the reference component. */
|
|
12
|
+
class?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const LiteTwoFactorStepper: import("svelte").Component<Props, {}, "">;
|
|
15
|
+
type LiteTwoFactorStepper = ReturnType<typeof LiteTwoFactorStepper>;
|
|
16
|
+
export default LiteTwoFactorStepper;
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
oldTitle?: string;
|
|
6
6
|
newTitle?: string;
|
|
7
7
|
fieldLabels?: Record<string, string>;
|
|
8
|
+
/** Caller class merged with the built-in class list. */
|
|
9
|
+
class?: string;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
let {
|
|
@@ -13,6 +15,7 @@
|
|
|
13
15
|
oldTitle = 'Previous Version',
|
|
14
16
|
newTitle = 'Current Version',
|
|
15
17
|
fieldLabels = {},
|
|
18
|
+
class: className = '',
|
|
16
19
|
}: Props = $props();
|
|
17
20
|
|
|
18
21
|
const allKeys = $derived(
|
|
@@ -35,7 +38,7 @@
|
|
|
35
38
|
}
|
|
36
39
|
</script>
|
|
37
40
|
|
|
38
|
-
<div class="lite-diff-viewer">
|
|
41
|
+
<div class="lite-diff-viewer {className}">
|
|
39
42
|
<div class="lite-diff-header">
|
|
40
43
|
<strong>Record Comparison</strong>
|
|
41
44
|
</div>
|
|
@@ -55,7 +58,7 @@
|
|
|
55
58
|
<td>
|
|
56
59
|
<strong>{fieldLabels[key] || key}</strong>
|
|
57
60
|
{#if status !== 'unchanged'}
|
|
58
|
-
<span class="lite-badge lite-badge-{status}">[{status
|
|
61
|
+
<span class="lite-badge lite-badge-{status}">[{status}]</span>
|
|
59
62
|
{/if}
|
|
60
63
|
</td>
|
|
61
64
|
<td class="lite-diff-old">
|
|
@@ -83,14 +86,14 @@
|
|
|
83
86
|
<style>
|
|
84
87
|
.lite-diff-viewer {
|
|
85
88
|
background: #ffffff;
|
|
86
|
-
border: 1px solid #
|
|
89
|
+
border: 1px solid #E5E6EB;
|
|
87
90
|
border-radius: 6px;
|
|
88
91
|
margin-bottom: 16px;
|
|
89
92
|
}
|
|
90
93
|
.lite-diff-header {
|
|
91
94
|
padding: 10px 12px;
|
|
92
|
-
background: #
|
|
93
|
-
border-bottom: 1px solid #
|
|
95
|
+
background: #F7F8FA;
|
|
96
|
+
border-bottom: 1px solid #E5E6EB;
|
|
94
97
|
font-size: 13px;
|
|
95
98
|
}
|
|
96
99
|
.lite-diff-table {
|
|
@@ -99,31 +102,31 @@
|
|
|
99
102
|
font-size: 12px;
|
|
100
103
|
}
|
|
101
104
|
.lite-diff-table th {
|
|
102
|
-
background: #
|
|
105
|
+
background: #F2F3F5;
|
|
103
106
|
padding: 8px 12px;
|
|
104
107
|
text-align: left;
|
|
105
108
|
}
|
|
106
109
|
.lite-diff-table td {
|
|
107
110
|
padding: 8px 12px;
|
|
108
|
-
border-top: 1px solid #
|
|
111
|
+
border-top: 1px solid #E5E6EB;
|
|
109
112
|
}
|
|
110
113
|
.lite-diff-added {
|
|
111
|
-
background: #
|
|
114
|
+
background: #E8FFEA;
|
|
112
115
|
}
|
|
113
116
|
.lite-diff-removed {
|
|
114
|
-
background: #
|
|
117
|
+
background: #FFECE8;
|
|
115
118
|
}
|
|
116
119
|
.lite-diff-modified {
|
|
117
|
-
background: #
|
|
120
|
+
background: #FFF7E8;
|
|
118
121
|
}
|
|
119
122
|
.lite-diff-old del {
|
|
120
|
-
color: #
|
|
123
|
+
color: #F53F3F;
|
|
121
124
|
}
|
|
122
125
|
.lite-diff-new ins {
|
|
123
|
-
color: #
|
|
126
|
+
color: #00B42A;
|
|
124
127
|
text-decoration: none;
|
|
125
128
|
}
|
|
126
129
|
.lite-diff-new strong {
|
|
127
|
-
color: #
|
|
130
|
+
color: #FF7D00;
|
|
128
131
|
}
|
|
129
132
|
</style>
|
|
@@ -4,6 +4,8 @@ interface Props {
|
|
|
4
4
|
oldTitle?: string;
|
|
5
5
|
newTitle?: string;
|
|
6
6
|
fieldLabels?: Record<string, string>;
|
|
7
|
+
/** Caller class merged with the built-in class list. */
|
|
8
|
+
class?: string;
|
|
7
9
|
}
|
|
8
10
|
declare const LiteVersionDiffViewer: import("svelte").Component<Props, {}, "">;
|
|
9
11
|
type LiteVersionDiffViewer = ReturnType<typeof LiteVersionDiffViewer>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface VideoTrack {
|
|
3
|
+
src: string;
|
|
4
|
+
kind: 'subtitles' | 'captions' | 'chapters' | 'metadata' | 'descriptions';
|
|
5
|
+
label?: string;
|
|
6
|
+
language?: string;
|
|
7
|
+
default?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
src: string;
|
|
12
|
+
poster?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
media?: 'video' | 'audio';
|
|
15
|
+
autoplay?: boolean;
|
|
16
|
+
muted?: boolean;
|
|
17
|
+
loop?: boolean;
|
|
18
|
+
playsinline?: boolean;
|
|
19
|
+
tracks?: VideoTrack[];
|
|
20
|
+
downloadLabel?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let {
|
|
24
|
+
src,
|
|
25
|
+
poster,
|
|
26
|
+
title,
|
|
27
|
+
media = 'video',
|
|
28
|
+
autoplay = false,
|
|
29
|
+
muted = false,
|
|
30
|
+
loop = false,
|
|
31
|
+
playsinline = true,
|
|
32
|
+
tracks = [],
|
|
33
|
+
downloadLabel = 'Download media',
|
|
34
|
+
}: Props = $props();
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<figure class="lite-video-player">
|
|
38
|
+
{#if title}<figcaption class="lite-video-player__title">{title}</figcaption>{/if}
|
|
39
|
+
{#if media === 'audio'}
|
|
40
|
+
<audio controls preload="metadata" {autoplay} {muted} {loop} aria-label={title ?? 'Audio player'}>
|
|
41
|
+
<source {src} />
|
|
42
|
+
{#each tracks as track (track.src)}
|
|
43
|
+
<track src={track.src} kind={track.kind} label={track.label} srclang={track.language} default={track.default} />
|
|
44
|
+
{/each}
|
|
45
|
+
<a href={src}>{downloadLabel}</a>
|
|
46
|
+
</audio>
|
|
47
|
+
{:else}
|
|
48
|
+
<video controls preload="metadata" {poster} {autoplay} {muted} {loop} {playsinline} aria-label={title ?? 'Video player'}>
|
|
49
|
+
<source {src} />
|
|
50
|
+
{#each tracks as track (track.src)}
|
|
51
|
+
<track src={track.src} kind={track.kind} label={track.label} srclang={track.language} default={track.default} />
|
|
52
|
+
{/each}
|
|
53
|
+
<a href={src}>{downloadLabel}</a>
|
|
54
|
+
</video>
|
|
55
|
+
{/if}
|
|
56
|
+
<a class="lite-video-player__download" href={src} download>{downloadLabel}</a>
|
|
57
|
+
</figure>
|
|
58
|
+
|
|
59
|
+
<style>
|
|
60
|
+
.lite-video-player { display: block; margin: 0; padding: 12px; border: 1px solid #E5E6EB; border-radius: 8px; background: #fff; }
|
|
61
|
+
.lite-video-player__title { color: #1D2129; font-size: 14px; font-weight: 600; }
|
|
62
|
+
.lite-video-player video { display: block; width: 100%; max-height: 70vh; background: #000; }
|
|
63
|
+
.lite-video-player audio { display: block; width: 100%; }
|
|
64
|
+
.lite-video-player__download { justify-self: start; color: #165DFF; font-size: 12px; }
|
|
65
|
+
|
|
66
|
+
.lite-video-player > * + * { margin-top: 8px; }
|
|
67
|
+
</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface VideoTrack {
|
|
2
|
+
src: string;
|
|
3
|
+
kind: 'subtitles' | 'captions' | 'chapters' | 'metadata' | 'descriptions';
|
|
4
|
+
label?: string;
|
|
5
|
+
language?: string;
|
|
6
|
+
default?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface Props {
|
|
9
|
+
src: string;
|
|
10
|
+
poster?: string;
|
|
11
|
+
title?: string;
|
|
12
|
+
media?: 'video' | 'audio';
|
|
13
|
+
autoplay?: boolean;
|
|
14
|
+
muted?: boolean;
|
|
15
|
+
loop?: boolean;
|
|
16
|
+
playsinline?: boolean;
|
|
17
|
+
tracks?: VideoTrack[];
|
|
18
|
+
downloadLabel?: string;
|
|
19
|
+
}
|
|
20
|
+
declare const LiteVideoPlayer: import("svelte").Component<Props, {}, "">;
|
|
21
|
+
type LiteVideoPlayer = ReturnType<typeof LiteVideoPlayer>;
|
|
22
|
+
export default LiteVideoPlayer;
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
{/each}
|
|
43
43
|
{#if items.length === 0}
|
|
44
44
|
<tr>
|
|
45
|
-
<td colspan={columns.length} style="text-align: center; color: #
|
|
45
|
+
<td colspan={columns.length} style="text-align: center; color: #86909C; padding: 24px;">
|
|
46
46
|
No records to display
|
|
47
47
|
</td>
|
|
48
48
|
</tr>
|
|
@@ -1,26 +1,55 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/**
|
|
3
|
-
* SSR AutoSaveIndicator —
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* SSR AutoSaveIndicator — renders the last known save state passed from the
|
|
4
|
+
* server. There is no auto-save loop without JS, but the state machine itself
|
|
5
|
+
* (idle / loading / success / error) is fully expressible in server HTML.
|
|
6
6
|
*/
|
|
7
|
+
type SaveStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
8
|
+
|
|
7
9
|
interface Props {
|
|
8
|
-
status?:
|
|
10
|
+
status?: SaveStatus | 'saved';
|
|
11
|
+
/** Error detail, exposed as the accessible title on the error label. */
|
|
12
|
+
error?: string;
|
|
13
|
+
/** Overrides the built-in label for the current status. */
|
|
9
14
|
message?: string;
|
|
15
|
+
/** Caller class merged with the built-in class list. */
|
|
16
|
+
class?: string;
|
|
10
17
|
}
|
|
11
18
|
|
|
12
|
-
let { status = 'idle', message }: Props = $props();
|
|
19
|
+
let { status = 'idle', error, message, class: className = '' }: Props = $props();
|
|
20
|
+
|
|
21
|
+
// `saved` was the old spelling of `success`; keep it working.
|
|
22
|
+
const normalized = $derived<SaveStatus>(status === 'saved' ? 'success' : status);
|
|
13
23
|
|
|
14
|
-
const statusConfig: Record<
|
|
15
|
-
idle: { icon: '☁',
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
const statusConfig: Record<SaveStatus, { icon: string; tone: string; text: string; label: string }> = {
|
|
25
|
+
idle: { icon: '☁', tone: 'idle', text: 'All changes saved', label: 'All changes saved' },
|
|
26
|
+
loading: { icon: '◌', tone: 'loading', text: 'Saving…', label: 'Saving' },
|
|
27
|
+
success: { icon: '✓', tone: 'success', text: 'Saved', label: 'Saved' },
|
|
28
|
+
error: { icon: '✕', tone: 'error', text: 'Save failed', label: 'Save failed' },
|
|
18
29
|
};
|
|
19
30
|
|
|
20
|
-
const cfg = $derived(statusConfig[
|
|
31
|
+
const cfg = $derived(statusConfig[normalized] ?? statusConfig.idle);
|
|
21
32
|
</script>
|
|
22
33
|
|
|
23
|
-
<span
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
<span
|
|
35
|
+
class={`lite-auto-save lite-auto-save--${cfg.tone} ${className}`.trim()}
|
|
36
|
+
role="status"
|
|
37
|
+
aria-live="polite"
|
|
38
|
+
aria-label={cfg.label}
|
|
39
|
+
title={normalized === 'error' ? error : undefined}
|
|
40
|
+
>
|
|
41
|
+
<span aria-hidden="true">{cfg.icon}</span>
|
|
42
|
+
<span class="lite-auto-save__text">{message ?? cfg.text}</span>
|
|
43
|
+
{#if normalized === 'error' && error}
|
|
44
|
+
<span class="lite-auto-save__error">{error}</span>
|
|
45
|
+
{/if}
|
|
26
46
|
</span>
|
|
47
|
+
|
|
48
|
+
<style>
|
|
49
|
+
.lite-auto-save { display: inline-flex; align-items: center; font-size: 13px; color: #4E5969; }
|
|
50
|
+
.lite-auto-save > * + * { margin-left: 6px; }
|
|
51
|
+
.lite-auto-save--loading { color: #165DFF; }
|
|
52
|
+
.lite-auto-save--success { color: #00B42A; }
|
|
53
|
+
.lite-auto-save--error { color: #F53F3F; }
|
|
54
|
+
.lite-auto-save__error { color: #86909C; font-size: 12px; }
|
|
55
|
+
</style>
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SSR AutoSaveIndicator —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* SSR AutoSaveIndicator — renders the last known save state passed from the
|
|
3
|
+
* server. There is no auto-save loop without JS, but the state machine itself
|
|
4
|
+
* (idle / loading / success / error) is fully expressible in server HTML.
|
|
5
5
|
*/
|
|
6
|
+
type SaveStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
6
7
|
interface Props {
|
|
7
|
-
status?:
|
|
8
|
+
status?: SaveStatus | 'saved';
|
|
9
|
+
/** Error detail, exposed as the accessible title on the error label. */
|
|
10
|
+
error?: string;
|
|
11
|
+
/** Overrides the built-in label for the current status. */
|
|
8
12
|
message?: string;
|
|
13
|
+
/** Caller class merged with the built-in class list. */
|
|
14
|
+
class?: string;
|
|
9
15
|
}
|
|
10
16
|
declare const LiteAutoSaveIndicator: import("svelte").Component<Props, {}, "">;
|
|
11
17
|
type LiteAutoSaveIndicator = ReturnType<typeof LiteAutoSaveIndicator>;
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
<tr>
|
|
20
20
|
{#each fields as field, _i (_i)}
|
|
21
|
-
<th style="padding: 10px 12px; text-align: left; font-weight: 600; font-size: 13px; color: #
|
|
21
|
+
<th style="padding: 10px 12px; text-align: left; font-weight: 600; font-size: 13px; color: #4E5969; white-space: nowrap;">
|
|
22
22
|
{#if currentSort === field.key}
|
|
23
|
-
<a href="?sort={field.key}&order={currentOrder === 'asc' ? 'desc' : 'asc'}" style="color: #
|
|
23
|
+
<a href="?sort={field.key}&order={currentOrder === 'asc' ? 'desc' : 'asc'}" style="color: #1D2129; text-decoration: none;">
|
|
24
24
|
{field.label} {currentOrder === 'asc' ? '↑' : '↓'}
|
|
25
25
|
</a>
|
|
26
26
|
{:else}
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
recordId?: string | number;
|
|
14
14
|
basePath?: string;
|
|
15
15
|
label?: string;
|
|
16
|
+
/** Caller class merged with the built-in class list. */
|
|
17
|
+
class?: string;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
let {
|
|
@@ -21,6 +23,7 @@
|
|
|
21
23
|
recordId,
|
|
22
24
|
basePath = '/lite',
|
|
23
25
|
label,
|
|
26
|
+
class: className = '',
|
|
24
27
|
}: Props = $props();
|
|
25
28
|
|
|
26
29
|
const href = $derived(
|
|
@@ -37,6 +40,6 @@
|
|
|
37
40
|
);
|
|
38
41
|
</script>
|
|
39
42
|
|
|
40
|
-
<a href={href} class="lite-btn lite-btn-outline">
|
|
43
|
+
<a href={href} class="lite-btn lite-btn-outline {className}">
|
|
41
44
|
{buttonLabel}
|
|
42
45
|
</a>
|
|
@@ -10,6 +10,8 @@ interface Props {
|
|
|
10
10
|
recordId?: string | number;
|
|
11
11
|
basePath?: string;
|
|
12
12
|
label?: string;
|
|
13
|
+
/** Caller class merged with the built-in class list. */
|
|
14
|
+
class?: string;
|
|
13
15
|
}
|
|
14
16
|
declare const LiteDrawerForm: import("svelte").Component<Props, {}, "">;
|
|
15
17
|
type LiteDrawerForm = ReturnType<typeof LiteDrawerForm>;
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
recordId?: string | number;
|
|
15
15
|
basePath?: string;
|
|
16
16
|
label?: string;
|
|
17
|
+
/** Caller class merged with the built-in class list. */
|
|
18
|
+
class?: string;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
let {
|
|
@@ -22,6 +24,7 @@
|
|
|
22
24
|
recordId,
|
|
23
25
|
basePath = '/lite',
|
|
24
26
|
label,
|
|
27
|
+
class: className = '',
|
|
25
28
|
}: Props = $props();
|
|
26
29
|
|
|
27
30
|
const href = $derived(
|
|
@@ -39,6 +42,6 @@
|
|
|
39
42
|
</script>
|
|
40
43
|
|
|
41
44
|
<!-- In lite mode, modals degrade to a full-page navigation -->
|
|
42
|
-
<a href={href} class="lite-btn lite-btn-primary">
|
|
45
|
+
<a href={href} class="lite-btn lite-btn-primary {className}">
|
|
43
46
|
{buttonLabel}
|
|
44
47
|
</a>
|