@syscore/ui-library 1.7.7 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,7 +26,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
26
26
 
27
27
  <input
28
28
  type={type}
29
- className="input"
29
+ className="well-input "
30
30
  ref={ref}
31
31
  disabled={isDisabled}
32
32
  readOnly={isReadOnly}
@@ -13,10 +13,10 @@ const Label = React.forwardRef<
13
13
  >(({ className, children, ...props }, ref) => (
14
14
  <LabelPrimitive.Root
15
15
  ref={ref}
16
- className={cn(labelVariants(), className)}
16
+ className={cn(labelVariants(), "overline-medium", className)}
17
17
  {...props}
18
18
  >
19
- <span className="overline-medium">{children}</span>
19
+ {children}
20
20
  </LabelPrimitive.Root>
21
21
  ));
22
22
  Label.displayName = LabelPrimitive.Root.displayName;
@@ -14,7 +14,7 @@ export interface TagProps
14
14
 
15
15
  const getStatusClass = (
16
16
  status: TagStatus,
17
- variant: "light" | "dark" = "light"
17
+ variant: "light" | "dark" = "light",
18
18
  ) => {
19
19
  return `status-tag tag--${variant}-${status}`;
20
20
  };
@@ -30,7 +30,7 @@ export const Tag = React.forwardRef<HTMLButtonElement, TagProps>(
30
30
  onClick,
31
31
  ...props
32
32
  },
33
- ref
33
+ ref,
34
34
  ) => {
35
35
  // Status tag styling
36
36
  if (status) {
@@ -39,10 +39,10 @@ export const Tag = React.forwardRef<HTMLButtonElement, TagProps>(
39
39
  <button
40
40
  ref={ref}
41
41
  onClick={onClick}
42
- className={cn(statusClass, className)}
42
+ className={cn("overline-medium", statusClass, className)}
43
43
  {...props}
44
44
  >
45
- <span className="overline-medium">{children}</span>
45
+ {children}
46
46
  </button>
47
47
  );
48
48
  }
@@ -53,16 +53,16 @@ export const Tag = React.forwardRef<HTMLButtonElement, TagProps>(
53
53
  ref={ref}
54
54
  onClick={onClick}
55
55
  className={cn(
56
- "tag-general",
56
+ "tag-general body-small",
57
57
  active ? "tag-general--active" : "tag-general--inactive",
58
- className
58
+ className,
59
59
  )}
60
60
  {...props}
61
61
  >
62
- <span className="body-small font-semibold">{children}</span>
62
+ {children}
63
63
  </button>
64
64
  );
65
- }
65
+ },
66
66
  );
67
67
 
68
68
  Tag.displayName = "Tag";
@@ -3,26 +3,23 @@ import { cva, type VariantProps } from "class-variance-authority";
3
3
  import { cn } from "../../lib/utils";
4
4
  import { useSegmentedControl } from "../../hooks/use-segmented-control";
5
5
 
