@geektech/one 0.0.1 → 0.1.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.
Files changed (63) hide show
  1. package/README-zh.md +155 -3
  2. package/README.md +158 -3
  3. package/dist/alert/OneAlert.d.ts +21 -0
  4. package/dist/alert/index.d.ts +2 -0
  5. package/dist/badge/OneBadge.d.ts +18 -0
  6. package/dist/badge/index.d.ts +2 -0
  7. package/dist/breadcrumb/OneBreadcrumb.d.ts +38 -0
  8. package/dist/breadcrumb/index.d.ts +1 -0
  9. package/dist/categories.d.ts +7 -3
  10. package/dist/checkbox/OneCheckboxGroup.d.ts +2 -0
  11. package/dist/data-display/index.d.ts +2 -0
  12. package/dist/data-display/types.d.ts +2 -0
  13. package/dist/dialog/DialogOverlay.d.ts +30 -0
  14. package/dist/dialog/OneDialog.d.ts +20 -0
  15. package/dist/dialog/focus-manager.d.ts +10 -0
  16. package/dist/dialog/index.d.ts +7 -0
  17. package/dist/dialog/scroll-lock.d.ts +2 -0
  18. package/dist/dialog/service.d.ts +22 -0
  19. package/dist/dialog/types.d.ts +14 -0
  20. package/dist/empty/OneEmpty.d.ts +12 -0
  21. package/dist/empty/index.d.ts +2 -0
  22. package/dist/form/OneForm.d.ts +1 -1
  23. package/dist/form/OneFormItem.d.ts +1 -1
  24. package/dist/index.d.ts +26 -1
  25. package/dist/index.js +3663 -78
  26. package/dist/index.js.map +47 -15
  27. package/dist/message/MessageOverlay.d.ts +25 -0
  28. package/dist/message/OneMessage.d.ts +19 -0
  29. package/dist/message/index.d.ts +6 -0
  30. package/dist/message/normalize.d.ts +8 -0
  31. package/dist/message/service.d.ts +17 -0
  32. package/dist/message/timer.d.ts +21 -0
  33. package/dist/message/types.d.ts +14 -0
  34. package/dist/navigation/index.d.ts +2 -0
  35. package/dist/navigation/normalize.d.ts +3 -0
  36. package/dist/navigation/types.d.ts +4 -0
  37. package/dist/overlay/container.d.ts +2 -0
  38. package/dist/overlay/errors.d.ts +9 -0
  39. package/dist/overlay/host.d.ts +16 -0
  40. package/dist/overlay/index.d.ts +7 -0
  41. package/dist/overlay/mount-controller.d.ts +13 -0
  42. package/dist/overlay/positioner.d.ts +36 -0
  43. package/dist/overlay/types.d.ts +32 -0
  44. package/dist/pagination/OnePagination.d.ts +42 -0
  45. package/dist/pagination/index.d.ts +2 -0
  46. package/dist/pagination/tokens.d.ts +2 -0
  47. package/dist/styles/shared.d.ts +13 -0
  48. package/dist/tabs/OneTabs.d.ts +34 -0
  49. package/dist/tabs/index.d.ts +2 -0
  50. package/dist/tag/OneTag.d.ts +21 -0
  51. package/dist/tag/index.d.ts +2 -0
  52. package/dist/theme/OneThemeService.d.ts +14 -0
  53. package/dist/theme/default-theme.d.ts +2 -0
  54. package/dist/theme/errors.d.ts +9 -0
  55. package/dist/theme/index.d.ts +4 -0
  56. package/dist/theme/normalize.d.ts +6 -0
  57. package/dist/theme/types.d.ts +57 -0
  58. package/dist/theme/variables.d.ts +6 -0
  59. package/dist/tooltip/OneTooltip.d.ts +45 -0
  60. package/dist/tooltip/TooltipBubble.d.ts +29 -0
  61. package/dist/tooltip/index.d.ts +4 -0
  62. package/dist/tooltip/types.d.ts +17 -0
  63. package/package.json +1 -1
