@companix/uikit 0.0.36 → 0.0.38

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 (167) hide show
  1. package/dist/Avatar/Avatar.scss +64 -0
  2. package/dist/Avatar/helpers.d.ts +10 -0
  3. package/dist/Avatar/index.d.ts +8 -0
  4. package/dist/Avatar/types.d.ts +2 -0
  5. package/dist/Button/Button.scss +128 -0
  6. package/dist/Button/index.d.ts +21 -0
  7. package/dist/ButtonGroup/ButtonGroup.scss +18 -0
  8. package/dist/ButtonGroup/index.d.ts +6 -0
  9. package/dist/Calendar/Calendar.d.ts +14 -0
  10. package/dist/Calendar/Calendar.scss +125 -0
  11. package/dist/Calendar/CalendarHeader.d.ts +10 -0
  12. package/dist/Checkbox/Checkbox.scss +115 -0
  13. package/dist/Checkbox/index.d.ts +10 -0
  14. package/dist/Countdown/index.d.ts +6 -0
  15. package/dist/DateInput/DateInput.scss +11 -0
  16. package/dist/DateInput/index.d.ts +13 -0
  17. package/dist/DatePicker/index.d.ts +9 -0
  18. package/dist/Dialog/Dialog.scss +25 -0
  19. package/dist/Dialog/Popup.scss +55 -0
  20. package/dist/Dialog/index.d.ts +16 -0
  21. package/dist/DialogAlert/Alert.d.ts +19 -0
  22. package/dist/DialogAlert/Alert.scss +52 -0
  23. package/dist/DialogAlert/Viewport.d.ts +8 -0
  24. package/dist/DialogAlert/index.d.ts +11 -0
  25. package/dist/Drawer/Drawer.scss +112 -0
  26. package/dist/Drawer/index.d.ts +13 -0
  27. package/dist/File/index.d.ts +10 -0
  28. package/dist/FormGroup/FormGroup.scss +32 -0
  29. package/dist/FormGroup/index.d.ts +9 -0
  30. package/dist/Icon/icon.scss +18 -0
  31. package/dist/Icon/index.d.ts +7 -0
  32. package/dist/Input/Form.scss +67 -0
  33. package/dist/Input/InlineInput.d.ts +0 -0
  34. package/dist/Input/Input.d.ts +14 -0
  35. package/dist/Input/Input.scss +47 -0
  36. package/dist/Input/InputContainer.d.ts +11 -0
  37. package/dist/Input/InputElement.d.ts +9 -0
  38. package/dist/LoadingButton/index.d.ts +5 -0
  39. package/dist/NumberInput/index.d.ts +23 -0
  40. package/dist/OptionItem/Option.scss +89 -0
  41. package/dist/OptionItem/OptionItem.d.ts +6 -0
  42. package/dist/OptionItem/OptionsList.d.ts +7 -0
  43. package/dist/Popover/Popover.scss +80 -0
  44. package/dist/Popover/index.d.ts +27 -0
  45. package/dist/Progress/Progress.scss +47 -0
  46. package/dist/Progress/index.d.ts +5 -0
  47. package/dist/Radio/Radio.scss +148 -0
  48. package/dist/Radio/index.d.ts +20 -0
  49. package/dist/Scrollable/ImitateScroll.d.ts +10 -0
  50. package/dist/Scrollable/Scrollable.scss +50 -0
  51. package/dist/Scrollable/index.d.ts +33 -0
  52. package/dist/Segments/Segments.scss +57 -0
  53. package/dist/Segments/index.d.ts +11 -0
  54. package/dist/Select/Select.scss +80 -0
  55. package/dist/Select/SelectInput.d.ts +15 -0
  56. package/dist/Select/SelectOptions.d.ts +12 -0
  57. package/dist/Select/SelectRight.d.ts +8 -0
  58. package/dist/Select/index.d.ts +24 -0
  59. package/dist/SelectTags/SelectTags.scss +67 -0
  60. package/dist/SelectTags/index.d.ts +17 -0
  61. package/dist/Spinner/Spinner.scss +14 -0
  62. package/dist/Spinner/index.d.ts +7 -0
  63. package/dist/Switch/Switch.scss +102 -0
  64. package/dist/Switch/index.d.ts +10 -0
  65. package/dist/Tabs/Tabs.scss +58 -0
  66. package/dist/Tabs/index.d.ts +13 -0
  67. package/dist/TextArea/TextArea.scss +34 -0
  68. package/dist/TextArea/index.d.ts +7 -0
  69. package/dist/ThemeProvider/helpers.d.ts +4 -0
  70. package/dist/ThemeProvider/index.d.ts +12 -0
  71. package/dist/ThemeProvider/script.d.ts +8 -0
  72. package/dist/ThemeProvider/types.d.ts +2 -0
  73. package/dist/TimePicker/index.d.ts +10 -0
  74. package/dist/Toaster/Toast.d.ts +15 -0
  75. package/dist/Toaster/Toaster.scss +155 -0
  76. package/dist/Toaster/Viewport.d.ts +13 -0
  77. package/dist/Toaster/index.d.ts +20 -0
  78. package/dist/Tooltip/Tooltip.scss +28 -0
  79. package/dist/Tooltip/index.d.ts +7 -0
  80. package/dist/__helpers/createDialogRegistry.d.ts +26 -0
  81. package/dist/__helpers/createPopoversRegistry.d.ts +19 -0
  82. package/dist/__hooks/use-frooze-closing.d.ts +5 -0
  83. package/dist/__hooks/use-input-padding.d.ts +5 -0
  84. package/dist/__hooks/use-loading.d.ts +8 -0
  85. package/dist/__hooks/use-local-storage.d.ts +1 -0
  86. package/dist/__hooks/use-popover-position.d.ts +8 -0
  87. package/dist/__hooks/use-previos.d.ts +2 -0
  88. package/dist/__hooks/use-resize.d.ts +3 -0
  89. package/dist/__hooks/use-scrollbox.d.ts +7 -0
  90. package/dist/__hooks/use-update.d.ts +1 -0
  91. package/dist/__hooks/useCalendar.d.ts +17 -0
  92. package/dist/__hooks/useCalendarOptions-copy.d.ts +22 -0
  93. package/dist/__hooks/useCalendarOptions.d.ts +31 -0
  94. package/dist/__libs/calendar.d.ts +25 -0
  95. package/dist/__utils/RemoveListener.d.ts +3 -0
  96. package/dist/__utils/utils.d.ts +39 -0
  97. package/dist/bundle.es.js +88 -0
  98. package/dist/bundle.es10.js +82 -0
  99. package/dist/bundle.es11.js +28 -0
  100. package/dist/bundle.es12.js +77 -0
  101. package/dist/bundle.es13.js +43 -0
  102. package/dist/bundle.es14.js +38 -0
  103. package/dist/bundle.es15.js +58 -0
  104. package/dist/bundle.es16.js +23 -0
  105. package/dist/bundle.es17.js +35 -0
  106. package/dist/bundle.es18.js +27 -0
  107. package/dist/bundle.es19.js +47 -0
  108. package/dist/bundle.es2.js +44 -0
  109. package/dist/bundle.es20.js +25 -0
  110. package/dist/bundle.es21.js +31 -0
  111. package/dist/bundle.es22.js +40 -0
  112. package/dist/bundle.es23.js +18 -0
  113. package/dist/bundle.es24.js +36 -0
  114. package/dist/bundle.es25.js +23 -0
  115. package/dist/bundle.es26.js +44 -0
  116. package/dist/bundle.es27.js +117 -0
  117. package/dist/bundle.es28.js +123 -0
  118. package/dist/bundle.es29.js +76 -0
  119. package/dist/bundle.es3.js +4 -0
  120. package/dist/bundle.es30.js +35 -0
  121. package/dist/bundle.es31.js +14 -0
  122. package/dist/bundle.es32.js +88 -0
  123. package/dist/bundle.es33.js +22 -0
  124. package/dist/bundle.es34.js +9 -0
  125. package/dist/bundle.es35.js +37 -0
  126. package/dist/bundle.es36.js +24 -0
  127. package/dist/bundle.es37.js +13 -0
  128. package/dist/bundle.es38.js +27 -0
  129. package/dist/bundle.es39.js +41 -0
  130. package/dist/bundle.es4.js +47 -0
  131. package/dist/bundle.es40.js +53 -0
  132. package/dist/bundle.es41.js +45 -0
  133. package/dist/bundle.es42.js +11 -0
  134. package/dist/bundle.es43.js +27 -0
  135. package/dist/bundle.es44.js +26 -0
  136. package/dist/bundle.es45.js +89 -0
  137. package/dist/bundle.es46.js +20 -0
  138. package/dist/bundle.es47.js +22 -0
  139. package/dist/bundle.es48.js +26 -0
  140. package/dist/bundle.es49.js +41 -0
  141. package/dist/bundle.es5.js +10 -0
  142. package/dist/bundle.es50.js +7 -0
  143. package/dist/bundle.es51.js +16 -0
  144. package/dist/bundle.es52.js +16 -0
  145. package/dist/bundle.es53.js +72 -0
  146. package/dist/bundle.es54.js +70 -0
  147. package/dist/bundle.es55.js +72 -0
  148. package/dist/bundle.es56.js +13 -0
  149. package/dist/bundle.es57.js +45 -0
  150. package/dist/bundle.es58.js +17 -0
  151. package/dist/bundle.es59.js +34 -0
  152. package/dist/bundle.es6.js +13 -0
  153. package/dist/bundle.es60.js +72 -0
  154. package/dist/bundle.es61.js +16 -0
  155. package/dist/bundle.es62.js +77 -0
  156. package/dist/bundle.es63.js +51 -0
  157. package/dist/bundle.es64.js +16 -0
  158. package/dist/bundle.es7.js +87 -0
  159. package/dist/bundle.es8.js +87 -0
  160. package/dist/bundle.es9.js +24 -0
  161. package/dist/css-properties.scss +120 -0
  162. package/dist/index.d.ts +77 -0
  163. package/dist/index.scss +28 -0
  164. package/dist/mixins.scss +102 -0
  165. package/dist/theme.scss +101 -0
  166. package/dist/types.d.ts +17 -0
  167. package/package.json +6 -6
