@teambit/compositions 1.0.631 → 1.0.632

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.
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getInputComponent = getInputComponent;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _classnames() {
15
+ const data = _interopRequireDefault(require("classnames"));
16
+ _classnames = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _designInputs() {
22
+ const data = require("@teambit/design.inputs.input-text");
23
+ _designInputs = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _designInputs2() {
29
+ const data = require("@teambit/design.inputs.text-area");
30
+ _designInputs2 = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _designInputs3() {
36
+ const data = require("@teambit/design.inputs.dropdown");
37
+ _designInputs3 = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _designInputsSelectors() {
43
+ const data = require("@teambit/design.inputs.selectors.menu-item");
44
+ _designInputsSelectors = function () {
45
+ return data;
46
+ };
47
+ return data;
48
+ }
49
+ function _designUiInput() {
50
+ const data = require("@teambit/design.ui.input.color-picker");
51
+ _designUiInput = function () {
52
+ return data;
53
+ };
54
+ return data;
55
+ }
56
+ function _designInputs4() {
57
+ const data = require("@teambit/design.inputs.date-picker");
58
+ _designInputs4 = function () {
59
+ return data;
60
+ };
61
+ return data;
62
+ }
63
+ function _designInputs5() {
64
+ const data = require("@teambit/design.inputs.toggle-switch");
65
+ _designInputs5 = function () {
66
+ return data;
67
+ };
68
+ return data;
69
+ }
70
+ function _liveControlInputModule() {
71
+ const data = _interopRequireDefault(require("./live-control-input.module.scss"));
72
+ _liveControlInputModule = function () {
73
+ return data;
74
+ };
75
+ return data;
76
+ }
77
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
78
+ function ShortTextInput({
79
+ id,
80
+ value,
81
+ onChange
82
+ }) {
83
+ const [inputValue, setInputValue] = _react().default.useState(value);
84
+ const handleChange = e => {
85
+ const newValue = e.target.value;
86
+ onChange(newValue);
87
+ setInputValue(newValue);
88
+ };
89
+ return /*#__PURE__*/_react().default.createElement(_designInputs().InputText, {
90
+ id: id,
91
+ value: inputValue,
92
+ onChange: handleChange
93
+ });
94
+ }
95
+ function LongTextInput({
96
+ id,
97
+ value,
98
+ onChange
99
+ }) {
100
+ const [inputValue, setInputValue] = _react().default.useState(value);
101
+ const handleChange = e => {
102
+ const newValue = e.target.value;
103
+ onChange(newValue);
104
+ setInputValue(newValue);
105
+ };
106
+ return /*#__PURE__*/_react().default.createElement(_designInputs2().TextArea, {
107
+ id: id,
108
+ value: inputValue,
109
+ onChange: handleChange
110
+ });
111
+ }
112
+ function SelectInput({
113
+ id,
114
+ value,
115
+ onChange,
116
+ meta
117
+ }) {
118
+ const [selectedValue, setSelectedValue] = _react().default.useState(value);
119
+ const handleChange = newValue => {
120
+ onChange(newValue);
121
+ setSelectedValue(newValue);
122
+ };
123
+ const placeholderContent = meta.options.find(o => o.value === selectedValue)?.label;
124
+ return /*#__PURE__*/_react().default.createElement("p", {
125
+ className: (0, _classnames().default)(_liveControlInputModule().default.wrapper)
126
+ }, /*#__PURE__*/_react().default.createElement(_designInputs3().Dropdown, {
127
+ id: id,
128
+ placeholderContent: placeholderContent
129
+ }, meta.options.map(option => /*#__PURE__*/_react().default.createElement(_designInputsSelectors().MenuItem, {
130
+ active: option.value === selectedValue,
131
+ key: option.value,
132
+ onClick: () => handleChange(option.value)
133
+ }, option.label))));
134
+ }
135
+ function NumberInput({
136
+ id,
137
+ value,
138
+ onChange
139
+ }) {
140
+ const [inputValue, setInputValue] = _react().default.useState(value);
141
+ const handleChange = e => {
142
+ const newValue = e.target.value;
143
+ if (!isNaN(Number(newValue))) {
144
+ onChange(Number(newValue));
145
+ setInputValue(Number(newValue));
146
+ } else {
147
+ // TODO: render error message
148
+ // eslint-disable-next-line no-console
149
+ console.error('Invalid number input', newValue);
150
+ }
151
+ };
152
+ return /*#__PURE__*/_react().default.createElement(_designInputs().InputText, {
153
+ id: id,
154
+ type: "number",
155
+ value: inputValue,
156
+ onChange: handleChange
157
+ });
158
+ }
159
+ function ColorInput({
160
+ id,
161
+ value,
162
+ onChange
163
+ }) {
164
+ const [inputValue, setInputValue] = _react().default.useState(value);
165
+ const handleChange = newValue => {
166
+ onChange(newValue);
167
+ setInputValue(newValue);
168
+ };
169
+ return /*#__PURE__*/_react().default.createElement("p", {
170
+ className: (0, _classnames().default)(_liveControlInputModule().default.wrapper)
171
+ }, /*#__PURE__*/_react().default.createElement(_designUiInput().ColorPicker, {
172
+ id: id,
173
+ value: inputValue,
174
+ onColorSelect: handleChange
175
+ }));
176
+ }
177
+ function DateInput({
178
+ id,
179
+ value,
180
+ onChange
181
+ }) {
182
+ const [inputValue, setInputValue] = _react().default.useState(new Date(value));
183
+ const handleChange = newValue => {
184
+ if (newValue) {
185
+ onChange(newValue.toISOString().split('T')[0]);
186
+ }
187
+ setInputValue(newValue);
188
+ };
189
+ return /*#__PURE__*/_react().default.createElement("p", {
190
+ className: (0, _classnames().default)(_liveControlInputModule().default.wrapper)
191
+ }, /*#__PURE__*/_react().default.createElement(_designInputs4().DatePicker, {
192
+ id: id,
193
+ date: inputValue,
194
+ onChange: handleChange
195
+ }));
196
+ }
197
+ function ToggleInput({
198
+ id,
199
+ value,
200
+ onChange
201
+ }) {
202
+ const [isChecked, setIsChecked] = _react().default.useState(value);
203
+ const handleChange = () => {
204
+ setIsChecked(!isChecked);
205
+ onChange(!isChecked);
206
+ };
207
+ return /*#__PURE__*/_react().default.createElement("p", {
208
+ className: (0, _classnames().default)(_liveControlInputModule().default.wrapper)
209
+ }, /*#__PURE__*/_react().default.createElement(_designInputs5().Toggle, {
210
+ id: id,
211
+ defaultChecked: isChecked,
212
+ onChange: handleChange
213
+ }));
214
+ }
215
+ function JsonInput({
216
+ id,
217
+ value,
218
+ onChange
219
+ }) {
220
+ const [inputValue, setInputValue] = _react().default.useState(JSON.stringify(value, null, 2));
221
+ const [message, setMessage] = _react().default.useState('');
222
+ const handleChange = e => {
223
+ const newValue = e.target.value;
224
+ try {
225
+ const parsedValue = JSON.parse(newValue);
226
+ onChange(parsedValue);
227
+ setMessage('');
228
+ } catch {
229
+ setMessage('Invalid JSON');
230
+ }
231
+ setInputValue(newValue);
232
+ };
233
+ return /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement(_designInputs2().TextArea, {
234
+ id: id,
235
+ value: inputValue,
236
+ onChange: handleChange
237
+ }), message && /*#__PURE__*/_react().default.createElement("div", {
238
+ style: {
239
+ color: 'red'
240
+ }
241
+ }, message));
242
+ }
243
+ function getInputComponent(type) {
244
+ switch (type) {
245
+ case 'text':
246
+ return ShortTextInput;
247
+ case 'longtext':
248
+ return LongTextInput;
249
+ case 'select':
250
+ return SelectInput;
251
+ case 'number':
252
+ return NumberInput;
253
+ case 'color':
254
+ return ColorInput;
255
+ case 'date':
256
+ return DateInput;
257
+ case 'boolean':
258
+ return ToggleInput;
259
+ case 'json':
260
+ return JsonInput;
261
+ default:
262
+ // eslint-disable-next-line no-console
263
+ console.warn(`Unknown input type: ${type}`);
264
+ return ShortTextInput;
265
+ }
266
+ }
267
+
268
+ //# sourceMappingURL=live-control-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_classnames","_designInputs","_designInputs2","_designInputs3","_designInputsSelectors","_designUiInput","_designInputs4","_designInputs5","_liveControlInputModule","e","__esModule","default","ShortTextInput","id","value","onChange","inputValue","setInputValue","React","useState","handleChange","newValue","target","createElement","InputText","LongTextInput","TextArea","SelectInput","meta","selectedValue","setSelectedValue","placeholderContent","options","find","o","label","className","classNames","styles","wrapper","Dropdown","map","option","MenuItem","active","key","onClick","NumberInput","isNaN","Number","console","error","type","ColorInput","ColorPicker","onColorSelect","DateInput","Date","toISOString","split","DatePicker","date","ToggleInput","isChecked","setIsChecked","Toggle","defaultChecked","JsonInput","JSON","stringify","message","setMessage","parsedValue","parse","style","color","getInputComponent","warn"],"sources":["live-control-input.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nimport { InputText } from '@teambit/design.inputs.input-text';\nimport { TextArea } from '@teambit/design.inputs.text-area';\nimport { Dropdown } from '@teambit/design.inputs.dropdown';\nimport { MenuItem } from '@teambit/design.inputs.selectors.menu-item';\nimport { ColorPicker } from '@teambit/design.ui.input.color-picker';\nimport { DatePicker } from '@teambit/design.inputs.date-picker';\nimport { Toggle } from '@teambit/design.inputs.toggle-switch';\n\nimport styles from './live-control-input.module.scss';\n\ntype InputComponentProps = {\n id: string;\n value: any;\n onChange: (value: any) => void;\n meta?: any;\n};\n\ntype InputComponent = React.FC<InputComponentProps>;\n\nfunction ShortTextInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState(value);\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n onChange(newValue);\n setInputValue(newValue);\n };\n return <InputText id={id} value={inputValue} onChange={handleChange} />;\n}\n\nfunction LongTextInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState(value);\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n onChange(newValue);\n setInputValue(newValue);\n };\n return <TextArea id={id} value={inputValue} onChange={handleChange} />;\n}\n\nfunction SelectInput({ id, value, onChange, meta }: InputComponentProps) {\n const [selectedValue, setSelectedValue] = React.useState(value);\n const handleChange = (newValue: any) => {\n onChange(newValue);\n setSelectedValue(newValue);\n };\n const placeholderContent = meta.options.find((o: any) => o.value === selectedValue)?.label;\n return (\n <p className={classNames(styles.wrapper)}>\n <Dropdown id={id} placeholderContent={placeholderContent}>\n {meta.options.map((option: any) => (\n <MenuItem\n active={option.value === selectedValue}\n key={option.value}\n onClick={() => handleChange(option.value)}\n >\n {option.label}\n </MenuItem>\n ))}\n </Dropdown>\n </p>\n );\n}\n\nfunction NumberInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState(value);\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (!isNaN(Number(newValue))) {\n onChange(Number(newValue));\n setInputValue(Number(newValue));\n } else {\n // TODO: render error message\n // eslint-disable-next-line no-console\n console.error('Invalid number input', newValue);\n }\n };\n return <InputText id={id} type=\"number\" value={inputValue} onChange={handleChange} />;\n}\n\nfunction ColorInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState(value);\n const handleChange = (newValue: string) => {\n onChange(newValue);\n setInputValue(newValue);\n };\n return (\n <p className={classNames(styles.wrapper)}>\n <ColorPicker id={id} value={inputValue} onColorSelect={handleChange} />\n </p>\n );\n}\n\nfunction DateInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState<Date | null>(new Date(value));\n const handleChange = (newValue: Date | null) => {\n if (newValue) {\n onChange(newValue.toISOString().split('T')[0]);\n }\n setInputValue(newValue);\n };\n return (\n <p className={classNames(styles.wrapper)}>\n <DatePicker id={id} date={inputValue} onChange={handleChange} />\n </p>\n );\n}\n\nfunction ToggleInput({ id, value, onChange }: InputComponentProps) {\n const [isChecked, setIsChecked] = React.useState(value);\n const handleChange = () => {\n setIsChecked(!isChecked);\n onChange(!isChecked);\n };\n return (\n <p className={classNames(styles.wrapper)}>\n <Toggle id={id} defaultChecked={isChecked} onChange={handleChange} />\n </p>\n );\n}\n\nfunction JsonInput({ id, value, onChange }: InputComponentProps) {\n const [inputValue, setInputValue] = React.useState(JSON.stringify(value, null, 2));\n const [message, setMessage] = React.useState('');\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n try {\n const parsedValue = JSON.parse(newValue);\n onChange(parsedValue);\n setMessage('');\n } catch {\n setMessage('Invalid JSON');\n }\n setInputValue(newValue);\n };\n return (\n <div>\n <TextArea id={id} value={inputValue} onChange={handleChange} />\n {message && <div style={{ color: 'red' }}>{message}</div>}\n </div>\n );\n}\n\nexport function getInputComponent(type: string): InputComponent {\n switch (type) {\n case 'text':\n return ShortTextInput;\n case 'longtext':\n return LongTextInput;\n case 'select':\n return SelectInput;\n case 'number':\n return NumberInput;\n case 'color':\n return ColorInput;\n case 'date':\n return DateInput;\n case 'boolean':\n return ToggleInput;\n case 'json':\n return JsonInput;\n default:\n // eslint-disable-next-line no-console\n console.warn(`Unknown input type: ${type}`);\n return ShortTextInput;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ .wrapper {
2
+ padding: 4px 0;
3
+ }
@@ -0,0 +1,6 @@
1
+ import { type Control } from '@teambit/compositions.ui.composition-live-controls';
2
+ export declare function LiveControls({ defs, values, onChange, }: {
3
+ defs: Array<Control>;
4
+ values: Record<string, any>;
5
+ onChange: (key: string, value: any) => void;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LiveControls = LiveControls;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _classnames() {
15
+ const data = _interopRequireDefault(require("classnames"));
16
+ _classnames = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _liveControlPanelModule() {
22
+ const data = _interopRequireDefault(require("./live-control-panel.module.scss"));
23
+ _liveControlPanelModule = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _liveControlInput() {
29
+ const data = require("./live-control-input");
30
+ _liveControlInput = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
+ function LiveControls({
37
+ defs,
38
+ values,
39
+ onChange
40
+ }) {
41
+ return /*#__PURE__*/_react().default.createElement("ul", {
42
+ className: (0, _classnames().default)(_liveControlPanelModule().default.container)
43
+ }, defs.map(field => {
44
+ const key = field.id;
45
+ const InputComponent = (0, _liveControlInput().getInputComponent)(field.input || 'text');
46
+ return /*#__PURE__*/_react().default.createElement("li", {
47
+ key: key,
48
+ className: (0, _classnames().default)(_liveControlPanelModule().default.item)
49
+ }, /*#__PURE__*/_react().default.createElement("div", {
50
+ className: (0, _classnames().default)(_liveControlPanelModule().default.label)
51
+ }, /*#__PURE__*/_react().default.createElement("label", {
52
+ htmlFor: `control-${key}`
53
+ }, field.label || field.id)), /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement(InputComponent, {
54
+ id: `control-${key}`,
55
+ value: values[key],
56
+ onChange: v => onChange(key, v),
57
+ meta: field
58
+ })));
59
+ }));
60
+ }
61
+
62
+ //# sourceMappingURL=live-control-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_classnames","_liveControlPanelModule","_liveControlInput","e","__esModule","default","LiveControls","defs","values","onChange","createElement","className","classNames","styles","container","map","field","key","id","InputComponent","getInputComponent","input","item","label","htmlFor","value","v","meta"],"sources":["live-control-panel.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { type Control } from '@teambit/compositions.ui.composition-live-controls';\n\nimport styles from './live-control-panel.module.scss';\nimport { getInputComponent } from './live-control-input';\n\nexport function LiveControls({\n defs,\n values,\n onChange,\n}: {\n defs: Array<Control>;\n values: Record<string, any>;\n onChange: (key: string, value: any) => void;\n}) {\n return (\n <ul className={classNames(styles.container)}>\n {defs.map((field) => {\n const key = field.id;\n const InputComponent = getInputComponent(field.input || 'text');\n return (\n <li key={key} className={classNames(styles.item)}>\n <div className={classNames(styles.label)}>\n <label htmlFor={`control-${key}`}>{field.label || field.id}</label>\n </div>\n <div>\n <InputComponent\n id={`control-${key}`}\n value={values[key]}\n onChange={(v: any) => onChange(key, v)}\n meta={field}\n />\n </div>\n </li>\n );\n })}\n </ul>\n );\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAI,wBAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,kBAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,iBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAElD,SAASG,YAAYA,CAAC;EAC3BC,IAAI;EACJC,MAAM;EACNC;AAKF,CAAC,EAAE;EACD,oBACEb,MAAA,GAAAS,OAAA,CAAAK,aAAA;IAAIC,SAAS,EAAE,IAAAC,qBAAU,EAACC,iCAAM,CAACC,SAAS;EAAE,GACzCP,IAAI,CAACQ,GAAG,CAAEC,KAAK,IAAK;IACnB,MAAMC,GAAG,GAAGD,KAAK,CAACE,EAAE;IACpB,MAAMC,cAAc,GAAG,IAAAC,qCAAiB,EAACJ,KAAK,CAACK,KAAK,IAAI,MAAM,CAAC;IAC/D,oBACEzB,MAAA,GAAAS,OAAA,CAAAK,aAAA;MAAIO,GAAG,EAAEA,GAAI;MAACN,SAAS,EAAE,IAAAC,qBAAU,EAACC,iCAAM,CAACS,IAAI;IAAE,gBAC/C1B,MAAA,GAAAS,OAAA,CAAAK,aAAA;MAAKC,SAAS,EAAE,IAAAC,qBAAU,EAACC,iCAAM,CAACU,KAAK;IAAE,gBACvC3B,MAAA,GAAAS,OAAA,CAAAK,aAAA;MAAOc,OAAO,EAAE,WAAWP,GAAG;IAAG,GAAED,KAAK,CAACO,KAAK,IAAIP,KAAK,CAACE,EAAU,CAC/D,CAAC,eACNtB,MAAA,GAAAS,OAAA,CAAAK,aAAA,2BACEd,MAAA,GAAAS,OAAA,CAAAK,aAAA,CAACS,cAAc;MACbD,EAAE,EAAE,WAAWD,GAAG,EAAG;MACrBQ,KAAK,EAAEjB,MAAM,CAACS,GAAG,CAAE;MACnBR,QAAQ,EAAGiB,CAAM,IAAKjB,QAAQ,CAACQ,GAAG,EAAES,CAAC,CAAE;MACvCC,IAAI,EAAEX;IAAM,CACb,CACE,CACH,CAAC;EAET,CAAC,CACC,CAAC;AAET","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ .container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ font-size: 12px;
5
+ padding: 8px 0;
6
+ }
7
+
8
+ .item {
9
+ padding: 4px 8px;
10
+ }
11
+
12
+ .label {
13
+ font-weight: bold;
14
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/compositions",
3
- "version": "1.0.631",
3
+ "version": "1.0.632",
4
4
  "homepage": "https://bit.cloud/teambit/compositions/compositions",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.compositions",
8
8
  "name": "compositions",
9
- "version": "1.0.631"
9
+ "version": "1.0.632"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphql-tag": "2.12.1",
@@ -32,28 +32,37 @@
32
32
  "@teambit/mdx.ui.mdx-layout": "1.0.11",
33
33
  "@teambit/compositions.ui.composition-compare-section": "0.0.101",
34
34
  "@teambit/compositions.ui.composition-compare": "0.0.258",
35
+ "@teambit/compositions.ui.composition-live-controls": "0.0.2",
35
36
  "@teambit/evangelist.elements.icon": "1.0.2",
36
37
  "@teambit/ui-foundation.ui.menu-widget-icon": "0.0.502",
37
- "@teambit/component": "1.0.631",
38
+ "@teambit/ui-foundation.ui.tree.drawer": "0.0.518",
39
+ "@teambit/design.inputs.date-picker": "0.0.2",
40
+ "@teambit/design.inputs.dropdown": "1.3.1",
41
+ "@teambit/design.inputs.input-text": "1.1.2",
42
+ "@teambit/design.inputs.selectors.menu-item": "1.1.0",
43
+ "@teambit/design.inputs.text-area": "0.0.18",
44
+ "@teambit/design.inputs.toggle-switch": "0.0.7",
45
+ "@teambit/design.ui.input.color-picker": "0.0.53",
46
+ "@teambit/component": "1.0.632",
38
47
  "@teambit/compositions.model.composition-id": "0.0.505",
39
- "@teambit/graphql": "1.0.631",
40
- "@teambit/cli": "0.0.1208",
48
+ "@teambit/graphql": "1.0.632",
49
+ "@teambit/cli": "0.0.1209",
41
50
  "@teambit/component.sources": "0.0.104",
42
- "@teambit/dev-files": "1.0.631",
43
- "@teambit/envs": "1.0.631",
51
+ "@teambit/dev-files": "1.0.632",
52
+ "@teambit/envs": "1.0.632",
44
53
  "@teambit/legacy.consumer-component": "0.0.53",
45
- "@teambit/preview": "1.0.631",
46
- "@teambit/schema": "1.0.631",
47
- "@teambit/scope": "1.0.631",
54
+ "@teambit/preview": "1.0.632",
55
+ "@teambit/schema": "1.0.632",
56
+ "@teambit/scope": "1.0.632",
48
57
  "@teambit/toolbox.path.match-patterns": "0.0.19",
49
- "@teambit/workspace": "1.0.631",
58
+ "@teambit/workspace": "1.0.632",
50
59
  "@teambit/design.ui.tooltip": "0.0.375",
51
60
  "@teambit/docs.ui.queries.get-docs": "0.0.509",
52
- "@teambit/panels": "0.0.1210",
61
+ "@teambit/panels": "0.0.1211",
53
62
  "@teambit/preview.ui.component-preview": "1.0.24",
54
63
  "@teambit/ui-foundation.ui.buttons.collapser": "0.0.227",
55
- "@teambit/component-compare": "1.0.631",
56
- "@teambit/ui": "1.0.631",
64
+ "@teambit/component-compare": "1.0.632",
65
+ "@teambit/ui": "1.0.632",
57
66
  "@teambit/workspace.ui.use-workspace-mode": "0.0.2"
58
67
  },
59
68
  "devDependencies": {
@@ -1,3 +1,21 @@
1
+ .container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ overflow: hidden;
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+
9
+ .tab {
10
+ > div:first-child {
11
+ border: none;
12
+ border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
13
+ }
14
+ > div:last-child {
15
+ border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
16
+ }
17
+ }
18
+
1
19
  .linkWrapper {
2
20
  padding: 0 12px;
3
21
  display: flex;
@@ -122,6 +140,10 @@
122
140
  }
123
141
  }
124
142
 
143
+ .noLiveControls {
144
+ padding: 12px;
145
+ }
146
+
125
147
  .tabs {
126
148
  display: flex;
127
149
  align-items: center;