@@ -0,0 +1,25 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import type { OneFeedbackVariant } from '../overlay';
3
+ import { type OneNamedStyle } from '../styles/shared';
4
+ import type { OneMessageOptions, OneMessagePlacement } from './types';
5
+ export interface MessageOverlayProps extends Omit<OneMessageOptions, 'container'> {
6
+ variant: OneFeedbackVariant;
7
+ duration: number;
8
+ placement: OneMessagePlacement;
9
+ requestClose(): void;
10
+ }
11
+ export declare const ONE_MESSAGE_STYLES: OneNamedStyle[];
12
+ interface MessageOverlayState {
13
+ }
14
+ export declare class MessageOverlay extends Component<MessageOverlayProps, MessageOverlayState> {
15
+ private timer;
16
+ mount(container: HTMLElement): void;
17
+ protected initState(): MessageOverlayState;
18
+ protected initStyles(): void;
19
+ protected onMounted(): void;
20
+ protected onUnmounted(): void;
21
+ setProps(props: Partial<MessageOverlayProps>): void;
22
+ protected render(): VNode;
23
+ private decorateGroup;
24
+ }
25
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import type { OneMessageProps } from './types';
3
+ interface OneMessageState {
4
+ internalOpen: boolean;
5
+ }
6
+ export declare class OneMessage extends Component<OneMessageProps, OneMessageState> {
7
+ private controller;
8
+ private viewMounted;
9
+ protected initState(): OneMessageState;
10
+ protected initStyles(): void;
11
+ protected onMounted(): void;
12
+ protected beforeUpdate(): void;
13
+ protected beforeUnmount(): void;
14
+ protected render(): VNode;
15
+ private createOverlay;
16
+ private synchronizeOverlay;
17
+ private requestClose;
18
+ }
19
+ export {};
@@ -0,0 +1,6 @@
1
+ export { MessageOverlay, ONE_MESSAGE_STYLES } from './MessageOverlay';
2
+ export { OneMessage } from './OneMessage';
3
+ export { OneMessageService, createOneMessageService, oneMessage, } from './service';
4
+ export { OneMessageTimer } from './timer';
5
+ export type { OneTimerScheduler } from './timer';
6
+ export type { OneMessageOptions, OneMessagePlacement, OneMessageProps, } from './types';
@@ -0,0 +1,8 @@
1
+ import type { OneFeedbackVariant } from '../overlay';
2
+ import type { OneMessageOptions, OneMessagePlacement } from './types';
3
+ export interface NormalizedOneMessageOptions extends Omit<OneMessageOptions, 'variant' | 'duration' | 'placement'> {
4
+ variant: OneFeedbackVariant;
5
+ duration: number;
6
+ placement: OneMessagePlacement;
7
+ }
8
+ export declare function normalizeOneMessageOptions(options: OneMessageOptions): NormalizedOneMessageOptions;
@@ -0,0 +1,17 @@
1
+ import { type OneOverlayHandle, type OneOverlayHost } from '../overlay';
2
+ import type { OneMessageOptions } from './types';
3
+ type OneMessageShortcutOptions = Omit<OneMessageOptions, 'content' | 'variant'>;
4
+ export declare class OneMessageService {
5
+ private readonly suppliedHost?;
6
+ constructor(suppliedHost?: OneOverlayHost | undefined);
7
+ open(options: OneMessageOptions): OneOverlayHandle<OneMessageOptions>;
8
+ info(content: string, options?: OneMessageShortcutOptions): OneOverlayHandle<OneMessageOptions>;
9
+ success(content: string, options?: OneMessageShortcutOptions): OneOverlayHandle<OneMessageOptions>;
10
+ warning(content: string, options?: OneMessageShortcutOptions): OneOverlayHandle<OneMessageOptions>;
11
+ error(content: string, options?: OneMessageShortcutOptions): OneOverlayHandle<OneMessageOptions>;
12
+ close(id: string): void;
13
+ closeAll(): void;
14
+ }
15
+ export declare function createOneMessageService(host?: OneOverlayHost): OneMessageService;
16
+ export declare const oneMessage: OneMessageService;
17
+ export {};
@@ -0,0 +1,21 @@
1
+ export interface OneTimerScheduler {
2
+ now(): number;
3
+ set(callback: () => void, delay: number): unknown;
4
+ clear(handle: unknown): void;
5
+ }
6
+ export declare class OneMessageTimer {
7
+ private readonly scheduler;
8
+ private readonly onElapsed;
9
+ private handle;
10
+ private remaining;
11
+ private startedAt;
12
+ private paused;
13
+ private disposed;
14
+ constructor(duration: number, scheduler: OneTimerScheduler | undefined, onElapsed: () => void);
15
+ pause(): void;
16
+ resume(): void;
17
+ reset(duration: number): void;
18
+ dispose(): void;
19
+ private schedule;
20
+ private clear;
21
+ }
@@ -0,0 +1,14 @@
1
+ import type { OneFeedbackVariant, OneOverlayContainer } from '../overlay';
2
+ export type OneMessagePlacement = 'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end';
3
+ export interface OneMessageOptions {
4
+ content: string;
5
+ variant?: OneFeedbackVariant;
6
+ duration?: number;
7
+ closable?: boolean;
8
+ placement?: OneMessagePlacement;
9
+ container?: OneOverlayContainer;
10
+ }
11
+ export interface OneMessageProps extends OneMessageOptions {
12
+ open?: boolean;
13
+ defaultOpen?: boolean;
14
+ }
@@ -0,0 +1,2 @@
1
+ export { normalizeNonNegativeInteger, normalizePositiveInteger, normalizePositiveIntegerList, } from './normalize';
2
+ export type { OneNavigationChangeEvent } from './types';
@@ -0,0 +1,3 @@
1
+ export declare function normalizeNonNegativeInteger(value: unknown, fallback: number): number;
2
+ export declare function normalizePositiveInteger(value: unknown, fallback: number): number;
3
+ export declare function normalizePositiveIntegerList(values: unknown, fallback: readonly number[]): number[];
@@ -0,0 +1,4 @@
1
+ export interface OneNavigationChangeEvent<TValue> {
2
+ value: TValue;
3
+ originalEvent: Event;
4
+ }
@@ -0,0 +1,2 @@
1
+ import type { OneOverlayContainer } from './types';
2
+ export declare function resolveOneOverlayContainer(container?: OneOverlayContainer, targetDocument?: Document | null): HTMLElement;
@@ -0,0 +1,9 @@
1
+ export declare class OneOverlayEnvironmentError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ export declare class OneOverlayContainerError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class OneTooltipTriggerError extends Error {
8
+ constructor(message?: string);
9
+ }
@@ -0,0 +1,16 @@
1
+ import type { OneOverlayHandle, OneOverlayHost, OneOverlayKind, OneOverlayOpenRequest } from './types';
2
+ export declare class DomOneOverlayHost implements OneOverlayHost {
3
+ private readonly targetDocument;
4
+ private readonly entries;
5
+ private readonly records;
6
+ private sequence;
7
+ constructor(targetDocument: Document);
8
+ open<TOptions extends object>(request: OneOverlayOpenRequest<TOptions>): OneOverlayHandle<TOptions>;
9
+ close(id: string): void;
10
+ closeAll(kind?: OneOverlayKind): void;
11
+ isTop(id: string): boolean;
12
+ private getOrCreateEntry;
13
+ private getOrCreateGroup;
14
+ private removeRecord;
15
+ }
16
+ export declare function getDefaultOneOverlayHost(targetDocument?: Document): OneOverlayHost;
@@ -0,0 +1,7 @@
1
+ export { resolveOneOverlayContainer } from './container';
2
+ export { OneOverlayContainerError, OneOverlayEnvironmentError, OneTooltipTriggerError, } from './errors';
3
+ export { DomOneOverlayHost, getDefaultOneOverlayHost } from './host';
4
+ export { OneOverlayMountController } from './mount-controller';
5
+ export { OneFloatingPositioner } from './positioner';
6
+ export type { OneOverlayPositionRequest, OneOverlayPositionResult, OneOverlayPositioner, OneOverlayRect, } from './positioner';
7
+ export type { OneFeedbackVariant, OneManagedOverlay, OneOverlayContainer, OneOverlayFactory, OneOverlayFactoryContext, OneOverlayHandle, OneOverlayHost, OneOverlayKind, OneOverlayOpenRequest, OneOverlayPlacement, } from './types';
@@ -0,0 +1,13 @@
1
+ import type { OneOverlayContainer, OneOverlayFactory, OneOverlayHost, OneOverlayKind } from './types';
2
+ export declare class OneOverlayMountController<TOptions extends object> {
3
+ private readonly host;
4
+ private readonly kind;
5
+ private readonly factory;
6
+ private readonly group?;
7
+ private handle;
8
+ constructor(host: OneOverlayHost, kind: OneOverlayKind, factory: OneOverlayFactory<TOptions>, group?: string | undefined);
9
+ open(container?: OneOverlayContainer): void;
10
+ update(options: Partial<TOptions>): void;
11
+ close(): void;
12
+ isOpen(): boolean;
13
+ }
@@ -0,0 +1,36 @@
1
+ import type { OneOverlayPlacement } from './types';
2
+ export interface OneOverlayRect {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ left: number;
11
+ }
12
+ export interface OneOverlayPositionRequest {
13
+ reference: OneOverlayRect;
14
+ floating: OneOverlayRect;
15
+ boundary: OneOverlayRect;
16
+ placement: OneOverlayPlacement;
17
+ offset: number;
18
+ padding: number;
19
+ }
20
+ export interface OneOverlayPositionResult {
21
+ x: number;
22
+ y: number;
23
+ placement: OneOverlayPlacement;
24
+ arrow: {
25
+ x?: number;
26
+ y?: number;
27
+ };
28
+ }
29
+ export interface OneOverlayPositioner {
30
+ compute(request: OneOverlayPositionRequest): OneOverlayPositionResult;
31
+ autoUpdate(reference: HTMLElement, floating: HTMLElement, update: () => void): () => void;
32
+ }
33
+ export declare class OneFloatingPositioner implements OneOverlayPositioner {
34
+ compute(request: OneOverlayPositionRequest): OneOverlayPositionResult;
35
+ autoUpdate(reference: HTMLElement, floating: HTMLElement, update: () => void): () => void;
36
+ }
@@ -0,0 +1,32 @@
1
+ export type OneFeedbackVariant = 'info' | 'success' | 'warning' | 'error';
2
+ export type OneOverlayContainer = HTMLElement | (() => HTMLElement | null);
3
+ export type OneOverlayPlacement = 'top-start' | 'top' | 'top-end' | 'right-start' | 'right' | 'right-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end';
4
+ export type OneOverlayKind = 'message' | 'dialog' | 'tooltip';
5
+ export interface OneOverlayHandle<TOptions extends object> {
6
+ readonly id: string;
7
+ update(options: Partial<TOptions>): void;
8
+ close(): void;
9
+ }
10
+ export interface OneManagedOverlay<TOptions extends object> {
11
+ update(options: Partial<TOptions>): void;
12
+ destroy(): void;
13
+ }
14
+ export interface OneOverlayFactoryContext {
15
+ id: string;
16
+ slot: HTMLElement;
17
+ requestClose(): void;
18
+ isTop(): boolean;
19
+ }
20
+ export type OneOverlayFactory<TOptions extends object> = (context: OneOverlayFactoryContext) => OneManagedOverlay<TOptions>;
21
+ export interface OneOverlayOpenRequest<TOptions extends object> {
22
+ kind: OneOverlayKind;
23
+ group?: string;
24
+ container?: OneOverlayContainer;
25
+ factory: OneOverlayFactory<TOptions>;
26
+ }
27
+ export interface OneOverlayHost {
28
+ open<TOptions extends object>(request: OneOverlayOpenRequest<TOptions>): OneOverlayHandle<TOptions>;
29
+ close(id: string): void;
30
+ closeAll(kind?: OneOverlayKind): void;
31
+ isTop(id: string): boolean;
32
+ }
@@ -0,0 +1,42 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import { type OneNamedStyle } from '../styles/shared';
3
+ export interface OnePaginationChangeEvent {
4
+ page: number;
5
+ pageSize: number;
6
+ originalEvent: Event;
7
+ }
8
+ export interface OnePaginationProps {
9
+ total: number;
10
+ page?: number;
11
+ defaultPage?: number;
12
+ pageSize?: number;
13
+ defaultPageSize?: number;
14
+ pageSizeOptions?: readonly number[];
15
+ siblingCount?: number;
16
+ showQuickJumper?: boolean;
17
+ disabled?: boolean;
18
+ ariaLabel?: string;
19
+ }
20
+ interface OnePaginationState {
21
+ internalPage: number;
22
+ internalPageSize: number;
23
+ jumpValue: string;
24
+ }
25
+ export declare const ONE_PAGINATION_STYLES: OneNamedStyle[];
26
+ export declare class OnePagination extends Component<OnePaginationProps, OnePaginationState> {
27
+ protected initState(): OnePaginationState;
28
+ protected initStyles(): void;
29
+ protected render(): VNode;
30
+ private effectivePageSize;
31
+ private pageCount;
32
+ private effectivePage;
33
+ private sizeOptions;
34
+ private renderPageButton;
35
+ private renderEllipsis;
36
+ private handleSizeChange;
37
+ private handleJumpInput;
38
+ private handleJumpKeydown;
39
+ private requestChange;
40
+ private submitJump;
41
+ }
42
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ONE_PAGINATION_STYLES, OnePagination, type OnePaginationChangeEvent, type OnePaginationProps, } from './OnePagination';
2
+ export { createOnePaginationTokens, type OnePaginationToken } from './tokens';
@@ -0,0 +1,2 @@
1
+ export type OnePaginationToken = number | 'ellipsis-start' | 'ellipsis-end';
2
+ export declare function createOnePaginationTokens(pageCount: number, page: number, siblingCount: number): OnePaginationToken[];
@@ -9,6 +9,10 @@ export declare const ONE_THEME_DEFAULTS: {
9
9
  readonly colorPrimaryHover: "#4bc944";
10
10
  readonly colorDanger: "#b83232";
11
11
  readonly colorDangerHover: "#9f2d2d";
12
+ readonly colorInfo: "#2563eb";
13
+ readonly colorSuccess: "#2f7c39";
14
+ readonly colorWarning: "#9a6700";
15
+ readonly colorOverlay: "rgba(22, 32, 24, 0.48)";
12
16
  readonly colorSurface: "#ffffff";
13
17
  readonly colorText: "#162018";
14
18
  readonly colorMuted: "#647268";
@@ -24,7 +28,16 @@ export declare const ONE_THEME_DEFAULTS: {
24
28
  readonly fontSizeMd: "14px";
25
29
  readonly fontSizeLg: "16px";
26
30
  readonly shadowCard: "0 12px 30px rgba(32, 74, 38, 0.1)";
31
+ readonly shadowOverlay: "0 18px 48px rgba(22, 32, 24, 0.2)";
32
+ readonly zIndexDialog: "1000";
33
+ readonly zIndexMessage: "1100";
34
+ readonly zIndexTooltip: "1200";
27
35
  readonly fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif";
28
36
  };
37
+ export declare const ONE_THEME_TYPOGRAPHY_PROPERTIES: Readonly<{
38
+ fontFamily: "var(--one-font-family, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif)";
39
+ lineHeight: "var(--one-line-height, 1.5)";
40
+ }>;
41
+ export declare function oneThemeBorder(color?: string): string;
29
42
  export declare function normalizeOneSize(value: unknown): OneComponentSize;
30
43
  export declare function oneStylesToSheet(styles: readonly OneNamedStyle[]): StyleSheet;
@@ -0,0 +1,34 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import type { OneNavigationChangeEvent } from '../navigation';
3
+ import { type OneNamedStyle } from '../styles/shared';
4
+ export interface OneTabItem {
5
+ value: string;
6
+ label: string;
7
+ disabled?: boolean;
8
+ }
9
+ export type OneTabsChangeEvent = OneNavigationChangeEvent<string>;
10
+ export interface OneTabsProps {
11
+ items: readonly OneTabItem[];
12
+ value?: string;
13
+ defaultValue?: string;
14
+ id?: string;
15
+ ariaLabel?: string;
16
+ children?: Array<VNode | string>;
17
+ }
18
+ interface OneTabsState {
19
+ internalValue: string | undefined;
20
+ }
21
+ export declare const ONE_TABS_STYLES: OneNamedStyle[];
22
+ export declare class OneTabs extends Component<OneTabsProps, OneTabsState> {
23
+ private readonly idPrefix;
24
+ protected initState(): OneTabsState;
25
+ protected initStyles(): void;
26
+ protected render(): VNode;
27
+ private normalizedItems;
28
+ private effectiveValue;
29
+ private activate;
30
+ private handleKeydown;
31
+ private enabledIndices;
32
+ private focusTab;
33
+ }
34
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ONE_TABS_STYLES, OneTabs } from './OneTabs';
2
+ export type { OneTabItem, OneTabsChangeEvent, OneTabsProps } from './OneTabs';
@@ -0,0 +1,21 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import { type OneDataDisplayVariant } from '../data-display';
3
+ import { type OneNamedStyle } from '../styles/shared';
4
+ import type { OneComponentSize } from '../types';
5
+ export interface OneTagProps {
6
+ variant?: OneDataDisplayVariant;
7
+ size?: OneComponentSize;
8
+ closable?: boolean;
9
+ children?: Array<VNode | string>;
10
+ }
11
+ interface OneTagState {
12
+ visible: boolean;
13
+ }
14
+ export declare const ONE_TAG_STYLES: OneNamedStyle[];
15
+ export declare class OneTag extends Component<OneTagProps, OneTagState> {
16
+ protected initState(): OneTagState;
17
+ protected initStyles(): void;
18
+ protected render(): VNode;
19
+ private close;
20
+ }
21
+ export {};
@@ -0,0 +1,2 @@
1
+ export { OneTag } from './OneTag';
2
+ export type { OneTagProps } from './OneTag';
@@ -0,0 +1,14 @@
1
+ import type { OneThemeInitOptions, OneThemeService } from './types';
2
+ type OneThemeRootResolver = () => HTMLElement | undefined;
3
+ export declare class DomOneThemeService implements OneThemeService {
4
+ private readonly resolveRoot;
5
+ private themes;
6
+ private activeTheme;
7
+ constructor(resolveRoot: OneThemeRootResolver);
8
+ get currentTheme(): string;
9
+ init(options?: OneThemeInitOptions): void;
10
+ switch(name: string): void;
11
+ private requireRoot;
12
+ }
13
+ export declare const oneTheme: OneThemeService;
14
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { OneResolvedTheme } from './types';
2
+ export declare const ONE_DEFAULT_THEME: OneResolvedTheme;
@@ -0,0 +1,9 @@
1
+ export declare class OneThemeConfigError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class OneThemeNotFoundError extends Error {
5
+ constructor(themeName: string);
6
+ }
7
+ export declare class OneThemeEnvironmentError extends Error {
8
+ constructor();
9
+ }
@@ -0,0 +1,4 @@
1
+ export { ONE_DEFAULT_THEME } from './default-theme';
2
+ export { OneThemeConfigError, OneThemeEnvironmentError, OneThemeNotFoundError, } from './errors';
3
+ export { oneTheme } from './OneThemeService';
4
+ export type { OneResolvedTheme, OneThemeBorder, OneThemeColors, OneThemeDefinition, OneThemeInitOptions, OneThemeRadius, OneThemeService, OneThemeTypography, } from './types';
@@ -0,0 +1,6 @@
1
+ import type { OneResolvedTheme, OneThemeInitOptions } from './types';
2
+ export interface NormalizedOneThemeOptions {
3
+ readonly themes: Readonly<Record<string, OneResolvedTheme>>;
4
+ readonly defaultTheme: string;
5
+ }
6
+ export declare function normalizeOneThemeOptions(options?: OneThemeInitOptions): NormalizedOneThemeOptions;
@@ -0,0 +1,57 @@
1
+ export interface OneThemeColors {
2
+ primary: string;
3
+ primaryHover: string;
4
+ primaryContrast: string;
5
+ secondary: string;
6
+ secondaryHover: string;
7
+ secondaryContrast: string;
8
+ danger: string;
9
+ dangerHover: string;
10
+ dangerContrast: string;
11
+ info: string;
12
+ success: string;
13
+ warning: string;
14
+ overlay: string;
15
+ surface: string;
16
+ text: string;
17
+ muted: string;
18
+ focus: string;
19
+ }
20
+ export interface OneThemeTypography {
21
+ fontFamily: string;
22
+ fontSizeSm: string;
23
+ fontSizeMd: string;
24
+ fontSizeLg: string;
25
+ lineHeight: string;
26
+ }
27
+ export interface OneThemeBorder {
28
+ color: string;
29
+ width: string;
30
+ style: string;
31
+ }
32
+ export interface OneThemeRadius {
33
+ sm: string;
34
+ md: string;
35
+ lg: string;
36
+ }
37
+ export interface OneThemeDefinition {
38
+ colors?: Partial<OneThemeColors>;
39
+ typography?: Partial<OneThemeTypography>;
40
+ border?: Partial<OneThemeBorder>;
41
+ radius?: Partial<OneThemeRadius>;
42
+ }
43
+ export interface OneResolvedTheme {
44
+ readonly colors: Readonly<OneThemeColors>;
45
+ readonly typography: Readonly<OneThemeTypography>;
46
+ readonly border: Readonly<OneThemeBorder>;
47
+ readonly radius: Readonly<OneThemeRadius>;
48
+ }
49
+ export interface OneThemeInitOptions {
50
+ themes?: Readonly<Record<string, OneThemeDefinition>>;
51
+ defaultTheme?: string;
52
+ }
53
+ export interface OneThemeService {
54
+ readonly currentTheme: string;
55
+ init(options?: OneThemeInitOptions): void;
56
+ switch(name: string): void;
57
+ }
@@ -0,0 +1,6 @@
1
+ import type { OneResolvedTheme } from './types';
2
+ type OneThemeVariableReader = (theme: OneResolvedTheme) => string;
3
+ type OneThemeVariable = readonly [string, OneThemeVariableReader];
4
+ export declare const ONE_THEME_VARIABLES: readonly OneThemeVariable[];
5
+ export declare function oneThemeToVariables(theme: OneResolvedTheme): ReadonlyArray<readonly [string, string]>;
6
+ export {};
@@ -0,0 +1,45 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import type { OneTooltipProps } from './types';
3
+ interface OneTooltipState {
4
+ internalOpen: boolean;
5
+ }
6
+ export declare class OneTooltip extends Component<OneTooltipProps, OneTooltipState> {
7
+ private readonly positioner;
8
+ private controller;
9
+ private triggerElement;
10
+ private targetDocument;
11
+ private previousDescribedBy;
12
+ private describedBySaved;
13
+ private tooltipId;
14
+ private hovered;
15
+ private focused;
16
+ private openTimer;
17
+ private closeTimer;
18
+ protected initState(): OneTooltipState;
19
+ protected initStyles(): void;
20
+ protected onMounted(): void;
21
+ protected beforeUpdate(): void;
22
+ protected beforeUnmount(): void;
23
+ protected render(): VNode;
24
+ private createBubble;
25
+ private synchronizeOverlay;
26
+ private bubbleOptions;
27
+ private requestedOpen;
28
+ private requestOpen;
29
+ private handleMouseEnter;
30
+ private handleMouseLeave;
31
+ private handleFocusIn;
32
+ private handleFocusOut;
33
+ private handleTriggerClick;
34
+ private readonly handleDocumentClick;
35
+ private readonly handleDocumentKeydown;
36
+ private scheduleOpen;
37
+ private scheduleClose;
38
+ private clearTimers;
39
+ private cancelOpenTimer;
40
+ private cancelCloseTimer;
41
+ private applyDescribedBy;
42
+ private restoreDescribedBy;
43
+ private normalizedTrigger;
44
+ }
45
+ export {};
@@ -0,0 +1,29 @@
1
+ import { Component, type VNode } from '@geektech/tsone';
2
+ import type { OneOverlayPlacement, OneOverlayPositioner } from '../overlay';
3
+ import { type OneNamedStyle } from '../styles/shared';
4
+ export interface TooltipBubbleProps {
5
+ id: string;
6
+ content: VNode | string;
7
+ reference: HTMLElement;
8
+ placement: OneOverlayPlacement;
9
+ offset: number;
10
+ boundaryPadding: number;
11
+ arrow: boolean;
12
+ container: HTMLElement;
13
+ positioner: OneOverlayPositioner;
14
+ }
15
+ export declare const ONE_TOOLTIP_STYLES: OneNamedStyle[];
16
+ interface TooltipBubbleState {
17
+ }
18
+ export declare class TooltipBubble extends Component<TooltipBubbleProps, TooltipBubbleState> {
19
+ private stopAutoUpdate;
20
+ mount(container: HTMLElement): void;
21
+ setProps(props: Partial<TooltipBubbleProps>): void;
22
+ protected initState(): TooltipBubbleState;
23
+ protected initStyles(): void;
24
+ protected onUnmounted(): void;
25
+ protected render(): VNode;
26
+ private updatePosition;
27
+ private boundaryRect;
28
+ }
29
+ export {};
@@ -0,0 +1,4 @@
1
+ export { OneTooltip } from './OneTooltip';
2
+ export { ONE_TOOLTIP_STYLES, TooltipBubble } from './TooltipBubble';
3
+ export type { TooltipBubbleProps } from './TooltipBubble';
4
+ export type { OneTooltipProps, OneTooltipTrigger } from './types';
@@ -0,0 +1,17 @@
1
+ import type { VNode } from '@geektech/tsone';
2
+ import type { OneOverlayContainer, OneOverlayPlacement } from '../overlay';
3
+ export type OneTooltipTrigger = 'hover-focus' | 'click' | 'manual';
4
+ export interface OneTooltipProps {
5
+ content: VNode | string;
6
+ placement?: OneOverlayPlacement;
7
+ trigger?: OneTooltipTrigger;
8
+ open?: boolean;
9
+ defaultOpen?: boolean;
10
+ openDelay?: number;
11
+ closeDelay?: number;
12
+ offset?: number;
13
+ container?: OneOverlayContainer;
14
+ arrow?: boolean;
15
+ disabled?: boolean;
16
+ children?: Array<VNode | string>;
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geektech/one",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "One UI 是基于 TSone 的轻量级纯 TypeScript UI 组件库",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",