@synopackageland/ui 0.9.0 → 0.9.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/CHANGELOG.md +19 -1
- package/README.md +6 -0
- package/dist/components/app/app-root/AppRoot.vue.d.ts +12 -1
- package/dist/components/composite/data-grid/DataGrid.vue.d.ts +6 -1
- package/dist/components/composite/tree-view/TreeView.vue.d.ts +3 -0
- package/dist/components/containers/expandable-item/ExpandableItem.vue.d.ts +1 -1
- package/dist/components/feedback/notification/Notification.vue.d.ts +1 -1
- package/dist/components/primitives/breadcrumb/BreadcrumbCrumb.vue.d.ts +5 -1
- package/dist/components/primitives/dialog/Dialog.vue.d.ts +7 -3
- package/dist/components/primitives/dialog/FloatingLayer.vue.d.ts +18 -0
- package/dist/components/primitives/icon/FileTypeIcon.vue.d.ts +17 -0
- package/dist/components/primitives/icon/fileType.d.ts +3 -0
- package/dist/composables/floatingHost.d.ts +21 -0
- package/dist/composables/floatingPlacement.d.ts +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7886 -7636
- package/dist/json/catalog.d.ts +2 -2
- package/dist/json/registry.d.ts +30 -30
- package/dist/json-preview/preview.js +5213 -5028
- package/dist/lib/floatingDialog.d.ts +22 -0
- package/dist/lib/localModal.d.ts +5 -0
- package/dist/reka-runtime.json +1 -1
- package/dist/theme.css +1 -1
- package/dist/themes/dsm7-embedded-theme.css +1 -1
- package/dist/themes/dsm7-embedded.css +1 -1
- package/dist/themes/dsm7.css +1 -1
- package/docs/app-local-modal.md +42 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.9.1 (2026-10-12)
|
|
4
|
+
|
|
5
|
+
Two behavior changes: a Dialog without `width` is 520px wide inside `AppRoot`, and Breadcrumb's last level no longer emits `click-item`.
|
|
6
|
+
兩項行為變化:`AppRoot` 內未指定 `width` 的 Dialog 寬 520px;Breadcrumb 最後一段不再發出 `click-item`。
|
|
7
|
+
|
|
8
|
+
- **Behavior change.** Fix: Dialog's `width` applies again inside `AppRoot`. Since app-local modality, `max-width: calc(100% - 24px) !important` overrode it, so 480px or 800px dialogs stretched to almost the window width. A panel now narrows only when the app (or viewport) is narrower than `width`. Dialogs without `width` now take the 520px default instead of the window width; pass a larger `width` where a wide panel is wanted.
|
|
9
|
+
- **行為變化。** 修正:`AppRoot` 內 Dialog 的 `width` 重新生效。自 app-local modal 起,`max-width: calc(100% - 24px) !important` 蓋掉它,480px/800px 的 Dialog 都被撐到接近視窗寬;現在只在 app(或 viewport)比 `width` 窄時才夾到可用寬度。未指定 `width` 的 Dialog 改用預設 520px,不再是視窗寬;需要寬面板請傳較大的 `width`。
|
|
10
|
+
- Dialog takes `height` and `min-height`, so one row of content no longer leaves a flat panel. Both are capped to the available height, the body fills the panel and the footer stays at the bottom.
|
|
11
|
+
- Dialog 新增 `height` 與 `min-height`,內容只有一列時不再變成扁平面板;兩者都夾到可用高度,內容區撐滿、footer 固定在底部。
|
|
12
|
+
- `AppRoot` takes `dialog-bounds="viewport"` (app mode, default `app`): as in DSM, the mask covers only the owning window, while the Dialog panel can be dragged by its title bar (or moved with the arrow keys on its title) anywhere inside the browser viewport. It stacks with its window, hides with it, follows its moves, and becomes a bottom sheet below 600px or with a coarse pointer. Pressing it emits `activate` so the DSM host can bring the window forward. See `docs/app-local-modal.md`.
|
|
13
|
+
- `AppRoot` 新增 `dialog-bounds="viewport"`(app 模式,預設 `app`):與 DSM 原生一致,遮罩只蓋擁有它的視窗,Dialog 本體可用標題列拖移(或聚焦標題後用方向鍵)到瀏覽器 viewport 內任何位置;它隨視窗疊放與隱藏、跟著視窗移動,600px 以下或粗指標時改為底部 sheet。按下面板會發出 `activate`,讓 DSM host 把視窗帶到前面。詳見 `docs/app-local-modal.md`。
|
|
14
|
+
- **Behavior change:** Breadcrumb's current (last) level is plain text with `aria-current="page"`, no longer a button that emits `click-item`. With an action menu it stays the menu trigger.
|
|
15
|
+
- **行為變化:** Breadcrumb 的目前(最後)一段改為帶 `aria-current="page"` 的文字,不再是會發出 `click-item` 的按鈕;有 action menu 時仍是選單觸發鈕。
|
|
16
|
+
- TreeView takes `selection-style="background"`: a selected row only gets the selected background, and its icon and text keep their colors, as in DSM File Station. The default `accent` is unchanged.
|
|
17
|
+
- TreeView 新增 `selection-style="background"`:選中列只換背景,圖示與文字維持原色(DSM File Station 樣式);預設 `accent` 不變。
|
|
18
|
+
- DataGrid takes `single-select`: no checkbox column, a click selects one row, the rows are in the tab order (the selected row, else the first), the arrow keys move the selection and Enter emits `rowActivate`.
|
|
19
|
+
- DataGrid 新增 `single-select`:無勾選框欄,點列單選;列可用鍵盤聚焦(選中列,否則第一列),方向鍵移動選取,Enter 觸發 `rowActivate`。
|
|
20
|
+
- `FileTypeIcon` draws a folder (`kind="folder"`, `open`) or a file whose extension picks the icon (image, video, audio, archive, text, code, else a plain file). Its colours are the theme tokens `--ui-file-folder` (DSM 7 File Station yellow) and `--ui-file-icon`, so a theme recolours every file list; `fileTypeIcon(name)` returns the icon alone.
|
|
21
|
+
- 新增 `FileTypeIcon`:畫資料夾(`kind="folder"`、`open`)或依副檔名選圖示的檔案(圖片、影片、音訊、壓縮檔、文字、程式碼,其餘為一般檔案)。顏色來自主題 token `--ui-file-folder`(DSM 7 File Station 黃色)與 `--ui-file-icon`,主題可一次改掉所有檔案列表的顏色;`fileTypeIcon(name)` 只回傳圖示元件。
|
|
4
22
|
|
|
5
23
|
## 0.9.0 (2026-10-11)
|
|
6
24
|
|
package/README.md
CHANGED
|
@@ -253,6 +253,12 @@ const open = ref(false)
|
|
|
253
253
|
</template>
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
+
`width` (default `520px`) is the panel's maximum width. `height` or
|
|
257
|
+
`min-height` (for example `min-height="420px"`) keeps a panel with little
|
|
258
|
+
content from collapsing. In a DSM window, `<AppRoot dialog-bounds="viewport">`
|
|
259
|
+
lets dialogs be dragged out of the window, within the browser viewport. See
|
|
260
|
+
[docs/app-local-modal.md](docs/app-local-modal.md#floating-dialogs-in-a-dsm-window).
|
|
261
|
+
|
|
256
262
|
### Toast notifications
|
|
257
263
|
|
|
258
264
|
Wrap your page with `ToastProvider` in `App.vue`:
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
2
|
modalScope?: 'document' | 'app';
|
|
3
|
+
/**
|
|
4
|
+
* `viewport` lets app-local dialogs leave the app window, as DSM's own
|
|
5
|
+
* dialogs do: the mask still covers only this root, the panel can be dragged
|
|
6
|
+
* anywhere in the viewport. Set it only inside a DSM window.
|
|
7
|
+
*/
|
|
8
|
+
dialogBounds?: 'app' | 'viewport';
|
|
3
9
|
};
|
|
4
10
|
declare var __VLS_7: {}, __VLS_9: {};
|
|
5
11
|
type __VLS_Slots = {} & {
|
|
@@ -7,8 +13,13 @@ type __VLS_Slots = {} & {
|
|
|
7
13
|
} & {
|
|
8
14
|
default?: (props: typeof __VLS_9) => any;
|
|
9
15
|
};
|
|
10
|
-
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
16
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
17
|
+
activate: () => any;
|
|
18
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
|
+
onActivate?: (() => any) | undefined;
|
|
20
|
+
}>, {
|
|
11
21
|
modalScope: "document" | "app";
|
|
22
|
+
dialogBounds: "app" | "viewport";
|
|
12
23
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
13
24
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
25
|
declare const _default: typeof __VLS_export;
|
|
@@ -103,6 +103,8 @@ type __VLS_Props = {
|
|
|
103
103
|
selectable?: boolean;
|
|
104
104
|
/** With `selectable`: a row click selects that row; Ctrl/Cmd-click toggles it. */
|
|
105
105
|
selectOnRowClick?: boolean;
|
|
106
|
+
/** One selected row at a time, picked by clicking the row; no checkbox column. */
|
|
107
|
+
singleSelect?: boolean;
|
|
106
108
|
page?: number;
|
|
107
109
|
pageSize?: number;
|
|
108
110
|
totalRows?: number;
|
|
@@ -172,6 +174,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
172
174
|
}) => any;
|
|
173
175
|
rowClick: (row: Record<string, unknown>) => any;
|
|
174
176
|
rowDblclick: (row: Record<string, unknown>) => any;
|
|
177
|
+
rowActivate: (row: Record<string, unknown>) => any;
|
|
175
178
|
rowExpand: (key: string) => any;
|
|
176
179
|
rowCollapse: (key: string) => any;
|
|
177
180
|
groupToggle: (groupKey: string, expanded: boolean) => any;
|
|
@@ -201,6 +204,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
201
204
|
}) => any) | undefined;
|
|
202
205
|
onRowClick?: ((row: Record<string, unknown>) => any) | undefined;
|
|
203
206
|
onRowDblclick?: ((row: Record<string, unknown>) => any) | undefined;
|
|
207
|
+
onRowActivate?: ((row: Record<string, unknown>) => any) | undefined;
|
|
204
208
|
onRowExpand?: ((key: string) => any) | undefined;
|
|
205
209
|
onRowCollapse?: ((key: string) => any) | undefined;
|
|
206
210
|
onGroupToggle?: ((groupKey: string, expanded: boolean) => any) | undefined;
|
|
@@ -222,6 +226,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
222
226
|
loading: boolean;
|
|
223
227
|
group: DataGridGroup | null;
|
|
224
228
|
loadingText: string;
|
|
229
|
+
draggable: boolean | DataGridDraggable;
|
|
225
230
|
page: number;
|
|
226
231
|
pageSize: number;
|
|
227
232
|
rowKey: string;
|
|
@@ -229,6 +234,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
229
234
|
selectedKeys: string[];
|
|
230
235
|
selectable: boolean;
|
|
231
236
|
selectOnRowClick: boolean;
|
|
237
|
+
singleSelect: boolean;
|
|
232
238
|
localSort: boolean;
|
|
233
239
|
localPagination: boolean;
|
|
234
240
|
loadingRows: number;
|
|
@@ -239,7 +245,6 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
239
245
|
expandable: DataGridExpandable | null;
|
|
240
246
|
expandedKeys: string[];
|
|
241
247
|
defaultExpandedKeys: string[];
|
|
242
|
-
draggable: boolean | DataGridDraggable;
|
|
243
248
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
244
249
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
245
250
|
declare const _default: typeof __VLS_export;
|
|
@@ -16,6 +16,8 @@ type __VLS_Props = {
|
|
|
16
16
|
loadChildren?: (node: TreeNode) => Promise<TreeNode[] | undefined>;
|
|
17
17
|
/** Localise the expand/collapse control. */
|
|
18
18
|
expandLabel?: (node: TreeNode, expanded: boolean) => string;
|
|
19
|
+
/** `accent` also colors the selected icon and text; `background` only shades the row, as DSM File Station does. */
|
|
20
|
+
selectionStyle?: 'accent' | 'background';
|
|
19
21
|
};
|
|
20
22
|
declare function nodeById(id: string): TreeNode | undefined;
|
|
21
23
|
declare function getCheckedNodes(includeHalf?: boolean): TreeNode[];
|
|
@@ -84,6 +86,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
84
86
|
checkable: boolean;
|
|
85
87
|
defaultCheckedKeys: string[];
|
|
86
88
|
loadChildren: (node: TreeNode) => Promise<TreeNode[] | undefined>;
|
|
89
|
+
selectionStyle: "accent" | "background";
|
|
87
90
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
88
91
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
89
92
|
declare const _default: typeof __VLS_export;
|
|
@@ -64,9 +64,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
64
64
|
"onDrag-over"?: ((event: DragEvent) => any) | undefined;
|
|
65
65
|
"onDrag-end"?: ((event: DragEvent) => any) | undefined;
|
|
66
66
|
}>, {
|
|
67
|
+
draggable: boolean;
|
|
67
68
|
selectable: boolean;
|
|
68
69
|
expandable: boolean;
|
|
69
|
-
draggable: boolean;
|
|
70
70
|
expanded: boolean;
|
|
71
71
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
72
72
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -34,8 +34,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
34
34
|
open: boolean;
|
|
35
35
|
tone: NotificationTone;
|
|
36
36
|
content: string | false;
|
|
37
|
-
duration: number | false;
|
|
38
37
|
cancel: NotificationAction;
|
|
38
|
+
duration: number | false;
|
|
39
39
|
confirm: NotificationAction;
|
|
40
40
|
paused: boolean;
|
|
41
41
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -5,7 +5,11 @@ type __VLS_Props = {
|
|
|
5
5
|
/** The level owns the action menu, so it shows a dropdown chevron. */
|
|
6
6
|
hasMenu?: boolean;
|
|
7
7
|
};
|
|
8
|
-
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
8
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
9
|
+
click: (event: MouseEvent) => any;
|
|
10
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
12
|
+
}>, {
|
|
9
13
|
current: boolean;
|
|
10
14
|
hasMenu: boolean;
|
|
11
15
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -4,17 +4,21 @@ type __VLS_Props = {
|
|
|
4
4
|
title?: string;
|
|
5
5
|
description?: string;
|
|
6
6
|
width?: string;
|
|
7
|
+
/** A fixed panel height, capped to the available height. */
|
|
8
|
+
height?: string;
|
|
9
|
+
/** Keeps the panel from shrinking with short content, capped to the available height. */
|
|
10
|
+
minHeight?: string;
|
|
7
11
|
closeLabel?: string;
|
|
8
12
|
/** Hides the header close affordance for fixed-flow dialogs that own their dismiss path. */
|
|
9
13
|
showClose?: boolean;
|
|
10
14
|
};
|
|
11
|
-
declare var __VLS_14: {},
|
|
15
|
+
declare var __VLS_14: {}, __VLS_71: {}, __VLS_73: {};
|
|
12
16
|
type __VLS_Slots = {} & {
|
|
13
17
|
trigger?: (props: typeof __VLS_14) => any;
|
|
14
18
|
} & {
|
|
15
|
-
default?: (props: typeof
|
|
19
|
+
default?: (props: typeof __VLS_71) => any;
|
|
16
20
|
} & {
|
|
17
|
-
footer?: (props: typeof
|
|
21
|
+
footer?: (props: typeof __VLS_73) => any;
|
|
18
22
|
};
|
|
19
23
|
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
20
24
|
escapeKeyDown: (event: KeyboardEvent) => any;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
host: HTMLElement | null;
|
|
3
|
+
};
|
|
4
|
+
declare var __VLS_14: {}, __VLS_16: {};
|
|
5
|
+
type __VLS_Slots = {} & {
|
|
6
|
+
default?: (props: typeof __VLS_14) => any;
|
|
7
|
+
} & {
|
|
8
|
+
default?: (props: typeof __VLS_16) => any;
|
|
9
|
+
};
|
|
10
|
+
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>;
|
|
11
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
14
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
15
|
+
new (): {
|
|
16
|
+
$slots: S;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IconSize } from './icon';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
kind?: 'folder' | 'file';
|
|
4
|
+
/** A file's name; its extension picks the icon. */
|
|
5
|
+
name?: string;
|
|
6
|
+
/** Draws an open folder. */
|
|
7
|
+
open?: boolean;
|
|
8
|
+
size?: IconSize;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
11
|
+
size: IconSize;
|
|
12
|
+
name: string;
|
|
13
|
+
open: boolean;
|
|
14
|
+
kind: "folder" | "file";
|
|
15
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Ref, ShallowRef } from 'vue';
|
|
2
|
+
import { Box, Size } from '../lib/floatingDialog';
|
|
3
|
+
export declare const FLOATING_HOST_KEY = "@synopkgland/floating-host";
|
|
4
|
+
export declare const FLOATING_HOST_ATTRIBUTE = "data-ui-floating";
|
|
5
|
+
export type FloatingHost = {
|
|
6
|
+
element: ShallowRef<HTMLElement | null>;
|
|
7
|
+
/** The app root's box, or null while its window is hidden. */
|
|
8
|
+
owner: ShallowRef<Box | null>;
|
|
9
|
+
viewport: ShallowRef<Size>;
|
|
10
|
+
/** False on a narrow viewport or with a coarse pointer: panels become viewport sheets. */
|
|
11
|
+
draggable: Ref<boolean>;
|
|
12
|
+
};
|
|
13
|
+
export declare function injectFloatingHost(): FloatingHost | null;
|
|
14
|
+
/**
|
|
15
|
+
* A viewport-sized layer for dialogs that may leave the app window, as DSM's
|
|
16
|
+
* own dialogs do. It sits right after the window that owns the app, at that
|
|
17
|
+
* window's z-index, so other DSM windows still stack over both, and it hides
|
|
18
|
+
* with the window. It carries the app root attribute, so the scoped theme
|
|
19
|
+
* styles it, and it lets presses through except on panels.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useFloatingHost(root: Ref<HTMLElement | null>, enabled: boolean, activate: () => void): FloatingHost | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { Point } from '../lib/floatingDialog';
|
|
3
|
+
import { FloatingHost } from './floatingHost';
|
|
4
|
+
/**
|
|
5
|
+
* Places a floating dialog panel: centered over its app window when it opens,
|
|
6
|
+
* then moved by its title bar (pointer) or title (arrow keys), always kept
|
|
7
|
+
* inside the viewport and moved along with the app window.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useFloatingPlacement(handle: Ref<HTMLElement | null>, host: FloatingHost | null): {
|
|
10
|
+
position: import('vue').ShallowRef<Point | null, Point | null>;
|
|
11
|
+
draggable: import('vue').ComputedRef<boolean>;
|
|
12
|
+
onPointerdown: (event: PointerEvent) => void;
|
|
13
|
+
onKeydown: (event: KeyboardEvent) => void;
|
|
14
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -48,6 +48,8 @@ export type { TabItem } from './components/primitives/tabs/Tabs.vue';
|
|
|
48
48
|
export { default as Accordion } from './components/primitives/accordion/Accordion.vue';
|
|
49
49
|
export type { AccordionEntry } from './components/primitives/accordion/Accordion.vue';
|
|
50
50
|
export { default as Icon } from './components/primitives/icon/Icon.vue';
|
|
51
|
+
export { default as FileTypeIcon } from './components/primitives/icon/FileTypeIcon.vue';
|
|
52
|
+
export { fileTypeIcon } from './components/primitives/icon/fileType';
|
|
51
53
|
export { useIconButton } from './components/primitives/icon/useIconButton';
|
|
52
54
|
export type { IconButtonOptions } from './components/primitives/icon/useIconButton';
|
|
53
55
|
export { clearIconRegistry, getRegisteredIcon, registerIcons } from './components/primitives/icon/iconRegistry';
|