@@ -0,0 +1,27 @@
1
+ export type Align = 'start' | 'center' | 'end';
2
+ export type Side = 'top' | 'right' | 'bottom' | 'left';
3
+ export interface PopoverProps {
4
+ children: React.ReactNode;
5
+ content: ({ close }: {
6
+ close: () => void;
7
+ }) => React.ReactNode;
8
+ open?: boolean;
9
+ triggerRef?: React.Ref<HTMLButtonElement>;
10
+ triggerProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
11
+ onOpenChange?: (open: boolean) => void;
12
+ onAnimationEnd?: () => void;
13
+ onAnimationStart?: () => void;
14
+ onOpenAutoFocus?: (event: Event) => void;
15
+ onCloseAutoFocus?: (event: Event) => void;
16
+ side?: Side;
17
+ align?: Align;
18
+ showArrows?: boolean;
19
+ minimal?: boolean;
20
+ sideOffset?: number;
21
+ matchTarget?: 'width' | 'min-width';
22
+ className?: string;
23
+ fitMaxHeight?: boolean;
24
+ disabled?: boolean;
25
+ zIndex?: number;
26
+ }
27
+ export declare const Popover: import('react').ForwardRefExoticComponent<PopoverProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,47 @@
1
+ @use '../mixins.scss';
2
+
3
+ .progress-bar {
4
+ @include mixins.use-styles(progress);
5
+
6
+ display: block;
7
+ overflow: hidden;
8
+ position: relative;
9
+ border-radius: 100px;
10
+ width: 100%;
11
+
12
+ &-thumb {
13
+ animation: linear-progress-bar-stripes 0.3s linear infinite reverse;
14
+ background: linear-gradient(
15
+ -45deg,
16
+ hsla(0, 0%, 100%, 0.2) 25%,
17
+ transparent 0,
18
+ transparent 50%,
19
+ hsla(0, 0%, 100%, 0.2) 0,
20
+ hsla(0, 0%, 100%, 0.2) 75%,
21
+ transparent 0
22
+ );
23
+ background-size: 30px 30px;
24
+ border-radius: 40px;
25
+ height: 100%;
26
+ position: absolute;
27
+ transition: width 0.2s cubic-bezier(0.4, 1, 0.75, 0.9);
28
+ width: 100%;
29
+
30
+ @include mixins.use-styles(progress, thumb);
31
+
32
+ @each $appearance, $v in mixins.$appearances {
33
+ &[data-appearance='#{$appearance}'] {
34
+ @include mixins.use-styles(progress, thumb, $appearance);
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ @keyframes linear-progress-bar-stripes {
41
+ 0% {
42
+ background-position: 0 0;
43
+ }
44
+ to {
45
+ background-position: 30px 0;
46
+ }
47
+ }
@@ -0,0 +1,5 @@
1
+ export interface ProgressBarProps {
2
+ appearance?: 'primary' | 'neutral' | 'positive' | 'negative';
3
+ value: number;
4
+ }
5
+ export declare const ProgressBar: ({ appearance, value }: ProgressBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,148 @@
1
+ @use '../mixins.scss';
2
+
3
+ .radio {
4
+ display: inline-table;
5
+ -webkit-user-select: none;
6
+ -moz-user-select: none;
7
+ -ms-user-select: none;
8
+ user-select: none;
9
+ -webkit-tap-highlight-color: transparent;
10
+ -ms-touch-action: manipulation;
11
+ touch-action: manipulation;
12
+ max-width: max-content;
13
+
14
+ @include mixins.use-styles(radio);
15
+
16
+ &:not([data-required]):not([data-disabled]):hover {
17
+ .radio-box[data-state='unchecked'] {
18
+ @include mixins.use-styles(radio, box, hover);
19
+ }
20
+ }
21
+
22
+ &:not([data-required]):not([data-disabled]):active {
23
+ .radio-box[data-state='unchecked'] {
24
+ @include mixins.use-styles(radio, box, active);
25
+ }
26
+ }
27
+
28
+ &[data-disabled] {
29
+ @include mixins.use-styles(radio, disabled);
30
+ }
31
+
32
+ &[data-required] {
33
+ @include mixins.use-styles(radio, required);
34
+
35
+ .radio-box {
36
+ &::before {
37
+ content: ' ';
38
+ position: absolute;
39
+ width: 100%;
40
+ height: 100%;
41
+ left: 0;
42
+
43
+ @include mixins.use-styles(radio, required, box);
44
+ border-radius: mixins.get-var-name(radio, box, border-radius);
45
+ }
46
+ }
47
+ }
48
+
49
+ &[data-size='sm'] {
50
+ @include mixins.use-styles(radio, size, sm);
51
+
52
+ .radio-box {
53
+ @include mixins.use-size(radio, size, sm, box);
54
+ }
55
+
56
+ .radio-mark {
57
+ @include mixins.use-size(radio, size, sm, mark);
58
+ }
59
+ }
60
+
61
+ &[data-size='md'] {
62
+ @include mixins.use-styles(radio, size, md);
63
+
64
+ .radio-box {
65
+ @include mixins.use-size(radio, size, md, box);
66
+ }
67
+
68
+ .radio-mark {
69
+ @include mixins.use-size(radio, size, md, mark);
70
+ }
71
+ }
72
+
73
+ &-box {
74
+ cursor: pointer;
75
+ outline: none;
76
+ transition: background-color 0.1s linear;
77
+ position: relative;
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: center;
81
+
82
+ @include mixins.use-styles(radio, box);
83
+
84
+ &[data-disabled] {
85
+ cursor: default;
86
+ }
87
+
88
+ &:after {
89
+ visibility: hidden;
90
+ content: '\00A0';
91
+ }
92
+
93
+ &[data-state='checked'] {
94
+ @include mixins.use-styles(radio, box, checked);
95
+ }
96
+ }
97
+
98
+ &-mark {
99
+ position: absolute;
100
+ @include mixins.use-styles(radio, mark);
101
+
102
+ &[data-state='checked'] {
103
+ @include mixins.use-styles(radio, mark, in);
104
+ }
105
+
106
+ &[data-state='unchecked'] {
107
+ @include mixins.use-styles(radio, mark, out);
108
+ }
109
+ }
110
+
111
+ &-label {
112
+ cursor: pointer;
113
+ display: table-cell;
114
+ word-break: break-word;
115
+
116
+ &[data-disabled] {
117
+ cursor: default;
118
+ }
119
+
120
+ @include mixins.use-styles(radio, label);
121
+ }
122
+ }
123
+
124
+ .radio-group {
125
+ display: flex;
126
+ flex-direction: column;
127
+ @include mixins.use-styles(radio, group);
128
+ }
129
+
130
+ // .radio-icon {
131
+ // width: 16px;
132
+ // height: 16px;
133
+ // background-color: transparent;
134
+ // border: 1px solid #ffffff75;
135
+ // border-radius: 100px;
136
+
137
+ // &[data-checked] {
138
+ // background-color: #fff;
139
+ // }
140
+ // }
141
+
142
+ // .radio {
143
+ // display: flex;
144
+ // align-items: center;
145
+ // outline: none;
146
+ // cursor: pointer;
147
+ // gap: 6px;
148
+ // }
@@ -0,0 +1,20 @@
1
+ export interface RadioOption<T> {
2
+ value: T;
3
+ label: React.ReactNode;
4
+ }
5
+ export interface RadioGroupProps<T> {
6
+ options: RadioOption<T>[];
7
+ onChange: (event: T) => void;
8
+ value: T | null;
9
+ disabled?: boolean;
10
+ required?: boolean;
11
+ size?: 'sm' | 'md';
12
+ }
13
+ export declare const RadioGroup: <T extends string>(props: RadioGroupProps<T>) => import("react/jsx-runtime").JSX.Element;
14
+ interface RadioProps extends RadioOption<string> {
15
+ size?: 'sm' | 'md';
16
+ disabled?: boolean;
17
+ required?: boolean;
18
+ }
19
+ export declare const Radio: ({ value, label, size, disabled, required }: RadioProps) => import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,10 @@
1
+ export interface ImitateScrollProps {
2
+ children: React.ReactNode;
3
+ thumbClassName: string;
4
+ thumbColor?: string;
5
+ trackWidth?: number;
6
+ thumbMargin?: number;
7
+ scrollableClassName?: string;
8
+ }
9
+ declare const ImitateScroll: ({ children, thumbClassName, scrollableClassName, thumbMargin, trackWidth }: ImitateScrollProps) => import("react/jsx-runtime").JSX.Element;
10
+ export { ImitateScroll };
@@ -0,0 +1,50 @@
1
+ .scrollable::-webkit-scrollbar {
2
+ width: var(--scrollbar-width);
3
+ height: var(--scrollbar-width);
4
+ }
5
+
6
+ .scrollable::-webkit-scrollbar-thumb {
7
+ background-clip: padding-box;
8
+ border: var(--thumb-padding) solid transparent;
9
+ border-radius: 999px;
10
+ background-color: var(--thumb-color);
11
+ }
12
+
13
+ .scrollable::-webkit-scrollbar-corner {
14
+ background-color: transparent;
15
+ }
16
+
17
+ .scrollable-hover-interaction::-webkit-scrollbar-thumb,
18
+ .scrollable-hover-interaction::-webkit-scrollbar-track {
19
+ visibility: hidden;
20
+ }
21
+ .scrollable-hover-interaction:hover::-webkit-scrollbar-thumb,
22
+ .scrollable-hover-interaction:hover::-webkit-scrollbar-track {
23
+ visibility: visible;
24
+ }
25
+
26
+ .scrollable-border-position::-webkit-scrollbar-thumb {
27
+ border-radius: 0px;
28
+
29
+ border-right-width: 0px;
30
+ border-bottom-width: 0px;
31
+
32
+ border-left-width: calc(var(--thumb-padding) * 2);
33
+ border-top-width: calc(var(--thumb-padding) * 2);
34
+ }
35
+
36
+ .hidden-scroll::-webkit-scrollbar {
37
+ display: none;
38
+ }
39
+
40
+ .hidden-scroll::-webkit-scrollbar-thumb {
41
+ display: none;
42
+ }
43
+
44
+ .hidden-scroll::-webkit-scrollbar-track {
45
+ display: none;
46
+ }
47
+
48
+ .hidden-scroll::-webkit-scrollbar-corner {
49
+ display: none;
50
+ }
@@ -0,0 +1,33 @@
1
+ interface OuterImplementation {
2
+ implementation: 'outer';
3
+ shadowPadding?: number;
4
+ scrollbarWidth: number;
5
+ noneCorrect?: boolean;
6
+ }
7
+ interface EdgeImplementation {
8
+ implementation: 'edge';
9
+ scrollbarWidth: number;
10
+ padding: number;
11
+ }
12
+ interface InnerImplementation {
13
+ implementation: 'inner';
14
+ padding: number;
15
+ }
16
+ interface ScrollableProps {
17
+ heightAuto?: boolean;
18
+ scrollX?: boolean;
19
+ scrollY?: boolean;
20
+ interactionKind?: 'static' | 'hover';
21
+ thumbPos?: 'center' | 'border';
22
+ thumbPadding?: number;
23
+ thumbColor?: string;
24
+ onWheel?: React.WheelEventHandler<HTMLDivElement>;
25
+ onScroll?: React.UIEventHandler<HTMLDivElement>;
26
+ maxHeight?: number;
27
+ children: React.ReactNode;
28
+ style?: React.CSSProperties;
29
+ className?: string;
30
+ }
31
+ type Implementation = InnerImplementation | OuterImplementation | EdgeImplementation;
32
+ declare const Scrollable: import('react').ForwardRefExoticComponent<(ScrollableProps & Implementation) & import('react').RefAttributes<HTMLDivElement>>;
33
+ export { Scrollable };
@@ -0,0 +1,57 @@
1
+ @use '../mixins.scss';
2
+
3
+ .segments {
4
+ position: relative;
5
+ display: flex;
6
+ width: 100%;
7
+ height: 100%;
8
+ border-radius: inherit;
9
+ transition: all 100ms ease-out;
10
+
11
+ &-container {
12
+ width: 100%;
13
+ box-sizing: border-box;
14
+
15
+ @include mixins.use-styles(segment-control, container);
16
+ }
17
+
18
+ &-slider {
19
+ position: absolute;
20
+ top: 0;
21
+ bottom: 0;
22
+ left: 0;
23
+ width: calc(100% / var(--uikit--options));
24
+ border-radius: inherit;
25
+ transform: translateX(calc(var(--uikit--current-index) * 100%));
26
+ transform-origin: 0 0;
27
+ transition: transform 150ms;
28
+
29
+ @include mixins.use-styles(segment-control, slider);
30
+ }
31
+
32
+ &-option {
33
+ position: relative;
34
+ box-sizing: border-box;
35
+ display: flex;
36
+ flex: 1;
37
+ align-items: center;
38
+ justify-content: center;
39
+ height: 100%;
40
+ cursor: pointer;
41
+ user-select: none;
42
+ background: transparent;
43
+ border: 0;
44
+ border-radius: inherit;
45
+ transition: color 100ms ease-out;
46
+
47
+ &:not([data-active]):hover {
48
+ @include mixins.use-styles(segment-control, option, hover);
49
+ }
50
+
51
+ &:not([data-active]):active {
52
+ @include mixins.use-styles(segment-control, option, active);
53
+ }
54
+
55
+ @include mixins.use-styles(segment-control, option);
56
+ }
57
+ }
@@ -0,0 +1,11 @@
1
+ interface SegmentOption<T> {
2
+ label: React.ReactNode;
3
+ value: T;
4
+ }
5
+ export interface SegmentsProps<T> {
6
+ value: T;
7
+ onChange: (value: T) => void;
8
+ options: SegmentOption<T>[];
9
+ }
10
+ export declare const Segments: <T extends number | string>({ value, onChange, options }: SegmentsProps<T>) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,80 @@
1
+ @use '../mixins.scss';
2
+
3
+ .select {
4
+ cursor: pointer;
5
+ max-width: 100%;
6
+
7
+ &-layout {
8
+ display: flex;
9
+ align-items: center;
10
+ width: 100%;
11
+ min-height: inherit;
12
+ }
13
+
14
+ &-placeholder {
15
+ user-select: none;
16
+
17
+ @include mixins.use-styles(form, placeholder);
18
+ }
19
+
20
+ &-content {
21
+ position: relative;
22
+ display: flex;
23
+ flex: 1;
24
+ align-items: center;
25
+ align-self: stretch;
26
+ overflow: hidden;
27
+
28
+ &:first-child {
29
+ padding-left: var(--form_space, 0);
30
+ }
31
+
32
+ &-text {
33
+ overflow: hidden;
34
+ text-overflow: ellipsis;
35
+ white-space: nowrap;
36
+ }
37
+ }
38
+
39
+ &-element {
40
+ height: 100%;
41
+ display: flex;
42
+ align-items: center;
43
+ }
44
+
45
+ &-close-button {
46
+ pointer-events: auto;
47
+ cursor: pointer;
48
+ padding: 0px var(--form_space, 0);
49
+ height: 100%;
50
+ outline: none;
51
+ color: var(--select_clean_color);
52
+
53
+ &:hover {
54
+ color: var(--select_clean_hover_color);
55
+ }
56
+ }
57
+
58
+ &-expand {
59
+ margin-right: var(--form_space, 0);
60
+
61
+ &:first-child {
62
+ margin-left: var(--form_space, 0);
63
+ }
64
+ }
65
+ }
66
+
67
+ // expand icon
68
+
69
+ .expand-icon {
70
+ color: var(--select_expand_color);
71
+ transition: transform 0.2s;
72
+ }
73
+
74
+ .form {
75
+ &[data-state='open'] {
76
+ .expand-icon {
77
+ transform: rotate(180deg);
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,15 @@
1
+ export interface SelectFormProps extends React.HTMLAttributes<HTMLDivElement> {
2
+ required?: boolean;
3
+ disabled?: boolean;
4
+ className?: string;
5
+ leftElement?: React.ReactNode;
6
+ placeholder?: string;
7
+ value?: string | number;
8
+ size?: 'sm' | 'md' | 'lg';
9
+ fill?: boolean;
10
+ clearButton?: boolean;
11
+ clearButtonIcon?: boolean;
12
+ inputRef?: React.Ref<HTMLInputElement>;
13
+ onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;
14
+ }
15
+ export declare const SelectInput: import('react').ForwardRefExoticComponent<SelectFormProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,12 @@
1
+ import { Option } from '..';
2
+ interface SelectPopoverProps<T> {
3
+ scrollboxRef?: React.RefObject<HTMLDivElement>;
4
+ optionsWrapperRef?: React.RefObject<HTMLDivElement>;
5
+ options: Option<T>[];
6
+ minimalOptions?: boolean;
7
+ active?: T | null;
8
+ onSelect?: (value: T) => void;
9
+ onOpened?: () => void;
10
+ }
11
+ export declare const SelectOptions: <T>(props: SelectPopoverProps<T>) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,8 @@
1
+ interface SelectRightElementsProps {
2
+ onClear?: (event: React.MouseEvent<HTMLButtonElement>) => void;
3
+ clearButton?: boolean;
4
+ clearButtonIcon?: React.ReactNode;
5
+ value: boolean;
6
+ }
7
+ export declare const SelectRightElements: (props: SelectRightElementsProps) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,24 @@
1
+ import { Option } from '../types';
2
+ import { SelectFormProps } from './SelectInput';
3
+ interface Cleanable<T> {
4
+ clearButton: true;
5
+ onChange: (event: T | null) => void;
6
+ }
7
+ interface UnCleanable<T> {
8
+ clearButton?: false;
9
+ onChange: (event: T) => void;
10
+ }
11
+ type DependedValueType<T> = Cleanable<T> | UnCleanable<T>;
12
+ export type SelectProps<T> = Omit<SelectFormProps, 'value' | 'onChange' | 'closeButton'> & DependedValueType<T> & {
13
+ value: T | null;
14
+ options: Option<T>[];
15
+ children?: React.ReactNode;
16
+ minimalOptions?: boolean;
17
+ matchTarget?: 'width' | 'min-width';
18
+ popoverRef?: React.Ref<HTMLDivElement>;
19
+ scrollRef?: React.Ref<{
20
+ scrollTo: (index: number) => void;
21
+ }>;
22
+ };
23
+ export declare const Select: <T>(props: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -0,0 +1,67 @@
1
+ @use '../mixins.scss';
2
+
3
+ .select-tags {
4
+ display: flex;
5
+ flex-direction: column;
6
+ width: 100%;
7
+
8
+ .form-input {
9
+ padding-left: var(--form_space, 0);
10
+ }
11
+
12
+ &-empty {
13
+ @include mixins.use-styles(tag, empty);
14
+ }
15
+
16
+ &-container {
17
+ display: flex;
18
+ align-items: center;
19
+ cursor: text;
20
+
21
+ .expand-icon {
22
+ margin: 0px var(--form_space, 0);
23
+ }
24
+ }
25
+ }
26
+
27
+ .tag {
28
+ display: flex;
29
+ align-items: center;
30
+ cursor: default;
31
+ user-select: none;
32
+
33
+ @include mixins.use-styles(tag);
34
+
35
+ &-name {
36
+ @include mixins.use-styles(tag, name);
37
+ }
38
+
39
+ &-close-button {
40
+ cursor: pointer;
41
+ @include mixins.use-styles(tag, close);
42
+
43
+ &:hover {
44
+ @include mixins.use-styles(tag, close, hover);
45
+ }
46
+ }
47
+
48
+ &-close-icon {
49
+ @include mixins.use-size(tag, close, size);
50
+ }
51
+
52
+ &-container {
53
+ display: flex;
54
+ flex-direction: row;
55
+ align-items: center;
56
+ align-self: stretch;
57
+ flex-wrap: wrap;
58
+ min-width: 0;
59
+ position: relative;
60
+
61
+ @include mixins.use-styles(tag, container);
62
+
63
+ &:not([data-readonly]) {
64
+ padding-bottom: 0;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,17 @@
1
+ import { Option } from '../types';
2
+ export interface SelectTagsProps<T> {
3
+ options: Option<T>[];
4
+ onChange: (event: T[]) => void;
5
+ placeholder?: string;
6
+ value: T[];
7
+ children?: React.ReactNode;
8
+ disabled?: boolean;
9
+ readOnly?: boolean;
10
+ closeAfterSelect?: boolean;
11
+ emptyText?: string;
12
+ size?: 'sm' | 'md' | 'lg';
13
+ fill?: boolean;
14
+ inputRef?: React.Ref<HTMLInputElement>;
15
+ required?: boolean;
16
+ }
17
+ export declare const SelectTags: <T extends string | number>(props: SelectTagsProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ @keyframes spinner-border {
2
+ to {
3
+ transform: rotate(360deg);
4
+ }
5
+ }
6
+
7
+ .spinner-border {
8
+ display: inline-block;
9
+ border-style: solid;
10
+ border-color: currentColor;
11
+ border-right-color: transparent;
12
+ border-radius: 50%;
13
+ animation: 0.75s linear infinite spinner-border;
14
+ }
@@ -0,0 +1,7 @@
1
+ export interface SpinnerProps {
2
+ size?: number;
3
+ width?: number;
4
+ color?: string;
5
+ className?: string;
6
+ }
7
+ export declare const Spinner: ({ size, className, width, color }: SpinnerProps) => import("react/jsx-runtime").JSX.Element;