@darajs/ui-components 0.4.8
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/LICENSE +201 -0
- package/dist/accordion/accordion-item.d.ts +24 -0
- package/dist/accordion/accordion-item.d.ts.map +1 -0
- package/dist/accordion/accordion-item.js +92 -0
- package/dist/accordion/accordion-item.js.map +1 -0
- package/dist/accordion/accordion.d.ts +32 -0
- package/dist/accordion/accordion.d.ts.map +1 -0
- package/dist/accordion/accordion.js +87 -0
- package/dist/accordion/accordion.js.map +1 -0
- package/dist/badge/badge.d.ts +20 -0
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/badge.js +42 -0
- package/dist/badge/badge.js.map +1 -0
- package/dist/button/button.d.ts +35 -0
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/button.js +169 -0
- package/dist/button/button.js.map +1 -0
- package/dist/button-bar/button-bar.d.ts +19 -0
- package/dist/button-bar/button-bar.d.ts.map +1 -0
- package/dist/button-bar/button-bar.js +124 -0
- package/dist/button-bar/button-bar.js.map +1 -0
- package/dist/carousel/carousel.d.ts +23 -0
- package/dist/carousel/carousel.d.ts.map +1 -0
- package/dist/carousel/carousel.js +178 -0
- package/dist/carousel/carousel.js.map +1 -0
- package/dist/chat/chat.d.ts +28 -0
- package/dist/chat/chat.d.ts.map +1 -0
- package/dist/chat/chat.js +182 -0
- package/dist/chat/chat.js.map +1 -0
- package/dist/chat/message.d.ts +28 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +220 -0
- package/dist/chat/message.js.map +1 -0
- package/dist/checkbox/checkbox-group.d.ts +35 -0
- package/dist/checkbox/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox/checkbox-group.js +116 -0
- package/dist/checkbox/checkbox-group.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +27 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -0
- package/dist/checkbox/checkbox.js +164 -0
- package/dist/checkbox/checkbox.js.map +1 -0
- package/dist/checkbox/tri-state-checkbox.d.ts +22 -0
- package/dist/checkbox/tri-state-checkbox.d.ts.map +1 -0
- package/dist/checkbox/tri-state-checkbox.js +87 -0
- package/dist/checkbox/tri-state-checkbox.js.map +1 -0
- package/dist/code-viewer/code-viewer.d.ts +31 -0
- package/dist/code-viewer/code-viewer.d.ts.map +1 -0
- package/dist/code-viewer/code-viewer.js +115 -0
- package/dist/code-viewer/code-viewer.js.map +1 -0
- package/dist/combo-box/combo-box.d.ts +39 -0
- package/dist/combo-box/combo-box.d.ts.map +1 -0
- package/dist/combo-box/combo-box.js +176 -0
- package/dist/combo-box/combo-box.js.map +1 -0
- package/dist/component-select-list/component-select-list.d.ts +27 -0
- package/dist/component-select-list/component-select-list.d.ts.map +1 -0
- package/dist/component-select-list/component-select-list.js +131 -0
- package/dist/component-select-list/component-select-list.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +47 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-menu/context-menu.d.ts +24 -0
- package/dist/context-menu/context-menu.d.ts.map +1 -0
- package/dist/context-menu/context-menu.js +116 -0
- package/dist/context-menu/context-menu.js.map +1 -0
- package/dist/datepicker/datepicker-select.d.ts +48 -0
- package/dist/datepicker/datepicker-select.d.ts.map +1 -0
- package/dist/datepicker/datepicker-select.js +219 -0
- package/dist/datepicker/datepicker-select.js.map +1 -0
- package/dist/datepicker/datepicker.d.ts +56 -0
- package/dist/datepicker/datepicker.d.ts.map +1 -0
- package/dist/datepicker/datepicker.js +669 -0
- package/dist/datepicker/datepicker.js.map +1 -0
- package/dist/dropzone/dropzone.d.ts +21 -0
- package/dist/dropzone/dropzone.d.ts.map +1 -0
- package/dist/dropzone/dropzone.js +80 -0
- package/dist/dropzone/dropzone.js.map +1 -0
- package/dist/error-boundary/error-boundary.d.ts +33 -0
- package/dist/error-boundary/error-boundary.d.ts.map +1 -0
- package/dist/error-boundary/error-boundary.js +72 -0
- package/dist/error-boundary/error-boundary.js.map +1 -0
- package/dist/filter/categorical-filter.d.ts +26 -0
- package/dist/filter/categorical-filter.d.ts.map +1 -0
- package/dist/filter/categorical-filter.js +153 -0
- package/dist/filter/categorical-filter.js.map +1 -0
- package/dist/filter/datetime-filter.d.ts +28 -0
- package/dist/filter/datetime-filter.d.ts.map +1 -0
- package/dist/filter/datetime-filter.js +174 -0
- package/dist/filter/datetime-filter.js.map +1 -0
- package/dist/filter/numeric-filter.d.ts +24 -0
- package/dist/filter/numeric-filter.d.ts.map +1 -0
- package/dist/filter/numeric-filter.js +148 -0
- package/dist/filter/numeric-filter.js.map +1 -0
- package/dist/hierarchy-selector/hierarchy-selector.d.ts +31 -0
- package/dist/hierarchy-selector/hierarchy-selector.d.ts.map +1 -0
- package/dist/hierarchy-selector/hierarchy-selector.js +65 -0
- package/dist/hierarchy-selector/hierarchy-selector.js.map +1 -0
- package/dist/hierarchy-selector/node/branch.d.ts +47 -0
- package/dist/hierarchy-selector/node/branch.d.ts.map +1 -0
- package/dist/hierarchy-selector/node/branch.js +132 -0
- package/dist/hierarchy-selector/node/branch.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input.d.ts +44 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +91 -0
- package/dist/input/input.js.map +1 -0
- package/dist/jest-setup.d.ts +18 -0
- package/dist/jest-setup.d.ts.map +1 -0
- package/dist/jest-setup.js +18 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/markdown/markdown.d.ts +18 -0
- package/dist/markdown/markdown.d.ts.map +1 -0
- package/dist/markdown/markdown.js +356 -0
- package/dist/markdown/markdown.js.map +1 -0
- package/dist/modal/modal.d.ts +37 -0
- package/dist/modal/modal.d.ts.map +1 -0
- package/dist/modal/modal.js +121 -0
- package/dist/modal/modal.js.map +1 -0
- package/dist/multiselect/multiselect.d.ts +31 -0
- package/dist/multiselect/multiselect.d.ts.map +1 -0
- package/dist/multiselect/multiselect.js +231 -0
- package/dist/multiselect/multiselect.js.map +1 -0
- package/dist/numeric-input/input-stepper.d.ts +33 -0
- package/dist/numeric-input/input-stepper.d.ts.map +1 -0
- package/dist/numeric-input/input-stepper.js +54 -0
- package/dist/numeric-input/input-stepper.js.map +1 -0
- package/dist/numeric-input/numeric-input.d.ts +42 -0
- package/dist/numeric-input/numeric-input.d.ts.map +1 -0
- package/dist/numeric-input/numeric-input.js +234 -0
- package/dist/numeric-input/numeric-input.js.map +1 -0
- package/dist/progress-bar/progress-bar.d.ts +23 -0
- package/dist/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/progress-bar/progress-bar.js +90 -0
- package/dist/progress-bar/progress-bar.js.map +1 -0
- package/dist/radio/radio-group.d.ts +19 -0
- package/dist/radio/radio-group.d.ts.map +1 -0
- package/dist/radio/radio-group.js +160 -0
- package/dist/radio/radio-group.js.map +1 -0
- package/dist/search-bar/search-bar.d.ts +34 -0
- package/dist/search-bar/search-bar.d.ts.map +1 -0
- package/dist/search-bar/search-bar.js +39 -0
- package/dist/search-bar/search-bar.js.map +1 -0
- package/dist/sectioned-list/sectioned-list.d.ts +29 -0
- package/dist/sectioned-list/sectioned-list.d.ts.map +1 -0
- package/dist/sectioned-list/sectioned-list.js +205 -0
- package/dist/sectioned-list/sectioned-list.js.map +1 -0
- package/dist/select/select.d.ts +54 -0
- package/dist/select/select.d.ts.map +1 -0
- package/dist/select/select.js +143 -0
- package/dist/select/select.js.map +1 -0
- package/dist/shared/chevron-button.d.ts +13 -0
- package/dist/shared/chevron-button.d.ts.map +1 -0
- package/dist/shared/chevron-button.js +35 -0
- package/dist/shared/chevron-button.js.map +1 -0
- package/dist/shared/dropdown-list.d.ts +34 -0
- package/dist/shared/dropdown-list.d.ts.map +1 -0
- package/dist/shared/dropdown-list.js +33 -0
- package/dist/shared/dropdown-list.js.map +1 -0
- package/dist/shared/list-item.d.ts +35 -0
- package/dist/shared/list-item.d.ts.map +1 -0
- package/dist/shared/list-item.js +69 -0
- package/dist/shared/list-item.js.map +1 -0
- package/dist/slider/slider-inputs.d.ts +36 -0
- package/dist/slider/slider-inputs.d.ts.map +1 -0
- package/dist/slider/slider-inputs.js +88 -0
- package/dist/slider/slider-inputs.js.map +1 -0
- package/dist/slider/slider.d.ts +53 -0
- package/dist/slider/slider.d.ts.map +1 -0
- package/dist/slider/slider.js +273 -0
- package/dist/slider/slider.js.map +1 -0
- package/dist/spinner/spinner.d.ts +19 -0
- package/dist/spinner/spinner.d.ts.map +1 -0
- package/dist/spinner/spinner.js +144 -0
- package/dist/spinner/spinner.js.map +1 -0
- package/dist/switch/sun-icon.d.ts +3 -0
- package/dist/switch/sun-icon.d.ts.map +1 -0
- package/dist/switch/sun-icon.js +24 -0
- package/dist/switch/sun-icon.js.map +1 -0
- package/dist/switch/switch.d.ts +16 -0
- package/dist/switch/switch.d.ts.map +1 -0
- package/dist/switch/switch.js +92 -0
- package/dist/switch/switch.js.map +1 -0
- package/dist/table/cells/action-cell.d.ts +34 -0
- package/dist/table/cells/action-cell.d.ts.map +1 -0
- package/dist/table/cells/action-cell.js +68 -0
- package/dist/table/cells/action-cell.js.map +1 -0
- package/dist/table/cells/datetime-cell.d.ts +12 -0
- package/dist/table/cells/datetime-cell.d.ts.map +1 -0
- package/dist/table/cells/datetime-cell.js +36 -0
- package/dist/table/cells/datetime-cell.js.map +1 -0
- package/dist/table/cells/edit-cell-utils.d.ts +32 -0
- package/dist/table/cells/edit-cell-utils.d.ts.map +1 -0
- package/dist/table/cells/edit-cell-utils.js +2 -0
- package/dist/table/cells/edit-cell-utils.js.map +1 -0
- package/dist/table/cells/edit-input-cell.d.ts +10 -0
- package/dist/table/cells/edit-input-cell.d.ts.map +1 -0
- package/dist/table/cells/edit-input-cell.js +61 -0
- package/dist/table/cells/edit-input-cell.js.map +1 -0
- package/dist/table/cells/edit-select-cell.d.ts +12 -0
- package/dist/table/cells/edit-select-cell.d.ts.map +1 -0
- package/dist/table/cells/edit-select-cell.js +55 -0
- package/dist/table/cells/edit-select-cell.js.map +1 -0
- package/dist/table/filters.d.ts +46 -0
- package/dist/table/filters.d.ts.map +1 -0
- package/dist/table/filters.js +226 -0
- package/dist/table/filters.js.map +1 -0
- package/dist/table/headers/select-header.d.ts +14 -0
- package/dist/table/headers/select-header.d.ts.map +1 -0
- package/dist/table/headers/select-header.js +41 -0
- package/dist/table/headers/select-header.js.map +1 -0
- package/dist/table/options-menu.d.ts +25 -0
- package/dist/table/options-menu.d.ts.map +1 -0
- package/dist/table/options-menu.js +123 -0
- package/dist/table/options-menu.js.map +1 -0
- package/dist/table/render-row.d.ts +25 -0
- package/dist/table/render-row.d.ts.map +1 -0
- package/dist/table/render-row.js +163 -0
- package/dist/table/render-row.js.map +1 -0
- package/dist/table/table.d.ts +95 -0
- package/dist/table/table.d.ts.map +1 -0
- package/dist/table/table.js +422 -0
- package/dist/table/table.js.map +1 -0
- package/dist/table/types.d.ts +30 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/types.js +2 -0
- package/dist/table/types.js.map +1 -0
- package/dist/tabs/tabs.d.ts +22 -0
- package/dist/tabs/tabs.d.ts.map +1 -0
- package/dist/tabs/tabs.js +91 -0
- package/dist/tabs/tabs.js.map +1 -0
- package/dist/textarea/textarea.d.ts +47 -0
- package/dist/textarea/textarea.d.ts.map +1 -0
- package/dist/textarea/textarea.js +121 -0
- package/dist/textarea/textarea.js.map +1 -0
- package/dist/tooltip/tooltip.d.ts +48 -0
- package/dist/tooltip/tooltip.d.ts.map +1 -0
- package/dist/tooltip/tooltip.js +116 -0
- package/dist/tooltip/tooltip.js.map +1 -0
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/chevron.d.ts +34 -0
- package/dist/utils/chevron.d.ts.map +1 -0
- package/dist/utils/chevron.js +38 -0
- package/dist/utils/chevron.js.map +1 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/label.d.ts +3 -0
- package/dist/utils/label.d.ts.map +1 -0
- package/dist/utils/label.js +24 -0
- package/dist/utils/label.js.map +1 -0
- package/dist/utils/list-styles.d.ts +8 -0
- package/dist/utils/list-styles.d.ts.map +1 -0
- package/dist/utils/list-styles.js +43 -0
- package/dist/utils/list-styles.js.map +1 -0
- package/dist/utils/match-width-to-reference.d.ts +24 -0
- package/dist/utils/match-width-to-reference.d.ts.map +1 -0
- package/dist/utils/match-width-to-reference.js +30 -0
- package/dist/utils/match-width-to-reference.js.map +1 -0
- package/dist/utils/syncKbdHighlightIdx.d.ts +23 -0
- package/dist/utils/syncKbdHighlightIdx.d.ts.map +1 -0
- package/dist/utils/syncKbdHighlightIdx.js +41 -0
- package/dist/utils/syncKbdHighlightIdx.js.map +1 -0
- package/dist/utils/use-infinite-loader.d.ts +32 -0
- package/dist/utils/use-infinite-loader.d.ts.map +1 -0
- package/dist/utils/use-infinite-loader.js +119 -0
- package/dist/utils/use-infinite-loader.js.map +1 -0
- package/dist/utils/use-on-click-outside.d.ts +3 -0
- package/dist/utils/use-on-click-outside.d.ts.map +1 -0
- package/dist/utils/use-on-click-outside.js +36 -0
- package/dist/utils/use-on-click-outside.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
/**
|
|
14
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
15
|
+
*
|
|
16
|
+
*
|
|
17
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18
|
+
* you may not use this file except in compliance with the License.
|
|
19
|
+
* You may obtain a copy of the License at
|
|
20
|
+
*
|
|
21
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
22
|
+
*
|
|
23
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
24
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
25
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
26
|
+
* See the License for the specific language governing permissions and
|
|
27
|
+
* limitations under the License.
|
|
28
|
+
*/
|
|
29
|
+
import { transparentize } from 'polished';
|
|
30
|
+
import { forwardRef } from 'react';
|
|
31
|
+
import styled, { useTheme } from '@darajs/styled-components';
|
|
32
|
+
import Spinner from '../spinner/spinner';
|
|
33
|
+
export const BaseButton = styled.button `
|
|
34
|
+
cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
|
|
35
|
+
user-select: none;
|
|
36
|
+
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
|
|
41
|
+
height: 2.5rem;
|
|
42
|
+
padding: ${(props) => (props.$hasAnchor ? 0 : '0 1rem')};
|
|
43
|
+
padding: 0 1rem;
|
|
44
|
+
|
|
45
|
+
font-size: 1rem;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
|
|
48
|
+
border: none;
|
|
49
|
+
border-radius: 0.25rem;
|
|
50
|
+
`;
|
|
51
|
+
/**
|
|
52
|
+
* Gets outline style for button
|
|
53
|
+
*
|
|
54
|
+
* @param buttonColor outline and text color for button
|
|
55
|
+
* @param disabled whether button is disabled
|
|
56
|
+
* @param theme the current theme being used by the app
|
|
57
|
+
*/
|
|
58
|
+
function getOutlinedButtonStyle(buttonColor, disabled, theme) {
|
|
59
|
+
return `
|
|
60
|
+
color: ${disabled ? theme.colors.grey2 : buttonColor};
|
|
61
|
+
|
|
62
|
+
background-color: transparent;
|
|
63
|
+
border: 1px solid
|
|
64
|
+
${disabled ? theme.colors.grey2 : buttonColor};
|
|
65
|
+
|
|
66
|
+
:hover:not(:disabled) {
|
|
67
|
+
background-color: ${theme.themeType === 'dark' ? transparentize(0.85, buttonColor) : transparentize(0.9, buttonColor)};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:active:not(:disabled) {
|
|
71
|
+
background-color: ${theme.themeType === 'dark' ? transparentize(0.7, buttonColor) : transparentize(0.8, buttonColor)};
|
|
72
|
+
}
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Gets style for default button
|
|
77
|
+
*
|
|
78
|
+
* @param buttonColor background color for button
|
|
79
|
+
* @param hoverColor background color when hovering
|
|
80
|
+
* @param clickColor background color when clicking
|
|
81
|
+
* @param disabled whether button is disabled
|
|
82
|
+
* @param theme the current theme being used by the app
|
|
83
|
+
* @param textColor optional text color to use instead of the default
|
|
84
|
+
*/
|
|
85
|
+
function getFilledButtonStyle(buttonColor, hoverColor, clickColor, disabled, theme, textColor) {
|
|
86
|
+
const color = textColor !== null && textColor !== void 0 ? textColor : theme.colors.blue1;
|
|
87
|
+
return `
|
|
88
|
+
color: ${color};
|
|
89
|
+
|
|
90
|
+
background-color: ${disabled ? theme.colors.grey2 : buttonColor};
|
|
91
|
+
|
|
92
|
+
:hover:not(:disabled) {
|
|
93
|
+
background-color: ${hoverColor};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
:active:not(:disabled) {
|
|
97
|
+
background-color: ${clickColor};
|
|
98
|
+
}
|
|
99
|
+
`;
|
|
100
|
+
}
|
|
101
|
+
const PrimaryButton = styled(BaseButton) `
|
|
102
|
+
${(props) => props.outline ?
|
|
103
|
+
getOutlinedButtonStyle(props.theme.colors.primary, props.disabled, props.theme)
|
|
104
|
+
: getFilledButtonStyle(props.theme.colors.primary, props.theme.colors.primaryHover, props.theme.colors.primaryDown, props.disabled, props.theme)}
|
|
105
|
+
`;
|
|
106
|
+
const SecondaryButton = styled(BaseButton) `
|
|
107
|
+
${(props) => props.outline ?
|
|
108
|
+
getOutlinedButtonStyle(props.theme.colors.secondary, props.disabled, props.theme)
|
|
109
|
+
: getFilledButtonStyle(props.theme.colors.secondary, props.theme.colors.secondaryHover, props.theme.colors.secondaryDown, props.disabled, props.theme)}
|
|
110
|
+
`;
|
|
111
|
+
const GhostButton = styled(BaseButton) `
|
|
112
|
+
${(props) => getFilledButtonStyle('transparent', props.theme.colors.grey2, props.theme.colors.grey2, props.disabled, props.theme, props.theme.colors.grey4)}
|
|
113
|
+
`;
|
|
114
|
+
const ErrorButton = styled(BaseButton) `
|
|
115
|
+
${(props) => props.outline ?
|
|
116
|
+
getOutlinedButtonStyle(props.theme.colors.error, props.disabled, props.theme)
|
|
117
|
+
: getFilledButtonStyle(props.theme.colors.error, props.theme.colors.errorHover, props.theme.colors.errorDown, props.disabled, props.theme)}
|
|
118
|
+
`;
|
|
119
|
+
const PlainButton = styled(BaseButton) `
|
|
120
|
+
${(props) => props.outline ?
|
|
121
|
+
getOutlinedButtonStyle(props.theme.colors.grey6, props.disabled, props.theme)
|
|
122
|
+
: getFilledButtonStyle('transparent', props.theme.colors.grey1, props.theme.colors.grey2, props.disabled, props.theme, props.theme.colors.grey6)}
|
|
123
|
+
`;
|
|
124
|
+
const AnchorWrapper = styled.a `
|
|
125
|
+
display: flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
justify-content: center;
|
|
128
|
+
|
|
129
|
+
width: 100%;
|
|
130
|
+
height: 100%;
|
|
131
|
+
padding: 0 1rem;
|
|
132
|
+
|
|
133
|
+
color: inherit;
|
|
134
|
+
|
|
135
|
+
:hover,
|
|
136
|
+
:active {
|
|
137
|
+
color: inherit;
|
|
138
|
+
text-decoration: none;
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
const StyledLoading = styled(Spinner) `
|
|
142
|
+
padding: 1rem 2rem;
|
|
143
|
+
`;
|
|
144
|
+
/** Map of styling -> Button subclass */
|
|
145
|
+
const stylingMap = {
|
|
146
|
+
error: ErrorButton,
|
|
147
|
+
ghost: GhostButton,
|
|
148
|
+
plain: PlainButton,
|
|
149
|
+
primary: PrimaryButton,
|
|
150
|
+
secondary: SecondaryButton,
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* A simple button component, accepts a styling prop to switch between the available styles: primary, secondary,
|
|
154
|
+
* error, success, ghost.
|
|
155
|
+
*
|
|
156
|
+
* @param {ButtonProps} props - the component props
|
|
157
|
+
*/
|
|
158
|
+
function Button(_a, ref) {
|
|
159
|
+
var { autoFocus, children, className, disabled, download, href, loading, id, onClick, outline = false, style, styling = 'primary', type = 'button' } = _a, props = __rest(_a, ["autoFocus", "children", "className", "disabled", "download", "href", "loading", "id", "onClick", "outline", "style", "styling", "type"]);
|
|
160
|
+
const currentTheme = useTheme();
|
|
161
|
+
const Component = stylingMap[styling];
|
|
162
|
+
const content = loading ? _jsx(StyledLoading, { color: outline ? currentTheme.colors.grey2 : currentTheme.colors.blue1 }) : children;
|
|
163
|
+
const wrappedContent = href ?
|
|
164
|
+
_jsx(AnchorWrapper, { download: download, href: href, children: content })
|
|
165
|
+
: content;
|
|
166
|
+
return (_jsx(Component, Object.assign({ "$hasAnchor": !!href, autoFocus: autoFocus, className: className, disabled: disabled || loading, id: id, onClick: onClick, outline: outline, style: style, type: type }, props, { ref: ref, children: wrappedContent })));
|
|
167
|
+
}
|
|
168
|
+
export default forwardRef(Button);
|
|
169
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/button/button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InteractiveComponentProps, Item } from '../types';
|
|
2
|
+
export interface ButtonProps extends InteractiveComponentProps<Item> {
|
|
3
|
+
/** Component id */
|
|
4
|
+
id?: string;
|
|
5
|
+
/** The items to choose from */
|
|
6
|
+
items: Array<Item>;
|
|
7
|
+
/** Optional onClick handler, will be called when the button is pressed */
|
|
8
|
+
onSelect?: (option: Item) => void | Promise<void>;
|
|
9
|
+
/** The style of the button, accepts: primary, secondary. Defaults to primary */
|
|
10
|
+
styling?: 'primary' | 'secondary';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A button bar component that has radio group type behavior for selecting from different options
|
|
14
|
+
*
|
|
15
|
+
* @param {ButtonProps} props - the component props
|
|
16
|
+
*/
|
|
17
|
+
declare function ButtonBar({ className, disabled, id, value, initialValue, items, onSelect, style, styling, }: ButtonProps): JSX.Element;
|
|
18
|
+
export default ButtonBar;
|
|
19
|
+
//# sourceMappingURL=button-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-bar.d.ts","sourceRoot":"","sources":["../../src/button-bar/button-bar.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAmG3D,MAAM,WAAW,WAAY,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IAChE,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACrC;AAED;;;;GAIG;AACH,iBAAS,SAAS,CAAC,EACf,SAAS,EACT,QAAQ,EACR,EAAE,EACF,KAAK,EACL,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAmB,GACtB,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAuC3B;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { transparentize } from 'polished';
|
|
19
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
20
|
+
import styled from '@darajs/styled-components';
|
|
21
|
+
import { BaseButton } from '../button/button';
|
|
22
|
+
const ButtonBarWrapper = styled.div `
|
|
23
|
+
overflow: hidden;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex: 1 1 auto;
|
|
26
|
+
|
|
27
|
+
height: 2.5rem;
|
|
28
|
+
|
|
29
|
+
border: 1px solid ${(props) => { var _a; return (props.disabled ? props.theme.colors.grey2 : (_a = props.theme.colors) === null || _a === void 0 ? void 0 : _a[props.styling]); }};
|
|
30
|
+
border-radius: 0.25rem;
|
|
31
|
+
|
|
32
|
+
button:not(:last-child) {
|
|
33
|
+
border-right: 1px solid
|
|
34
|
+
${(props) => { var _a; return (props.disabled ? props.theme.colors.grey2 : (_a = props.theme.colors) === null || _a === void 0 ? void 0 : _a[props.styling]); }};
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
// Prevents the enabled prop being added to the dom element
|
|
38
|
+
const shouldForwardProp = (prop) => !['selected'].includes(prop);
|
|
39
|
+
/**
|
|
40
|
+
* Gets style for default button
|
|
41
|
+
*
|
|
42
|
+
* @param buttonColor background color for button
|
|
43
|
+
* @param disabled whether button is disabled
|
|
44
|
+
* @param theme the current theme being used by the app
|
|
45
|
+
*/
|
|
46
|
+
function getButtonStyle(buttonColor, disabled, selected, theme) {
|
|
47
|
+
let color = buttonColor;
|
|
48
|
+
let backgroundColor = 'transparent';
|
|
49
|
+
if (selected) {
|
|
50
|
+
color = theme.colors.background;
|
|
51
|
+
backgroundColor = buttonColor;
|
|
52
|
+
}
|
|
53
|
+
if (disabled) {
|
|
54
|
+
color = theme.colors.grey2;
|
|
55
|
+
backgroundColor = theme.colors.blue1;
|
|
56
|
+
}
|
|
57
|
+
if (disabled && selected) {
|
|
58
|
+
color = theme.colors.blue1;
|
|
59
|
+
backgroundColor = theme.colors.grey2;
|
|
60
|
+
}
|
|
61
|
+
return `
|
|
62
|
+
flex: 1 1 auto;
|
|
63
|
+
|
|
64
|
+
margin: 0px;
|
|
65
|
+
|
|
66
|
+
color: ${color};
|
|
67
|
+
|
|
68
|
+
background-color: ${backgroundColor};
|
|
69
|
+
border-radius: 0px;
|
|
70
|
+
height: 100%;
|
|
71
|
+
|
|
72
|
+
${!selected &&
|
|
73
|
+
(theme.themeType === 'dark' ?
|
|
74
|
+
`
|
|
75
|
+
:hover:not(:disabled) {
|
|
76
|
+
background-color: ${transparentize(0.8, buttonColor)};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
:active:not(:disabled) {
|
|
81
|
+
background-color: ${transparentize(0.6, buttonColor)};
|
|
82
|
+
}
|
|
83
|
+
`
|
|
84
|
+
: `
|
|
85
|
+
:hover:not(:disabled) {
|
|
86
|
+
background-color: ${transparentize(0.9, buttonColor)};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
:active:not(:disabled) {
|
|
91
|
+
background-color: ${transparentize(0.8, buttonColor)};
|
|
92
|
+
}
|
|
93
|
+
`)}
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
const PrimaryButton = styled(BaseButton).withConfig({ shouldForwardProp }) `
|
|
97
|
+
${(props) => getButtonStyle(props.theme.colors.primary, props.disabled, props.selected, props.theme)}
|
|
98
|
+
`;
|
|
99
|
+
const SecondaryButton = styled(BaseButton).withConfig({ shouldForwardProp }) `
|
|
100
|
+
${(props) => getButtonStyle(props.theme.colors.secondary, props.disabled, props.selected, props.theme)}
|
|
101
|
+
`;
|
|
102
|
+
/**
|
|
103
|
+
* A button bar component that has radio group type behavior for selecting from different options
|
|
104
|
+
*
|
|
105
|
+
* @param {ButtonProps} props - the component props
|
|
106
|
+
*/
|
|
107
|
+
function ButtonBar({ className, disabled, id, value, initialValue, items, onSelect, style, styling = 'primary', }) {
|
|
108
|
+
const [selected, setSelected] = useState(value || initialValue || items[0]);
|
|
109
|
+
const ButtonComponent = styling === 'secondary' ? SecondaryButton : PrimaryButton;
|
|
110
|
+
const onClick = useCallback((item) => {
|
|
111
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(item);
|
|
112
|
+
if (value === undefined) {
|
|
113
|
+
setSelected(item);
|
|
114
|
+
}
|
|
115
|
+
}, [value, onSelect]);
|
|
116
|
+
// Update selection based on value prop changes
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
setSelected(value || initialValue || items[0]);
|
|
119
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
120
|
+
}, [value]);
|
|
121
|
+
return (_jsx(ButtonBarWrapper, { className: className, disabled: disabled, style: style, styling: styling, children: items.map((item) => (_jsx(ButtonComponent, { "$hasAnchor": false, "aria-selected": selected.value === item.value, disabled: disabled, id: id, onClick: () => onClick(item), selected: selected.value === item.value, type: "button", children: item.label }, `option-${String(item.value)}`))) }));
|
|
122
|
+
}
|
|
123
|
+
export default ButtonBar;
|
|
124
|
+
//# sourceMappingURL=button-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-bar.js","sourceRoot":"","sources":["../../src/button-bar/button-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CarouselItem } from '../types';
|
|
2
|
+
export interface CarouselProps {
|
|
3
|
+
/** Standard react className property */
|
|
4
|
+
className?: string;
|
|
5
|
+
/** The initial value of the carousel */
|
|
6
|
+
initialValue?: number;
|
|
7
|
+
/** The items to display, each should have a label and a value */
|
|
8
|
+
items: Array<CarouselItem>;
|
|
9
|
+
/** Callback function that is called when the value changes */
|
|
10
|
+
onChange?: (value: number) => void | Promise<void>;
|
|
11
|
+
/** Pass through of style property to the root element */
|
|
12
|
+
style?: React.CSSProperties;
|
|
13
|
+
/** The value of the carousel */
|
|
14
|
+
value?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A simple carousel component that wraps a list of items to be displayed and animates the translation between them.
|
|
18
|
+
*
|
|
19
|
+
* @param {CarouselProps} props - the props of the component
|
|
20
|
+
*/
|
|
21
|
+
declare function Carousel(props: CarouselProps): JSX.Element;
|
|
22
|
+
export default Carousel;
|
|
23
|
+
//# sourceMappingURL=carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/carousel/carousel.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkKxC,MAAM,WAAW,aAAa;IAC1B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,yDAAyD;IACzD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAuEnD;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2023 Impulse Innovations Limited
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
19
|
+
import styled from '@darajs/styled-components';
|
|
20
|
+
import { ChevronLeft, ChevronRight, Circle } from '@darajs/ui-icons';
|
|
21
|
+
const CarouselComponent = styled.div `
|
|
22
|
+
position: relative;
|
|
23
|
+
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
display: flex;
|
|
26
|
+
flex: 1 1 auto;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
|
|
30
|
+
max-height: 100%;
|
|
31
|
+
padding: 0 0.5rem;
|
|
32
|
+
`;
|
|
33
|
+
const CarouselItemsContainer = styled.div `
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
max-height: calc(100% - 1.625rem);
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
transition: transform 0.3s;
|
|
38
|
+
`;
|
|
39
|
+
const CarouselItemWrapper = styled.div `
|
|
40
|
+
display: flex;
|
|
41
|
+
flex: 1 0 auto;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
|
|
44
|
+
width: 100%;
|
|
45
|
+
min-height: 5rem;
|
|
46
|
+
max-height: 100%;
|
|
47
|
+
`;
|
|
48
|
+
const CarouselIndicators = styled.div `
|
|
49
|
+
display: flex;
|
|
50
|
+
gap: 0.2rem;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
`;
|
|
53
|
+
const Button = styled.button `
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
user-select: none;
|
|
56
|
+
|
|
57
|
+
position: absolute;
|
|
58
|
+
z-index: 3;
|
|
59
|
+
top: calc(50% - 0.5rem);
|
|
60
|
+
transform: translateY(-50%);
|
|
61
|
+
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
|
|
65
|
+
padding: 0;
|
|
66
|
+
|
|
67
|
+
color: ${(props) => props.theme.colors.grey4};
|
|
68
|
+
|
|
69
|
+
background-color: inherit;
|
|
70
|
+
border: none;
|
|
71
|
+
|
|
72
|
+
:hover {
|
|
73
|
+
color: ${(props) => props.theme.colors.grey5};
|
|
74
|
+
}
|
|
75
|
+
`;
|
|
76
|
+
const CircleSelect = styled.button `
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
user-select: none;
|
|
79
|
+
|
|
80
|
+
z-index: 3;
|
|
81
|
+
|
|
82
|
+
padding: 0;
|
|
83
|
+
|
|
84
|
+
color: ${(props) => (props.selected ? props.theme.colors.grey4 : props.theme.colors.grey3)};
|
|
85
|
+
|
|
86
|
+
background-color: inherit;
|
|
87
|
+
border: none;
|
|
88
|
+
|
|
89
|
+
:hover {
|
|
90
|
+
color: ${(props) => props.theme.colors.grey4};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
svg {
|
|
94
|
+
width: 0.5rem;
|
|
95
|
+
height: 0.5rem;
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
const ImageWrapper = styled.div `
|
|
99
|
+
display: flex;
|
|
100
|
+
flex: 0 0 auto;
|
|
101
|
+
align-items: center;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
`;
|
|
104
|
+
const TextWrapper = styled.div `
|
|
105
|
+
overflow: auto;
|
|
106
|
+
display: flex;
|
|
107
|
+
flex: 1 1 auto;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
|
|
110
|
+
box-sizing: border-box;
|
|
111
|
+
margin: 1rem 0;
|
|
112
|
+
padding: 0 1.5rem;
|
|
113
|
+
|
|
114
|
+
color: ${(props) => props.theme.colors.text};
|
|
115
|
+
`;
|
|
116
|
+
const Title = styled.div `
|
|
117
|
+
display: flex;
|
|
118
|
+
flex: 0 0 auto;
|
|
119
|
+
font-weight: bold;
|
|
120
|
+
color: ${(props) => props.theme.colors.text};
|
|
121
|
+
`;
|
|
122
|
+
const CarouselItemContainer = (props) => {
|
|
123
|
+
return (_jsx(CarouselItemWrapper, { children: _jsxs("div", { style: {
|
|
124
|
+
display: 'flex',
|
|
125
|
+
flexDirection: 'column',
|
|
126
|
+
margin: '0rem 1rem',
|
|
127
|
+
overflow: 'auto',
|
|
128
|
+
whiteSpace: 'normal',
|
|
129
|
+
}, children: [props.item.image && (_jsx(ImageWrapper, { children: _jsx("img", { alt: props.item.imageAlt, src: props.item.image, style: {
|
|
130
|
+
height: props.item.imageHeight,
|
|
131
|
+
width: props.item.imageWidth,
|
|
132
|
+
} }) })), (props.item.title || props.item.subtitle) && (_jsxs(TextWrapper, { style: {
|
|
133
|
+
gap: `${props.item.title && props.item.subtitle ? '0.5rem' : '0'}`,
|
|
134
|
+
maxWidth: '100%',
|
|
135
|
+
}, children: [_jsx(Title, { children: props.item.title }), _jsx("span", { children: props.item.subtitle })] })), props.item.component && props.item.component] }) }));
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* A simple carousel component that wraps a list of items to be displayed and animates the translation between them.
|
|
139
|
+
*
|
|
140
|
+
* @param {CarouselProps} props - the props of the component
|
|
141
|
+
*/
|
|
142
|
+
function Carousel(props) {
|
|
143
|
+
const [activeIndex, setActiveIndex] = useState(props.value || props.initialValue || 0);
|
|
144
|
+
const updateIndex = useCallback((newIndex) => {
|
|
145
|
+
var _a;
|
|
146
|
+
let _newIndex = newIndex;
|
|
147
|
+
if (newIndex < 0) {
|
|
148
|
+
_newIndex = props.items.length - 1;
|
|
149
|
+
}
|
|
150
|
+
else if (newIndex >= props.items.length) {
|
|
151
|
+
_newIndex = 0;
|
|
152
|
+
}
|
|
153
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, _newIndex);
|
|
154
|
+
// uncontrolled component
|
|
155
|
+
if (props.value === undefined) {
|
|
156
|
+
setActiveIndex(_newIndex);
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
160
|
+
[props.onChange, props.items, props.value]);
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
setActiveIndex(props.value || props.initialValue || 0);
|
|
163
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
164
|
+
}, [props.value]);
|
|
165
|
+
return (_jsxs(CarouselComponent, { className: props.className, style: props.style, children: [_jsx(Button, { "data-testid": "carousel-left-button", onClick: () => {
|
|
166
|
+
updateIndex(activeIndex - 1);
|
|
167
|
+
}, style: { left: '0.5rem' }, type: "button", children: _jsx(ChevronLeft, {}) }), _jsx(CarouselItemsContainer, { style: { transform: `translateX(-${activeIndex * 100}%)` }, children: props.items.map((item, index) => {
|
|
168
|
+
return _jsx(CarouselItemContainer, { item: item }, `carousel-item-${index}`);
|
|
169
|
+
}) }), _jsx(Button, { "data-testid": "carousel-right-button", onClick: () => {
|
|
170
|
+
updateIndex(activeIndex + 1);
|
|
171
|
+
}, style: { right: '0.5rem' }, type: "button", children: _jsx(ChevronRight, {}) }), _jsx(CarouselIndicators, { children: props.items.map((item, index) => {
|
|
172
|
+
return (_jsx(CircleSelect, { onClick: () => {
|
|
173
|
+
updateIndex(index);
|
|
174
|
+
}, selected: index === activeIndex, type: "button", children: _jsx(Circle, {}) }, `carousel-select-${index}`));
|
|
175
|
+
}) })] }));
|
|
176
|
+
}
|
|
177
|
+
export default Carousel;
|
|
178
|
+
//# sourceMappingURL=carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../src/carousel/carousel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { InteractiveComponentProps, Message, UserData } from '../types';
|
|
3
|
+
export interface ChatProps extends InteractiveComponentProps<Message[]> {
|
|
4
|
+
/** Event triggered when the chat sidebar is closed */
|
|
5
|
+
onClose?: () => void | Promise<void>;
|
|
6
|
+
/** Event triggered when the chat is changed */
|
|
7
|
+
onUpdate?: (value: Message[]) => void | Promise<void>;
|
|
8
|
+
/** The user who is currently active in the chat */
|
|
9
|
+
activeUser: UserData;
|
|
10
|
+
/** The title to appear at the top of the chat */
|
|
11
|
+
chatTitle?: string;
|
|
12
|
+
/** The placeholder text for the reply field */
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
/** Whether the chat is in a popup and should be styled as such */
|
|
15
|
+
isPopup?: boolean;
|
|
16
|
+
/** A component showing the loading state of the chat, it appears above the input area, when not loading the caller can set it to null */
|
|
17
|
+
loadingComponent?: React.ReactNode;
|
|
18
|
+
/** Whether the user can edit/delete previous messages */
|
|
19
|
+
isHistoryReadonly?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A chat component
|
|
23
|
+
*
|
|
24
|
+
* @param {ChatProps} props - the component props
|
|
25
|
+
*/
|
|
26
|
+
declare function Chat(props: ChatProps): JSX.Element;
|
|
27
|
+
export default Chat;
|
|
28
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAkExE,MAAM,WAAW,SAAU,SAAQ,yBAAyB,CAAC,OAAO,EAAE,CAAC;IACnE,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,mDAAmD;IACnD,UAAU,EAAE,QAAQ,CAAC;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yIAAyI;IACzI,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA0BD;;;;GAIG;AACH,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAqH3C;AAED,eAAe,IAAI,CAAC"}
|