@mirohq/design-system-base-input 0.0.1-input.0 → 0.0.1-input.1

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/dist/main.js CHANGED
@@ -5,31 +5,170 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
7
  var designSystemUtils = require('@mirohq/design-system-utils');
8
+ var interactions = require('@react-aria/interactions');
8
9
  var designSystemPrimitive = require('@mirohq/design-system-primitive');
9
10
  var designSystemStitches = require('@mirohq/design-system-stitches');
10
- var designSystemStyles = require('@mirohq/design-system-styles');
11
+ var designSystemIcons = require('@mirohq/design-system-icons');
12
+ var utils = require('@react-aria/utils');
11
13
 
12
14
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
15
 
14
16
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
17
 
16
- const disabledAndReadonlySelectors = ':read-only, :disabled, [aria-disabled="true"], [data-disabled]';
17
- const StyledContainer = designSystemStitches.styled("span", {
18
- position: "relative",
19
- display: "inline-flex",
20
- verticalAlign: "middle",
21
- alignItems: "center",
22
- justifyContent: "flex-end",
23
- width: "100%"
18
+ const StyledIconExclamationPointCircle = designSystemStitches.styled(
19
+ designSystemIcons.IconExclamationPointCircle,
20
+ {
21
+ color: "$icon-danger"
22
+ }
23
+ );
24
+ const StyledIconCheckMark = designSystemStitches.styled(designSystemIcons.IconCheckMark, {
25
+ color: "$icon-success"
24
26
  });
25
- const StyledBaseInput = designSystemStitches.styled(designSystemPrimitive.Primitive.input, {
26
- all: "unset",
27
- boxSizing: "border-box",
27
+ const StyledValidityBox = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
28
+ order: 3,
29
+ display: "flex",
30
+ alignItems: "center"
31
+ });
32
+ const StyledBaseInput = designSystemStitches.styled("div", {
33
+ alignItems: "center",
28
34
  background: "$background-neutrals-container",
29
35
  border: "1px solid $border-neutrals",
30
36
  borderRadius: "$50",
37
+ display: "flex",
38
+ height: "max-content",
39
+ justifyContent: "flex-end",
40
+ position: "relative",
41
+ verticalAlign: "middle",
42
+ boxSizing: "border-box",
43
+ width: "100%",
44
+ variants: {
45
+ hovered: {
46
+ true: {},
47
+ false: {}
48
+ },
49
+ focused: {
50
+ true: {
51
+ boxShadow: "$focus-controls"
52
+ },
53
+ false: {}
54
+ },
55
+ valid: {
56
+ true: {},
57
+ false: {}
58
+ },
59
+ readOnly: {
60
+ true: {
61
+ background: "$background-neutrals-disabled",
62
+ color: "$text-neutrals-subtle"
63
+ },
64
+ false: {}
65
+ },
66
+ disabled: {
67
+ true: {
68
+ background: "$background-neutrals-disabled"
69
+ },
70
+ false: {}
71
+ },
72
+ ariaDisabled: {
73
+ true: {
74
+ background: "$background-neutrals-disabled"
75
+ },
76
+ false: {}
77
+ }
78
+ },
79
+ compoundVariants: [
80
+ /** Idle states */
81
+ {
82
+ valid: false,
83
+ readOnly: false,
84
+ disabled: false,
85
+ ariaDisabled: false,
86
+ css: {
87
+ borderColor: "$border-danger"
88
+ }
89
+ },
90
+ {
91
+ valid: true,
92
+ readOnly: false,
93
+ disabled: false,
94
+ ariaDisabled: false,
95
+ css: {
96
+ borderColor: "$border-success"
97
+ }
98
+ },
99
+ /** Focus States */
100
+ {
101
+ focused: true,
102
+ readOnly: false,
103
+ css: {
104
+ borderColor: "$border-neutrals"
105
+ }
106
+ },
107
+ {
108
+ focused: true,
109
+ readOnly: false,
110
+ valid: false,
111
+ disabled: false,
112
+ ariaDisabled: false,
113
+ css: {
114
+ borderColor: "$border-danger",
115
+ boxShadow: "$focus-controls-error"
116
+ }
117
+ },
118
+ {
119
+ focused: true,
120
+ readOnly: false,
121
+ valid: true,
122
+ disabled: false,
123
+ ariaDisabled: false,
124
+ css: {
125
+ borderColor: "$border-success",
126
+ boxShadow: "$focus-controls-success"
127
+ }
128
+ },
129
+ /** Hover states */
130
+ {
131
+ hovered: true,
132
+ disabled: false,
133
+ ariaDisabled: false,
134
+ readOnly: false,
135
+ css: {
136
+ borderColor: "$border-primary-hover"
137
+ }
138
+ },
139
+ {
140
+ hovered: true,
141
+ focused: false,
142
+ valid: false,
143
+ readOnly: false,
144
+ disabled: false,
145
+ ariaDisabled: false,
146
+ css: {
147
+ borderColor: "$border-danger-hover"
148
+ }
149
+ },
150
+ {
151
+ hovered: true,
152
+ focused: false,
153
+ valid: true,
154
+ readOnly: false,
155
+ disabled: false,
156
+ ariaDisabled: false,
157
+ css: {
158
+ borderColor: "$border-success-hover"
159
+ }
160
+ }
161
+ ]
162
+ });
163
+
164
+ const disabledAndReadonlySelectors = ':read-only, :disabled, [aria-disabled="true"], [data-disabled]';
165
+ const StyledInput = designSystemStitches.styled(designSystemPrimitive.Primitive.input, {
166
+ all: "unset",
167
+ background: "transparent",
31
168
  color: "$text-neutrals",
32
169
  width: "100%",
170
+ borderRadius: "$50",
171
+ order: 2,
33
172
  "&::placeholder": {
34
173
  fontStyle: "italic"
35
174
  },
@@ -37,111 +176,227 @@ const StyledBaseInput = designSystemStitches.styled(designSystemPrimitive.Primit
37
176
  color: "$text-neutrals-subtle"
38
177
  },
39
178
  "&:read-only": {
40
- background: "$background-neutrals-disabled",
41
- color: "$text-neutrals"
179
+ color: "$text-neutrals-subtle"
42
180
  },
43
181
  "&:disabled, &[aria-disabled=true], &[data-disabled]": {
44
182
  caretColor: "transparent",
45
- background: "$background-neutrals-disabled",
46
183
  "&, &::placeholder": {
47
184
  color: "$text-neutrals-disabled"
48
185
  },
49
186
  "&:selection": {
50
187
  background: "transparent"
51
188
  }
52
- },
53
- ["&:hover:not(".concat(disabledAndReadonlySelectors, ")")]: {
54
- borderColor: "$border-primary-hover"
55
- },
56
- "&:focus": designSystemStyles.focus.css({
57
- boxShadow: "$focus-controls"
58
- }),
59
- ["&:where(:invalid, [data-invalid], [aria-invalid=true]):not(".concat(disabledAndReadonlySelectors, ")")]: {
60
- borderColor: "$border-danger",
61
- "&:focus": designSystemStyles.focus.css({
62
- boxShadow: "$focus-controls-error"
63
- }),
64
- "&:hover": {
65
- borderColor: "$border-danger-hover"
66
- }
67
189
  }
68
190
  });
69
191
 
70
- const StyledInputSlot = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
71
- position: "absolute",
72
- marginInlineEnd: "$50"
192
+ const InputContext = React.createContext({
193
+ actionSlotRef: { current: null },
194
+ setFocused: () => {
195
+ },
196
+ setHovered: () => {
197
+ },
198
+ setActive: () => {
199
+ }
73
200
  });
74
-
75
- const InputContext = React.createContext({});
76
201
  const InputProvider = ({
77
202
  children,
203
+ disabled,
204
+ ariaDisabled,
205
+ readOnly,
78
206
  ...restProps
79
- }) => /* @__PURE__ */ jsxRuntime.jsx(InputContext.Provider, { value: restProps, children });
207
+ }) => {
208
+ const actionSlotRef = React.useRef(null);
209
+ const [focused, setFocused] = React.useState(false);
210
+ const [hovered, setHovered] = React.useState(false);
211
+ const [active, setActive] = React.useState(false);
212
+ const editable = !designSystemUtils.booleanify(disabled) && !designSystemUtils.booleanify(ariaDisabled) && !designSystemUtils.booleanify(readOnly);
213
+ return /* @__PURE__ */ jsxRuntime.jsx(
214
+ InputContext.Provider,
215
+ {
216
+ value: {
217
+ ...restProps,
218
+ setFocused,
219
+ setHovered,
220
+ setActive,
221
+ active,
222
+ hovered,
223
+ focused,
224
+ actionSlotRef,
225
+ disabled,
226
+ ariaDisabled,
227
+ readOnly,
228
+ editable
229
+ },
230
+ children
231
+ }
232
+ );
233
+ };
80
234
  const useInputContext = () => React.useContext(InputContext);
