tycho-components 0.8.14 → 0.8.15

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.
@@ -1,5 +1,4 @@
1
1
  import { ButtonDSSizes } from 'tycho-storybook/dist/Button/Button';
2
- import './style.scss';
3
2
  type Props = {
4
3
  text: string;
5
4
  size?: ButtonDSSizes;
@@ -1,16 +1,23 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
2
3
  import { useTranslation } from 'react-i18next';
3
4
  import { IconButton } from 'tycho-storybook';
4
- import { useMessageUtils } from '../configs/useMessageUtils';
5
- import UsabilityUtils from '../functions/UsabilityUtils';
6
- import './style.scss';
7
5
  export default function AppClipboard({ text, size = 'x-small' }) {
8
- const { t } = useTranslation('home');
9
- const { dispatchMessage } = useMessageUtils();
6
+ const { t } = useTranslation('common');
7
+ const [copied, setCopied] = useState(false);
10
8
  const handleCopy = () => {
11
- UsabilityUtils.copy(text, () => {
12
- dispatchMessage({ key: 'message.copy.clipboard', t });
9
+ navigator.clipboard
10
+ .writeText(text)
11
+ .then(() => {
12
+ setCopied(true);
13
+ setTimeout(() => {
14
+ setCopied(false);
15
+ }, 2000);
16
+ })
17
+ .catch((err) => {
18
+ console.error('Failed to copy text:', err);
13
19
  });
14
20
  };
15
- return (_jsx(IconButton, { name: "content_copy", title: t('tooltip.copy.clipboard'), onClick: handleCopy, size: size }));
21
+ const tooltipTitle = copied ? t('tooltip.copied') : t('tooltip.copy');
22
+ return (_jsx(IconButton, { name: "content_copy", title: tooltipTitle, onClick: handleCopy, size: size }));
16
23
  }
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useState } from 'react';
3
3
  import { HexColorPicker } from 'react-colorful';
4
4
  import { useTranslation } from 'react-i18next';
5
+ import { Button } from 'tycho-storybook';
5
6
  import './style.scss';
6
7
  const defaultColor = '#FFFFFF';
7
8
  export default function AppColorpicker({ field, item, handleSave, }) {
@@ -14,8 +15,8 @@ export default function AppColorpicker({ field, item, handleSave, }) {
14
15
  else
15
16
  setColor(defaultColor);
16
17
  }, [item]);
17
- return (_jsxs("div", { className: "color-picker-container", children: [_jsx("div", { className: "swatch", style: { backgroundColor: color }, onClick: () => setOpenColor(!openColor), onKeyDown: () => setOpenColor(!openColor), role: "link", "aria-label": "open color picker", tabIndex: 0 }), openColor && (_jsxs(_Fragment, { children: [_jsx(HexColorPicker, { color: color, onChange: setColor }), _jsxs("div", { className: "buttons", children: [_jsx("button", { type: "button", className: "easy-edit-button", name: "save", onClick: () => {
18
+ return (_jsxs("div", { className: "color-picker-container", children: [_jsx("div", { className: "swatch", style: { backgroundColor: color }, onClick: () => setOpenColor(!openColor), onKeyDown: () => setOpenColor(!openColor), role: "link", "aria-label": "open color picker", tabIndex: 0 }), openColor && (_jsxs(_Fragment, { children: [_jsx(HexColorPicker, { color: color, onChange: setColor }), _jsxs("div", { className: "buttons", children: [_jsx(Button, { text: t('button.confirm'), onClick: () => {
18
19
  handleSave(color, field);
19
20
  setOpenColor(false);
20
- }, children: t('button.confirm') }), _jsx("button", { type: "button", className: "easy-edit-button", name: "cancel", onClick: () => setOpenColor(false), children: t('button.cancel') })] })] }))] }));
21
+ }, size: "x-small" }), _jsx(Button, { text: t('button.cancel'), onClick: () => setOpenColor(false), color: "danger", size: "x-small" })] })] }))] }));
21
22
  }
@@ -1,12 +1,15 @@
1
1
  .color-picker-container {
2
2
  display: flex;
3
+ flex-direction: column;
3
4
 
4
5
  .swatch {
5
6
  width: 28px;
6
7
  height: 28px;
7
8
  border-radius: 8px;
8
9
  border: 3px solid #fff;
9
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1);
10
+ box-shadow:
11
+ 0 0 0 1px rgba(0, 0, 0, 0.1),
12
+ inset 0 0 0 1px rgba(0, 0, 0, 0.1);
10
13
  cursor: pointer;
11
14
  margin-bottom: 8px;
12
15
  }
@@ -17,22 +20,7 @@
17
20
 
18
21
  .buttons {
19
22
  display: flex;
20
- justify-content: right;
21
-
22
- button {
23
- height: fit-content;
24
- padding-right: var(--spacing-xsmall);
25
- padding-left: var(--spacing-xsmall);
26
-
27
- &[name='cancel'] {
28
- background-color: var(--color-error);
29
- color: var(--color-surface);
30
- }
31
-
32
- &[name='save'] {
33
- background-color: var(--color-confirmed);
34
- color: var(--color-surface);
35
- }
36
- }
23
+ justify-content: center;
24
+ gap: 8px;
37
25
  }
38
26
  }
