@qijenchen/design-system 0.1.0-beta.3
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/package.json +93 -0
- package/src/README.md +32 -0
- package/src/components/Accordion/accordion.tsx +104 -0
- package/src/components/Alert/alert.tsx +188 -0
- package/src/components/AppShell/_demo-helpers.tsx +198 -0
- package/src/components/AppShell/app-shell.tsx +364 -0
- package/src/components/AspectRatio/aspect-ratio.tsx +58 -0
- package/src/components/Avatar/avatar.tsx +368 -0
- package/src/components/Badge/badge.tsx +104 -0
- package/src/components/Breadcrumb/breadcrumb.tsx +609 -0
- package/src/components/BulkActionBar/bulk-action-bar.tsx +156 -0
- package/src/components/Button/button-group.tsx +96 -0
- package/src/components/Button/button.tsx +539 -0
- package/src/components/Calendar/calendar.tsx +411 -0
- package/src/components/Carousel/carousel.tsx +371 -0
- package/src/components/Chart/chart.tsx +376 -0
- package/src/components/Checkbox/checkbox-group.tsx +94 -0
- package/src/components/Checkbox/checkbox.tsx +237 -0
- package/src/components/Chip/chip.tsx +359 -0
- package/src/components/CircularProgress/circular-progress.tsx +204 -0
- package/src/components/Coachmark/coachmark.tsx +255 -0
- package/src/components/Combobox/combobox.tsx +826 -0
- package/src/components/Command/command.tsx +187 -0
- package/src/components/DataTable/active-editor-controller.ts +72 -0
- package/src/components/DataTable/cell-registry.tsx +520 -0
- package/src/components/DataTable/column-types.ts +180 -0
- package/src/components/DataTable/data-table-column-visibility-panel.tsx +261 -0
- package/src/components/DataTable/data-table-filter-panel.tsx +813 -0
- package/src/components/DataTable/data-table-interaction-layer.tsx +483 -0
- package/src/components/DataTable/data-table-sort-manager.tsx +210 -0
- package/src/components/DataTable/data-table.css +165 -0
- package/src/components/DataTable/data-table.tsx +2924 -0
- package/src/components/DataTable/filter-operators.ts +225 -0
- package/src/components/DataTable/filter-tree.ts +313 -0
- package/src/components/DataTable/lib/column-meta.ts +79 -0
- package/src/components/DateGrid/date-grid.tsx +209 -0
- package/src/components/DatePicker/date-picker.tsx +1114 -0
- package/src/components/DescriptionList/description-list.tsx +141 -0
- package/src/components/Dialog/dialog.tsx +267 -0
- package/src/components/DropdownMenu/dropdown-menu.tsx +475 -0
- package/src/components/Empty/empty.tsx +108 -0
- package/src/components/Field/field-context.ts +136 -0
- package/src/components/Field/field-types.ts +52 -0
- package/src/components/Field/field-wrapper.tsx +348 -0
- package/src/components/Field/field.tsx +535 -0
- package/src/components/FieldControlGroup/field-control-group.tsx +136 -0
- package/src/components/FileItem/file-item.tsx +322 -0
- package/src/components/FileUpload/file-upload.tsx +326 -0
- package/src/components/FileViewer/file-viewer-types.ts +76 -0
- package/src/components/FileViewer/file-viewer.tsx +1065 -0
- package/src/components/FileViewer/image-renderer.tsx +256 -0
- package/src/components/HoverCard/hover-card.tsx +79 -0
- package/src/components/Input/input.tsx +233 -0
- package/src/components/LinkInput/link-input.tsx +304 -0
- package/src/components/Menu/menu-item.tsx +334 -0
- package/src/components/NameCard/name-card.tsx +319 -0
- package/src/components/Notice/notice.tsx +196 -0
- package/src/components/NumberInput/number-input.tsx +203 -0
- package/src/components/OverflowIndicator/overflow-indicator.tsx +156 -0
- package/src/components/PeoplePicker/avatar-stack-overflow.ts +100 -0
- package/src/components/PeoplePicker/people-picker-helpers.ts +76 -0
- package/src/components/PeoplePicker/people-picker.tsx +455 -0
- package/src/components/PeoplePicker/person-display.tsx +358 -0
- package/src/components/Popover/popover.tsx +183 -0
- package/src/components/ProgressBar/progress-bar.tsx +157 -0
- package/src/components/README.md +58 -0
- package/src/components/RadioGroup/radio-group.tsx +261 -0
- package/src/components/Rating/rating.tsx +295 -0
- package/src/components/ScrollArea/scroll-area.tsx +110 -0
- package/src/components/SegmentedControl/segmented-control.tsx +304 -0
- package/src/components/Select/select.tsx +658 -0
- package/src/components/SelectMenu/select-menu.tsx +430 -0
- package/src/components/SelectionControl/selection-item.tsx +261 -0
- package/src/components/Separator/separator.tsx +48 -0
- package/src/components/Sheet/sheet.tsx +240 -0
- package/src/components/Sidebar/sidebar.tsx +1280 -0
- package/src/components/Skeleton/skeleton.tsx +35 -0
- package/src/components/Slider/slider.tsx +158 -0
- package/src/components/Steps/steps.tsx +850 -0
- package/src/components/Switch/switch.tsx +285 -0
- package/src/components/Tabs/tabs.tsx +515 -0
- package/src/components/Tag/tag.tsx +246 -0
- package/src/components/Textarea/textarea.tsx +280 -0
- package/src/components/TimePicker/time-columns.tsx +260 -0
- package/src/components/TimePicker/time-picker.tsx +419 -0
- package/src/components/Toast/toast.tsx +129 -0
- package/src/components/Tooltip/tooltip.tsx +68 -0
- package/src/components/TreeView/tree-view.tsx +1031 -0
- package/src/hooks/use-controllable.ts +40 -0
- package/src/hooks/use-is-narrow-viewport.ts +19 -0
- package/src/hooks/use-is-touch-device.ts +21 -0
- package/src/hooks/use-overflow-items.ts +256 -0
- package/src/index.ts +85 -0
- package/src/lib/README.md +82 -0
- package/src/lib/drag-visual.ts +272 -0
- package/src/lib/i18n/README.md +60 -0
- package/src/lib/i18n/i18n-context.tsx +129 -0
- package/src/lib/multi-select-ordering.ts +61 -0
- package/src/lib/utils.ts +93 -0
- package/src/patterns/README.md +67 -0
- package/src/patterns/element-anatomy/item-anatomy.tsx +744 -0
- package/src/patterns/header-canonical/chrome-header.tsx +175 -0
- package/src/patterns/header-canonical/header-canonical.css +27 -0
- package/src/patterns/horizontal-overflow/horizontal-overflow.tsx +217 -0
- package/src/patterns/overlay-surface/overlay-surface.tsx +191 -0
- package/src/patterns/resize-handle/resize-handle.tsx +188 -0
- package/src/stories-helpers/anatomy/anatomy-utils.tsx +64 -0
- package/src/tokens/README.md +53 -0
- package/src/tokens/color/primitives.css +429 -0
- package/src/tokens/color/semantic.css +539 -0
- package/src/tokens/elevation/overlay-geometry.ts +13 -0
- package/src/tokens/layoutSpace/layoutSpace.css +36 -0
- package/src/tokens/motion/motion.css +30 -0
- package/src/tokens/motion/motion.ts +17 -0
- package/src/tokens/opacity/opacity.css +23 -0
- package/src/tokens/radius/radius.css +19 -0
- package/src/tokens/typography/typography.css +118 -0
- package/src/tokens/uiSize/icon-size.ts +52 -0
- package/src/tokens/uiSize/uiSize.css +125 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* FileViewer — shared types
|
|
5
|
+
*
|
|
6
|
+
* 單獨檔避免 file-viewer.tsx 跟 renderer 檔之間的 circular import
|
|
7
|
+
* (renderer 檔需要 FileInfo / FileRendererProps,shell 也需要 FileRenderer
|
|
8
|
+
* interface 做 registry iteration)。
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export interface FileInfo {
|
|
12
|
+
id: string
|
|
13
|
+
url: string
|
|
14
|
+
name: string
|
|
15
|
+
mimeType: string
|
|
16
|
+
/** Bytes。consumer 負責格式化,shell 只呈現 formatted 字串。 */
|
|
17
|
+
size?: number
|
|
18
|
+
/** 描述文字,顯示於 InfoPanel(consumer 透過 onDescriptionChange 持久化)。 */
|
|
19
|
+
description?: string
|
|
20
|
+
/** 自由 metadata 欄位,InfoPanel 逐行呈現 key: value。 */
|
|
21
|
+
metadata?: Record<string, string | number>
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Renderer 能力宣告 — 告訴 shell 目前 renderer 支援哪些 toolbar affordances。
|
|
26
|
+
* Shell 根據這個 object 動態決定 toolbar 顯示(zoom controls / page nav 等)。
|
|
27
|
+
*/
|
|
28
|
+
export interface FileRendererCapabilities {
|
|
29
|
+
/** 是否支援 zoom(shell 據此顯示 ZoomInput)。 */
|
|
30
|
+
zoom: boolean
|
|
31
|
+
/** 是否支援旋轉(預留給未來 PDF / Image rotate)。 */
|
|
32
|
+
rotate?: boolean
|
|
33
|
+
/** PDF 專用:當前頁 / 總頁數。預留。 */
|
|
34
|
+
pageNumber?: { current: number; total: number }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Fit-to-* 指令:shell 向 renderer 下指令「請用 width 或 page fit 比例重新 zoom」。
|
|
39
|
+
* 採 nonce(counter)模式而非 boolean,讓 shell 可以重複下同一個 fit 指令
|
|
40
|
+
* (例:user 連按兩次 Fit to page 應該都觸發 ImageRenderer 重新計算)。
|
|
41
|
+
* renderer 收到 nonce 變化時才執行 fit,不看 fit 值本身是否變。
|
|
42
|
+
*/
|
|
43
|
+
// code-quality-allow: dead-export — public API surface — consumer-exposed for future use
|
|
44
|
+
export interface FitRequest {
|
|
45
|
+
/** 'fit-width' = 寬度填滿;'fit-page' = 整頁符合(width 和 height 都 fit,取較小 scale) */
|
|
46
|
+
fit: 'fit-width' | 'fit-page'
|
|
47
|
+
/** 每次 shell 下指令時 +1,renderer watch 此值變化才觸發 fit */
|
|
48
|
+
nonce: number
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface FileRendererProps {
|
|
52
|
+
file: FileInfo
|
|
53
|
+
/** 當前 zoom(%);shell own state,passed down 給 renderer。 */
|
|
54
|
+
zoom: number
|
|
55
|
+
/** Renderer 內部 zoom 變化時呼叫(wheel / pinch)。 */
|
|
56
|
+
onZoomChange: (next: number) => void
|
|
57
|
+
/**
|
|
58
|
+
* Shell 下的 fit-to-* 指令。renderer 負責算出 container / image 比例,
|
|
59
|
+
* 並透過 `onZoomChange` 回報算出的 zoom %。null 時不動作。
|
|
60
|
+
* renderer 若不支援 fit(未計算能力),可忽略此 prop。
|
|
61
|
+
*/
|
|
62
|
+
fitRequest?: FitRequest | null
|
|
63
|
+
/**
|
|
64
|
+
* Renderer 在 mount 或 file/capability 改變時呼叫,告訴 shell 目前支援哪些
|
|
65
|
+
* capability。不 emit 代表 shell 維持上一個 renderer 的 capability(第一個
|
|
66
|
+
* renderer mount 時必須 emit)。
|
|
67
|
+
*/
|
|
68
|
+
onCapabilitiesChange: (caps: FileRendererCapabilities) => void
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface FileRenderer {
|
|
72
|
+
/** unique id(registry debug 用)。 */
|
|
73
|
+
id: string
|
|
74
|
+
canRender: (file: FileInfo) => boolean
|
|
75
|
+
component: React.ComponentType<FileRendererProps>
|
|
76
|
+
}
|