@choice-ui/react 1.7.5 → 1.7.6

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.
Files changed (29) hide show
  1. package/dist/components/comments/dist/index.d.ts +3 -0
  2. package/dist/components/comments/src/comment-input/comment-input.d.ts +3 -0
  3. package/dist/components/comments/src/comment-input/comment-input.js +8 -2
  4. package/dist/components/comments/src/comment-input/components/comment-input-footer.d.ts +3 -0
  5. package/dist/components/comments/src/comment-input/components/comment-input-footer.js +10 -9
  6. package/dist/components/comments/src/comment-input/components/comment-input-renderers.js +1 -1
  7. package/dist/components/modal/dist/index.js +1 -2
  8. package/dist/components/modal/src/tv.js +1 -2
  9. package/dist/components/numeric-input/dist/index.js +3 -4
  10. package/dist/components/numeric-input/src/tv.js +3 -4
  11. package/dist/components/otp-input/src/tv.js +1 -2
  12. package/dist/components/panel/src/tv.js +15 -16
  13. package/dist/components/skeleton/src/tv.js +1 -2
  14. package/dist/components/text-field/dist/index.js +1 -2
  15. package/dist/components/text-field/src/tv.js +1 -2
  16. package/dist/styles/components.css +186 -0
  17. package/package.json +1 -1
  18. package/dist/components/modal/src/styles/style.module.css +0 -4
  19. package/dist/components/modal/src/styles/style.module.css.js +0 -8
  20. package/dist/components/numeric-input/src/styles/style.module.css +0 -45
  21. package/dist/components/numeric-input/src/styles/style.module.css.js +0 -12
  22. package/dist/components/otp-input/src/styles/style.module.css +0 -15
  23. package/dist/components/otp-input/src/styles/style.module.css.js +0 -8
  24. package/dist/components/panel/src/styles/style.module.css +0 -103
  25. package/dist/components/panel/src/styles/style.module.css.js +0 -23
  26. package/dist/components/skeleton/src/styles/style.module.css +0 -18
  27. package/dist/components/skeleton/src/styles/style.module.css.js +0 -8
  28. package/dist/components/text-field/src/styles/style.module.css +0 -31
  29. package/dist/components/text-field/src/styles/style.module.css.js +0 -8
@@ -79,6 +79,9 @@ interface CommentInputProps {
79
79
  placeholder?: string;
80
80
  users?: User[];
81
81
  variant?: "default" | "solid";
82
+ showMentionButton?: boolean;
83
+ showEmojiButton?: boolean;
84
+ showImageUploadButton?: boolean;
82
85
  }
83
86
  declare const CommentInput: react.ForwardRefExoticComponent<CommentInputProps & react.RefAttributes<HTMLDivElement>>;
84
87
 
@@ -12,5 +12,8 @@ export interface CommentInputProps {
12
12
  placeholder?: string;
13
13
  users?: User[];
14
14
  variant?: "default" | "solid";
15
+ showMentionButton?: boolean;
16
+ showEmojiButton?: boolean;
17
+ showImageUploadButton?: boolean;
15
18
  }
16
19
  export declare const CommentInput: import('react').ForwardRefExoticComponent<CommentInputProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -31,7 +31,10 @@ const CommentInput = forwardRef((props, ref) => {
31
31
  ADD_EMOJI: "Add emoji",
32
32
  UPLOAD_ATTACHMENT: "Upload up to 5 images",
33
33
  REMOVE_IMAGE: "Remove image"
34
- }
34
+ },
35
+ showMentionButton = true,
36
+ showEmojiButton = true,
37
+ showImageUploadButton = true
35
38
  } = props;
36
39
  const [isEditMode, setIsEditMode] = useState(false);
37
40
  const [isComposing, setIsComposing] = useState(false);
@@ -230,7 +233,10 @@ const CommentInput = forwardRef((props, ref) => {
230
233
  imageCount,
231
234
  maxImageCount,
232
235
  hasOnlyImages,
233
- defaultText
236
+ defaultText,
237
+ showMentionButton: showMentionButton && users.length > 0,
238
+ showEmojiButton,
239
+ showImageUploadButton
234
240
  }
235
241
  ),
236
242
  shouldShowPlaceholder ? /* @__PURE__ */ jsx("div", { className: styles.placeholder(), children: /* @__PURE__ */ jsx("span", { className: "truncate", children: error || placeholder }) }) : null
@@ -17,6 +17,9 @@ interface CommentInputFooterProps {
17
17
  onMentionClick?: () => void;
18
18
  onSubmit?: () => void;
19
19
  typing?: boolean;
20
+ showMentionButton?: boolean;
21
+ showEmojiButton?: boolean;
22
+ showImageUploadButton?: boolean;
20
23
  }
