@dtdot/lego 2.0.1 → 2.2.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.
@@ -2,6 +2,7 @@
2
2
  export interface ChecklistItemProps {
3
3
  id: string;
4
4
  label: string;
5
+ colour?: string;
5
6
  }
6
7
  export interface ChecklistProps {
7
8
  items: ChecklistItemProps[];
@@ -37,9 +37,9 @@ const Checklist = ({ items, value, onChange, noSplitGap, large }) => {
37
37
  const unCheckedItems = items.filter((item) => !value.includes(item.id));
38
38
  return (React.createElement(LayoutGroup, { "data-testid": 'checklist' },
39
39
  unCheckedItems.map((item) => (React.createElement(motion.div, { layoutId: item.id, key: item.id },
40
- React.createElement(ChecklistItem, { label: item.label, value: value.includes(item.id), onChange: (checked) => handleChange(item.id, checked), large: !!large })))),
40
+ React.createElement(ChecklistItem, { label: item.label, value: value.includes(item.id), onChange: (checked) => handleChange(item.id, checked), large: !!large, colour: item.colour })))),
41
41
  checkedItems.length && !noSplitGap ? React.createElement(ListDivider, null) : null,
42
42
  checkedItems.map((item) => (React.createElement(motion.div, { layoutId: item.id, key: item.id },
43
- React.createElement(ChecklistItem, { label: item.label, value: value.includes(item.id), onChange: (checked) => handleChange(item.id, checked), large: !!large }))))));
43
+ React.createElement(ChecklistItem, { label: item.label, value: value.includes(item.id), onChange: (checked) => handleChange(item.id, checked), large: !!large, colour: item.colour }))))));
44
44
  };
45
45
  export default Checklist;
@@ -4,6 +4,7 @@ export interface ChecklistItemProps {
4
4
  value: boolean;
5
5
  onChange: (value: boolean) => void;
6
6
  large: boolean;
7
+ colour?: string;
7
8
  }
8
- declare const ChecklistItem: ({ label, value, onChange, large }: ChecklistItemProps) => JSX.Element;
9
+ declare const ChecklistItem: ({ label, value, onChange, large, colour }: ChecklistItemProps) => JSX.Element;
9
10
  export default ChecklistItem;
@@ -15,7 +15,8 @@ const Outerlabel = styled(motion.label) `
15
15
  font-weight: ${(props) => props.theme.fonts.default.weight};
16
16
  color: ${(props) => (props.checked ? props.theme.colours.defaultBorder : props.theme.colours.defaultFont)};
17
17
 
18
- background-color: ${(props) => props.theme.colours.background};
18
+ background-color: ${(props) => props.$highlightColour ? `${props.$highlightColour}20` : props.theme.colours.background};
19
+ border-left: ${(props) => (props.$highlightColour ? `3px solid ${props.$highlightColour}` : '3px solid transparent')};
19
20
 
20
21
  user-select: none;
21
22
  cursor: pointer;
@@ -40,7 +41,7 @@ const Strikethrough = styled.div `
40
41
  padding-left: 2px;
41
42
  background-color: ${(props) => props.theme.colours.defaultBorder};
42
43
  `;
43
- const ChecklistItem = ({ label, value, onChange, large }) => {
44
+ const ChecklistItem = ({ label, value, onChange, large, colour }) => {
44
45
  const theme = useTheme();
45
46
  const handleChange = (event) => {
46
47
  if (event.target.checked) {
@@ -50,7 +51,7 @@ const ChecklistItem = ({ label, value, onChange, large }) => {
50
51
  onChange(false);
51
52
  }
52
53
  };
53
- return (React.createElement(Outerlabel, { checked: value, whileHover: { backgroundColor: theme.colours.cardBackground }, "data-testid": value ? 'checklist-item-checked' : 'checklist-item' },
54
+ return (React.createElement(Outerlabel, { checked: value, "$highlightColour": colour, whileHover: { backgroundColor: theme.colours.cardBackground }, "data-testid": value ? 'checklist-item-checked' : 'checklist-item' },
54
55
  React.createElement(Checkmark, { checked: value, large: large }),
55
56
  React.createElement(Spacer, null),
56
57
  label,
@@ -2,6 +2,7 @@
2
2
  export interface ToggleProps {
3
3
  value: boolean;
4
4
  onChange: (value: boolean) => void;
5
+ label?: string;
5
6
  }
6
- declare const Toggle: ({ value, onChange }: ToggleProps) => JSX.Element;
7
+ declare const Toggle: ({ value, onChange, label }: ToggleProps) => JSX.Element;
7
8
  export default Toggle;
@@ -2,6 +2,15 @@ import React from 'react';
2
2
  import { motion } from 'framer-motion';
3
3
  import styled from 'styled-components';
4
4
  import darkTheme from '../../theme/dark.theme';
5
+ const Container = styled.div `
6
+ display: flex;
7
+ align-items: center;
8
+ gap: 8px;
9
+ `;
10
+ const Label = styled.span `
11
+ font-size: 14px;
12
+ color: ${(props) => props.theme.colours.defaultFont};
13
+ `;
5
14
  const ToggleOuter = styled(motion.div) `