6
- const toggleVariants = cva(
7
- "toggle",
8
- {
9
- variants: {
10
- variant: {
11
- default: "toggle--default",
12
- outline: "toggle--outline",
13
- },
14
- size: {
15
- default: "toggle--size-default",
16
- sm: "toggle--size-sm",
17
- lg: "toggle--size-lg",
18
- },
6
+ const toggleVariants = cva("toggle", {
7
+ variants: {
8
+ variant: {
9
+ default: "toggle--default",
10
+ outline: "toggle--outline",
19
11
  },
20
- defaultVariants: {
21
- variant: "default",
22
- size: "default",
12
+ size: {
13
+ default: "toggle--size-default",
14
+ sm: "toggle--size-sm",
15
+ lg: "toggle--size-lg",
23
16
  },
24
17
  },
25
- );
18
+ defaultVariants: {
19
+ variant: "default",
20
+ size: "default",
21
+ },
22
+ });
26
23
 
27
24
  // Segmented Control Component
28
25
  export interface SegmentedControlProps<T extends string = string>
@@ -51,14 +48,13 @@ const SegmentedControlInner = React.forwardRef<
51
48
  return (
52
49
  <div ref={ref} className={cn("segmented-control", className)} {...props}>
53
50
  {options.map((option) => {
54
- const isReactElement = React.isValidElement(option.label);
55
51
  const isActive = selectedValue === option.value;
56
52
 
57
53
  return (
58
54
  <button
59
55
  key={option.value}
60
56
  className={cn(
61
- "segmented-control-button",
57
+ "segmented-control-button body-small",
62
58
  isActive
63
59
  ? "segmented-control-button--active"
64
60
  : "segmented-control-button--inactive",
@@ -67,11 +63,7 @@ const SegmentedControlInner = React.forwardRef<
67
63
  type="button"
68
64
  data-active={isActive}
69
65
  >
70
- {isReactElement ? (
71
- option.label
72
- ) : (
73
- <span className="body-small font-medium">{option.label}</span>
74
- )}
66
+ {option.label}
75
67
  </button>
76
68
  );
77
69
  })}
package/client/global.css CHANGED
@@ -1410,24 +1410,24 @@ body {
1410
1410
  color: hsl(var(--muted-foreground));
1411
1411
  }
1412
1412
 
1413
- .input {
1413
+ .well-input {
1414
1414
  flex: 1;
1415
1415
  width: 100%;
1416
1416
  background-color: transparent;
1417
1417
  outline: none;
1418
1418
  }
1419
1419
 
1420
- .input::placeholder {
1420
+ .well-input ::placeholder {
1421
1421
  color: var(--color-gray-500, #71747d);
1422
1422
  }
1423
1423
 
1424
- .input[type="file"] {
1424
+ .well-input [type="file"] {
1425
1425
  padding: 0;
1426
1426
  font-style: italic;
1427
1427
  color: hsl(var(--muted-foreground) / 0.7);
1428
1428
  }
1429
1429
 
1430
- .input[type="file"]::file-selector-button {
1430
+ .well-input [type="file"]::file-selector-button {
1431
1431
  margin-right: 0.75rem;
1432
1432
  height: 100%;
1433
1433
  border: 0;
@@ -1442,10 +1442,10 @@ body {
1442
1442
  color: var(--color-gray-800, #282a31);
1443
1443
  }
1444
1444
 
1445
- .input[type="search"]::-webkit-search-cancel-button,
1446
- .input[type="search"]::-webkit-search-decoration,
1447
- .input[type="search"]::-webkit-search-results-button,
1448
- .input[type="search"]::-webkit-search-results-decoration {
1445
+ .well-input [type="search"]::-webkit-search-cancel-button,
1446
+ .well-input [type="search"]::-webkit-search-decoration,
1447
+ .well-input [type="search"]::-webkit-search-results-button,
1448
+ .well-input [type="search"]::-webkit-search-results-decoration {
1449
1449
  appearance: none;
1450
1450
  }
1451
1451
 
@@ -1763,6 +1763,7 @@ body {
1763
1763
  .tag-general--active {
1764
1764
  background-color: var(--color-cyan-800, #0f748a);
1765
1765
  color: var(--color-white, #fff);
1766
+ font-weight: 600;
1766
1767
  }
1767
1768
 
1768
1769
  .tag-general--active:hover {
@@ -1772,11 +1773,11 @@ body {
1772
1773
  .tag-general--inactive {
1773
1774
  background-color: var(--color-blue-100, #eff5fb);
1774
1775
  color: var(--color-blue-700, #286495);
1776
+ font-weight: 500;
1775
1777
  }
1776
1778
 
1777
1779
  .tag-general--inactive:hover {
1778
- background-color: var(--color-cyan-800, #0f748a);
1779
- color: var(--color-white, #fff);
1780
+ background-color: var(--color-blue-200, #cbe0f1);
1780
1781
  }
1781
1782
 
1782
1783
  /* Toggle/Segmented Control Styles */
@@ -6625,7 +6626,6 @@ body {
6625
6626
  .body-large {
6626
6627
  font-size: 18px;
6627
6628
  font-style: normal;
6628
- font-weight: 400;
6629
6629
  line-height: 25.2px;
6630
6630
  }
6631
6631
 
@@ -6644,7 +6644,6 @@ body {
6644
6644
  .body-base {
6645
6645
  font-size: 16px;
6646
6646
  font-style: normal;
6647
- font-weight: 400;
6648
6647
  line-height: 22.4px;
6649
6648
  }
6650
6649
 
@@ -6663,7 +6662,6 @@ body {
6663
6662
  .body-small {
6664
6663
  font-size: 14px;
6665
6664
  font-style: normal;
6666
- font-weight: 400;
6667
6665
  line-height: 19.6px;
6668
6666
  }
6669
6667
 
@@ -4,3 +4,9 @@ import { twMerge } from "tailwind-merge";
4
4
  export function cn(...inputs: ClassValue[]) {
5
5
  return twMerge(clsx(inputs));
6
6
  }
7
+
8
+ /** Capitalize the first letter of a string */
9
+ export function capitalize(str: string): string {
10
+ if (!str) return str;
11
+ return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
12
+ }