81
235
 
82
- const InputSlot = React__default["default"].forwardRef((props, forwardRef) => {
83
- const { disabled, ariaDisabled, readOnly } = useInputContext();
84
- if (designSystemUtils.booleanify(disabled) || designSystemUtils.booleanify(ariaDisabled) || designSystemUtils.booleanify(readOnly)) {
85
- return null;
86
- }
87
- return /* @__PURE__ */ jsxRuntime.jsx(StyledInputSlot, { ...props, ref: forwardRef });
88
- });
89
-
90
236
  const keyboardEventHandler = (e) => {
91
237
  if (e.key !== "Tab") {
92
238
  e.preventDefault();
93
239
  }
94
240
  };
95
- const BaseInput = React__default["default"].forwardRef(
96
- ({
97
- "aria-disabled": ariaDisabled,
98
- disabled,
99
- readOnly,
100
- value,
101
- children,
102
- ...restProps
103
- }, forwardRef) => {
104
- let elementProps = restProps;
105
- if (designSystemUtils.booleanify(ariaDisabled)) {
106
- elementProps = designSystemUtils.removeEventProps(restProps, [
107
- "onFocus",
108
- "onBlur",
109
- "onPointerMove"
110
- ]);
111
- elementProps.onKeyDown = keyboardEventHandler;
112
- elementProps.onKeyUp = keyboardEventHandler;
241
+ const Input = React__default["default"].forwardRef((props, forwardRef) => {
242
+ const { ariaDisabled, disabled, readOnly, setFocused } = useInputContext();
243
+ let elementProps = props;
244
+ if (designSystemUtils.booleanify(ariaDisabled)) {
245
+ elementProps = designSystemUtils.removeEventProps(props, [
246
+ "onFocus",
247
+ "onBlur",
248
+ "onPointerMove"
249
+ ]);
250
+ elementProps.onKeyDown = keyboardEventHandler;
251
+ elementProps.onKeyUp = keyboardEventHandler;
252
+ }
253
+ const onBlurEventHandler = () => {
254
+ setFocused == null ? void 0 : setFocused(false);
255
+ };
256
+ const onFocusEventHandler = () => {
257
+ setFocused == null ? void 0 : setFocused(true);
258
+ };
259
+ elementProps = utils.mergeProps(elementProps, {
260
+ onBlur: onBlurEventHandler,
261
+ onFocus: onFocusEventHandler
262
+ });
263
+ return /* @__PURE__ */ jsxRuntime.jsx(
264
+ StyledInput,
265
+ {
266
+ ...elementProps,
267
+ "aria-disabled": ariaDisabled,
268
+ disabled,
269
+ readOnly,
270
+ ref: forwardRef
113
271
  }
114
- const input = /* @__PURE__ */ jsxRuntime.jsx(
115
- StyledBaseInput,
116
- {
117
- ...elementProps,
118
- "aria-disabled": ariaDisabled,
119
- disabled,
120
- readOnly,
121
- value,
122
- ref: forwardRef
272
+ );
273
+ });
274
+
275
+ const StyledActionSlot = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
276
+ variants: {
277
+ readOnly: {
278
+ true: {
279
+ "& svg[data-icon-component], & img[data-icon-component]": {
280
+ color: "$icon-neutrals-subtle"
281
+ }
123
282
  }
124
- );
125
- let render = input;
126
- if (children != null) {
127
- render = /* @__PURE__ */ jsxRuntime.jsxs(StyledContainer, { children: [
128
- input,
129
- children
130
- ] });
131
283
  }
132
- return /* @__PURE__ */ jsxRuntime.jsx(
133
- InputProvider,
134
- {
135
- disabled,
136
- ariaDisabled,
137
- readOnly,
138
- value,
139
- children: render
284
+ }
285
+ });
286
+
287
+ const ActionSlot = React__default["default"].forwardRef(({ children, ...restProps }, forwardRef) => {
288
+ const { valid, hovered, editable, actionSlotRef, active, readOnly } = useInputContext();
289
+ const showInputSlot = valid === void 0 || designSystemUtils.booleanify(hovered) || designSystemUtils.booleanify(active);
290
+ let formattedChildren = children;
291
+ if (!designSystemUtils.booleanify(editable)) {
292
+ formattedChildren = designSystemUtils.addPropsToChildren(children, () => true, {
293
+ disabled: true
294
+ });
295
+ }
296
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: showInputSlot && /* @__PURE__ */ jsxRuntime.jsx(
297
+ StyledActionSlot,
298
+ {
299
+ ...restProps,
300
+ readOnly,
301
+ ref: designSystemUtils.mergeRefs([forwardRef, actionSlotRef]),
302
+ children: formattedChildren
303
+ }
304
+ ) });
305
+ });
306
+
307
+ const StyledIconSlot = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
308
+ alignContent: "center",
309
+ display: "flex",
310
+ justifyContent: "center",
311
+ color: "$icon-neutrals-subtle",
312
+ variants: {
313
+ disabled: {
314
+ true: {
315
+ "& svg": {
316
+ color: "$icon-neutrals-disabled"
317
+ }
140
318
  }
141
- );
319
+ }
142
320
  }
321
+ });
322
+
323
+ const IconSlot = React__default["default"].forwardRef((props, forwardRef) => {
324
+ const { ariaDisabled, disabled } = useInputContext();
325
+ return /* @__PURE__ */ jsxRuntime.jsx(
326
+ StyledIconSlot,
327
+ {
328
+ ...props,
329
+ disabled: designSystemUtils.booleanify(disabled != null ? disabled : ariaDisabled),
330
+ ref: forwardRef
331
+ }
332
+ );
333
+ });
334
+
335
+ const Root = React__default["default"].forwardRef(({ children, ...restProps }, forwardRef) => {
336
+ const {
337
+ valid,
338
+ ariaDisabled,
339
+ disabled,
340
+ readOnly,
341
+ focused,
342
+ active,
343
+ setHovered,
344
+ setActive
345
+ } = useInputContext();
346
+ const ref = React.useRef(null);
347
+ const { hoverProps, isHovered: hovered } = interactions.useHover({
348
+ onHoverChange: setHovered
349
+ });
350
+ const ariaDisabledOrDisabled = designSystemUtils.booleanify(ariaDisabled) || designSystemUtils.booleanify(disabled);
351
+ const showValidityIcon = !ariaDisabledOrDisabled && !designSystemUtils.booleanify(readOnly) && !designSystemUtils.booleanify(hovered) && !designSystemUtils.booleanify(focused) && !designSystemUtils.booleanify(active) && (valid === true || valid === false);
352
+ const ValidIcon = valid === true ? StyledIconCheckMark : StyledIconExclamationPointCircle;
353
+ return /* @__PURE__ */ jsxRuntime.jsxs(
354
+ StyledBaseInput,
355
+ {
356
+ ...restProps,
357
+ ...hoverProps,
358
+ ref: designSystemUtils.mergeRefs([ref, forwardRef]),
359
+ hovered,
360
+ focused,
361
+ valid,
362
+ disabled: designSystemUtils.booleanify(disabled),
363
+ ariaDisabled: designSystemUtils.booleanify(ariaDisabled),
364
+ readOnly: designSystemUtils.booleanify(readOnly),
365
+ "data-invalid": valid === false ? "" : void 0,
366
+ "data-valid": valid === true ? "" : void 0,
367
+ onFocus: () => {
368
+ setActive(true);
369
+ },
370
+ onBlur: () => {
371
+ setTimeout(() => {
372
+ var _a;
373
+ if ((ref == null ? void 0 : ref.current) != null && !((_a = ref == null ? void 0 : ref.current) == null ? void 0 : _a.contains(document.activeElement))) {
374
+ setActive(false);
375
+ }
376
+ }, 0);
377
+ },
378
+ children: [
379
+ children,
380
+ showValidityIcon && /* @__PURE__ */ jsxRuntime.jsx(StyledValidityBox, { children: /* @__PURE__ */ jsxRuntime.jsx(ValidIcon, { size: "small" }) })
381
+ ]
382
+ }
383
+ );
384
+ });
385
+ const BaseInput = React__default["default"].forwardRef(
386
+ ({ "aria-disabled": ariaDisabled, disabled, valid, readOnly, ...restProps }, forwardRef) => /* @__PURE__ */ jsxRuntime.jsx(
387
+ InputProvider,
388
+ {
389
+ valid,
390
+ disabled,
391
+ ariaDisabled,
392
+ readOnly,
393
+ children: /* @__PURE__ */ jsxRuntime.jsx(Root, { ...restProps, ref: forwardRef })
394
+ }
395
+ )
143
396
  );