6
15
  width: 42px;
7
16
  height: 24px;
@@ -29,8 +38,10 @@ const toggleDotVariants = {
29
38
  off: { transform: 'translateX(4px)' },
30
39
  on: { transform: 'translateX(22px)' },
31
40
  };
32
- const Toggle = ({ value, onChange }) => {
33
- return (React.createElement(ToggleOuter, { animate: value ? 'on' : 'off', variants: toggleOuterVariants, transition: { type: 'spring', duration: 0.3 }, onClick: () => onChange(!value), "data-testid": 'toggle' },
34
- React.createElement(ToggleDot, { animate: value ? 'on' : 'off', variants: toggleDotVariants, transition: { type: 'spring', duration: 0.3 } })));
41
+ const Toggle = ({ value, onChange, label }) => {
42
+ return (React.createElement(Container, null,
43
+ label && React.createElement(Label, null, label),
44
+ React.createElement(ToggleOuter, { animate: value ? 'on' : 'off', variants: toggleOuterVariants, transition: { type: 'spring', duration: 0.3 }, onClick: () => onChange(!value), "data-testid": 'toggle' },
45
+ React.createElement(ToggleDot, { animate: value ? 'on' : 'off', variants: toggleDotVariants, transition: { type: 'spring', duration: 0.3 } }))));
35
46
  };
36
47
  export default Toggle;
package/build/index.d.ts CHANGED
@@ -40,6 +40,7 @@ export { default as Swimlane } from './components/Swimlane/Swimlane.component';
40
40
  export { default as Table } from './components/Table/Table.component';
41
41
  export { default as Text } from './components/Text/Text.component';
42
42
  export { default as TextArea } from './components/TextArea/TextArea.component';
43
+ export { default as Toggle } from './components/Toggle/Toggle.component';
43
44
  export { default as LoginScreen } from './screens/Login/Login.screen';
44
45
  export { default as RegisterScreen } from './screens/Register/Register.screen';
45
46
  export { default as VerificationScreen } from './screens/Verification/Verification.screen';
@@ -57,5 +58,6 @@ export { LoginData } from './screens/Login/Login.screen';
57
58
  export { VerificationData } from './screens/Verification/Verification.screen';
58
59
  export { default as FileContext } from './contexts/File.context';
59
60
  export { ButtonProps as ButtonProps } from './components/Button/Button.component';
61
+ export { ToggleProps } from './components/Toggle/Toggle.component';
60
62
  export { default as menuHelpers } from './components/Menu/menu.helpers';
61
63
  export { default as responsive } from './responsive/responsive';
package/build/index.js CHANGED
@@ -40,6 +40,7 @@ export { default as Swimlane } from './components/Swimlane/Swimlane.component';
40
40
  export { default as Table } from './components/Table/Table.component';
41
41
  export { default as Text } from './components/Text/Text.component';
42
42
  export { default as TextArea } from './components/TextArea/TextArea.component';
43
+ export { default as Toggle } from './components/Toggle/Toggle.component';
43
44
  export { default as LoginScreen } from './screens/Login/Login.screen';
44
45
  export { default as RegisterScreen } from './screens/Register/Register.screen';
45
46
  export { default as VerificationScreen } from './screens/Verification/Verification.screen';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dtdot/lego",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "description": "Some reusable components for building my applications",
5
5
  "main": "build/index.js",
6
6
  "scripts": {