@gusun/design-system 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.
- package/README.md +16 -0
- package/dist-lib/Editor-wECQz1CV.js +1994 -0
- package/dist-lib/Editor-wECQz1CV.js.map +1 -0
- package/dist-lib/components/Accordion.d.ts +25 -0
- package/dist-lib/components/Button.d.ts +27 -0
- package/dist-lib/components/ButtonGroup.d.ts +18 -0
- package/dist-lib/components/CalendarDayButton.d.ts +39 -0
- package/dist-lib/components/Checkbox.d.ts +34 -0
- package/dist-lib/components/Chip.d.ts +12 -0
- package/dist-lib/components/ConditionOrderSlot.d.ts +31 -0
- package/dist-lib/components/DateField.d.ts +39 -0
- package/dist-lib/components/DatePicker.d.ts +49 -0
- package/dist-lib/components/Divider.d.ts +12 -0
- package/dist-lib/components/Editor.d.ts +23 -0
- package/dist-lib/components/EditorToolbar.d.ts +12 -0
- package/dist-lib/components/ErrorBoundary.d.ts +30 -0
- package/dist-lib/components/Field.d.ts +32 -0
- package/dist-lib/components/FileUploadButton.d.ts +22 -0
- package/dist-lib/components/FileUploadMenu.d.ts +24 -0
- package/dist-lib/components/FormTemplate.d.ts +33 -0
- package/dist-lib/components/ImageUploadButton.d.ts +14 -0
- package/dist-lib/components/ImageUploadMenu.d.ts +17 -0
- package/dist-lib/components/InlineFieldTrigger.d.ts +18 -0
- package/dist-lib/components/Input.d.ts +28 -0
- package/dist-lib/components/JobPositionTemplate.d.ts +41 -0
- package/dist-lib/components/Label.d.ts +18 -0
- package/dist-lib/components/List.d.ts +46 -0
- package/dist-lib/components/ListEmpty.d.ts +6 -0
- package/dist-lib/components/ListGroup.d.ts +13 -0
- package/dist-lib/components/MarkdownDoc.d.ts +5 -0
- package/dist-lib/components/MergeFieldNode.d.ts +2 -0
- package/dist-lib/components/Modal.d.ts +90 -0
- package/dist-lib/components/NoticeWritingTemplate.d.ts +38 -0
- package/dist-lib/components/Pagination.d.ts +27 -0
- package/dist-lib/components/Popover.d.ts +16 -0
- package/dist-lib/components/PopoverMenu.d.ts +54 -0
- package/dist-lib/components/Radio.d.ts +33 -0
- package/dist-lib/components/ScreeningBuilderTemplate.d.ts +53 -0
- package/dist-lib/components/ScreeningConditionCard.d.ts +56 -0
- package/dist-lib/components/ScreeningFormula.d.ts +17 -0
- package/dist-lib/components/ScreeningIndividualSettingModal.d.ts +10 -0
- package/dist-lib/components/ScrollArea.d.ts +30 -0
- package/dist-lib/components/SearchBar.d.ts +14 -0
- package/dist-lib/components/SegmentControl.d.ts +46 -0
- package/dist-lib/components/SegmentedTabs.d.ts +20 -0
- package/dist-lib/components/Select.d.ts +67 -0
- package/dist-lib/components/SelectGroup.d.ts +18 -0
- package/dist-lib/components/SelectOrInput.d.ts +49 -0
- package/dist-lib/components/SideNavigation.d.ts +33 -0
- package/dist-lib/components/SideNavigationTemplate.d.ts +29 -0
- package/dist-lib/components/Slot.d.ts +16 -0
- package/dist-lib/components/Switch.d.ts +6 -0
- package/dist-lib/components/Table.d.ts +66 -0
- package/dist-lib/components/TableTemplate.d.ts +52 -0
- package/dist-lib/components/Tabs.d.ts +40 -0
- package/dist-lib/components/Tag.d.ts +25 -0
- package/dist-lib/components/TextArea.d.ts +26 -0
- package/dist-lib/components/TimeField.d.ts +15 -0
- package/dist-lib/components/ToolBar.d.ts +5 -0
- package/dist-lib/components/Tooltip.d.ts +25 -0
- package/dist-lib/components/TruncatingText.d.ts +7 -0
- package/dist-lib/components/TwoDepthList.d.ts +41 -0
- package/dist-lib/components/UsageExample.d.ts +16 -0
- package/dist-lib/components/chipStyles.d.ts +11 -0
- package/dist-lib/components/formulaFunctions.d.ts +75 -0
- package/dist-lib/components/modalContext.d.ts +1 -0
- package/dist-lib/components/popoverLayers.d.ts +6 -0
- package/dist-lib/components/tableView.d.ts +17 -0
- package/dist-lib/components/useFocusTrap.d.ts +6 -0
- package/dist-lib/components/useHoverTooltip.d.ts +10 -0
- package/dist-lib/components/useOutsideDismiss.d.ts +9 -0
- package/dist-lib/components/usePanelKeyboard.d.ts +11 -0
- package/dist-lib/components/usePopoverPosition.d.ts +11 -0
- package/dist-lib/editor.d.ts +3 -0
- package/dist-lib/editor.js +2 -0
- package/dist-lib/index.d.ts +68 -0
- package/dist-lib/index.js +4707 -0
- package/dist-lib/index.js.map +1 -0
- package/dist-lib/navContext.d.ts +8 -0
- package/dist-lib/styles.css +1 -0
- package/dist-lib/tailwind-preset.cjs +1023 -0
- package/dist-lib/tailwind-preset.mjs +1000 -0
- package/dist-lib/tokens/border.d.ts +6 -0
- package/dist-lib/tokens/colors/accordionColors.d.ts +3 -0
- package/dist-lib/tokens/colors/builderAreaColors.d.ts +12 -0
- package/dist-lib/tokens/colors/buttonColors.d.ts +37 -0
- package/dist-lib/tokens/colors/calendarColors.d.ts +12 -0
- package/dist-lib/tokens/colors/checkboxColors.d.ts +12 -0
- package/dist-lib/tokens/colors/chipColors.d.ts +82 -0
- package/dist-lib/tokens/colors/conditionCardColors.d.ts +10 -0
- package/dist-lib/tokens/colors/conditionOrderSlotColors.d.ts +15 -0
- package/dist-lib/tokens/colors/dividerColors.d.ts +5 -0
- package/dist-lib/tokens/colors/editorColors.d.ts +30 -0
- package/dist-lib/tokens/colors/formulaColors.d.ts +26 -0
- package/dist-lib/tokens/colors/labelFieldColors.d.ts +6 -0
- package/dist-lib/tokens/colors/listColors.d.ts +20 -0
- package/dist-lib/tokens/colors/modalColors.d.ts +7 -0
- package/dist-lib/tokens/colors/newTagColors.d.ts +6 -0
- package/dist-lib/tokens/colors/radioColors.d.ts +12 -0
- package/dist-lib/tokens/colors/segmentedColors.d.ts +9 -0
- package/dist-lib/tokens/colors/sideNavColors.d.ts +13 -0
- package/dist-lib/tokens/colors/switchColors.d.ts +13 -0
- package/dist-lib/tokens/colors/tabColors.d.ts +9 -0
- package/dist-lib/tokens/colors/tableColors.d.ts +8 -0
- package/dist-lib/tokens/colors/tagColors.d.ts +10 -0
- package/dist-lib/tokens/colors/textFieldColors.d.ts +25 -0
- package/dist-lib/tokens/colors/toolbarColors.d.ts +5 -0
- package/dist-lib/tokens/colors.d.ts +176 -0
- package/dist-lib/tokens/fontIconColors.d.ts +7 -0
- package/dist-lib/tokens/icon.d.ts +5 -0
- package/dist-lib/tokens/index.d.ts +32 -0
- package/dist-lib/tokens/lineHeight.d.ts +11 -0
- package/dist-lib/tokens/radius.d.ts +14 -0
- package/dist-lib/tokens/spacing.d.ts +16 -0
- package/dist-lib/tokens/typography.d.ts +33 -0
- package/dist-lib/tokens-CbcaxhkP.js +583 -0
- package/dist-lib/tokens-CbcaxhkP.js.map +1 -0
- package/dist-lib/tokens.js +2 -0
- package/dist-lib/utils/datetime.d.ts +6 -0
- package/dist-lib/utils/phone.d.ts +1 -0
- package/package.json +163 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import { ChipColor } from './chipStyles';
|
|
3
|
+
import { OptionItem } from './formulaFunctions';
|
|
4
|
+
export type SelectPlacement = 'auto' | `${'top' | 'bottom' | 'auto'}-${'left' | 'right' | 'auto'}`;
|
|
5
|
+
interface SelectBaseProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'defaultValue'> {
|
|
6
|
+
options?: OptionItem[];
|
|
7
|
+
confirm?: boolean;
|
|
8
|
+
variant?: 'box' | 'text' | 'chip';
|
|
9
|
+
size?: '24' | '20';
|
|
10
|
+
weight?: 'normal' | 'semibold';
|
|
11
|
+
defaultOpen?: boolean;
|
|
12
|
+
tabOpens?: boolean;
|
|
13
|
+
color?: ChipColor;
|
|
14
|
+
label?: ReactNode;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
readOnly?: boolean;
|
|
18
|
+
error?: boolean;
|
|
19
|
+
errorMessage?: string;
|
|
20
|
+
width?: number | string;
|
|
21
|
+
maxWidth?: number | string;
|
|
22
|
+
menuWidth?: number | string;
|
|
23
|
+
placement?: SelectPlacement;
|
|
24
|
+
searchable?: boolean;
|
|
25
|
+
searchPlaceholder?: string;
|
|
26
|
+
emptyMessage?: string;
|
|
27
|
+
noResultMessage?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface SelectSingleProps extends SelectBaseProps {
|
|
30
|
+
multiple?: false;
|
|
31
|
+
value?: string | null;
|
|
32
|
+
defaultValue?: string;
|
|
33
|
+
onChange?: (e: {
|
|
34
|
+
target: {
|
|
35
|
+
value: string;
|
|
36
|
+
};
|
|
37
|
+
}) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface SelectMultipleProps extends SelectBaseProps {
|
|
40
|
+
multiple: true;
|
|
41
|
+
value?: string[];
|
|
42
|
+
defaultValue?: string[];
|
|
43
|
+
onChange?: (e: {
|
|
44
|
+
target: {
|
|
45
|
+
value: string[];
|
|
46
|
+
};
|
|
47
|
+
}) => void;
|
|
48
|
+
}
|
|
49
|
+
export type SelectProps = SelectSingleProps | SelectMultipleProps;
|
|
50
|
+
export declare function Select({ value, defaultValue, onChange: onChangeProp, options, // [{ value, label, disabled? }] — disabled 옵션은 목록에 비활성 행으로 표시(선택 불가)
|
|
51
|
+
multiple, // 체크박스 다중 선택 — value/defaultValue/onChange 값은 배열([value])
|
|
52
|
+
confirm, // multiple 전용 — 선택을 draft로 들고 푸터(전체 선택+취소/확인)에서
|
|
53
|
+
variant, // 'box'(필드형, 기본) | 'text'(인라인 텍스트형 — 필터·문단 사이용)
|
|
54
|
+
size, // text variant 전용: '24'(14px) | '20'(12px) — box는 항상 14px
|
|
55
|
+
weight, // chip variant 전용 텍스트 두께 — 'normal'(기본) | 'semibold'
|
|
56
|
+
defaultOpen, // 마운트 시 드롭다운을 연 상태로 시작(1회성 — 이후는 일반 동작)
|
|
57
|
+
tabOpens, // 트리거 포커스 상태에서 Tab=메뉴 열기(수식 키보드 체인용 — 일반 폼은 기본 꺼짐)
|
|
58
|
+
color, // chip variant 전용: 'gray' | 'red' | 'blue' | 'black' — Chip과 동일한
|
|
59
|
+
label, // 내부 라벨(box 전용, Figma type="solid label") — 값 선택 시 트리거에
|
|
60
|
+
placeholder, disabled, readOnly, error, errorMessage, width, // 트리거 너비: 숫자(px) | CSS 길이 | 'hug'(콘텐츠 맞춤). 미지정 시 200px
|
|
61
|
+
maxWidth, // 트리거 최대 너비(숫자 px/CSS 길이). hug일 때 제한용 — 넘으면 말줄임
|
|
62
|
+
menuWidth, // 드롭다운 너비: 숫자(px)/CSS 길이. 미지정 시 트리거와 동일
|
|
63
|
+
placement, // 'auto' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'
|
|
64
|
+
searchable, // 드롭다운 상단 검색바로 옵션 필터
|
|
65
|
+
searchPlaceholder, emptyMessage, noResultMessage, className, ...props }: SelectProps): import("react").JSX.Element;
|
|
66
|
+
export declare function SelectChip(props: SelectProps): import("react").JSX.Element;
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
declare const GAP_STYLE: {
|
|
3
|
+
'3': string;
|
|
4
|
+
'4': string;
|
|
5
|
+
'5': string;
|
|
6
|
+
'6': string;
|
|
7
|
+
'7': string;
|
|
8
|
+
};
|
|
9
|
+
interface SelectGroupProps extends ComponentPropsWithoutRef<'div'> {
|
|
10
|
+
direction?: 'horizontal' | 'vertical';
|
|
11
|
+
gap?: keyof typeof GAP_STYLE;
|
|
12
|
+
width?: 'hug' | 'fill';
|
|
13
|
+
}
|
|
14
|
+
export declare function SelectGroup({ children, direction, // 'horizontal' | 'vertical'
|
|
15
|
+
gap, // 간격 토큰 키 — 기본 '5'(8px)
|
|
16
|
+
width, // 'hug'(콘텐츠 폭) | 'fill'(부모 전체 폭 — 셀렉트들 균등 분할)
|
|
17
|
+
className, ...props }: SelectGroupProps): import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import { SelectPlacement } from './Select';
|
|
3
|
+
import { OptionItem } from './formulaFunctions';
|
|
4
|
+
type SelectOrInputSource = 'select' | 'input' | null;
|
|
5
|
+
interface SelectOrInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
6
|
+
value?: string;
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
onChange?: (e: {
|
|
9
|
+
target: {
|
|
10
|
+
value: string;
|
|
11
|
+
source: SelectOrInputSource;
|
|
12
|
+
};
|
|
13
|
+
}) => void;
|
|
14
|
+
options?: (string | OptionItem)[];
|
|
15
|
+
showSelect?: boolean;
|
|
16
|
+
showInput?: boolean;
|
|
17
|
+
selectPlaceholder?: string;
|
|
18
|
+
inputPlaceholder?: string;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
readOnly?: boolean;
|
|
21
|
+
error?: boolean;
|
|
22
|
+
errorMessage?: string;
|
|
23
|
+
formatInput?: (raw: string) => string;
|
|
24
|
+
width?: number | string;
|
|
25
|
+
selectWidth?: number | string;
|
|
26
|
+
menuWidth?: number | string;
|
|
27
|
+
placement?: SelectPlacement;
|
|
28
|
+
searchable?: boolean;
|
|
29
|
+
inputProps?: ComponentPropsWithoutRef<'input'>;
|
|
30
|
+
}
|
|
31
|
+
export declare function SelectOrInput({ value, defaultValue, onChange, // (e) => void — e.target.value(문자열) · e.target.source('select'|'input'|null)
|
|
32
|
+
options, // 등록된 값 목록: 문자열 | { value, label }
|
|
33
|
+
showSelect, // false면 Select 숨김 — 직접 입력 전용(Input이 전체 폭)
|
|
34
|
+
showInput, // false면 Input 숨김 — 등록값 선택 전용(Select가 전체 폭)
|
|
35
|
+
selectPlaceholder, inputPlaceholder, disabled, readOnly, error, errorMessage, // Input의 에러 툴팁으로 표시
|
|
36
|
+
formatInput, // (raw) => string — 직접 입력값 변환(예: 전화번호 하이픈). 입력 시마다 적용
|
|
37
|
+
width, // 전체 너비: 숫자(px) | CSS 길이('100%' 등)
|
|
38
|
+
selectWidth, // Select 너비 — 나머지는 Input이 채움
|
|
39
|
+
menuWidth, // Select 드롭다운 너비(미지정 시 트리거와 동일)
|
|
40
|
+
placement, searchable, // Select 검색 필터
|
|
41
|
+
inputProps, // 내부 <input> 속성 통과(inputMode 등)
|
|
42
|
+
className, ...props }: SelectOrInputProps): import("react").JSX.Element;
|
|
43
|
+
export declare function EmailField({ selectPlaceholder, inputPlaceholder, inputProps, ...props }: SelectOrInputProps): import("react").JSX.Element;
|
|
44
|
+
interface PhoneFieldProps extends Omit<SelectOrInputProps, 'formatInput'> {
|
|
45
|
+
formatInput?: ((raw: string) => string) | null;
|
|
46
|
+
}
|
|
47
|
+
export declare function PhoneField({ selectPlaceholder, inputPlaceholder, formatInput, // 기본: 하이픈 자동 포맷(끄려면 null)
|
|
48
|
+
inputProps, ...props }: PhoneFieldProps): import("react").JSX.Element;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';
|
|
2
|
+
export interface SideNavigationButtonProps extends ComponentPropsWithoutRef<'button'> {
|
|
3
|
+
/** 좌측 아이콘(lucide 컴포넌트) — 없으면 생략 */
|
|
4
|
+
icon?: ElementType;
|
|
5
|
+
/** select 상태(파란 텍스트·알파 배경) */
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
/** 라벨 오른쪽 NewTag(N) 표시 */
|
|
8
|
+
showNewTag?: boolean;
|
|
9
|
+
/** NewTag color 패스스루 */
|
|
10
|
+
newTagColor?: 'blue' | 'red' | 'black';
|
|
11
|
+
/** 우측 chevron(›) */
|
|
12
|
+
showArrow?: boolean;
|
|
13
|
+
/** 긴 라벨 처리: 'ellipsis'(말줄임 + hover 전체 툴팁) | 'wrap'(멀티라인 줄바꿈) */
|
|
14
|
+
overflow?: 'ellipsis' | 'wrap';
|
|
15
|
+
/** true=컨테이너 우측 라인에 붙는 형태(왼쪽만 라운드) / false=전체 라운드 */
|
|
16
|
+
line?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function SideNavigationButton({ children, icon: Icon, selected, disabled, showNewTag, newTagColor, showArrow, overflow, line, onClick, className, ...props }: SideNavigationButtonProps): import("react").JSX.Element;
|
|
19
|
+
export interface SideNavigationProps extends ComponentPropsWithoutRef<'nav'> {
|
|
20
|
+
/** 180 | 220 | 260 (Figma variants) 또는 임의 px/CSS 길이 */
|
|
21
|
+
width?: number | string;
|
|
22
|
+
/** 우측 1px 구분선(side-nav-right-line) 표시 */
|
|
23
|
+
line?: boolean;
|
|
24
|
+
/** 'add menu'(+) 행 표시 — 메뉴 추가 기능 on/off */
|
|
25
|
+
showAdd?: boolean;
|
|
26
|
+
addLabel?: ReactNode;
|
|
27
|
+
/** 'bottom' | 'top' — 추가 행 위치(템플릿은 top 사용) */
|
|
28
|
+
addPosition?: 'bottom' | 'top';
|
|
29
|
+
/** (+) 클릭 시 메뉴 추가 동작 */
|
|
30
|
+
onAdd?: () => void;
|
|
31
|
+
}
|
|
32
|
+
export declare function SideNavigation({ children, // SideNavigationButton들
|
|
33
|
+
width, line, showAdd, addLabel, addPosition, onAdd, className, ...props }: SideNavigationProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ElementType } from 'react';
|
|
2
|
+
interface SideNavigationMenu {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
count?: number;
|
|
6
|
+
icon?: ElementType;
|
|
7
|
+
showNewTag?: boolean;
|
|
8
|
+
newTagColor?: 'blue' | 'red' | 'black';
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface SideNavigationTemplateProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'onSelect'> {
|
|
12
|
+
menus?: SideNavigationMenu[];
|
|
13
|
+
selectedId?: string;
|
|
14
|
+
defaultSelectedId?: string;
|
|
15
|
+
onSelect?: (id: string) => void;
|
|
16
|
+
navWidth?: number;
|
|
17
|
+
line?: boolean;
|
|
18
|
+
showAdd?: boolean;
|
|
19
|
+
addLabel?: string;
|
|
20
|
+
addPosition?: 'top' | 'bottom';
|
|
21
|
+
onAdd?: () => void;
|
|
22
|
+
overflow?: 'ellipsis' | 'wrap';
|
|
23
|
+
height?: number | string;
|
|
24
|
+
}
|
|
25
|
+
export declare function SideNavigationTemplate({ menus, selectedId: selectedProp, // controlled 선택 id
|
|
26
|
+
defaultSelectedId, // uncontrolled 초기 선택
|
|
27
|
+
onSelect, navWidth, line, showAdd, addLabel, addPosition, onAdd, overflow, height, children, // 우측 콘텐츠 슬롯
|
|
28
|
+
className, ...props }: SideNavigationTemplateProps): import("react").JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactElement, ReactNode, Ref } from 'react';
|
|
2
|
+
type AnyProps = Record<string, unknown>;
|
|
3
|
+
export interface SlotProps {
|
|
4
|
+
/** 합성 대상 — 반드시 유효한 단일 엘리먼트 하나 */
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** 자식의 내부 내용을 대체할 새 콘텐츠(미지정 시 자식 원래 내용 유지) */
|
|
7
|
+
content?: ReactNode;
|
|
8
|
+
/** 병합할 ref(우리 쪽) */
|
|
9
|
+
ref?: Ref<unknown>;
|
|
10
|
+
/** 그 외 머지할 props(className·style·on*·기타 속성) */
|
|
11
|
+
[prop: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export declare function Slot({ children, content, ref, ...slotProps }: SlotProps): ReactElement<AnyProps & {
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
}, string | import('react').JSXElementConstructor<any>> | null;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
interface SwitchProps extends ComponentPropsWithoutRef<'input'> {
|
|
3
|
+
label?: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare function Switch({ checked, defaultChecked, onChange, disabled, label, className, ...props }: SwitchProps): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
import { TableRowData, TableSort } from './tableView';
|
|
4
|
+
export type TableRowKey = string | number;
|
|
5
|
+
export interface TableColumnFilterOption {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface TableHeaderMenuItem {
|
|
11
|
+
key?: string | number;
|
|
12
|
+
label: ReactNode;
|
|
13
|
+
icon?: LucideIcon;
|
|
14
|
+
onClick?: (column: TableColumn) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface TableColumn {
|
|
17
|
+
key: string;
|
|
18
|
+
label?: ReactNode;
|
|
19
|
+
/** 없으면 가변(fill). fill 컬럼은 최소 40px 유지 */
|
|
20
|
+
width?: number;
|
|
21
|
+
align?: 'left' | 'center' | 'right';
|
|
22
|
+
/** 본문 셀 직접 렌더 */
|
|
23
|
+
render?: (row: TableRowData) => ReactNode;
|
|
24
|
+
/** 헤더 셀(라벨 영역)을 직접 렌더(가장 우선). 없으면 filter → label 순으로 처리 */
|
|
25
|
+
renderHeader?: () => ReactNode;
|
|
26
|
+
/** 헤더 라벨 자리 인라인 텍스트형 Select(size 20) 필터 */
|
|
27
|
+
filter?: {
|
|
28
|
+
options: TableColumnFilterOption[];
|
|
29
|
+
allLabel?: string;
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
};
|
|
32
|
+
/** 헤더 우측 ghost 아이콘 버튼(size 24) + Popover 메뉴 */
|
|
33
|
+
headerMenu?: {
|
|
34
|
+
sortable?: boolean;
|
|
35
|
+
items?: TableHeaderMenuItem[];
|
|
36
|
+
icon?: LucideIcon;
|
|
37
|
+
width?: number;
|
|
38
|
+
};
|
|
39
|
+
/** 셀 세로 병합 — (row, rowIndex, rows) => n. n>1=아래로 n행 병합, 0=위 셀 병합 범위에 포함(td 생략), 1/미지정=일반 셀 */
|
|
40
|
+
cellSpan?: (row: TableRowData, rowIndex: number, rows: TableRowData[]) => number;
|
|
41
|
+
}
|
|
42
|
+
export interface TableProps extends ComponentPropsWithoutRef<'div'> {
|
|
43
|
+
columns?: TableColumn[];
|
|
44
|
+
rows?: TableRowData[];
|
|
45
|
+
rowKey?: string;
|
|
46
|
+
selectable?: boolean;
|
|
47
|
+
selectedIds?: TableRowKey[];
|
|
48
|
+
onSelectChange?: (selectedIds: TableRowKey[]) => void;
|
|
49
|
+
filters?: Record<string, unknown>;
|
|
50
|
+
onFilterChange?: (filters: Record<string, unknown>) => void;
|
|
51
|
+
sort?: TableSort | null;
|
|
52
|
+
onSortChange?: (sort: TableSort | null) => void;
|
|
53
|
+
bordered?: boolean;
|
|
54
|
+
wrap?: boolean;
|
|
55
|
+
/** number | 'fill' — fill=부모 flex 높이를 상한으로(모달 등), 내용 적으면 자연 높이 */
|
|
56
|
+
maxHeight?: number | string;
|
|
57
|
+
/** 바디 스크롤 영역 최소 높이(px|CSS) — 내용이 적어도 이 높이는 확보 */
|
|
58
|
+
minHeight?: number | string;
|
|
59
|
+
minWidth?: number;
|
|
60
|
+
scrollX?: boolean;
|
|
61
|
+
loading?: boolean;
|
|
62
|
+
loadingMessage?: ReactNode;
|
|
63
|
+
emptyMessage?: ReactNode;
|
|
64
|
+
onRowClick?: (row: TableRowData) => void;
|
|
65
|
+
}
|
|
66
|
+
export declare function Table({ columns, rows, rowKey, selectable, selectedIds, onSelectChange, filters, onFilterChange, sort, onSortChange, bordered, wrap, maxHeight, minHeight, minWidth, scrollX, loading, loadingMessage, emptyMessage, onRowClick, className, ...props }: TableProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import { TableColumn } from './Table';
|
|
3
|
+
import { TableRowData } from './tableView';
|
|
4
|
+
interface TableTemplateColumn extends TableColumn {
|
|
5
|
+
[option: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
interface TableTemplateContext {
|
|
8
|
+
selectedIds: (string | number)[];
|
|
9
|
+
clearSelection: () => void;
|
|
10
|
+
visibleRows: TableRowData[];
|
|
11
|
+
query: string;
|
|
12
|
+
}
|
|
13
|
+
type TableTemplateSlot = ReactNode | ((ctx: TableTemplateContext) => ReactNode);
|
|
14
|
+
interface TableTemplateProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
|
|
15
|
+
columns?: TableTemplateColumn[];
|
|
16
|
+
rows?: TableRowData[];
|
|
17
|
+
rowKey?: string;
|
|
18
|
+
actions?: TableTemplateSlot;
|
|
19
|
+
rightActions?: TableTemplateSlot;
|
|
20
|
+
selects?: TableTemplateSlot;
|
|
21
|
+
rightSelects?: TableTemplateSlot;
|
|
22
|
+
title?: ReactNode;
|
|
23
|
+
searchable?: boolean;
|
|
24
|
+
pagination?: boolean;
|
|
25
|
+
bordered?: boolean;
|
|
26
|
+
selectable?: boolean;
|
|
27
|
+
searchPlaceholder?: string;
|
|
28
|
+
searchKeys?: string[];
|
|
29
|
+
searchWidth?: number | string;
|
|
30
|
+
page?: number;
|
|
31
|
+
onPageChange?: (page: number) => void;
|
|
32
|
+
defaultPageSize?: number;
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
onPageSizeChange?: (size: number) => void;
|
|
35
|
+
pageSizeOptions?: number[];
|
|
36
|
+
showPageSize?: boolean;
|
|
37
|
+
showTotal?: boolean;
|
|
38
|
+
maxButtons?: number;
|
|
39
|
+
paginationClassName?: string;
|
|
40
|
+
selectedIds?: (string | number)[];
|
|
41
|
+
onSelectChange?: (ids: (string | number)[]) => void;
|
|
42
|
+
wrap?: boolean;
|
|
43
|
+
minWidth?: number;
|
|
44
|
+
maxHeight?: number | string;
|
|
45
|
+
loading?: boolean;
|
|
46
|
+
emptyMessage?: ReactNode;
|
|
47
|
+
onRowClick?: (row: TableRowData) => void;
|
|
48
|
+
buttonGroupGap?: '3' | '4' | '5' | '6' | '7';
|
|
49
|
+
selectGroupGap?: '3' | '4' | '5' | '6' | '7';
|
|
50
|
+
}
|
|
51
|
+
export declare function TableTemplate({ columns, rows, rowKey, actions, rightActions, selects, rightSelects, title, searchable, pagination, bordered, selectable, searchPlaceholder, searchKeys, searchWidth, page: pageProp, onPageChange, defaultPageSize, pageSize: pageSizeProp, onPageSizeChange, pageSizeOptions, showPageSize, showTotal, maxButtons, paginationClassName, selectedIds: selectedIdsProp, onSelectChange, wrap, minWidth, maxHeight, loading, emptyMessage, onRowClick, buttonGroupGap, selectGroupGap, className, ...props }: TableTemplateProps): import("react").JSX.Element;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
type TabTagType = 'blue' | 'red' | 'gray';
|
|
4
|
+
export type TabValue = string | number;
|
|
5
|
+
export interface TabMenuProps extends ComponentPropsWithoutRef<'button'> {
|
|
6
|
+
icon?: LucideIcon | null;
|
|
7
|
+
tag?: boolean;
|
|
8
|
+
tagText?: ReactNode;
|
|
9
|
+
/** Tag 타입: 'blue' | 'red' | 'gray' */
|
|
10
|
+
tagType?: TabTagType;
|
|
11
|
+
selected?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function TabMenu({ children, icon: Icon, tag, tagText, tagType, selected, disabled, onClick, className, ...props }: TabMenuProps): import("react").JSX.Element;
|
|
14
|
+
export interface TabItem {
|
|
15
|
+
value: TabValue;
|
|
16
|
+
label: ReactNode;
|
|
17
|
+
icon?: LucideIcon;
|
|
18
|
+
tag?: boolean;
|
|
19
|
+
tagText?: ReactNode;
|
|
20
|
+
tagType?: TabTagType;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface TabsProps<V extends TabValue = TabValue> extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
24
|
+
/** [{ value, label, icon?, tag?, tagText?, tagType?, disabled? }] */
|
|
25
|
+
items?: (Omit<TabItem, 'value'> & {
|
|
26
|
+
value: V;
|
|
27
|
+
})[];
|
|
28
|
+
/** controlled 선택값 */
|
|
29
|
+
value?: V;
|
|
30
|
+
/** uncontrolled 초기 선택값 */
|
|
31
|
+
defaultValue?: V;
|
|
32
|
+
/** (value) => void */
|
|
33
|
+
onChange?: (value: V) => void;
|
|
34
|
+
/** 'hug' | 'fill' */
|
|
35
|
+
variant?: 'hug' | 'fill';
|
|
36
|
+
/** 우측 임의 요소(ReactNode) */
|
|
37
|
+
rightSlot?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
export declare function Tabs<V extends TabValue>({ items, value, defaultValue, onChange, variant, rightSlot, className, ...props }: TabsProps<V>): import("react").JSX.Element;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
declare const COLOR_STYLE: {
|
|
3
|
+
blue: string;
|
|
4
|
+
red: string;
|
|
5
|
+
gray: string;
|
|
6
|
+
black: string;
|
|
7
|
+
};
|
|
8
|
+
interface TagProps extends ComponentPropsWithoutRef<'span'> {
|
|
9
|
+
color?: keyof typeof COLOR_STYLE;
|
|
10
|
+
width?: 'hug' | 'fill';
|
|
11
|
+
}
|
|
12
|
+
export declare function Tag({ children, color, width, // 'hug' | 'fill'
|
|
13
|
+
className, ...props }: TagProps): import("react").JSX.Element;
|
|
14
|
+
declare const NEW_TAG_BG: {
|
|
15
|
+
blue: string;
|
|
16
|
+
red: string;
|
|
17
|
+
black: string;
|
|
18
|
+
};
|
|
19
|
+
interface NewTagProps extends ComponentPropsWithoutRef<'span'> {
|
|
20
|
+
color?: keyof typeof NEW_TAG_BG;
|
|
21
|
+
}
|
|
22
|
+
export declare function NewTag({ color, // 'blue' | 'red' | 'black'
|
|
23
|
+
children, // 뱃지 글자(기본 'N')
|
|
24
|
+
className, ...props }: NewTagProps): import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChangeEvent, ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
interface TextAreaProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
3
|
+
value?: string;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
rows?: number;
|
|
8
|
+
autoGrow?: boolean;
|
|
9
|
+
maxRows?: number;
|
|
10
|
+
maxLength?: number;
|
|
11
|
+
showCount?: boolean;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
error?: boolean;
|
|
15
|
+
errorMessage?: string;
|
|
16
|
+
width?: number | string;
|
|
17
|
+
textareaProps?: ComponentPropsWithoutRef<'textarea'>;
|
|
18
|
+
}
|
|
19
|
+
export declare function TextArea({ value, defaultValue, onChange, placeholder, rows, // 기본 높이(줄 수). autoGrow=false면 고정 높이(초과 시 스크롤), true면 최소 높이
|
|
20
|
+
autoGrow, // 입력량에 따라 높이 자동 증가
|
|
21
|
+
maxRows, // autoGrow일 때 최대 행(초과 시 스크롤). 미지정 + autoGrow = 무한 증가
|
|
22
|
+
maxLength, // 최대 글자수(입력 제한 + 카운터 분모)
|
|
23
|
+
showCount, // 글자수 카운터 표시(Figma countTxt) — maxLength 있으면 'N/max', 없으면 'N'
|
|
24
|
+
disabled, readOnly, error, errorMessage, width, // 너비: 숫자(px) 또는 CSS 길이 문자열. 미지정 시 320px
|
|
25
|
+
className, textareaProps, ...props }: TextAreaProps): import("react").JSX.Element;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface TimeFieldProps {
|
|
2
|
+
value?: string | null;
|
|
3
|
+
defaultValue?: string | null;
|
|
4
|
+
onChange?: (value: string | null) => void;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
readOnly?: boolean;
|
|
8
|
+
error?: boolean;
|
|
9
|
+
errorMessage?: string;
|
|
10
|
+
formatErrorMessage?: string;
|
|
11
|
+
width?: number | string;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function TimeField({ value, defaultValue, onChange, placeholder, disabled, readOnly, error, errorMessage, formatErrorMessage, width, className, ...props }: TimeFieldProps): import("react").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
type ToolBarProps = ComponentPropsWithoutRef<'div'>;
|
|
3
|
+
export declare function ToolBar({ children, className, ...props }: ToolBarProps): import("react").JSX.Element;
|
|
4
|
+
export declare function ToolBarDivider(): import("react").JSX.Element;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
declare const VARIANT_COLOR: {
|
|
3
|
+
error: {
|
|
4
|
+
bg: string;
|
|
5
|
+
fg: string;
|
|
6
|
+
};
|
|
7
|
+
normal: {
|
|
8
|
+
bg: string;
|
|
9
|
+
fg: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
declare const BEAK_STYLE: {
|
|
13
|
+
top: string;
|
|
14
|
+
bottom: string;
|
|
15
|
+
};
|
|
16
|
+
interface TooltipProps {
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
variant?: keyof typeof VARIANT_COLOR;
|
|
19
|
+
beak?: keyof typeof BEAK_STYLE | 'none';
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function Tooltip({ children, variant, // 'error' | 'normal'
|
|
23
|
+
beak, // 'top' | 'bottom' | 'none'
|
|
24
|
+
className, }: TooltipProps): import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ElementType } from 'react';
|
|
2
|
+
interface TruncatingTextProps extends ComponentPropsWithoutRef<'p'> {
|
|
3
|
+
as?: ElementType;
|
|
4
|
+
}
|
|
5
|
+
export declare function TruncatingText({ children, as: Component, // 'p' | 'span' | 'div' 등
|
|
6
|
+
className, ...props }: TruncatingTextProps): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ChangeEvent, ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
interface TwoDepthOption {
|
|
3
|
+
value: string | number;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface TwoDepthApplyError {
|
|
8
|
+
error: 'left' | 'right';
|
|
9
|
+
message?: string;
|
|
10
|
+
}
|
|
11
|
+
interface TwoDepthListProps extends ComponentPropsWithoutRef<'div'> {
|
|
12
|
+
inputValue?: string;
|
|
13
|
+
separator?: string;
|
|
14
|
+
showInput?: boolean;
|
|
15
|
+
editable?: boolean;
|
|
16
|
+
onInputChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
17
|
+
onInputApply?: (text: string) => string | boolean | TwoDepthApplyError | null | undefined;
|
|
18
|
+
errorMessage?: string;
|
|
19
|
+
allowedChars?: RegExp | null;
|
|
20
|
+
inputPlaceholder?: string;
|
|
21
|
+
inputProps?: ComponentPropsWithoutRef<'input'>;
|
|
22
|
+
leftOptions?: TwoDepthOption[];
|
|
23
|
+
leftValue?: TwoDepthOption['value'];
|
|
24
|
+
onLeftChange?: (value: TwoDepthOption['value']) => void;
|
|
25
|
+
rightOptions?: TwoDepthOption[];
|
|
26
|
+
rightValue?: TwoDepthOption['value'];
|
|
27
|
+
onRightChange?: (value: TwoDepthOption['value']) => void;
|
|
28
|
+
maxVisible?: number;
|
|
29
|
+
width?: number | string;
|
|
30
|
+
}
|
|
31
|
+
export declare function TwoDepthList({ inputValue, separator, // 좌/우 파트 구분자 표시·합성 기준 — year_month '.' / time ':'
|
|
32
|
+
showInput, // 상단 입력 영역 표시 여부(false면 좌/우 컬럼만 — 트리거가 따로 입력을 가질 때)
|
|
33
|
+
editable, // 상단 input 직접 입력 허용(false면 readOnly로 값만 표시)
|
|
34
|
+
onInputChange, // (e) => void — 입력 변경(raw 이벤트)
|
|
35
|
+
onInputApply, errorMessage, // 파트 지정이 없을 때의 기본 툴팁 메시지
|
|
36
|
+
allowedChars, inputPlaceholder, // 'YYYY.MM'·'HH:MM'처럼 구분자 포함 문자열 — 구분자로 쪼개 좌/우 placeholder로 사용
|
|
37
|
+
inputProps, leftOptions, // [{ value, label, disabled? }]
|
|
38
|
+
leftValue, onLeftChange, rightOptions, // [{ value, label, disabled? }]
|
|
39
|
+
rightValue, onRightChange, maxVisible, // 각 컬럼 표시 행 수(초과 시 내부 스크롤)
|
|
40
|
+
width, className, ...props }: TwoDepthListProps): import("react").JSX.Element;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface UsagePropRow {
|
|
3
|
+
name: string;
|
|
4
|
+
type?: string;
|
|
5
|
+
default?: string;
|
|
6
|
+
desc?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
interface UsageExampleProps {
|
|
9
|
+
code: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
note?: ReactNode;
|
|
12
|
+
props?: UsagePropRow[];
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function UsageExample({ code, title, note, props, className }: UsageExampleProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export interface OptionItem {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface ConditionTab {
|
|
7
|
+
value: string;
|
|
8
|
+
label: string;
|
|
9
|
+
disableOptions?: boolean;
|
|
10
|
+
multiSelect?: boolean;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
searchPlaceholder?: string;
|
|
13
|
+
bundleLabel?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ConditionMeta {
|
|
16
|
+
tabs: ConditionTab[];
|
|
17
|
+
optionsByTab: Record<string, OptionItem[]>;
|
|
18
|
+
options: OptionItem[];
|
|
19
|
+
}
|
|
20
|
+
export type IndividualItemSetting = {
|
|
21
|
+
type: 'plus' | 'minus';
|
|
22
|
+
points?: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'fit' | 'unfit';
|
|
25
|
+
};
|
|
26
|
+
export interface IndividualSetting {
|
|
27
|
+
type: 'individual';
|
|
28
|
+
mode: 'points' | 'fitness';
|
|
29
|
+
items: Record<string, IndividualItemSetting>;
|
|
30
|
+
fn?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface FormulaLeafNode {
|
|
33
|
+
id: string;
|
|
34
|
+
kind: 'leaf';
|
|
35
|
+
criteria?: string | null;
|
|
36
|
+
value?: string | null;
|
|
37
|
+
valueTab?: string | null;
|
|
38
|
+
points?: string;
|
|
39
|
+
scoreType?: 'plus' | 'minus' | 'fit' | 'unfit' | null;
|
|
40
|
+
display?: 'full' | 'compact';
|
|
41
|
+
items?: string[];
|
|
42
|
+
individual?: IndividualSetting | null;
|
|
43
|
+
criteriaOptions?: OptionItem[];
|
|
44
|
+
valueOptions?: OptionItem[];
|
|
45
|
+
valueOptionsByCriteria?: Record<string, OptionItem[]>;
|
|
46
|
+
conditionMetaByCriteria?: Record<string, ConditionMeta>;
|
|
47
|
+
}
|
|
48
|
+
export interface FormulaGroupNode {
|
|
49
|
+
id: string;
|
|
50
|
+
kind: 'group';
|
|
51
|
+
fn: string;
|
|
52
|
+
children: FormulaNode[];
|
|
53
|
+
trueScore?: string;
|
|
54
|
+
falseScore?: string;
|
|
55
|
+
capScore?: string;
|
|
56
|
+
compareOp?: string;
|
|
57
|
+
compareScore?: string;
|
|
58
|
+
}
|
|
59
|
+
export type FormulaNode = FormulaLeafNode | FormulaGroupNode;
|
|
60
|
+
export interface FormulaCatalog {
|
|
61
|
+
criteriaOptions: OptionItem[];
|
|
62
|
+
valueOptionsByCriteria: Record<string, OptionItem[]>;
|
|
63
|
+
conditionMetaByCriteria: Record<string, ConditionMeta>;
|
|
64
|
+
}
|
|
65
|
+
export declare const FORMULA_FN_FAMILY: Record<string, string>;
|
|
66
|
+
export declare const FORMULA_GROUP_FUNCTIONS: string[];
|
|
67
|
+
export declare function focusNextChainStop(currentEl: HTMLElement | null): void;
|
|
68
|
+
export declare function chainTriggerKey(e: {
|
|
69
|
+
defaultPrevented: boolean;
|
|
70
|
+
key: string;
|
|
71
|
+
shiftKey: boolean;
|
|
72
|
+
preventDefault: () => void;
|
|
73
|
+
}, open: boolean, onOpen: () => void): void;
|
|
74
|
+
export declare function hasPointsScore(node: FormulaNode): boolean;
|
|
75
|
+
export declare const CHAIN_STOP_FOCUS = "focus:outline-none focus-visible:ring-2 focus-visible:ring-text-field-focused-line data-[chain-focus]:ring-2 data-[chain-focus]:ring-text-field-focused-line";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ModalBodyMaxContext: import('react').Context<number | null>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type LayerRef = object;
|
|
2
|
+
export declare function pushPopoverLayer(ref: LayerRef): void;
|
|
3
|
+
export declare function removePopoverLayer(ref: LayerRef): void;
|
|
4
|
+
export declare function isTopPopoverLayer(ref: LayerRef): boolean;
|
|
5
|
+
export declare function hasPopoverLayers(): boolean;
|
|
6
|
+
export {};
|