144
- BaseInput.InputSlot = InputSlot;
397
+ BaseInput.ActionSlot = ActionSlot;
398
+ BaseInput.IconSlot = IconSlot;
399
+ BaseInput.Input = Input;
145
400
 
146
401
  exports.BaseInput = BaseInput;
147
402
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/base-input.styled.tsx","../src/partials/input-slot.styled.tsx","../src/use-input-context.tsx","../src/partials/input-slot.tsx","../src/base-input.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { focus } from '@mirohq/design-system-styles'\n\nconst disabledAndReadonlySelectors =\n ':read-only, :disabled, [aria-disabled=\"true\"], [data-disabled]'\n\nexport const StyledContainer = styled('span', {\n position: 'relative',\n display: 'inline-flex',\n verticalAlign: 'middle',\n alignItems: 'center',\n justifyContent: 'flex-end',\n width: '100%',\n})\n\nexport const StyledBaseInput = styled(Primitive.input, {\n all: 'unset',\n boxSizing: 'border-box',\n background: '$background-neutrals-container',\n border: '1px solid $border-neutrals',\n borderRadius: '$50',\n color: '$text-neutrals',\n width: '100%',\n\n '&::placeholder': {\n fontStyle: 'italic',\n },\n\n [`&:not(${disabledAndReadonlySelectors})::placeholder`]: {\n color: '$text-neutrals-subtle',\n },\n\n '&:read-only': {\n background: '$background-neutrals-disabled',\n color: '$text-neutrals',\n },\n\n '&:disabled, &[aria-disabled=true], &[data-disabled]': {\n caretColor: 'transparent',\n background: '$background-neutrals-disabled',\n '&, &::placeholder': {\n color: '$text-neutrals-disabled',\n },\n '&:selection': {\n background: 'transparent',\n },\n },\n\n [`&:hover:not(${disabledAndReadonlySelectors})`]: {\n borderColor: '$border-primary-hover',\n },\n\n '&:focus': focus.css({\n boxShadow: '$focus-controls',\n }),\n\n [`&:where(:invalid, [data-invalid], [aria-invalid=true]):not(${disabledAndReadonlySelectors})`]:\n {\n borderColor: '$border-danger',\n '&:focus': focus.css({\n boxShadow: '$focus-controls-error',\n }),\n '&:hover': {\n borderColor: '$border-danger-hover',\n },\n },\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledInputSlot = styled(Primitive.div, {\n position: 'absolute',\n marginInlineEnd: '$50',\n})\n","import { createContext, useContext } from 'react'\nimport type { PropsWithChildren, HTMLProps } from 'react'\nimport type { Booleanish } from '@mirohq/design-system-types'\n\nexport interface InputContextProps {\n disabled?: boolean\n ariaDisabled?: Booleanish\n readOnly?: boolean\n value?: HTMLProps<'input'>['value']\n}\n\nconst InputContext = createContext<InputContextProps>({})\n\nexport const InputProvider = ({\n children,\n ...restProps\n}: PropsWithChildren<InputContextProps>): any => (\n <InputContext.Provider value={restProps}>{children}</InputContext.Provider>\n)\n\nexport const useInputContext = (): InputContextProps => useContext(InputContext)\n","import React from 'react'\nimport type { ComponentPropsWithRef, ElementRef } from 'react'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledInputSlot } from './input-slot.styled'\nimport { useInputContext } from '../use-input-context'\n\nexport const InputSlot = React.forwardRef<\n ElementRef<typeof StyledInputSlot>,\n ComponentPropsWithRef<typeof StyledInputSlot>\n>((props, forwardRef) => {\n const { disabled, ariaDisabled, readOnly } = useInputContext()\n\n if (\n booleanify(disabled) ||\n booleanify(ariaDisabled) ||\n booleanify(readOnly)\n ) {\n return null\n }\n\n return <StyledInputSlot {...props} ref={forwardRef} />\n})\n","import React from 'react'\nimport type {\n ElementRef,\n ForwardRefExoticComponent,\n KeyboardEventHandler,\n} from 'react'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\n\nimport { StyledBaseInput, StyledContainer } from './base-input.styled'\nimport type { StyledBaseInputProps } from './base-input.styled'\nimport { InputSlot } from './partials/input-slot'\nimport { InputProvider } from './use-input-context'\n\nexport interface BaseInputProps extends StyledBaseInputProps {}\n\nconst keyboardEventHandler: KeyboardEventHandler<HTMLInputElement> = e => {\n if (e.key !== 'Tab') {\n e.preventDefault()\n }\n}\n\nexport const BaseInput = React.forwardRef<\n ElementRef<typeof StyledBaseInput>,\n BaseInputProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n disabled,\n readOnly,\n value,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n let elementProps = restProps\n\n if (booleanify(ariaDisabled)) {\n elementProps = removeEventProps(restProps, [\n 'onFocus',\n 'onBlur',\n 'onPointerMove',\n ])\n\n elementProps.onKeyDown = keyboardEventHandler\n elementProps.onKeyUp = keyboardEventHandler\n }\n\n const input = (\n <StyledBaseInput\n {...elementProps}\n aria-disabled={ariaDisabled}\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n ref={forwardRef}\n />\n )\n\n let render = input\n\n if (children != null) {\n render = (\n <StyledContainer>\n {input}\n {children}\n </StyledContainer>\n )\n }\n\n return (\n <InputProvider\n disabled={disabled}\n ariaDisabled={ariaDisabled}\n readOnly={readOnly}\n value={value}\n >\n {render}\n </InputProvider>\n )\n }\n) as ForwardRefExoticComponent<BaseInputProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n InputSlot: typeof InputSlot\n}\n\nBaseInput.InputSlot = InputSlot\n"],"names":["styled","Primitive","focus","createContext","useContext","React","booleanify","jsx","removeEventProps"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/base-input.styled.tsx","../src/partials/input.styled.tsx","../hooks/use-input-context.tsx","../src/partials/input.tsx","../src/partials/action-slot.styled.tsx","../src/partials/action-slot.tsx","../src/partials/icon-slot.styled.tsx","../src/partials/icon-slot.tsx","../src/base-input.tsx"],"sourcesContent":["import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { ComponentPropsWithRef } from 'react'\nimport {\n IconExclamationPointCircle,\n IconCheckMark,\n} from '@mirohq/design-system-icons'\n\nexport const StyledIconExclamationPointCircle = styled(\n IconExclamationPointCircle,\n {\n color: '$icon-danger',\n }\n)\n\nexport const StyledIconCheckMark = styled(IconCheckMark, {\n color: '$icon-success',\n})\n\nexport const StyledValidityBox = styled(Primitive.div, {\n order: 3,\n display: 'flex',\n alignItems: 'center',\n})\n\nexport const StyledBaseInput = styled('div', {\n alignItems: 'center',\n background: '$background-neutrals-container',\n border: '1px solid $border-neutrals',\n borderRadius: '$50',\n display: 'flex',\n height: 'max-content',\n justifyContent: 'flex-end',\n position: 'relative',\n verticalAlign: 'middle',\n boxSizing: 'border-box',\n width: '100%',\n variants: {\n hovered: {\n true: {},\n false: {},\n },\n focused: {\n true: {\n boxShadow: '$focus-controls',\n },\n false: {},\n },\n valid: {\n true: {},\n false: {},\n },\n readOnly: {\n true: {\n background: '$background-neutrals-disabled',\n color: '$text-neutrals-subtle',\n },\n false: {},\n },\n disabled: {\n true: {\n background: '$background-neutrals-disabled',\n },\n false: {},\n },\n ariaDisabled: {\n true: {\n background: '$background-neutrals-disabled',\n },\n false: {},\n },\n },\n compoundVariants: [\n /** Idle states */\n {\n valid: false,\n readOnly: false,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-danger',\n },\n },\n {\n valid: true,\n readOnly: false,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-success',\n },\n },\n /** Focus States */\n {\n focused: true,\n readOnly: false,\n css: {\n borderColor: '$border-neutrals',\n },\n },\n {\n focused: true,\n readOnly: false,\n valid: false,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-danger',\n boxShadow: '$focus-controls-error',\n },\n },\n {\n focused: true,\n readOnly: false,\n valid: true,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-success',\n boxShadow: '$focus-controls-success',\n },\n },\n /** Hover states */\n {\n hovered: true,\n disabled: false,\n ariaDisabled: false,\n readOnly: false,\n css: {\n borderColor: '$border-primary-hover',\n },\n },\n {\n hovered: true,\n focused: false,\n valid: false,\n readOnly: false,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-danger-hover',\n },\n },\n {\n hovered: true,\n focused: false,\n valid: true,\n readOnly: false,\n disabled: false,\n ariaDisabled: false,\n css: {\n borderColor: '$border-success-hover',\n },\n },\n ],\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { ComponentPropsWithRef } from 'react'\n\nconst disabledAndReadonlySelectors =\n ':read-only, :disabled, [aria-disabled=\"true\"], [data-disabled]'\n\nexport const StyledInput = styled(Primitive.input, {\n all: 'unset',\n background: 'transparent',\n color: '$text-neutrals',\n width: '100%',\n borderRadius: '$50',\n order: 2,\n\n '&::placeholder': {\n fontStyle: 'italic',\n },\n\n [`&:not(${disabledAndReadonlySelectors})::placeholder`]: {\n color: '$text-neutrals-subtle',\n },\n\n '&:read-only': {\n color: '$text-neutrals-subtle',\n },\n\n '&:disabled, &[aria-disabled=true], &[data-disabled]': {\n caretColor: 'transparent',\n '&, &::placeholder': {\n color: '$text-neutrals-disabled',\n },\n '&:selection': {\n background: 'transparent',\n },\n },\n})\n\nexport type StyledInputProps = ComponentPropsWithRef<typeof StyledInput>\n","import React, { createContext, useContext, useState, useRef } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport type { Booleanish } from '@mirohq/design-system-types'\n\nexport interface InputContextProps {\n disabled?: boolean\n ariaDisabled?: Booleanish\n readOnly?: boolean\n valid?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n actionSlotRef: React.RefObject<HTMLDivElement>\n setFocused: React.Dispatch<React.SetStateAction<boolean>>\n setHovered: React.Dispatch<React.SetStateAction<boolean>>\n setActive: React.Dispatch<React.SetStateAction<boolean>>\n editable?: boolean\n}\n\nconst InputContext = createContext<InputContextProps>({\n actionSlotRef: { current: null },\n setFocused: () => {},\n setHovered: () => {},\n setActive: () => {},\n})\n\nexport const InputProvider = ({\n children,\n disabled,\n ariaDisabled,\n readOnly,\n ...restProps\n}: PropsWithChildren<\n Omit<\n InputContextProps,\n 'setFocused' | 'setHovered' | 'actionSlotRef' | 'setActive'\n >\n>): any => {\n const actionSlotRef = useRef<HTMLDivElement>(null)\n const [focused, setFocused] = useState(false)\n const [hovered, setHovered] = useState(false)\n const [active, setActive] = useState(false)\n const editable =\n !booleanify(disabled) && !booleanify(ariaDisabled) && !booleanify(readOnly)\n\n return (\n <InputContext.Provider\n value={{\n ...restProps,\n setFocused,\n setHovered,\n setActive,\n active,\n hovered,\n focused,\n actionSlotRef,\n disabled,\n ariaDisabled,\n readOnly,\n editable,\n }}\n >\n {children}\n </InputContext.Provider>\n )\n}\n\nexport const useInputContext = (): InputContextProps => useContext(InputContext)\n","import React from 'react'\nimport type { FocusEventHandler, KeyboardEventHandler, ElementRef } from 'react'\nimport { booleanify, removeEventProps } from '@mirohq/design-system-utils'\nimport { mergeProps } from '@react-aria/utils'\n\nimport { StyledInput } from './input.styled'\nimport type { StyledInputProps } from './input.styled'\nimport { useInputContext } from '../../hooks/use-input-context'\n\nexport interface InputProps extends StyledInputProps {}\n\nconst keyboardEventHandler: KeyboardEventHandler<HTMLInputElement> = e => {\n if (e.key !== 'Tab') {\n e.preventDefault()\n }\n}\n\nexport const Input = React.forwardRef<\n ElementRef<typeof StyledInput>,\n StyledInputProps\n>((props, forwardRef) => {\n const { ariaDisabled, disabled, readOnly, setFocused } = useInputContext()\n let elementProps = props\n\n if (booleanify(ariaDisabled)) {\n elementProps = removeEventProps(props, [\n 'onFocus',\n 'onBlur',\n 'onPointerMove',\n ])\n\n elementProps.onKeyDown = keyboardEventHandler\n elementProps.onKeyUp = keyboardEventHandler\n }\n\n const onBlurEventHandler: FocusEventHandler<HTMLInputElement> = (): void => {\n setFocused?.(false)\n }\n\n const onFocusEventHandler: FocusEventHandler<HTMLInputElement> = (): void => {\n setFocused?.(true)\n }\n\n elementProps = mergeProps(elementProps, {\n onBlur: onBlurEventHandler,\n onFocus: onFocusEventHandler,\n })\n\n return (\n <StyledInput\n {...elementProps}\n aria-disabled={ariaDisabled}\n disabled={disabled}\n readOnly={readOnly}\n ref={forwardRef}\n />\n )\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledActionSlot = styled(Primitive.div, {\n variants: {\n readOnly: {\n true: {\n '& svg[data-icon-component], & img[data-icon-component]': {\n color: '$icon-neutrals-subtle',\n },\n },\n },\n },\n})\n\nexport type StyledActionSlotProps = ComponentPropsWithRef<\n typeof StyledActionSlot\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport {\n mergeRefs,\n booleanify,\n addPropsToChildren,\n} from '@mirohq/design-system-utils'\n\nimport { StyledActionSlot } from './action-slot.styled'\nimport { useInputContext } from '../../hooks/use-input-context'\nimport type { StyledActionSlotProps } from './action-slot.styled'\n\nexport interface ActionSlotProps extends StyledActionSlotProps {}\n\nexport const ActionSlot = React.forwardRef<\n ElementRef<typeof StyledActionSlot>,\n StyledActionSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { valid, hovered, editable, actionSlotRef, active, readOnly } =\n useInputContext()\n\n const showInputSlot =\n valid === undefined || booleanify(hovered) || booleanify(active)\n\n let formattedChildren = children\n\n if (!booleanify(editable)) {\n formattedChildren = addPropsToChildren(children, () => true, {\n disabled: true,\n })\n }\n\n return (\n <>\n {showInputSlot && (\n <StyledActionSlot\n {...restProps}\n readOnly={readOnly}\n ref={mergeRefs([forwardRef, actionSlotRef])}\n >\n {formattedChildren}\n </StyledActionSlot>\n )}\n </>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { ComponentPropsWithRef } from 'react'\n\nexport const StyledIconSlot = styled(Primitive.div, {\n alignContent: 'center',\n display: 'flex',\n justifyContent: 'center',\n color: '$icon-neutrals-subtle',\n variants: {\n disabled: {\n true: {\n '& svg': {\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n\nexport type StyledIconSlotProps = ComponentPropsWithRef<typeof StyledIconSlot>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useInputContext } from '../../hooks/use-input-context'\nimport type { StyledIconSlotProps } from './icon-slot.styled'\n\nexport interface IconSlotProps extends StyledIconSlotProps {}\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n StyledIconSlotProps\n>((props, forwardRef) => {\n const { ariaDisabled, disabled } = useInputContext()\n return (\n <StyledIconSlot\n {...props}\n disabled={booleanify(disabled ?? ariaDisabled)}\n ref={forwardRef}\n />\n )\n})\n","import React, { useRef } from 'react'\nimport type {\n DOMAttributes,\n ElementRef,\n ForwardRefExoticComponent,\n} from 'react'\nimport { booleanify, mergeRefs } from '@mirohq/design-system-utils'\nimport type { Booleanish } from '@mirohq/design-system-types'\nimport { useHover } from '@react-aria/interactions'\n\nimport {\n StyledBaseInput,\n StyledValidityBox,\n StyledIconExclamationPointCircle,\n StyledIconCheckMark,\n} from './base-input.styled'\nimport { Input } from './partials/input'\nimport { ActionSlot } from './partials/action-slot'\nimport { IconSlot } from './partials/icon-slot'\nimport { InputProvider, useInputContext } from '../hooks/use-input-context'\nimport type { StyledBaseInputProps } from './base-input.styled'\n\nexport interface BaseInputProps\n extends Omit<StyledBaseInputProps, keyof DOMAttributes<Element>> {\n 'aria-disabled'?: Booleanish | undefined\n disabled?: boolean | undefined\n readOnly?: boolean | undefined\n valid?: boolean | undefined\n hovered?: boolean | undefined\n focused?: boolean | undefined\n children: React.ReactNode\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledBaseInput>,\n BaseInputProps\n>(({ children, ...restProps }, forwardRef) => {\n const {\n valid,\n ariaDisabled,\n disabled,\n readOnly,\n focused,\n active,\n setHovered,\n setActive,\n } = useInputContext()\n\n const ref = useRef<HTMLDivElement>(null)\n\n const { hoverProps, isHovered: hovered } = useHover({\n onHoverChange: setHovered,\n })\n\n const ariaDisabledOrDisabled =\n booleanify(ariaDisabled) || booleanify(disabled)\n\n const showValidityIcon =\n !ariaDisabledOrDisabled &&\n !booleanify(readOnly) &&\n !booleanify(hovered) &&\n !booleanify(focused) &&\n !booleanify(active) &&\n (valid === true || valid === false)\n\n const ValidIcon =\n valid === true ? StyledIconCheckMark : StyledIconExclamationPointCircle\n\n return (\n <StyledBaseInput\n {...restProps}\n {...hoverProps}\n ref={mergeRefs([ref, forwardRef])}\n hovered={hovered}\n focused={focused}\n valid={valid}\n disabled={booleanify(disabled)}\n ariaDisabled={booleanify(ariaDisabled)}\n readOnly={booleanify(readOnly)}\n data-invalid={valid === false ? '' : undefined}\n data-valid={valid === true ? '' : undefined}\n onFocus={() => {\n setActive(true)\n }}\n onBlur={() => {\n setTimeout(() => {\n if (\n ref?.current != null &&\n !ref?.current?.contains(document.activeElement)\n ) {\n setActive(false)\n }\n }, 0)\n }}\n >\n {children}\n {showValidityIcon && (\n <StyledValidityBox>\n <ValidIcon size='small' />\n </StyledValidityBox>\n )}\n </StyledBaseInput>\n )\n})\n\nexport const BaseInput = React.forwardRef<\n ElementRef<typeof StyledBaseInput>,\n BaseInputProps\n>(\n (\n { 'aria-disabled': ariaDisabled, disabled, valid, readOnly, ...restProps },\n forwardRef\n ) => (\n <InputProvider\n valid={valid}\n disabled={disabled}\n ariaDisabled={ariaDisabled}\n readOnly={readOnly}\n >\n <Root {...restProps} ref={forwardRef} />\n </InputProvider>\n )\n) as ForwardRefExoticComponent<BaseInputProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\nexport interface Partials {\n ActionSlot: typeof ActionSlot\n IconSlot: typeof IconSlot\n Input: typeof Input\n}\n\nBaseInput.ActionSlot = ActionSlot\nBaseInput.IconSlot = IconSlot\nBaseInput.Input = Input\n"],"names":["styled","IconExclamationPointCircle","IconCheckMark","Primitive","createContext","useRef","useState","booleanify","jsx","useContext","React","removeEventProps","mergeProps","addPropsToChildren","mergeRefs","useHover","jsxs"],"mappings":"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"}