@@ -15,7 +15,7 @@
15
15
 
16
16
  &__content {
17
17
  color: var(--text-primary);
18
- font-size: var(--font-size-body-medium, 14px);
18
+ @include body-small-1;
19
19
  }
20
20
 
21
21
  &__icon {
@@ -1,6 +1,6 @@
1
- import { AppEditableField } from "./AppEditableField";
2
- import { FormField } from "./FormField";
3
- import "./style.scss";
1
+ import { AppEditableField } from './AppEditableField';
2
+ import { FormField } from './FormField';
3
+ import './style.scss';
4
4
  type Item = {
5
5
  uid?: string;
6
6
  [key: string]: unknown;
@@ -1,22 +1,22 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { format } from "date-fns-tz";
3
- import { useCallback } from "react";
4
- import EasyEdit from "react-easy-edit";
5
- import { useTranslation } from "react-i18next";
6
- import Switch from "react-switch";
7
- import { Icon, Tooltip } from "tycho-storybook";
8
- import AppColorpicker from "../AppColorpicker";
9
- import "./style.scss";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Switch } from '@mui/material';
3
+ import { format } from 'date-fns-tz';
4
+ import { useCallback } from 'react';
5
+ import EasyEdit from 'react-easy-edit';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { Icon, Tooltip } from 'tycho-storybook';
8
+ import AppColorpicker from '../AppColorpicker';
9
+ import './style.scss';
10
10
  // Utility to safely get nested values via a dotted path
11
- const getNestedValue = (obj, path) => path.split(".").reduce((o, key) => (o && key in o ? o[key] : undefined), obj);
11
+ const getNestedValue = (obj, path) => path.split('.').reduce((o, key) => (o && key in o ? o[key] : undefined), obj);
12
12
  // Pure function — no need to inline this in the component
13
13
  const formatDate = (date, fmt) => {
14
14
  if (!date)
15
- return "";
15
+ return '';
16
16
  return format(date, fmt);
17
17
  };
18
18
  export default function AppEditable({ translation, fields, item, save, group, className, reference, }) {
19
- const { t } = useTranslation([translation, "common"]);
19
+ const { t } = useTranslation([translation, 'common']);
20
20
  const handleSave = useCallback((value, field) => {
21
21
  if (!save)
22
22
  return;
@@ -30,13 +30,13 @@ export default function AppEditable({ translation, fields, item, save, group, cl
30
30
  }, [save, item, reference]);
31
31
  const getValue = (field) => {
32
32
  const value = getNestedValue(item, field.name);
33
- return value !== undefined && value !== ""
33
+ return value !== undefined && value !== ''
34
34
  ? value
35
35
  : (field.default ?? null);
36
36
  };
37
37
  const getDateValue = (field) => {
38
38
  const v = getValue(field);
39
- return !v ? null : formatDate(new Date(v), "yyyy-MM-dd");
39
+ return !v ? null : formatDate(new Date(v), 'yyyy-MM-dd');
40
40
  };
41
41
  const getValueToDisplay = (field) => {
42
42
  const value = getValue(field);
@@ -45,48 +45,48 @@ export default function AppEditable({ translation, fields, item, save, group, cl
45
45
  if (option)
46
46
  return option.label;
47
47
  }
48
- if (typeof value === "string" ||
49
- typeof value === "number" ||
50
- typeof value === "boolean")
48
+ if (typeof value === 'string' ||
49
+ typeof value === 'number' ||
50
+ typeof value === 'boolean')
51
51
  return value;
52
52
  return null;
53
53
  };
54
54
  const getLabelValueForList = (options) => options.map((op) => ({ label: t(op.label), value: op.value }));
55
55
  const sharedEditProps = {
56
- saveButtonLabel: t("common:button.confirm"),
57
- cancelButtonLabel: t("common:button.cancel"),
58
- placeholder: t("common:placeholder.input"),
56
+ saveButtonLabel: t('common:button.confirm'),
57
+ cancelButtonLabel: t('common:button.cancel'),
58
+ placeholder: t('common:placeholder.input'),
59
59
  };
60
60
  const renderField = (field) => {
61
61
  const value = getValue(field);
62
62
  switch (field.type) {
63
- case "display":
64
- return _jsx("span", { children: getValueToDisplay(field) ?? "--" });
65
- case "code":
63
+ case 'display':
64
+ return _jsx("span", { children: getValueToDisplay(field) ?? '--' });
65
+ case 'code':
66
66
  return (_jsx("div", { className: "textarea-code", children: _jsx(EasyEdit, { type: "textarea", onSave: (v) => handleSave(JSON.parse(v), field), value: JSON.stringify(value || {}, null, 2), ...sharedEditProps }) }));
67
- case "text":
68
- case "number":
69
- case "locale":
70
- case "year":
67
+ case 'text':
68
+ case 'number':
69
+ case 'locale':
70
+ case 'year':
71
71
  return (_jsx(EasyEdit, { type: "text", onSave: (v) => handleSave(v, field), value: value, ...sharedEditProps }));
72
- case "textarea":
72
+ case 'textarea':
73
73
  return (_jsx(EasyEdit, { type: "textarea", onSave: (v) => handleSave(v, field), value: value, ...sharedEditProps }));
74
- case "select":
75
- case "list":
74
+ case 'select':
75
+ case 'list':
76
76
  return (_jsx(EasyEdit, { type: "select", options: getLabelValueForList(field.options || []), onSave: (v) => handleSave(v, field), value: value, ...sharedEditProps }));
77
- case "range":
78
- return (_jsx(EasyEdit, { type: "range", onSave: (v) => handleSave(v, field), attributes: { name: "awesome-range", min: 0, max: 100, step: 1 }, value: value, ...sharedEditProps }));
79
- case "switch":
80
- return (_jsx(Switch, { onChange: (checked) => handleSave(checked, field), checked: value || false }));
81
- case "date":
77
+ case 'range':
78
+ return (_jsx(EasyEdit, { type: "range", onSave: (v) => handleSave(v, field), attributes: { name: 'awesome-range', min: 0, max: 100, step: 1 }, value: value, ...sharedEditProps }));
79
+ case 'switch':
80
+ return (_jsx(Switch, { onChange: (_event, checked) => handleSave(checked, field), checked: value || false }));
81
+ case 'date':
82
82
  return (_jsx(EasyEdit, { type: "date", onSave: (v) => handleSave(new Date(v), field), value: getDateValue(field), ...sharedEditProps }));
83
- case "password":
83
+ case 'password':
84
84
  return (_jsx(EasyEdit, { type: "password", onSave: (v) => handleSave(v, field), value: value, ...sharedEditProps }));
85
- case "color":
85
+ case 'color':
86
86
  return (_jsx(AppColorpicker, { item: item, field: field, handleSave: handleSave }));
87
- case "function":
88
- return _jsx("span", { children: field.fn ? field.fn(getValue(field)) : "" });
89
- case "check":
87
+ case 'function':
88
+ return _jsx("span", { children: field.fn ? field.fn(getValue(field)) : '' });
89
+ case 'check':
90
90
  const val = getValue(field);
91
91
  return (_jsx(EasyEdit, { type: "checkbox", options: getLabelValueForList(field.options || []), onSave: (value) => handleSave(value, field), value: val === undefined || val === null
92
92
  ? undefined
@@ -97,7 +97,7 @@ export default function AppEditable({ translation, fields, item, save, group, cl
97
97
  return null;
98
98
  }
99
99
  };
100
- return (_jsx(_Fragment, { children: fields.map((field, idx) => (_jsxs("div", { className: `editable-container ${className || ""}`, children: [_jsxs("div", { className: "title", children: [_jsxs("h6", { children: [field.title
100
+ return (_jsx("div", { className: "editable-group-container", children: fields.map((field, idx) => (_jsxs("div", { className: `editable-container ${className || ''}`, children: [_jsxs("div", { className: "title", children: [_jsxs("h6", { children: [field.title
101
101
  ? field.title
102
- : t(`${translation}:${group || ""}.field.${field.name}`), field.required && _jsx("span", { children: "*" })] }), field.tooltip && (_jsx(Tooltip, { title: t(`${translation}:${group || ""}.tooltip.${field.name}`), children: _jsx("span", { children: _jsx(Icon, { name: "help", className: "info", size: "x-small" }) }) }))] }), renderField(field)] }, idx))) }));
102
+ : t(`${translation}:${group || ''}.field.${field.name}`), field.required && _jsx("span", { children: "*" })] }), field.tooltip && (_jsx(Tooltip, { title: t(`${translation}:${group || ''}.tooltip.${field.name}`), children: _jsx("span", { children: _jsx(Icon, { name: "help", className: "info", size: "x-small" }) }) }))] }), renderField(field)] }, idx))) }));
103
103
  }
@@ -1,18 +1,26 @@
1
- .editable-container {
2
- margin-top: var(--spacing-small);
1
+ .editable-group-container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 16px;
3
5
 
4
- .title {
6
+ .editable-container {
5
7
  display: flex;
6
- align-items: center;
7
- margin-bottom: var(--spacing-xsmall);
8
+ flex-direction: column;
9
+ gap: 4px;
8
10
 
9
- h6 {
10
- margin-bottom: 0px;
11
- }
11
+ .title {
12
+ display: flex;
13
+ align-items: center;
12
14
 
13
- .info {
14
- margin-left: var(--spacing-xsmall);
15
- cursor: pointer;
15
+ h6 {
16
+ @include label-small-2;
17
+ margin: 0px;
18
+ }
19
+
20
+ .info {
21
+ margin-left: 8px;
22
+ cursor: pointer;
23
+ }
16
24
  }
17
25
  }
18
26
  }
@@ -24,7 +32,7 @@
24
32
 
25
33
  .easy-edit-wrapper {
26
34
  cursor: pointer;
27
- color: var(--color-primary);
35
+ color: var(--text-accent);
28
36
  text-decoration: underline;
29
37
  text-decoration-style: dotted;
30
38
  text-underline-offset: 5px;
@@ -43,7 +51,6 @@
43
51
  .easy-edit-component-wrapper {
44
52
  width: 100%;
45
53
  display: block;
46
- margin-bottom: var(--spacing-xsmall);
47
54
 
48
55
  input,
49
56
  textarea,
@@ -52,16 +59,15 @@
52
59
  }
53
60
 
54
61
  select {
55
- padding: var(--spacing-xxsmall);
56
- border-color: var(--color-disabled);
57
- border-radius: var(--spacing-xxsmall);
62
+ padding: 8px;
63
+ border-color: var(--border-subtle-2);
64
+ border-radius: var(--radius-100);
58
65
  }
59
66
  }
60
67
 
61
68
  .easy-edit-checkbox-label {
62
69
  cursor: pointer;
63
- font-size: var(--font-size-body);
64
- margin-bottom: var(--spacing-xxsmall);
70
+ margin-bottom: 4px;
65
71
 
66
72
  input[type='checkbox'] {
67
73
  margin-right: 8px;
@@ -71,21 +77,24 @@
71
77
  .easy-edit-button-wrapper {
72
78
  width: 100%;
73
79
  display: flex;
74
- justify-content: end;
75
- margin-top: 16px;
80
+ margin-top: 8px;
76
81
 
77
82
  .easy-edit-button {
78
- padding-right: var(--spacing-xsmall);
79
- padding-left: var(--spacing-xsmall);
83
+ padding: 4px 8px;
84
+ cursor: pointer;
80
85
 
81
86
  &[name='save'] {
82
- background-color: var(--color-confirmed);
83
- color: var(--color-surface);
87
+ background-color: var(--button-primary-default);
88
+ color: var(--background-default);
84
89
  }
85
90
 
86
91
  &[name='cancel'] {
87
- background-color: var(--color-error);
88
- color: var(--color-surface);
92
+ background-color: var(--button-danger-default);
93
+ color: var(--background-default);
94
+ }
95
+
96
+ &:hover {
97
+ opacity: 0.8;
89
98
  }
90
99
  }
91
100
  }
@@ -33,7 +33,7 @@ export default function ErrorBoundary({ children }) {
33
33
  };
34
34
  }, []);
35
35
  if (state.hasError && state.error) {
36
- return (_jsx("div", { className: "box-container", children: _jsxs("div", { className: "box", children: [_jsx("img", { src: logo }), _jsx("div", { className: "title", children: t('label.error.found') }), _jsx("h6", { children: state.error?.message }), _jsx("pre", { className: "error-stack", children: state.error?.stack })] }) }));
36
+ return (_jsx("div", { className: "box-container", children: _jsxs("div", { className: "box", children: [_jsx("img", { src: logo }), _jsx("div", { className: "title", children: t('label.error.found') }), _jsx("div", { className: "message", children: state.error?.message }), _jsx("pre", { className: "error-stack", children: state.error?.stack })] }) }));
37
37
  }
38
38
  return _jsx(_Fragment, { children: children });
39
39
  }
@@ -5,13 +5,15 @@
5
5
  height: 100%;
6
6
 
7
7
  .box {
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: center;
8
11
  border: 1px solid var(--border-subtle-2);
9
- background-color: var(--color-surface);
12
+ background-color: var(--background-default);
10
13
  width: 50vw;
11
14
  border-radius: 8px;
12
15
  padding: 48px;
13
16
  margin-top: 10%;
14
- text-align: center;
15
17
 
16
18
  img {
17
19
  width: 150px;
@@ -41,7 +43,7 @@
41
43
  }
42
44
 
43
45
  .error-stack {
44
- background-color: var(--color-surface);
46
+ background-color: var(--background-default);
45
47
  padding: 24px;
46
48
  margin-top: 16px;
47
49
  }
@@ -50,12 +50,6 @@
50
50
  display: flex;
51
51
  margin-left: auto;
52
52
  gap: 8px;
53
-
54
- button {
55
- border: none;
56
- border-radius: var(--border-radius-button);
57
- cursor: pointer;
58
- }
59
53
  }
60
54
  }
61
55
 
@@ -127,36 +121,5 @@
127
121
  }
128
122
  }
129
123
  }
130
-
131
- .placeholder-container {
132
- margin: 0px;
133
- font-size: var(--font-size-medium);
134
- }
135
- }
136
- }
137
-
138
- .modal-comment-info {
139
- .modal-body {
140
- > textarea {
141
- width: 100%;
142
- height: 20vh;
143
- padding: 8px;
144
- }
145
-
146
- .footnote-actions {
147
- text-align: center;
148
-
149
- > button {
150
- font-family: var(--font-family-regular);
151
- font-style: var(--font-weight-medium);
152
- font-weight: var(--font-weight-medium);
153
- font-size: var(--font-size-button);
154
- color: var(--color-background);
155
- width: 200px;
156
- border-radius: 8px;
157
- padding: 12px;
158
- border: none;
159
- }
160
- }
161
124
  }
162
125
  }
@@ -1,5 +1,4 @@
1
1
  import Participant from '../types/Participant';
2
- import './style.scss';
3
2
  type Props = {
4
3
  document: string;
5
4
  onClose: () => void;
@@ -8,7 +8,6 @@ import * as yup from 'yup';
8
8
  import AppModal from '../../AppModal';
9
9
  import CommonContext from '../../configs/CommonContext';
10
10
  import ParticipantService from '../types/ParticipantService';
11
- import './style.scss';
12
11
  import { useMessageUtils } from '../../configs/useMessageUtils';
13
12
  export default function ParticipantCreate({ document, onClose, onCreate, }) {
14
13
  const { t } = useTranslation('participants');
@@ -39,9 +39,9 @@ export default function Participants({ document, participants, onChange, useChat
39
39
  if (participants.length > 0)
40
40
  setParticipant(participants[0]);
41
41
  }, []);
42
- return (_jsxs("div", { className: "participants-container", children: [_jsxs("div", { className: "header", children: [_jsx("h3", { children: t('label.title') }), _jsx("div", { className: "actions", children: _jsx(Button, { icon: "add", text: t('button.label.add'), onClick: () => setOpenCreate(true), size: "small", mode: "outlined" }) })] }), _jsx("div", { className: "body", children: participant && (_jsxs(_Fragment, { children: [_jsx(Select, { onChange: (e) => setParticipant(participants[Number(e.target.value)]), value: participant
42
+ return (_jsxs("div", { className: "participants-container", children: [_jsxs("div", { className: "header", children: [_jsx("div", { className: "title", children: t('label.title') }), _jsx("div", { className: "actions", children: _jsx(Button, { icon: "add", text: t('button.label.add'), onClick: () => setOpenCreate(true), size: "small", mode: "outlined" }) })] }), _jsx("div", { className: "body", children: participant && (_jsxs(_Fragment, { children: [_jsx(Select, { onChange: (e) => setParticipant(participants[Number(e.target.value)]), value: participant
43
43
  ? participants.findIndex((p) => p.code === participant.code)
44
- : 0, fullWidth: true, children: participants.map((el, idx) => (_jsx(MenuItem, { value: idx, children: `${el.code} - ${el.name}` }, idx))) }), _jsx(AppEditable, { translation: "participants", group: "participant", save: handleSave, item: { ...participant, uid: document }, fields: PARTICIPANT_FIELDS, className: "fields", reference: "code" }), useChat && (_jsx(AppEditable, { translation: "participants", group: "participant", save: handleSave, item: { ...participant, uid: document }, fields: CHAT_FIELDS, className: "fields", reference: "code" })), _jsx("div", { className: "footer", children: _jsx(Button, { icon: "delete", text: t('common:button.remove'), size: "small", className: "danger", onClick: () => {
44
+ : 0, fullWidth: true, className: "select-participant", children: participants.map((el, idx) => (_jsx(MenuItem, { value: idx, children: `${el.code} - ${el.name}` }, idx))) }), _jsx(AppEditable, { translation: "participants", group: "participant", save: handleSave, item: { ...participant, uid: document }, fields: PARTICIPANT_FIELDS, className: "fields", reference: "code" }), useChat && (_jsx(AppEditable, { translation: "participants", group: "participant", save: handleSave, item: { ...participant, uid: document }, fields: CHAT_FIELDS, className: "fields", reference: "code" })), _jsx("div", { className: "footer", children: _jsx(Button, { icon: "delete", text: t('common:button.remove'), size: "small", className: "danger", onClick: () => {
45
45
  setParticipant(participant);
46
46
  setOpenRemove(true);
47
47
  } }) })] })) }), participant && openRemove && (_jsx(ParticipantRemove, { document: document, onChange: (list) => {
@@ -1,9 +1,10 @@
1
1
  .participants-container {
2
2
  .header {
3
3
  display: flex;
4
- align-items: center;
5
- background-color: var(--color-secondary);
4
+ @include subtitle-medium-2;
5
+ background-color: var(--layer-hover-2);
6
6
  padding: 8px 16px;
7
+ border-bottom: 1px solid var(--border-subtle-2);
7
8
 
8
9
  .actions {
9
10
  margin-left: auto;
@@ -13,7 +14,11 @@
13
14
  .body {
14
15
  height: 90vh;
15
16
  overflow-y: auto;
16
- padding: var(--spacing-small);
17
+ padding: 16px;
18
+
19
+ > .select-participant {
20
+ margin-bottom: 16px;
21
+ }
17
22
  }
18
23
 
19
24
  .footer {
@@ -26,8 +31,8 @@
26
31
  }
27
32
 
28
33
  .modal-participant {
29
- width: 20vw;
30
- max-width: 20vw;
34
+ width: 40vw !important;
35
+ max-width: 40vw !important;
31
36
 
32
37
  .body {
33
38
  .participant-container {
@@ -7,7 +7,7 @@
7
7
  .table {
8
8
  width: 100%;
9
9
  margin-bottom: 8px;
10
- font-size: var(--font-size-medium);
10
+ border-collapse: collapse;
11
11
 
12
12
  tbody {
13
13
  tr {
@@ -16,16 +16,16 @@
16
16
  min-width: 5vw;
17
17
  text-align: center;
18
18
  white-space: nowrap;
19
- border: 1px solid var(--color-primary-alternative);
19
+ border: 1px solid var(--border-subtle-2);
20
20
  line-height: 32px;
21
21
 
22
22
  &.edited {
23
- background-color: #fdfdd7;
23
+ background-color: var(--layer-hover-1);
24
24
  }
25
25
 
26
26
  &:first-child {
27
27
  position: absolute;
28
- background-color: #fff;
28
+ background-color: var(--background-default);
29
29
  display: inline-block;
30
30
  font-weight: bolder;
31
31
  width: 8vw;
@@ -33,7 +33,8 @@
33
33
  left: 0;
34
34
  top: auto;
35
35
  cursor: default;
36
- margin-left: 12px;
36
+ padding-left: 12px;
37
+ text-align: left;
37
38
  }
38
39
 
39
40
  &.split {
@@ -52,6 +53,12 @@
52
53
  }
53
54
  }
54
55
  }
56
+
57
+ &.table-striped {
58
+ tbody tr:nth-of-type(odd) {
59
+ background-color: var(--layer-hover-1);
60
+ }
61
+ }
55
62
  }
56
63
  }
57
64
  }
@@ -12,7 +12,7 @@
12
12
  display: block;
13
13
  margin-bottom: 8px;
14
14
  font-weight: 600;
15
- color: var(--color-text-primary, #333);
15
+ color: var(--text-secondary);
16
16
  }
17
17
 
18
18
  .input-with-button {
@@ -23,13 +23,13 @@
23
23
  input {
24
24
  flex: 1;
25
25
  padding: 8px 12px;
26
- border: 1px solid var(--color-border-default, #ddd);
27
- border-radius: var(--border-radius-button, 4px);
26
+ border: var(--border-default);
27
+ border-radius: var(--radius-100);
28
28
  font-size: 14px;
29
29
 
30
30
  &:focus {
31
31
  outline: none;
32
- border-color: var(--color-primary, #007bff);
32
+ border-color: var(--text-accent);
33
33
  }
34
34
  }
35
35
  }