@revenexx/studio-shared 0.3.3 → 0.4.1
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/dist/module.d.mts +7 -3
- package/dist/module.json +2 -2
- package/dist/module.mjs +10 -4
- package/dist/runtime/components/Dashboard/DashboardConfirmDialog.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardConfirmDialog.vue +1 -1
- package/dist/runtime/components/Dashboard/DashboardConfirmDialog.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardControls.d.vue.ts +8 -7
- package/dist/runtime/components/Dashboard/DashboardControls.vue.d.ts +8 -7
- package/dist/runtime/components/Dashboard/DashboardGrid.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardGrid.vue +45 -1
- package/dist/runtime/components/Dashboard/DashboardGrid.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardNameDialog.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardNameDialog.vue +1 -1
- package/dist/runtime/components/Dashboard/DashboardNameDialog.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardPickerDialog.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardPickerDialog.vue +1 -1
- package/dist/runtime/components/Dashboard/DashboardPickerDialog.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardShareDialog.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardShareDialog.vue +1 -1
- package/dist/runtime/components/Dashboard/DashboardShareDialog.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardTopBar.d.vue.ts +9 -4
- package/dist/runtime/components/Dashboard/DashboardTopBar.vue.d.ts +9 -4
- package/dist/runtime/components/Dashboard/DashboardWidgetConfigDialog.d.vue.ts +8 -6
- package/dist/runtime/components/Dashboard/DashboardWidgetConfigDialog.vue +1 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetConfigDialog.vue.d.ts +8 -6
- package/dist/runtime/components/Dashboard/DashboardWidgetFrame.d.vue.ts +5 -4
- package/dist/runtime/components/Dashboard/DashboardWidgetFrame.vue +14 -3
- package/dist/runtime/components/Dashboard/DashboardWidgetFrame.vue.d.ts +5 -4
- package/dist/runtime/components/Dashboard/DashboardWidgetHost.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetHost.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetIcon.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetIcon.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetLibrary.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetLibrary.vue.d.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetPreview.d.vue.ts +2 -1
- package/dist/runtime/components/Dashboard/DashboardWidgetPreview.vue.d.ts +2 -1
- package/dist/runtime/components/DataTable/ColumnsMenu.d.vue.ts +2 -1
- package/dist/runtime/components/DataTable/ColumnsMenu.vue.d.ts +2 -1
- package/dist/runtime/components/DataTable/DataTable.d.vue.ts +120 -37
- package/dist/runtime/components/DataTable/DataTable.vue +493 -53
- package/dist/runtime/components/DataTable/DataTable.vue.d.ts +120 -37
- package/dist/runtime/components/DataTable/FacetChips.d.vue.ts +2 -1
- package/dist/runtime/components/DataTable/FacetChips.vue.d.ts +2 -1
- package/dist/runtime/components/DataTable/FacetPanel.d.vue.ts +6 -5
- package/dist/runtime/components/DataTable/FacetPanel.vue +57 -8
- package/dist/runtime/components/DataTable/FacetPanel.vue.d.ts +6 -5
- package/dist/runtime/components/DataTable/FilterMenu.d.vue.ts +6 -5
- package/dist/runtime/components/DataTable/FilterMenu.vue +5 -5
- package/dist/runtime/components/DataTable/FilterMenu.vue.d.ts +6 -5
- package/dist/runtime/components/DataTable/SavedViewsMenu.d.vue.ts +2 -1
- package/dist/runtime/components/DataTable/SavedViewsMenu.vue +61 -12
- package/dist/runtime/components/DataTable/SavedViewsMenu.vue.d.ts +2 -1
- package/dist/runtime/components/DataTable/SortMenu.d.vue.ts +4 -2
- package/dist/runtime/components/DataTable/SortMenu.vue +4 -1
- package/dist/runtime/components/DataTable/SortMenu.vue.d.ts +4 -2
- package/dist/runtime/components/DataTable/ToolbarLabelTrigger.d.vue.ts +23 -0
- package/dist/runtime/components/DataTable/ToolbarLabelTrigger.vue +29 -0
- package/dist/runtime/components/DataTable/ToolbarLabelTrigger.vue.d.ts +23 -0
- package/dist/runtime/components/DataTable/ViewModeSwitch.d.vue.ts +4 -2
- package/dist/runtime/components/DataTable/ViewModeSwitch.vue.d.ts +4 -2
- package/dist/runtime/components/DataTable/types.d.ts +17 -0
- package/dist/runtime/components/Form/FieldCell.d.vue.ts +32 -0
- package/dist/runtime/components/Form/FieldCell.vue +46 -0
- package/dist/runtime/components/Form/FieldCell.vue.d.ts +32 -0
- package/dist/runtime/components/Form/FieldGrid.d.vue.ts +13 -0
- package/dist/runtime/components/Form/FieldGrid.vue +11 -0
- package/dist/runtime/components/Form/FieldGrid.vue.d.ts +13 -0
- package/dist/runtime/components/Form/FormContextCard.d.vue.ts +33 -0
- package/dist/runtime/components/Form/FormContextCard.vue +56 -0
- package/dist/runtime/components/Form/FormContextCard.vue.d.ts +33 -0
- package/dist/runtime/components/Form/FormLayout.d.vue.ts +47 -0
- package/dist/runtime/components/Form/FormLayout.vue +169 -0
- package/dist/runtime/components/Form/FormLayout.vue.d.ts +47 -0
- package/dist/runtime/components/Form/FormSection.d.vue.ts +25 -0
- package/dist/runtime/components/Form/FormSection.vue +48 -0
- package/dist/runtime/components/Form/FormSection.vue.d.ts +25 -0
- package/dist/runtime/components/Form/SaveBar.d.vue.ts +44 -0
- package/dist/runtime/components/Form/SaveBar.vue +71 -0
- package/dist/runtime/components/Form/SaveBar.vue.d.ts +44 -0
- package/dist/runtime/components/Media/MediaFolderTree.d.vue.ts +6 -5
- package/dist/runtime/components/Media/MediaFolderTree.vue +1 -2
- package/dist/runtime/components/Media/MediaFolderTree.vue.d.ts +6 -5
- package/dist/runtime/components/Media/MediaPickerDialog.d.vue.ts +13 -1
- package/dist/runtime/components/Media/MediaPickerDialog.vue +206 -54
- package/dist/runtime/components/Media/MediaPickerDialog.vue.d.ts +13 -1
- package/dist/runtime/components/Media/MediaUploader.d.vue.ts +2 -1
- package/dist/runtime/components/Media/MediaUploader.vue +1 -1
- package/dist/runtime/components/Media/MediaUploader.vue.d.ts +2 -1
- package/dist/runtime/components/Shared/AppIcon.d.vue.ts +21 -0
- package/dist/runtime/components/Shared/AppIcon.vue +47 -0
- package/dist/runtime/components/Shared/AppIcon.vue.d.ts +21 -0
- package/dist/runtime/components/Shared/BuildLogsFlyout.d.vue.ts +2 -1
- package/dist/runtime/components/Shared/BuildLogsFlyout.vue.d.ts +2 -1
- package/dist/runtime/components/Shared/CardSizeToggle.d.vue.ts +11 -0
- package/dist/runtime/components/Shared/CardSizeToggle.vue +19 -0
- package/dist/runtime/components/Shared/CardSizeToggle.vue.d.ts +11 -0
- package/dist/runtime/components/Shared/DetailSheet.d.vue.ts +60 -0
- package/dist/runtime/components/Shared/DetailSheet.vue +211 -0
- package/dist/runtime/components/Shared/DetailSheet.vue.d.ts +60 -0
- package/dist/runtime/components/Shared/EmptyNote.d.vue.ts +19 -0
- package/dist/runtime/components/Shared/EmptyNote.vue +25 -0
- package/dist/runtime/components/Shared/EmptyNote.vue.d.ts +19 -0
- package/dist/runtime/components/Shared/FloatingPanel.d.vue.ts +7 -6
- package/dist/runtime/components/Shared/FloatingPanel.vue.d.ts +7 -6
- package/dist/runtime/components/Shared/GitDeploymentSettings.d.vue.ts +2 -1
- package/dist/runtime/components/Shared/GitDeploymentSettings.vue.d.ts +2 -1
- package/dist/runtime/components/Shared/KpiTile.d.vue.ts +8 -1
- package/dist/runtime/components/Shared/KpiTile.vue +10 -9
- package/dist/runtime/components/Shared/KpiTile.vue.d.ts +8 -1
- package/dist/runtime/components/Shared/ListSurface.d.vue.ts +3 -2
- package/dist/runtime/components/Shared/ListSurface.vue.d.ts +3 -2
- package/dist/runtime/components/Shared/PageHeader.d.vue.ts +7 -6
- package/dist/runtime/components/Shared/PageHeader.vue +15 -4
- package/dist/runtime/components/Shared/PageHeader.vue.d.ts +7 -6
- package/dist/runtime/components/Shared/RecordLayout.d.vue.ts +8 -7
- package/dist/runtime/components/Shared/RecordLayout.vue +1 -2
- package/dist/runtime/components/Shared/RecordLayout.vue.d.ts +8 -7
- package/dist/runtime/components/Shared/RecordRailCard.d.vue.ts +3 -2
- package/dist/runtime/components/Shared/RecordRailCard.vue +3 -3
- package/dist/runtime/components/Shared/RecordRailCard.vue.d.ts +3 -2
- package/dist/runtime/components/Shared/SelectionBar.d.vue.ts +22 -0
- package/dist/runtime/components/Shared/SelectionBar.vue +40 -0
- package/dist/runtime/components/Shared/SelectionBar.vue.d.ts +22 -0
- package/dist/runtime/components/Shared/SidebarNav.d.vue.ts +39 -4
- package/dist/runtime/components/Shared/SidebarNav.vue +71 -25
- package/dist/runtime/components/Shared/SidebarNav.vue.d.ts +39 -4
- package/dist/runtime/components/Shared/SidebarNavAreas.d.vue.ts +7 -0
- package/dist/runtime/components/Shared/SidebarNavAreas.vue +291 -0
- package/dist/runtime/components/Shared/SidebarNavAreas.vue.d.ts +7 -0
- package/dist/runtime/components/Shared/SidebarNavLink.d.vue.ts +3 -10
- package/dist/runtime/components/Shared/SidebarNavLink.vue +31 -5
- package/dist/runtime/components/Shared/SidebarNavLink.vue.d.ts +3 -10
- package/dist/runtime/components/Shared/SortHeader.d.vue.ts +3 -2
- package/dist/runtime/components/Shared/SortHeader.vue +6 -2
- package/dist/runtime/components/Shared/SortHeader.vue.d.ts +3 -2
- package/dist/runtime/components/Shared/StateCard.d.vue.ts +6 -5
- package/dist/runtime/components/Shared/StateCard.vue +1 -1
- package/dist/runtime/components/Shared/StateCard.vue.d.ts +6 -5
- package/dist/runtime/components/Shared/StudioCard.d.vue.ts +5 -4
- package/dist/runtime/components/Shared/StudioCard.vue.d.ts +5 -4
- package/dist/runtime/components/Shared/TabBar.d.vue.ts +4 -21
- package/dist/runtime/components/Shared/TabBar.vue +30 -13
- package/dist/runtime/components/Shared/TabBar.vue.d.ts +4 -21
- package/dist/runtime/components/Shared/ViewTab.d.vue.ts +2 -1
- package/dist/runtime/components/Shared/ViewTab.vue.d.ts +2 -1
- package/dist/runtime/components/Shared/Wizard.d.vue.ts +20 -7
- package/dist/runtime/components/Shared/Wizard.vue +9 -5
- package/dist/runtime/components/Shared/Wizard.vue.d.ts +20 -7
- package/dist/runtime/composables/useDetailSheet.d.ts +20 -0
- package/dist/runtime/composables/useDetailSheet.js +50 -0
- package/dist/runtime/composables/useMediaLibrary.d.ts +12 -0
- package/dist/runtime/composables/usePlatformTenant.d.ts +6 -0
- package/dist/runtime/composables/useSavedViews.d.ts +11 -1
- package/dist/runtime/composables/useSavedViews.js +4 -4
- package/dist/runtime/composables/useWidgetFigures.d.ts +12 -0
- package/dist/runtime/composables/useWidgetFigures.js +24 -0
- package/dist/runtime/composables/useWidgetHeader.d.ts +15 -0
- package/dist/runtime/composables/useWidgetHeader.js +15 -0
- package/dist/runtime/lib/activeTenant.d.ts +58 -0
- package/dist/runtime/lib/activeTenant.js +45 -0
- package/dist/runtime/lib/appIcon.d.ts +48 -0
- package/dist/runtime/lib/appIcon.js +27 -0
- package/dist/runtime/lib/auditEnvelope.d.ts +43 -0
- package/dist/runtime/lib/auditEnvelope.js +55 -0
- package/dist/runtime/lib/cardSize.d.ts +13 -0
- package/dist/runtime/lib/cardSize.js +20 -0
- package/dist/runtime/lib/dashboardIcons.js +2 -0
- package/dist/runtime/lib/dataTableFilters.d.ts +22 -0
- package/dist/runtime/lib/dataTableFilters.js +5 -0
- package/dist/runtime/lib/detailSheet.d.ts +43 -0
- package/dist/runtime/lib/detailSheet.js +34 -0
- package/dist/runtime/lib/facets.d.ts +13 -0
- package/dist/runtime/lib/formLayout.d.ts +164 -0
- package/dist/runtime/lib/formLayout.js +117 -0
- package/dist/runtime/lib/formLayoutContext.d.ts +26 -0
- package/dist/runtime/lib/formLayoutContext.js +1 -0
- package/dist/runtime/lib/gridTracks.d.ts +14 -1
- package/dist/runtime/lib/gridTracks.js +13 -2
- package/dist/runtime/lib/isoLists.d.ts +37 -2
- package/dist/runtime/lib/isoLists.js +54 -1
- package/dist/runtime/lib/notice.d.ts +14 -0
- package/dist/runtime/lib/notice.js +19 -0
- package/dist/runtime/lib/pageSize.d.ts +15 -0
- package/dist/runtime/lib/pageSize.js +26 -0
- package/dist/runtime/lib/rowMove.d.ts +38 -0
- package/dist/runtime/lib/rowMove.js +20 -0
- package/dist/runtime/lib/sidebarAreas.d.ts +46 -0
- package/dist/runtime/lib/sidebarAreas.js +25 -0
- package/dist/runtime/lib/sidebarNav.d.ts +21 -2
- package/dist/runtime/lib/sidebarNav.js +23 -4
- package/dist/runtime/lib/solarIconMap.d.ts +16 -0
- package/dist/runtime/lib/solarIconMap.js +326 -0
- package/dist/runtime/lib/solarIcons.d.ts +37 -0
- package/dist/runtime/lib/solarIcons.js +25 -0
- package/dist/runtime/lib/swipeToClose.d.ts +25 -0
- package/dist/runtime/lib/swipeToClose.js +118 -0
- package/dist/runtime/lib/tableExport.d.ts +31 -0
- package/dist/runtime/lib/tableExport.js +143 -0
- package/dist/runtime/lib/talkback.d.ts +5 -0
- package/dist/runtime/lib/talkback.js +8 -0
- package/dist/runtime/lib/talkbackTokenBatch.d.ts +35 -0
- package/dist/runtime/lib/talkbackTokenBatch.js +101 -0
- package/dist/runtime/types/nav.d.ts +9 -0
- package/dist/types.d.mts +8 -0
- package/package.json +4 -3
|
@@ -22,28 +22,29 @@ type __VLS_Props = {
|
|
|
22
22
|
/** Start the narrow-width disclosure expanded (initial value only). */
|
|
23
23
|
railOpenOnNarrow?: boolean;
|
|
24
24
|
};
|
|
25
|
-
declare var __VLS_1: {},
|
|
25
|
+
declare var __VLS_1: {}, __VLS_8: {}, __VLS_10: {}, __VLS_19: {};
|
|
26
26
|
type __VLS_Slots = {} & {
|
|
27
27
|
'rail-head'?: (props: typeof __VLS_1) => any;
|
|
28
28
|
} & {
|
|
29
|
-
rail?: (props: typeof
|
|
29
|
+
rail?: (props: typeof __VLS_8) => any;
|
|
30
30
|
} & {
|
|
31
|
-
tabs?: (props: typeof
|
|
31
|
+
tabs?: (props: typeof __VLS_10) => any;
|
|
32
32
|
} & {
|
|
33
|
-
default?: (props: typeof
|
|
33
|
+
default?: (props: typeof __VLS_19) => any;
|
|
34
34
|
};
|
|
35
|
-
declare const
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
36
36
|
"update:modelValue": (key: string) => any;
|
|
37
37
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
38
38
|
"onUpdate:modelValue"?: ((key: string) => any) | undefined;
|
|
39
39
|
}>, {
|
|
40
40
|
modelValue: string;
|
|
41
|
+
stickyOffset: number;
|
|
41
42
|
railWidth: string;
|
|
42
43
|
tabs: RecordTab[];
|
|
43
|
-
stickyOffset: number;
|
|
44
44
|
railOpenOnNarrow: boolean;
|
|
45
45
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
|
-
declare const
|
|
46
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
47
|
+
declare const _default: typeof __VLS_export;
|
|
47
48
|
export default _default;
|
|
48
49
|
type __VLS_WithSlots<T, S> = T & {
|
|
49
50
|
new (): {
|
|
@@ -37,8 +37,7 @@ const narrowOpen = ref(props.railOpenOnNarrow);
|
|
|
37
37
|
<AltArrowDown
|
|
38
38
|
:size="14"
|
|
39
39
|
class="shrink-0 transition-transform"
|
|
40
|
-
:class="narrowOpen ? 'rotate-180' : ''"
|
|
41
|
-
/>
|
|
40
|
+
:class="narrowOpen ? 'rotate-180' : ''" weight="Bold" />
|
|
42
41
|
</button>
|
|
43
42
|
|
|
44
43
|
<div :class="narrowOpen ? 'space-y-3' : 'hidden space-y-3 xl:block'">
|
|
@@ -22,28 +22,29 @@ type __VLS_Props = {
|
|
|
22
22
|
/** Start the narrow-width disclosure expanded (initial value only). */
|
|
23
23
|
railOpenOnNarrow?: boolean;
|
|
24
24
|
};
|
|
25
|
-
declare var __VLS_1: {},
|
|
25
|
+
declare var __VLS_1: {}, __VLS_8: {}, __VLS_10: {}, __VLS_19: {};
|
|
26
26
|
type __VLS_Slots = {} & {
|
|
27
27
|
'rail-head'?: (props: typeof __VLS_1) => any;
|
|
28
28
|
} & {
|
|
29
|
-
rail?: (props: typeof
|
|
29
|
+
rail?: (props: typeof __VLS_8) => any;
|
|
30
30
|
} & {
|
|
31
|
-
tabs?: (props: typeof
|
|
31
|
+
tabs?: (props: typeof __VLS_10) => any;
|
|
32
32
|
} & {
|
|
33
|
-
default?: (props: typeof
|
|
33
|
+
default?: (props: typeof __VLS_19) => any;
|
|
34
34
|
};
|
|
35
|
-
declare const
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
36
36
|
"update:modelValue": (key: string) => any;
|
|
37
37
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
38
38
|
"onUpdate:modelValue"?: ((key: string) => any) | undefined;
|
|
39
39
|
}>, {
|
|
40
40
|
modelValue: string;
|
|
41
|
+
stickyOffset: number;
|
|
41
42
|
railWidth: string;
|
|
42
43
|
tabs: RecordTab[];
|
|
43
|
-
stickyOffset: number;
|
|
44
44
|
railOpenOnNarrow: boolean;
|
|
45
45
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
|
-
declare const
|
|
46
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
47
|
+
declare const _default: typeof __VLS_export;
|
|
47
48
|
export default _default;
|
|
48
49
|
type __VLS_WithSlots<T, S> = T & {
|
|
49
50
|
new (): {
|
|
@@ -16,8 +16,9 @@ type __VLS_Slots = {} & {
|
|
|
16
16
|
} & {
|
|
17
17
|
default?: (props: typeof __VLS_3) => any;
|
|
18
18
|
};
|
|
19
|
-
declare const
|
|
20
|
-
declare const
|
|
19
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
21
22
|
export default _default;
|
|
22
23
|
type __VLS_WithSlots<T, S> = T & {
|
|
23
24
|
new (): {
|
|
@@ -5,12 +5,12 @@ defineProps({
|
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
<template>
|
|
8
|
-
<section class="
|
|
8
|
+
<section class="rx-card">
|
|
9
9
|
<div
|
|
10
10
|
v-if="title || $slots.actions"
|
|
11
|
-
class="flex items-center justify-between gap-2
|
|
11
|
+
class="flex items-center justify-between gap-2 rx-card-head px-4"
|
|
12
12
|
>
|
|
13
|
-
<h3 class="truncate text-
|
|
13
|
+
<h3 class="truncate text-sm font-semibold text-[#0B0522]">
|
|
14
14
|
{{ title }}
|
|
15
15
|
</h3>
|
|
16
16
|
<slot name="actions" />
|
|
@@ -16,8 +16,9 @@ type __VLS_Slots = {} & {
|
|
|
16
16
|
} & {
|
|
17
17
|
default?: (props: typeof __VLS_3) => any;
|
|
18
18
|
};
|
|
19
|
-
declare const
|
|
20
|
-
declare const
|
|
19
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
21
22
|
export default _default;
|
|
22
23
|
type __VLS_WithSlots<T, S> = T & {
|
|
23
24
|
new (): {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/** How many are picked; 0 hides the box. */
|
|
3
|
+
count: number;
|
|
4
|
+
busy?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare var __VLS_15: {};
|
|
7
|
+
type __VLS_Slots = {} & {
|
|
8
|
+
default?: (props: typeof __VLS_15) => any;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
clear: () => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
+
onClear?: (() => any) | undefined;
|
|
14
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
18
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
19
|
+
new (): {
|
|
20
|
+
$slots: S;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { Button } from "@revenexx/studio";
|
|
3
|
+
import { useT } from "../../composables/useT";
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
count: { type: Number, required: true },
|
|
6
|
+
busy: { type: Boolean, required: false }
|
|
7
|
+
});
|
|
8
|
+
const emit = defineEmits(["clear"]);
|
|
9
|
+
const t = useT();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<Transition
|
|
14
|
+
enter-active-class="transition duration-150 ease-out"
|
|
15
|
+
enter-from-class="translate-y-2 opacity-0"
|
|
16
|
+
leave-active-class="transition duration-100 ease-in"
|
|
17
|
+
leave-to-class="translate-y-2 opacity-0"
|
|
18
|
+
>
|
|
19
|
+
<div
|
|
20
|
+
v-if="props.count > 0"
|
|
21
|
+
class="pointer-events-none sticky bottom-[max(1rem,env(safe-area-inset-bottom))] z-20 -mt-14 flex justify-center px-2"
|
|
22
|
+
data-test="selection-bar"
|
|
23
|
+
>
|
|
24
|
+
<div
|
|
25
|
+
role="region"
|
|
26
|
+
:aria-label="t('shared.selection.label')"
|
|
27
|
+
class="pointer-events-auto flex max-w-full flex-wrap items-center gap-2 rounded-lg border border-black/[0.06] bg-white px-3 py-2 shadow-[0_8px_24px_rgba(11,5,34,0.14)]"
|
|
28
|
+
>
|
|
29
|
+
<span class="px-1 text-sm font-medium tabular-nums text-[#0B0522]" aria-live="polite">
|
|
30
|
+
{{ t("shared.selection.count", { n: props.count }, props.count) }}
|
|
31
|
+
</span>
|
|
32
|
+
<Button variant="ghost" size="sm" :disabled="busy" data-test="selection-clear" @click="emit('clear')">
|
|
33
|
+
{{ t("shared.selection.clear") }}
|
|
34
|
+
</Button>
|
|
35
|
+
<span v-if="$slots.default" class="hidden h-5 w-px bg-black/[0.08] sm:block" aria-hidden="true" />
|
|
36
|
+
<slot />
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</Transition>
|
|
40
|
+
</template>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/** How many are picked; 0 hides the box. */
|
|
3
|
+
count: number;
|
|
4
|
+
busy?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare var __VLS_15: {};
|
|
7
|
+
type __VLS_Slots = {} & {
|
|
8
|
+
default?: (props: typeof __VLS_15) => any;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
clear: () => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
+
onClear?: (() => any) | undefined;
|
|
14
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
18
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
19
|
+
new (): {
|
|
20
|
+
$slots: S;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -14,26 +14,61 @@
|
|
|
14
14
|
import type { Component } from 'vue';
|
|
15
15
|
import type { SidebarNavSection } from '../../types/nav.js';
|
|
16
16
|
export type { SidebarNavItem, SidebarNavSection } from '../../types/nav.js';
|
|
17
|
-
declare const _default:
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
18
20
|
title: string;
|
|
19
21
|
icon?: Component;
|
|
20
22
|
sections: SidebarNavSection[];
|
|
21
23
|
/** Hide the header icon and use a lighter header title weight. */
|
|
22
24
|
minimal?: boolean;
|
|
23
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Icon-only rail (tablet / small laptop, R2): rows shrink to their icon
|
|
27
|
+
* with the label as tooltip, section labels become hairlines.
|
|
28
|
+
*/
|
|
29
|
+
collapsed?: boolean;
|
|
30
|
+
/** Show the collapse/expand toggle in the header. */
|
|
31
|
+
collapsible?: boolean;
|
|
32
|
+
/** Drop the header row (the mobile drawer brings its own). */
|
|
33
|
+
hideHeader?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Area mode: only the route's section shows its rows, the others are one
|
|
36
|
+
* row each that lays a panel next to the sidebar (`SidebarNavAreas`). The
|
|
37
|
+
* icon rail and the drawer keep the full list.
|
|
38
|
+
*/
|
|
39
|
+
areas?: boolean;
|
|
40
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
41
|
+
toggle: () => any;
|
|
42
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
24
43
|
title: string;
|
|
25
44
|
icon?: Component;
|
|
26
45
|
sections: SidebarNavSection[];
|
|
27
46
|
/** Hide the header icon and use a lighter header title weight. */
|
|
28
47
|
minimal?: boolean;
|
|
29
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Icon-only rail (tablet / small laptop, R2): rows shrink to their icon
|
|
50
|
+
* with the label as tooltip, section labels become hairlines.
|
|
51
|
+
*/
|
|
52
|
+
collapsed?: boolean;
|
|
53
|
+
/** Show the collapse/expand toggle in the header. */
|
|
54
|
+
collapsible?: boolean;
|
|
55
|
+
/** Drop the header row (the mobile drawer brings its own). */
|
|
56
|
+
hideHeader?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Area mode: only the route's section shows its rows, the others are one
|
|
59
|
+
* row each that lays a panel next to the sidebar (`SidebarNavAreas`). The
|
|
60
|
+
* icon rail and the drawer keep the full list.
|
|
61
|
+
*/
|
|
62
|
+
areas?: boolean;
|
|
63
|
+
}> & Readonly<{
|
|
64
|
+
onToggle?: (() => any) | undefined;
|
|
65
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
30
66
|
icon?: (props: {}) => any;
|
|
31
67
|
} & {
|
|
32
68
|
top?: (props: {}) => any;
|
|
33
69
|
} & {
|
|
34
70
|
notice?: (props: {}) => any;
|
|
35
71
|
}>;
|
|
36
|
-
export default _default;
|
|
37
72
|
type __VLS_WithSlots<T, S> = T & {
|
|
38
73
|
new (): {
|
|
39
74
|
$slots: S;
|
|
@@ -3,46 +3,92 @@
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import {
|
|
6
|
+
import { SidebarMinimalistic as CollapseIcon } from "#solar-icons";
|
|
7
|
+
import { SIDEBAR_BEST_MATCH, sidebarBestMatch, sidebarItemKey } from "../../lib/sidebarNav";
|
|
7
8
|
import SidebarNavLink from "./SidebarNavLink.vue";
|
|
8
|
-
|
|
9
|
+
import SidebarNavAreas from "./SidebarNavAreas.vue";
|
|
10
|
+
const props = defineProps({
|
|
9
11
|
title: { type: String, required: true },
|
|
10
12
|
icon: { type: null, required: false },
|
|
11
13
|
sections: { type: Array, required: true },
|
|
12
|
-
minimal: { type: Boolean, required: false }
|
|
14
|
+
minimal: { type: Boolean, required: false },
|
|
15
|
+
collapsed: { type: Boolean, required: false },
|
|
16
|
+
collapsible: { type: Boolean, required: false },
|
|
17
|
+
hideHeader: { type: Boolean, required: false },
|
|
18
|
+
areas: { type: Boolean, required: false }
|
|
13
19
|
});
|
|
20
|
+
const emit = defineEmits(["toggle"]);
|
|
21
|
+
const areaMode = computed(() => !!props.areas && !props.collapsed && !props.hideHeader);
|
|
22
|
+
const t = useT();
|
|
23
|
+
const scroller = ref(null);
|
|
24
|
+
const route = useRoute();
|
|
25
|
+
function revealCurrent() {
|
|
26
|
+
nextTick(() => {
|
|
27
|
+
const row = scroller.value?.querySelector("[data-nav-current]");
|
|
28
|
+
row?.scrollIntoView({ block: "nearest" });
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
provide(SIDEBAR_BEST_MATCH, computed(() => sidebarBestMatch(props.sections, route.fullPath)));
|
|
32
|
+
onMounted(revealCurrent);
|
|
33
|
+
watch(() => [route.fullPath, props.sections], revealCurrent);
|
|
14
34
|
</script>
|
|
15
35
|
|
|
16
36
|
<template>
|
|
17
37
|
<aside class="h-full flex flex-col">
|
|
18
|
-
<div
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
38
|
+
<div
|
|
39
|
+
v-if="!hideHeader"
|
|
40
|
+
class="flex items-center gap-2 pt-4 pb-3 shrink-0 border-b border-black/[0.06]"
|
|
41
|
+
:class="collapsed ? 'justify-center px-2' : 'px-4'"
|
|
42
|
+
>
|
|
43
|
+
<template v-if="!collapsed">
|
|
44
|
+
<slot v-if="!minimal" name="icon">
|
|
45
|
+
<component :is="icon" v-if="icon" :size="18" :stroke-width="2" class="text-foreground/70 shrink-0" />
|
|
46
|
+
</slot>
|
|
47
|
+
<h2 class="min-w-0 flex-1 text-lg text-[#0B0522] truncate" :class="minimal ? 'font-medium' : 'font-semibold'">
|
|
48
|
+
{{ title }}
|
|
49
|
+
</h2>
|
|
50
|
+
</template>
|
|
51
|
+
<button
|
|
52
|
+
v-if="collapsible"
|
|
53
|
+
type="button"
|
|
54
|
+
class="flex size-7 shrink-0 items-center justify-center rounded-md text-foreground/60 transition-colors hover:bg-primary/5 hover:text-primary"
|
|
55
|
+
:title="collapsed ? t('shared.nav.action.expand') : t('shared.nav.action.collapse')"
|
|
56
|
+
:aria-label="collapsed ? t('shared.nav.action.expand') : t('shared.nav.action.collapse')"
|
|
57
|
+
:aria-expanded="!collapsed"
|
|
58
|
+
@click="emit('toggle')"
|
|
59
|
+
>
|
|
60
|
+
<CollapseIcon :size="16" :class="collapsed ? 'rotate-180' : ''" />
|
|
61
|
+
</button>
|
|
25
62
|
</div>
|
|
26
63
|
|
|
27
|
-
|
|
28
|
-
|
|
64
|
+
<!-- Area mode spaces its own blocks (py-1 between hairlines), so the first
|
|
65
|
+
row sits as far below the title rule as above the next hairline. -->
|
|
66
|
+
<div ref="scroller" class="flex-1 overflow-y-auto pb-3" :class="areaMode ? '' : 'pt-3'">
|
|
67
|
+
<slot v-if="!collapsed" name="top" />
|
|
29
68
|
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
69
|
+
<SidebarNavAreas v-if="areaMode" :sections="sections" />
|
|
70
|
+
<template v-else>
|
|
71
|
+
<template v-for="(section, i) in sections" :key="section.key">
|
|
72
|
+
<template v-if="collapsed">
|
|
73
|
+
<div v-if="i > 0" class="mx-3 my-2 border-t border-black/[0.06]" />
|
|
74
|
+
</template>
|
|
75
|
+
<div v-else-if="section.label" class="mt-3 px-4 pb-1">
|
|
76
|
+
<div class="text-mono text-muted-foreground">
|
|
77
|
+
{{ section.label }}
|
|
78
|
+
</div>
|
|
34
79
|
</div>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
80
|
+
<nav class="flex flex-col gap-0.5" :class="collapsed ? 'items-center px-1.5' : 'px-2'">
|
|
81
|
+
<template v-for="item in section.items" :key="sidebarItemKey(item)">
|
|
82
|
+
<div v-if="item.heading && !collapsed" class="px-2 pb-0.5 pt-2 text-mono text-muted-foreground">
|
|
83
|
+
{{ item.heading }}
|
|
84
|
+
</div>
|
|
85
|
+
<SidebarNavLink :item="item" :collapsed="collapsed" />
|
|
86
|
+
</template>
|
|
87
|
+
</nav>
|
|
88
|
+
</template>
|
|
43
89
|
</template>
|
|
44
90
|
|
|
45
|
-
<slot name="notice" />
|
|
91
|
+
<slot v-if="!collapsed" name="notice" />
|
|
46
92
|
</div>
|
|
47
93
|
</aside>
|
|
48
94
|
</template>
|
|
@@ -14,26 +14,61 @@
|
|
|
14
14
|
import type { Component } from 'vue';
|
|
15
15
|
import type { SidebarNavSection } from '../../types/nav.js';
|
|
16
16
|
export type { SidebarNavItem, SidebarNavSection } from '../../types/nav.js';
|
|
17
|
-
declare const _default:
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
18
20
|
title: string;
|
|
19
21
|
icon?: Component;
|
|
20
22
|
sections: SidebarNavSection[];
|
|
21
23
|
/** Hide the header icon and use a lighter header title weight. */
|
|
22
24
|
minimal?: boolean;
|
|
23
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Icon-only rail (tablet / small laptop, R2): rows shrink to their icon
|
|
27
|
+
* with the label as tooltip, section labels become hairlines.
|
|
28
|
+
*/
|
|
29
|
+
collapsed?: boolean;
|
|
30
|
+
/** Show the collapse/expand toggle in the header. */
|
|
31
|
+
collapsible?: boolean;
|
|
32
|
+
/** Drop the header row (the mobile drawer brings its own). */
|
|
33
|
+
hideHeader?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Area mode: only the route's section shows its rows, the others are one
|
|
36
|
+
* row each that lays a panel next to the sidebar (`SidebarNavAreas`). The
|
|
37
|
+
* icon rail and the drawer keep the full list.
|
|
38
|
+
*/
|
|
39
|
+
areas?: boolean;
|
|
40
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
41
|
+
toggle: () => any;
|
|
42
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
24
43
|
title: string;
|
|
25
44
|
icon?: Component;
|
|
26
45
|
sections: SidebarNavSection[];
|
|
27
46
|
/** Hide the header icon and use a lighter header title weight. */
|
|
28
47
|
minimal?: boolean;
|
|
29
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Icon-only rail (tablet / small laptop, R2): rows shrink to their icon
|
|
50
|
+
* with the label as tooltip, section labels become hairlines.
|
|
51
|
+
*/
|
|
52
|
+
collapsed?: boolean;
|
|
53
|
+
/** Show the collapse/expand toggle in the header. */
|
|
54
|
+
collapsible?: boolean;
|
|
55
|
+
/** Drop the header row (the mobile drawer brings its own). */
|
|
56
|
+
hideHeader?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Area mode: only the route's section shows its rows, the others are one
|
|
59
|
+
* row each that lays a panel next to the sidebar (`SidebarNavAreas`). The
|
|
60
|
+
* icon rail and the drawer keep the full list.
|
|
61
|
+
*/
|
|
62
|
+
areas?: boolean;
|
|
63
|
+
}> & Readonly<{
|
|
64
|
+
onToggle?: (() => any) | undefined;
|
|
65
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
30
66
|
icon?: (props: {}) => any;
|
|
31
67
|
} & {
|
|
32
68
|
top?: (props: {}) => any;
|
|
33
69
|
} & {
|
|
34
70
|
notice?: (props: {}) => any;
|
|
35
71
|
}>;
|
|
36
|
-
export default _default;
|
|
37
72
|
type __VLS_WithSlots<T, S> = T & {
|
|
38
73
|
new (): {
|
|
39
74
|
$slots: S;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SidebarNavSection } from '../../types/nav.js';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
sections: SidebarNavSection[];
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|