21
24
  export declare const CommentInputFooter: (props: CommentInputFooterProps) => import("react/jsx-runtime").JSX.Element;
22
25
  export {};
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { Button } from "../../../../button/dist/index.js";
3
3
  import { IconButton } from "../../../../icon-button/dist/index.js";
4
+ import { Tooltip } from "../../../../tooltip/dist/index.js";
4
5
  import { Smile, AtSign, Image, ArrowUp } from "@choiceform/icons-react";
5
6
  import { useRef } from "react";
6
7
  import { CommentInputTv } from "../tv.js";
@@ -21,7 +22,10 @@ const CommentInputFooter = (props) => {
21
22
  imageCount = 0,
22
23
  maxImageCount = 5,
23
24
  hasOnlyImages = false,
24
- defaultText
25
+ defaultText,
26
+ showMentionButton = true,
27
+ showEmojiButton = true,
28
+ showImageUploadButton = true
25
29
  } = props;
26
30
  const fileInputRef = useRef(null);
27
31
  const handleImageButtonClick = () => {
@@ -39,7 +43,7 @@ const CommentInputFooter = (props) => {
39
43
  const isSubmitDisabled = disabled || !allowSubmission || hasOnlyImages;
40
44
  return /* @__PURE__ */ jsxs("div", { className: styles.footer({ className }), children: [
41
45
  typing && /* @__PURE__ */ jsxs("div", { className: styles.footerActions(), children: [
42
- /* @__PURE__ */ jsx(
46
+ showEmojiButton && /* @__PURE__ */ jsx(
43
47
  IconButton,
44
48
  {
45
49
  ref: emojiButtonRef,
@@ -50,7 +54,7 @@ const CommentInputFooter = (props) => {
50
54
  children: /* @__PURE__ */ jsx(Smile, {})
51
55
  }
52
56
  ),
53
- /* @__PURE__ */ jsx(
57
+ showMentionButton && /* @__PURE__ */ jsx(
54
58
  IconButton,
55
59
  {
56
60
  onClick: onMentionClick,
@@ -60,7 +64,7 @@ const CommentInputFooter = (props) => {
60
64
  children: /* @__PURE__ */ jsx(AtSign, {})
61
65
  }
62
66
  ),
63
- /* @__PURE__ */ jsxs(
67
+ showImageUploadButton && /* @__PURE__ */ jsxs(
64
68
  IconButton,
65
69
  {
66
70
  onClick: handleImageButtonClick,
@@ -106,18 +110,15 @@ const CommentInputFooter = (props) => {
106
110
  )
107
111
  ] }) : (
108
112
  /* Submit Button */
109
- /* @__PURE__ */ jsx(
113
+ /* @__PURE__ */ jsx(Tooltip, { content: defaultText.SUBMIT, children: /* @__PURE__ */ jsx(
110
114
  Button,
111
115
  {
112
116
  onClick: onSubmit,
113
117
  disabled: isSubmitDisabled,
114
118
  className: "w-6 rounded-full border-none px-0",
115
- tooltip: {
116
- content: defaultText.SUBMIT
117
- },
118
119
  children: /* @__PURE__ */ jsx(ArrowUp, {})
119
120
  }
120
- )
121
+ ) })
121
122
  )
122
123
  ] });
123
124
  };
@@ -91,7 +91,7 @@ const renderLeaf = (props) => {
91
91
  formattedChildren = /* @__PURE__ */ jsx("u", { className: "underline", children: formattedChildren });
92
92
  }
93
93
  if (customLeaf.emoji) {
94
- formattedChildren = /* @__PURE__ */ jsx("span", { className: "font-emoji text-xl leading-6", children: formattedChildren });
94
+ formattedChildren = /* @__PURE__ */ jsx("span", { className: "font-emoji text-body-large leading-6", children: formattedChildren });
95
95
  }
96
96
  return /* @__PURE__ */ jsx("span", { ...attributes, children: formattedChildren });
97
97
  };
@@ -8,7 +8,6 @@ import { AnimatePresence, motion } from "framer-motion";
8
8
  import { Input } from "../../input/dist/index.js";
9
9
  import { Textarea } from "../../textarea/dist/index.js";
10
10
  import { tcv, tcx } from "../../../shared/utils/tcx/tcx.js";
11
- var style_default = {};
12
11
  var ModalTv = tcv({
13
12
  slots: {
14
13
  root: "bg-default-background z-modals pointer-events-auto relative flex max-w-fit flex-col rounded-xl shadow-xl"
@@ -16,7 +15,7 @@ var ModalTv = tcv({
16
15
  });
17
16
  var ModalHeaderTv = tcv({
18
17
  slots: {
19
- root: [style_default.header, "grid border-default-boundary w-full flex-none items-center border-b"],
18
+ root: ["modal__header", "grid border-default-boundary w-full flex-none items-center border-b"],
20
19
  title: "text-body-medium flex min-w-0 items-center gap-2 p-2 font-strong [grid-area:title] select-none",
21
20
  close: "p-2 [grid-area:close]"
22
21
  },
@@ -1,4 +1,3 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const ModalTv = tcv({
4
3
  slots: {
@@ -7,7 +6,7 @@ const ModalTv = tcv({
7
6
  });
8
7
  const ModalHeaderTv = tcv({
9
8
  slots: {
10
- root: [s.header, "grid border-default-boundary w-full flex-none items-center border-b"],
9
+ root: ["modal__header", "grid border-default-boundary w-full flex-none items-center border-b"],
11
10
  title: "text-body-medium flex min-w-0 items-center gap-2 p-2 font-strong [grid-area:title] select-none",
12
11
  close: "p-2 [grid-area:close]"
13
12
  },
@@ -20,10 +20,9 @@ function useNumericInputContext() {
20
20
  }
21
21
  return context;
22
22
  }
23
- var style_default = {};
24
23
  var NumericInputTv = tcv({
25
24
  slots: {
26
- container: ["group/input grid before:border-transparent", style_default.input],
25
+ container: ["group/input grid before:border-transparent", "input__number"],
27
26
  input: ["peer", "w-full", "cursor-default appearance-none truncate"],
28
27
  tooltip: "col-span-3 col-start-1 row-start-1"
29
28
  },
@@ -42,12 +41,12 @@ var NumericInputTv = tcv({
42
41
  },
43
42
  size: {
44
43
  default: {
45
- container: ["h-6", style_default.default],
44
+ container: ["h-6", "input__number--default"],
46
45
  input: "h-6",
47
46
  tooltip: "h-6"
48
47
  },
49
48
  large: {
50
- container: ["h-8", style_default.large],
49
+ container: ["h-8", "input__number--large"],
51
50
  input: "h-8",
52
51
  tooltip: "h-8"
53
52
  }
@@ -1,8 +1,7 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const NumericInputTv = tcv({
4
3
  slots: {
5
- container: ["group/input grid before:border-transparent", s.input],
4
+ container: ["group/input grid before:border-transparent", "input__number"],
6
5
  input: ["peer", "w-full", "cursor-default appearance-none truncate"],
7
6
  tooltip: "col-span-3 col-start-1 row-start-1"
8
7
  },
@@ -21,12 +20,12 @@ const NumericInputTv = tcv({
21
20
  },
22
21
  size: {
23
22
  default: {
24
- container: ["h-6", s.default],
23
+ container: ["h-6", "input__number--default"],
25
24
  input: "h-6",
26
25
  tooltip: "h-6"
27
26
  },
28
27
  large: {
29
- container: ["h-8", s.large],
28
+ container: ["h-8", "input__number--large"],
30
29
  input: "h-8",
31
30
  tooltip: "h-8"
32
31
  }
@@ -1,4 +1,3 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const otpInputTv = tcv({
4
3
  slots: {
@@ -13,7 +12,7 @@ const otpInputTv = tcv({
13
12
  "border border-solid border-transparent"
14
13
  ],
15
14
  slotValue: "",
16
- caret: ["absolute inset-y-2 left-1/2 w-px -translate-x-1/2", s.caret],
15
+ caret: ["absolute inset-y-2 left-1/2 w-px -translate-x-1/2", "otp-input__caret"],
17
16
  separator: "text-secondary-foreground mx-1"
18
17
  },
19
18
  variants: {
@@ -1,4 +1,3 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const propertiesPanelTv = tcv({
4
3
  slots: {
@@ -33,21 +32,21 @@ const propertiesPanelRowTv = tcv({
33
32
  },
34
33
  variants: {
35
34
  type: {
36
- single: { container: s.single },
37
- "two-columns": { container: s["two-columns"] },
38
- "one-label-one-input": { container: s["one-label-one-input"] },
39
- "one-label-one-input-one-icon": { container: s["one-label-one-input-one-icon"] },
40
- "one-label-two-input": { container: s["one-label-two-input"] },
41
- "one-icon-one-input": { container: s["one-icon-one-input"] },
42
- "one-input-one-icon": { container: s["one-input-one-icon"] },
43
- "one-input-two-icon": { container: s["one-input-two-icon"] },
44
- "two-input-one-icon": { container: s["two-input-one-icon"] },
45
- "two-input-two-icon": { container: s["two-input-two-icon"] },
46
- "one-icon-one-input-one-icon": { container: s["one-icon-one-input-one-icon"] },
47
- "one-icon-one-input-two-icon": { container: s["one-icon-one-input-two-icon"] },
48
- "two-input-one-icon-double-row": { container: s["two-input-one-icon-double-row"] },
35
+ single: { container: "rows--single" },
36
+ "two-columns": { container: "rows--two-columns" },
37
+ "one-label-one-input": { container: "rows--one-label-one-input" },
38
+ "one-label-one-input-one-icon": { container: "rows--one-label-one-input-one-icon" },
39
+ "one-label-two-input": { container: "rows--one-label-two-input" },
40
+ "one-icon-one-input": { container: "rows--one-icon-one-input" },
41
+ "one-input-one-icon": { container: "rows--one-input-one-icon" },
42
+ "one-input-two-icon": { container: "rows--one-input-two-icon" },
43
+ "two-input-one-icon": { container: "rows--two-input-one-icon" },
44
+ "two-input-two-icon": { container: "rows--two-input-two-icon" },
45
+ "one-icon-one-input-one-icon": { container: "rows--one-icon-one-input-one-icon" },
46
+ "one-icon-one-input-two-icon": { container: "rows--one-icon-one-input-two-icon" },
47
+ "two-input-one-icon-double-row": { container: "rows--two-input-one-icon-double-row" },
49
48
  "one-icon-one-input-two-icon-double-row": {
50
- container: s["one-icon-one-input-two-icon-double-row"]
49
+ container: "rows--one-icon-one-input-two-icon-double-row"
51
50
  }
52
51
  },
53
52
  triggerRef: {
@@ -103,7 +102,7 @@ const panelLabelTv = tcv({
103
102
  base: "[grid-area:label]",
104
103
  variants: {
105
104
  showLabels: {
106
- true: ["text-secondary-foreground", s.label],
105
+ true: ["text-secondary-foreground", "rows--label"],
107
106
  false: "sr-only"
108
107
  }
109
108
  },
@@ -1,4 +1,3 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const skeletonTv = tcv({
4
3
  slots: {
@@ -8,7 +7,7 @@ const skeletonTv = tcv({
8
7
  variants: {
9
8
  loading: {
10
9
  true: {
11
- root: [s.skeleton, "animate-pulse"]
10
+ root: ["skeleton", "animate-pulse"]
12
11
  },
13
12
  false: {}
14
13
  },
@@ -18,7 +18,6 @@ var FieldAddon = memo(
18
18
  })
19
19
  );
20
20
  FieldAddon.displayName = "FieldAddon";
21
- var style_default = {};
22
21
  var TextFieldTv = tcv({
23
22
  slots: {
24
23
  container: ["flex min-w-0 flex-col items-start gap-2"],
@@ -27,7 +26,7 @@ var TextFieldTv = tcv({
27
26
  "rounded-md",
28
27
  "focus-within:before:border-selected-boundary",
29
28
  "before:border-transparent",
30
- style_default.textField
29
+ "fields__text-field"
31
30
  ],
32
31
  input: "[grid-area:input]",
33
32
  prefix: "[grid-area:prefix]",
@@ -1,4 +1,3 @@
1
- import s from "./styles/style.module.css.js";
2
1
  import { tcv } from "../../../shared/utils/tcx/tcx.js";
3
2
  const TextFieldTv = tcv({
4
3
  slots: {
@@ -8,7 +7,7 @@ const TextFieldTv = tcv({
8
7
  "rounded-md",
9
8
  "focus-within:before:border-selected-boundary",
10
9
  "before:border-transparent",
11
- s.textField
10
+ "fields__text-field"
12
11
  ],
13
12
  input: "[grid-area:input]",
14
13
  prefix: "[grid-area:prefix]",
@@ -362,6 +362,103 @@
362
362
  }
363
363
  }
364
364
 
365
+ /* Panel row styles */
366
+ @layer components {
367
+ .properties-panel {
368
+ @apply relative flex min-w-0 flex-col;
369
+ &:not(:last-child) {
370
+ @apply border-b;
371
+ }
372
+ }
373
+
374
+ .rows {
375
+ @apply grid min-w-0 items-center pr-2 pl-4;
376
+ }
377
+ .rows--label {
378
+ @apply text-secondary-foreground mt-1 select-none;
379
+ padding-right: 0.125rem;
380
+ padding-left: 0.125rem;
381
+ font-weight: 500;
382
+ font-size: 0.5625rem;
383
+ line-height: 0.875rem;
384
+ letter-spacing: 0.016875rem;
385
+ }
386
+ .rows--single {
387
+ @apply gap-x-2 pr-4;
388
+ grid-template-rows: auto minmax(2rem, auto);
389
+ grid-template-columns: 1fr;
390
+ grid-template-areas: "label" "input";
391
+ }
392
+ .rows--two-columns {
393
+ @apply gap-x-2 pr-4;
394
+ grid-template-rows: auto minmax(2rem, auto);
395
+ grid-template-columns: 1fr 1fr;
396
+ grid-template-areas: "label-1 label-2" "input-1 input-2";
397
+ }
398
+ .rows--one-label-one-input {
399
+ @apply gap-x-2 pr-4;
400
+ grid-template-rows: 2rem;
401
+ grid-template-columns: 8fr 20fr;
402
+ grid-template-areas: "label input";
403
+ }
404
+ .rows--one-label-one-input-one-icon {
405
+ @apply gap-x-1 pr-2;
406
+ grid-template-rows: 2rem;
407
+ grid-template-columns: 8fr 20fr 1.5rem;
408
+ grid-template-areas: "label input icon";
409
+ }
410
+ .rows--one-label-two-input {
411
+ @apply gap-x-2 pr-4;
412
+ grid-template-rows: 2rem;
413
+ grid-template-columns: 8fr 10fr 10fr;
414
+ grid-template-areas: "label input-1 input-2";
415
+ }
416
+ .rows--one-icon-one-input {
417
+ @apply gap-x-2 pr-4;
418
+ grid-template-rows: auto minmax(2rem, auto);
419
+ grid-template-columns: 1.5rem 1fr;
420
+ grid-template-areas: ". label" "icon input";
421
+ }
422
+ .rows--one-input-one-icon {
423
+ @apply gap-x-2;
424
+ grid-template-rows: auto minmax(2rem, auto);
425
+ grid-template-columns: 1fr 1.5rem;
426
+ grid-template-areas: "label label" "input icon";
427
+ }
428
+ .rows--one-input-two-icon {
429
+ grid-template-rows: auto minmax(2rem, auto);
430
+ grid-template-columns: 1fr 0.5rem 1.5rem 0.25rem 1.5rem;
431
+ grid-template-areas: "label . . . ." "input . icon-1 . icon-2";
432
+ }
433
+ .rows--two-input-two-icon {
434
+ grid-template-rows: auto minmax(2rem, auto);
435
+ grid-template-columns: minmax(76px, 1fr) 0.5rem 1fr 0.5rem 1.5rem 0.25rem 1.5rem;
436
+ grid-template-areas: "label-1 label-1 label-2 label-2 . . ." "input-1 . input-2 . icon-1 . icon-2";
437
+ }
438
+ .rows--two-input-one-icon {
439
+ @apply gap-x-2;
440
+ grid-template-rows: auto minmax(2rem, auto);
441
+ grid-template-columns: 1fr 1fr 1.5rem;
442
+ grid-template-areas: "label-1 label-2 label-2" "input-1 input-2 icon";
443
+ }
444
+ .rows--one-icon-one-input-one-icon {
445
+ grid-template-rows: auto minmax(2rem, auto);
446
+ grid-template-columns: 1.5rem 0.5rem 1fr 0.5rem 1.5rem;
447
+ grid-template-areas: "label label label label label" "icon-1 . input . icon-2";
448
+ }
449
+ .rows--one-icon-one-input-two-icon {
450
+ grid-template-rows: auto minmax(2rem, auto);
451
+ grid-template-columns: 1.5rem 0.5rem 1fr 0.5rem 1.5rem 0.25rem 1.5rem;
452
+ grid-template-areas: "label label label label label label label" "icon-1 . input . icon-2 . icon-3";
453
+ }
454
+ .rows--two-input-one-icon-double-row {
455
+ @apply gap-x-2;
456
+ grid-template-rows: auto 2rem 2rem;
457
+ grid-template-columns: 1fr 1fr 1.5rem;
458
+ grid-template-areas: "label-1 label-2 ." "input-1 input-3 icon-1" "input-2 input-3 icon-2";
459
+ }
460
+ }
461
+
365
462
  /* Condition styles */
366
463
  @layer components {
367
464
  .condition__group {
@@ -414,6 +511,28 @@
414
511
  }
415
512
  }
416
513
 
514
+ /* Skeleton styles */
515
+ @layer components {
516
+ .skeleton {
517
+ transition: all 0.2s ease-in-out !important;
518
+ outline: none !important;
519
+ box-shadow: none !important;
520
+ border-color: transparent !important;
521
+ border-radius: var(--radius-md);
522
+ background-color: var(--color-secondary-background) !important;
523
+ resize: none !important;
524
+ pointer-events: none !important;
525
+ color: transparent !important;
526
+ &::placeholder,
527
+ &:placeholder-shown {
528
+ color: transparent !important;
529
+ }
530
+ & * {
531
+ visibility: hidden !important;
532
+ }
533
+ }
534
+ }
535
+
417
536
  /* Comments styles */
418
537
  @layer components {
419
538
  .comments__input {
@@ -428,3 +547,70 @@
428
547
  column-gap: calc(var(--spacing) * 2);
429
548
  }
430
549
  }
550
+
551
+ /* Fields styles */
552
+ @layer components {
553
+ .fields__text-field {
554
+ grid-template-columns: auto 1fr auto;
555
+ grid-template-areas: "prefix input suffix";
556
+ &::before {
557
+ @apply pointer-events-none z-2 h-full border transform-3d;
558
+ grid-row: 1 / 2;
559
+ grid-column: 1 / 4;
560
+ border-radius: inherit;
561
+ content: "";
562
+ }
563
+ }
564
+
565
+ .input__number {
566
+ grid-template-columns: auto auto 1fr auto auto;
567
+ grid-template-areas: "prefix-handler variable input action suffix-handler";
568
+ &::before {
569
+ @apply pointer-events-none z-3 rounded-md border;
570
+ grid-row: 1 / 2;
571
+ grid-column: 1 / 6;
572
+ content: "";
573
+ }
574
+ }
575
+
576
+ .input__number--default {
577
+ grid-template-rows: 1.5rem;
578
+ &::before {
579
+ @apply h-6;
580
+ }
581
+ }
582
+
583
+ .input__number--large {
584
+ grid-template-rows: 2rem;
585
+ &::before {
586
+ @apply h-8;
587
+ }
588
+ }
589
+ }
590
+
591
+ /* Modal styles */
592
+ @layer components {
593
+ .modal__header {
594
+ grid-template-rows: minmax(2.5rem, auto);
595
+ grid-template-areas: "title . close" "input input input";
596
+ }
597
+ }
598
+
599
+ /* OTP Input styles */
600
+ @layer components {
601
+ .otp-input__caret {
602
+ animation: otp-caret-blink 1s ease-out infinite;
603
+ }
604
+
605
+ @keyframes otp-caret-blink {
606
+ 0%,
607
+ 70%,
608
+ 100% {
609
+ opacity: 1;
610
+ }
611
+ 20%,
612
+ 50% {
613
+ opacity: 0;
614
+ }
615
+ }
616
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@choice-ui/react",
3
- "version": "1.7.5",
3
+ "version": "1.7.6",
4
4
  "description": "A desktop-first React UI component library built for professional desktop applications with comprehensive documentation",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -1,4 +0,0 @@
1
- ._header_15lpo_1 {
2
- grid-template-rows: minmax(2.5rem, auto);
3
- grid-template-areas: "title . close" "input input input";
4
- }
@@ -1,8 +0,0 @@
1
- import './style.module.css';const header = "_header_15lpo_1";
2
- const s = {
3
- header
4
- };
5
- export {
6
- s as default,
7
- header
8
- };
@@ -1,45 +0,0 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
- @layer properties {
3
- @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
- *, :before, :after, ::backdrop {
5
- --tw-border-style: solid;
6
- }
7
- }
8
- }
9
-
10
- ._input_irmph_10 {
11
- grid-template-columns: auto auto 1fr auto auto;
12
- grid-template-areas: "prefix-handler variable input action suffix-handler";
13
- }
14
-
15
- ._input_irmph_10:before {
16
- pointer-events: none;
17
- z-index: 3;
18
- border-radius: var(--radius-md, .375rem);
19
- border-style: var(--tw-border-style);
20
- content: "";
21
- border-width: 1px;
22
- grid-area: 1 / 1 / 2 / 6;
23
- }
24
-
25
- ._default_irmph_25 {
26
- grid-template-rows: 1.5rem;
27
- }
28
-
29
- ._default_irmph_25:before {
30
- height: calc(var(--spacing, .25rem) * 6);
31
- }
32
-
33
- ._large_irmph_33 {
34
- grid-template-rows: 2rem;
35
- }
36
-
37
- ._large_irmph_33:before {
38
- height: calc(var(--spacing, .25rem) * 8);
39
- }
40
-
41
- @property --tw-border-style {
42
- syntax: "*";
43
- inherits: false;
44
- initial-value: solid;
45
- }
@@ -1,12 +0,0 @@
1
- import './style.module.css';const input = "_input_irmph_10";
2
- const large = "_large_irmph_33";
3
- const s = {
4
- input,
5
- "default": "_default_irmph_25",
6
- large
7
- };
8
- export {
9
- s as default,
10
- input,
11
- large
12
- };
@@ -1,15 +0,0 @@
1
- ._caret_giwn8_1 {
2
- animation: _otp-caret-blink_giwn8_1 1s ease-out infinite;
3
- }
4
-
5
- @keyframes _otp-caret-blink_giwn8_1 {
6
- 0%,
7
- 70%,
8
- 100% {
9
- opacity: 1;
10
- }
11
- 20%,
12
- 50% {
13
- opacity: 0;
14
- }
15
- }
@@ -1,8 +0,0 @@
1
- import './style.module.css';const caret = "_caret_giwn8_1";
2
- const s = {
3
- caret
4
- };
5
- export {
6
- caret,
7
- s as default
8
- };
@@ -1,103 +0,0 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
- ._label_yadvv_2 {
3
- margin-top: calc(var(--spacing, .25rem) * 1);
4
- -webkit-user-select: none;
5
- user-select: none;
6
- letter-spacing: .016875rem;
7
- padding-left: .125rem;
8
- padding-right: .125rem;
9
- font-size: .5625rem;
10
- font-weight: 500;
11
- line-height: .875rem;
12
- }
13
-
14
- ._single_yadvv_14 {
15
- column-gap: calc(var(--spacing, .25rem) * 2);
16
- padding-right: calc(var(--spacing, .25rem) * 4);
17
- grid-template: "label"
18
- "input" minmax(2rem, auto)
19
- / 1fr;
20
- }
21
-
22
- ._two-columns_yadvv_22 {
23
- column-gap: calc(var(--spacing, .25rem) * 2);
24
- padding-right: calc(var(--spacing, .25rem) * 4);
25
- grid-template: "label-1 label-2"
26
- "input-1 input-2" minmax(2rem, auto)
27
- / 1fr 1fr;
28
- }
29
-
30
- ._one-label-one-input_yadvv_30 {
31
- column-gap: calc(var(--spacing, .25rem) * 2);
32
- padding-right: calc(var(--spacing, .25rem) * 4);
33
- grid-template: "label input" 2rem
34
- / 8fr 20fr;
35
- }
36
-
37
- ._one-label-one-input-one-icon_yadvv_37 {
38
- column-gap: calc(var(--spacing, .25rem) * 1);
39
- padding-right: calc(var(--spacing, .25rem) * 2);
40
- grid-template: "label input icon" 2rem
41
- / 8fr 20fr 1.5rem;
42
- }
43
-
44
- ._one-label-two-input_yadvv_44 {
45
- column-gap: calc(var(--spacing, .25rem) * 2);
46
- padding-right: calc(var(--spacing, .25rem) * 4);
47
- grid-template: "label input-1 input-2" 2rem
48
- / 8fr 10fr 10fr;
49
- }
50
-
51
- ._one-icon-one-input_yadvv_51 {
52
- column-gap: calc(var(--spacing, .25rem) * 2);
53
- padding-right: calc(var(--spacing, .25rem) * 4);
54
- grid-template: ". label"
55
- "icon input" minmax(2rem, auto)
56
- / 1.5rem 1fr;
57
- }
58
-
59
- ._one-input-one-icon_yadvv_59 {
60
- column-gap: calc(var(--spacing, .25rem) * 2);
61
- grid-template: "label label"
62
- "input icon" minmax(2rem, auto)
63
- / 1fr 1.5rem;
64
- }
65
-
66
- ._one-input-two-icon_yadvv_66 {
67
- grid-template: "label . . . ."
68
- "input . icon-1 . icon-2" minmax(2rem, auto)
69
- / 1fr .5rem 1.5rem .25rem 1.5rem;
70
- }
71
-
72
- ._two-input-two-icon_yadvv_72 {
73
- grid-template: "label-1 label-1 label-2 label-2 . . ."
74
- "input-1 . input-2 . icon-1 . icon-2" minmax(2rem, auto)
75
- / minmax(76px, 1fr) .5rem 1fr .5rem 1.5rem .25rem 1.5rem;
76
- }
77
-
78
- ._two-input-one-icon_yadvv_78 {
79
- column-gap: calc(var(--spacing, .25rem) * 2);
80
- grid-template: "label-1 label-2 label-2"
81
- "input-1 input-2 icon" minmax(2rem, auto)
82
- / 1fr 1fr 1.5rem;
83
- }
84
-
85
- ._one-icon-one-input-one-icon_yadvv_85 {
86
- grid-template: "label label label label label"
87
- "icon-1 . input . icon-2" minmax(2rem, auto)
88
- / 1.5rem .5rem 1fr .5rem 1.5rem;
89
- }
90
-
91
- ._one-icon-one-input-two-icon_yadvv_91 {
92
- grid-template: "label label label label label label label"
93
- "icon-1 . input . icon-2 . icon-3" minmax(2rem, auto)
94
- / 1.5rem .5rem 1fr .5rem 1.5rem .25rem 1.5rem;
95
- }
96
-
97
- ._two-input-one-icon-double-row_yadvv_97 {
98
- column-gap: calc(var(--spacing, .25rem) * 2);
99
- grid-template: "label-1 label-2 ."
100
- "input-1 input-3 icon-1" 2rem
101
- "input-2 input-3 icon-2" 2rem
102
- / 1fr 1fr 1.5rem;
103
- }
@@ -1,23 +0,0 @@
1
- import './style.module.css';const label = "_label_yadvv_2";
2
- const single = "_single_yadvv_14";
3
- const s = {
4
- label,
5
- single,
6
- "two-columns": "_two-columns_yadvv_22",
7
- "one-label-one-input": "_one-label-one-input_yadvv_30",
8
- "one-label-one-input-one-icon": "_one-label-one-input-one-icon_yadvv_37",
9
- "one-label-two-input": "_one-label-two-input_yadvv_44",
10
- "one-icon-one-input": "_one-icon-one-input_yadvv_51",
11
- "one-input-one-icon": "_one-input-one-icon_yadvv_59",
12
- "one-input-two-icon": "_one-input-two-icon_yadvv_66",
13
- "two-input-two-icon": "_two-input-two-icon_yadvv_72",
14
- "two-input-one-icon": "_two-input-one-icon_yadvv_78",
15
- "one-icon-one-input-one-icon": "_one-icon-one-input-one-icon_yadvv_85",
16
- "one-icon-one-input-two-icon": "_one-icon-one-input-two-icon_yadvv_91",
17
- "two-input-one-icon-double-row": "_two-input-one-icon-double-row_yadvv_97"
18
- };
19
- export {
20
- s as default,
21
- label,
22
- single
23
- };
@@ -1,18 +0,0 @@
1
- ._skeleton_76sc4_1 {
2
- transition: all 0.2s ease-in-out !important;
3
- outline: none !important;
4
- box-shadow: none !important;
5
- border-color: transparent !important;
6
- border-radius: var(--radius-md);
7
- background-color: var(--color-secondary-background) !important;
8
- resize: none !important;
9
- pointer-events: none !important;
10
- color: transparent !important;
11
- &::placeholder,
12
- &:placeholder-shown {
13
- color: transparent !important;
14
- }
15
- & * {
16
- visibility: hidden !important;
17
- }
18
- }
@@ -1,8 +0,0 @@
1
- import './style.module.css';const skeleton = "_skeleton_76sc4_1";
2
- const s = {
3
- skeleton
4
- };
5
- export {
6
- s as default,
7
- skeleton
8
- };
@@ -1,31 +0,0 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
- @layer properties {
3
- @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
- *, :before, :after, ::backdrop {
5
- --tw-border-style: solid;
6
- }
7
- }
8
- }
9
-
10
- ._textField_u6mdl_10 {
11
- grid-template-columns: auto 1fr auto;
12
- grid-template-areas: "prefix input suffix";
13
- }
14
-
15
- ._textField_u6mdl_10:before {
16
- pointer-events: none;
17
- z-index: 2;
18
- border-style: var(--tw-border-style);
19
- height: 100%;
20
- transform-style: preserve-3d;
21
- border-radius: inherit;
22
- content: "";
23
- border-width: 1px;
24
- grid-area: 1 / 1 / 2 / 4;
25
- }
26
-
27
- @property --tw-border-style {
28
- syntax: "*";
29
- inherits: false;
30
- initial-value: solid;
31
- }
@@ -1,8 +0,0 @@
1
- import './style.module.css';const textField = "_textField_u6mdl_10";
2
- const s = {
3
- textField
4
- };
5
- export {
6
- s as default,
7
- textField
8
- };