@sarunyu/system-one 1.0.2 → 1.0.3

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/index.js CHANGED
@@ -3,63 +3,77 @@ import * as React from "react";
3
3
  import React__default, { forwardRef, useState, useCallback, useRef, useEffect, useMemo, useLayoutEffect } from "react";
4
4
  import { clsx } from "clsx";
5
5
  import { twMerge } from "tailwind-merge";
6
- import { Lock, CalendarBlank, MapPin, Users, Minus, MagnifyingGlass, X, Clock } from "@phosphor-icons/react";
6
+ import { Lock, CalendarBlank, MapPin, Users, Minus, CaretLeft, CaretRight, CaretDoubleLeft, CaretDoubleRight, CaretUp, CaretDown, Check, X, MagnifyingGlass, Circle, Clock } from "@phosphor-icons/react";
7
7
  import { DayPicker, useNavigation } from "react-day-picker";
8
8
  import * as Popover from "@radix-ui/react-popover";
9
- import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from "lucide-react";
10
9
  import { Drawer as Drawer$1 } from "vaul";
11
10
  function cn(...inputs) {
12
11
  return twMerge(clsx(inputs));
13
12
  }
14
13
  const labelIconSizeClass = {
15
- xs: "size-[13px]",
16
- sm: "size-[15px]",
17
- md: "size-[15px]",
18
- lg: "size-[16px]",
19
- xl: "size-[16px]"
14
+ xs: "h-4 w-4",
15
+ // 16px
16
+ sm: "h-4.5 w-4.5",
17
+ // ~18px
18
+ md: "h-4.5 w-4.5",
19
+ lg: "h-5 w-5",
20
+ // 20px
21
+ xl: "h-5 w-5"
20
22
  };
21
23
  const gapClass = {
22
- xs: "gap-[4px]",
23
- sm: "gap-[4px]",
24
- md: "gap-[4px]",
25
- lg: "gap-[4px]",
26
- xl: "gap-[4px]"
24
+ xs: "gap-0.5",
25
+ // 2px
26
+ sm: "gap-0.5",
27
+ md: "gap-0.5",
28
+ lg: "gap-1",
29
+ // 4px
30
+ xl: "gap-1"
27
31
  };
28
32
  const textSizeClass = {
29
- xs: "text-[12px] leading-[18px]",
30
- sm: "text-[14px] leading-[20px]",
31
- md: "text-[14px] leading-[20px]",
32
- lg: "text-[14px] leading-[20px]",
33
- xl: "text-[14px] leading-[20px]"
33
+ xs: "text-xs leading-4",
34
+ sm: "text-sm leading-5",
35
+ md: "text-sm leading-5",
36
+ lg: "text-sm leading-5",
37
+ xl: "text-sm leading-5"
34
38
  };
35
39
  const roundedLabelClass = {
36
- xs: "rounded-[4px]",
37
- sm: "rounded-[6px]",
38
- md: "rounded-[6px]",
39
- lg: "rounded-[8px]",
40
- xl: "rounded-[8px]"
40
+ xs: "rounded",
41
+ sm: "rounded-md",
42
+ md: "rounded-md",
43
+ lg: "rounded-lg",
44
+ xl: "rounded-lg"
41
45
  };
42
46
  function getPaddingClasses(size, hasLeft, hasRight) {
43
47
  const pyMap = {
44
- xs: "py-[4px]",
45
- sm: "py-[4px]",
46
- md: "py-[6px]",
47
- lg: "py-[8px]",
48
- xl: "py-[10px]"
48
+ xs: "py-1",
49
+ // 4px
50
+ sm: "py-1",
51
+ // 4px
52
+ md: "py-1.5",
53
+ // 6px
54
+ lg: "py-2",
55
+ // 8px
56
+ xl: "py-2.5"
57
+ // 10px
49
58
  };
50
59
  const pxMap = {
51
- xs: { l: "pl-[6px]", r: "pr-[6px]" },
52
- sm: { l: "pl-[8px]", r: "pr-[8px]" },
53
- md: { l: "pl-[10px]", r: "pr-[10px]" },
54
- lg: { l: "pl-[14px]", r: "pr-[14px]" },
55
- xl: { l: "pl-[16px]", r: "pr-[16px]" }
60
+ xs: { l: "pl-1.5", r: "pr-1.5" },
61
+ // 6px
62
+ sm: { l: "pl-2", r: "pr-2" },
63
+ // 8px
64
+ md: { l: "pl-2.5", r: "pr-2.5" },
65
+ // 10px
66
+ lg: { l: "pl-3.5", r: "pr-3.5" },
67
+ // 14px
68
+ xl: { l: "pl-4", r: "pr-4" }
69
+ // 16px
56
70
  };
57
71
  const reducedMap = {
58
- xs: { l: "pl-[6px]", r: "pr-[6px]" },
59
- sm: { l: "pl-[6px]", r: "pr-[6px]" },
60
- md: { l: "pl-[8px]", r: "pr-[8px]" },
61
- lg: { l: "pl-[10px]", r: "pr-[10px]" },
62
- xl: { l: "pl-[12px]", r: "pr-[12px]" }
72
+ xs: { l: "pl-1.5", r: "pr-1.5" },
73
+ sm: { l: "pl-1.5", r: "pr-1.5" },
74
+ md: { l: "pl-2", r: "pr-2" },
75
+ lg: { l: "pl-2.5", r: "pr-2.5" },
76
+ xl: { l: "pl-3", r: "pr-3" }
63
77
  };
64
78
  return [
65
79
  hasLeft ? reducedMap[size].l : pxMap[size].l,
@@ -68,11 +82,11 @@ function getPaddingClasses(size, hasLeft, hasRight) {
68
82
  ];
69
83
  }
70
84
  const iconSizeSpec = {
71
- "icon-xs": { btn: "size-[26px]", icon: 16, rounded: "rounded-[4px]" },
72
- "icon-sm": { btn: "size-[28px]", icon: 18, rounded: "rounded-[6px]" },
73
- "icon-md": { btn: "size-[32px]", icon: 18, rounded: "rounded-[6px]" },
74
- "icon-lg": { btn: "size-[36px]", icon: 20, rounded: "rounded-[8px]" },
75
- "icon-xl": { btn: "size-[40px]", icon: 20, rounded: "rounded-[8px]" }
85
+ "icon-xs": { btn: "h-6 w-6", icon: 16, rounded: "rounded" },
86
+ "icon-sm": { btn: "h-7 w-7", icon: 18, rounded: "rounded-md" },
87
+ "icon-md": { btn: "h-8 w-8", icon: 18, rounded: "rounded-md" },
88
+ "icon-lg": { btn: "h-9 w-9", icon: 20, rounded: "rounded-lg" },
89
+ "icon-xl": { btn: "h-10 w-10", icon: 20, rounded: "rounded-lg" }
76
90
  };
77
91
  function getVariantClasses(variant, isDisabled) {
78
92
  if (isDisabled) {
@@ -81,14 +95,14 @@ function getVariantClasses(variant, isDisabled) {
81
95
  return "bg-disabled-bg text-disabled cursor-not-allowed";
82
96
  }
83
97
  if (variant === "outline")
84
- return "bg-white text-primary-action border border-border hover:bg-hover-bg active:bg-disabled-bg";
98
+ return "bg-background text-primary-action border border-border hover:bg-hover-bg active:bg-disabled-bg";
85
99
  if (variant === "plain")
86
100
  return "bg-transparent text-primary-action hover:bg-hover-bg active:bg-disabled-bg";
87
101
  if (variant === "outline-black")
88
- return "bg-white text-foreground border border-border hover:bg-hover-bg";
102
+ return "bg-background text-foreground border border-border hover:bg-hover-bg";
89
103
  if (variant === "plain-black")
90
104
  return "bg-transparent text-foreground hover:bg-hover-bg";
91
- return "bg-primary-action text-white hover:bg-primary-action-hover active:bg-primary-action-active";
105
+ return "bg-primary-action text-on-primary-action hover:bg-primary-action-hover active:bg-primary-action-active";
92
106
  }
93
107
  const Button = forwardRef(function Button2({
94
108
  size = "md",
@@ -124,7 +138,7 @@ const Button = forwardRef(function Button2({
124
138
  } : onPointerLeave;
125
139
  const variantClasses = getVariantClasses(variant, isDisabled);
126
140
  const cursorClass = isDisabled ? "cursor-not-allowed" : "cursor-pointer";
127
- const baseClasses = "inline-flex items-center justify-center font-semibold whitespace-nowrap transition-colors duration-150 select-none";
141
+ const baseClasses = "inline-flex items-center justify-center font-medium whitespace-nowrap transition-colors duration-150 select-none";
128
142
  if (isIconOnly) {
129
143
  const spec = iconSizeSpec[size];
130
144
  return /* @__PURE__ */ jsx(
@@ -258,8 +272,8 @@ const Card = forwardRef(function Card2({
258
272
  className
259
273
  }, ref) {
260
274
  const widthClass = variant === "desktop" ? "w-[308px]" : variant === "tablet" ? "w-[224px]" : "w-[163px]";
261
- const padding = variant === "desktop" ? "p-[16px]" : variant === "tablet" ? "p-[12px]" : "p-[10px]";
262
- const titleGap = variant === "desktop" ? "gap-[6px]" : "gap-[4px]";
275
+ const padding = variant === "desktop" ? "p-4" : variant === "tablet" ? "p-3" : "p-2.5";
276
+ const titleGap = variant === "desktop" ? "gap-1.5" : "gap-1";
263
277
  const bannerClass = variant === "desktop" ? "h-[173px]" : "aspect-video w-full";
264
278
  const tag = tagConfig[tagStatus];
265
279
  const bannerSrc = image ?? imgBanner;
@@ -269,7 +283,7 @@ const Card = forwardRef(function Card2({
269
283
  ref,
270
284
  className: cn(
271
285
  "flex min-h-[120px] flex-col items-start overflow-clip rounded-[8px]",
272
- "shadow-[0px_0px_2px_0px_rgba(102,102,102,0.16),0px_4px_8px_0px_rgba(102,102,102,0.12)]",
286
+ "shadow-card",
273
287
  widthClass,
274
288
  className
275
289
  ),
@@ -303,49 +317,49 @@ const Card = forwardRef(function Card2({
303
317
  }
304
318
  )
305
319
  ] }),
306
- /* @__PURE__ */ jsx("div", { className: cn("w-full shrink-0 bg-white", padding), children: /* @__PURE__ */ jsxs("div", { className: cn("flex w-full flex-col items-start", titleGap), children: [
307
- /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-start gap-[4px]", children: [
320
+ /* @__PURE__ */ jsx("div", { className: cn("w-full shrink-0 bg-card", padding), children: /* @__PURE__ */ jsxs("div", { className: cn("flex w-full flex-col items-start", titleGap), children: [
321
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-start gap-1", children: [
308
322
  /* @__PURE__ */ jsx(
309
323
  "p",
310
324
  {
311
325
  className: cn(
312
- "line-clamp-2 w-full overflow-hidden text-ellipsis text-[14px] leading-[20px] text-foreground"
326
+ "line-clamp-2 w-full overflow-hidden text-ellipsis text-sm leading-5 text-foreground"
313
327
  ),
314
328
  children: title
315
329
  }
316
330
  ),
317
- /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-[8px]", children: [
318
- /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] shrink-0 items-center gap-[4px]", children: [
331
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-2", children: [
332
+ /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] shrink-0 items-center gap-1", children: [
319
333
  /* @__PURE__ */ jsx(CalendarIcon, {}),
320
- /* @__PURE__ */ jsx("p", { className: "whitespace-nowrap text-[12px] leading-[16px] text-accent-orange", children: date })
334
+ /* @__PURE__ */ jsx("p", { className: "whitespace-nowrap text-xs leading-4 text-accent-orange", children: date })
321
335
  ] }),
322
336
  /* @__PURE__ */ jsx("div", { className: "h-[14px] w-px shrink-0 bg-border" }),
323
337
  /* @__PURE__ */ jsx(
324
338
  "p",
325
339
  {
326
340
  className: cn(
327
- "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-[12px] leading-[16px] text-subtle-text"
341
+ "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-xs leading-4 text-subtle-text"
328
342
  ),
329
343
  children: time
330
344
  }
331
345
  )
332
346
  ] }),
333
- showLocation && /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] w-full items-center gap-[4px]", children: [
347
+ showLocation && /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] w-full items-center gap-1", children: [
334
348
  /* @__PURE__ */ jsx(LocationIcon, {}),
335
349
  /* @__PURE__ */ jsx(
336
350
  "p",
337
351
  {
338
352
  className: cn(
339
- "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-[12px] leading-[16px] text-subtle-text"
353
+ "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-xs leading-4 text-subtle-text"
340
354
  ),
341
355
  children: location
342
356
  }
343
357
  )
344
358
  ] }),
345
- showAudience && /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] w-full items-center gap-[4px]", children: [
359
+ showAudience && /* @__PURE__ */ jsxs("div", { className: "flex h-[22px] w-full items-center gap-1", children: [
346
360
  /* @__PURE__ */ jsx(AudienceIcon, {}),
347
- /* @__PURE__ */ jsx("p", { className: "shrink-0 whitespace-nowrap text-[12px] leading-[16px] text-subtle-text", children: "ผู้เข้าร่วม" }),
348
- /* @__PURE__ */ jsx("p", { className: "shrink-0 whitespace-nowrap text-[12px] leading-[16px] text-primary-action", children: count })
361
+ /* @__PURE__ */ jsx("p", { className: "shrink-0 whitespace-nowrap text-xs leading-4 text-subtle-text", children: "ผู้เข้าร่วม" }),
362
+ /* @__PURE__ */ jsx("p", { className: "shrink-0 whitespace-nowrap text-xs leading-4 text-primary-action", children: count })
349
363
  ] })
350
364
  ] }),
351
365
  /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-start", children: /* @__PURE__ */ jsx(
@@ -562,7 +576,7 @@ function CustomCaption({
562
576
  type: "button",
563
577
  className: NAV_BTN_CLASS,
564
578
  onClick: () => setYearRangeStart((s) => s - 12),
565
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16, className: "text-primary-action" })
579
+ children: /* @__PURE__ */ jsx(CaretLeft, { size: 16, className: "text-primary-action" })
566
580
  }
567
581
  );
568
582
  rightNav = /* @__PURE__ */ jsx(
@@ -571,7 +585,7 @@ function CustomCaption({
571
585
  type: "button",
572
586
  className: NAV_BTN_CLASS,
573
587
  onClick: () => setYearRangeStart((s) => s + 12),
574
- children: /* @__PURE__ */ jsx(ChevronRight, { size: 16, className: "text-primary-action" })
588
+ children: /* @__PURE__ */ jsx(CaretRight, { size: 16, className: "text-primary-action" })
575
589
  }
576
590
  );
577
591
  } else if (view === "months") {
@@ -581,7 +595,7 @@ function CustomCaption({
581
595
  type: "button",
582
596
  className: NAV_BTN_CLASS,
583
597
  onClick: () => setPickerYear((y) => y - 1),
584
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16, className: "text-primary-action" })
598
+ children: /* @__PURE__ */ jsx(CaretLeft, { size: 16, className: "text-primary-action" })
585
599
  }
586
600
  );
587
601
  rightNav = /* @__PURE__ */ jsx(
@@ -590,7 +604,7 @@ function CustomCaption({
590
604
  type: "button",
591
605
  className: NAV_BTN_CLASS,
592
606
  onClick: () => setPickerYear((y) => y + 1),
593
- children: /* @__PURE__ */ jsx(ChevronRight, { size: 16, className: "text-primary-action" })
607
+ children: /* @__PURE__ */ jsx(CaretRight, { size: 16, className: "text-primary-action" })
594
608
  }
595
609
  );
596
610
  } else if (isDrawerRange) {
@@ -601,7 +615,7 @@ function CustomCaption({
601
615
  type: "button",
602
616
  className: NAV_BTN_CLASS,
603
617
  onClick: handlePrevYear,
604
- children: /* @__PURE__ */ jsx(ChevronsLeft, { size: 16, className: "text-primary-action" })
618
+ children: /* @__PURE__ */ jsx(CaretDoubleLeft, { size: 16, className: "text-primary-action" })
605
619
  }
606
620
  ),
607
621
  /* @__PURE__ */ jsx(
@@ -610,7 +624,7 @@ function CustomCaption({
610
624
  type: "button",
611
625
  className: NAV_BTN_CLASS,
612
626
  onClick: () => previousMonth && goToMonth(previousMonth),
613
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16, className: "text-primary-action" })
627
+ children: /* @__PURE__ */ jsx(CaretLeft, { size: 16, className: "text-primary-action" })
614
628
  }
615
629
  )
616
630
  ] });
@@ -621,7 +635,7 @@ function CustomCaption({
621
635
  type: "button",
622
636
  className: NAV_BTN_CLASS,
623
637
  onClick: () => nextMonth && goToMonth(nextMonth),
624
- children: /* @__PURE__ */ jsx(ChevronRight, { size: 16, className: "text-primary-action" })
638
+ children: /* @__PURE__ */ jsx(CaretRight, { size: 16, className: "text-primary-action" })
625
639
  }
626
640
  ),
627
641
  /* @__PURE__ */ jsx(
@@ -630,7 +644,7 @@ function CustomCaption({
630
644
  type: "button",
631
645
  className: NAV_BTN_CLASS,
632
646
  onClick: handleNextYear,
633
- children: /* @__PURE__ */ jsx(ChevronsRight, { size: 16, className: "text-primary-action" })
647
+ children: /* @__PURE__ */ jsx(CaretDoubleRight, { size: 16, className: "text-primary-action" })
634
648
  }
635
649
  )
636
650
  ] });
@@ -644,7 +658,7 @@ function CustomCaption({
644
658
  className: NAV_BTN_CLASS,
645
659
  onClick: handlePrevYear,
646
660
  children: /* @__PURE__ */ jsx(
647
- ChevronsLeft,
661
+ CaretDoubleLeft,
648
662
  {
649
663
  size: 16,
650
664
  className: "text-primary-action"
@@ -658,7 +672,7 @@ function CustomCaption({
658
672
  type: "button",
659
673
  className: NAV_BTN_CLASS,
660
674
  onClick: () => previousMonth && goToMonth(previousMonth),
661
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16, className: "text-primary-action" })
675
+ children: /* @__PURE__ */ jsx(CaretLeft, { size: 16, className: "text-primary-action" })
662
676
  }
663
677
  )
664
678
  ] });
@@ -672,7 +686,7 @@ function CustomCaption({
672
686
  className: NAV_BTN_CLASS,
673
687
  onClick: () => nextMonth && goToMonth(nextMonth),
674
688
  children: /* @__PURE__ */ jsx(
675
- ChevronRight,
689
+ CaretRight,
676
690
  {
677
691
  size: 16,
678
692
  className: "text-primary-action"
@@ -687,7 +701,7 @@ function CustomCaption({
687
701
  className: NAV_BTN_CLASS,
688
702
  onClick: handleNextYear,
689
703
  children: /* @__PURE__ */ jsx(
690
- ChevronsRight,
704
+ CaretDoubleRight,
691
705
  {
692
706
  size: 16,
693
707
  className: "text-primary-action"
@@ -701,7 +715,7 @@ function CustomCaption({
701
715
  const now = /* @__PURE__ */ new Date();
702
716
  const gridBtnClass = (active, isToday, isItemDisabled = false) => cn(
703
717
  "py-[10px] text-[13px] rounded-[6px] border-0 outline-none transition-colors",
704
- isItemDisabled ? "bg-disabled-bg text-disabled cursor-not-allowed" : active ? "bg-primary-action text-white cursor-pointer" : isToday ? "bg-primary-action-muted text-primary-action cursor-pointer" : "bg-transparent text-foreground hover:bg-disabled-bg cursor-pointer"
718
+ isItemDisabled ? "bg-disabled-bg text-disabled cursor-not-allowed" : active ? "bg-primary-action text-on-primary-action cursor-pointer" : isToday ? "bg-primary-action-muted text-primary-action cursor-pointer" : "bg-transparent text-foreground hover:bg-disabled-bg cursor-pointer"
705
719
  );
706
720
  return /* @__PURE__ */ jsxs(Fragment, { children: [
707
721
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between pt-1 mb-2", children: [
@@ -720,7 +734,7 @@ function CustomCaption({
720
734
  view === "months" && /* @__PURE__ */ jsx(
721
735
  "div",
722
736
  {
723
- className: "absolute left-0 right-0 z-10 bg-white grid grid-cols-3 gap-1 p-2 content-center",
737
+ className: "absolute left-0 right-0 z-10 bg-background grid grid-cols-3 gap-1 p-2 content-center",
724
738
  style: { top: "42px", bottom: "0" },
725
739
  children: THAI_MONTHS_SHORT.map((name, i) => {
726
740
  const isCurrent = pickerYear === displayMonth.getFullYear() && i === displayMonth.getMonth();
@@ -744,7 +758,7 @@ function CustomCaption({
744
758
  view === "years" && /* @__PURE__ */ jsx(
745
759
  "div",
746
760
  {
747
- className: "absolute left-0 right-0 z-10 bg-white grid grid-cols-3 gap-1 p-2 content-center",
761
+ className: "absolute left-0 right-0 z-10 bg-background grid grid-cols-3 gap-1 p-2 content-center",
748
762
  style: { top: "42px", bottom: "0" },
749
763
  children: Array.from({ length: 12 }, (_, i) => {
750
764
  const year = yearRangeStart + i;
@@ -809,9 +823,9 @@ const DAY_PICKER_CLASSES = {
809
823
  "hover:bg-disabled-bg transition-colors duration-100",
810
824
  "outline-none aria-selected:opacity-100 p-0"
811
825
  ),
812
- day_range_start: "day-range-start !bg-primary-action !text-white !rounded-l-[6px] !rounded-r-none",
813
- day_range_end: "day-range-end !bg-primary-action !text-white !rounded-r-[6px] !rounded-l-none",
814
- day_selected: "!bg-primary-action text-white hover:!bg-primary-action focus:!bg-primary-action rounded-[6px]",
826
+ day_range_start: "day-range-start !bg-primary-action !text-on-primary-action !rounded-l-[6px] !rounded-r-none",
827
+ day_range_end: "day-range-end !bg-primary-action !text-on-primary-action !rounded-r-[6px] !rounded-l-none",
828
+ day_selected: "!bg-primary-action text-on-primary-action hover:!bg-primary-action focus:!bg-primary-action rounded-[6px]",
815
829
  day_today: "[&:not([aria-selected=true])]:!bg-primary-action-light [&:not([aria-selected=true])]:text-foreground rounded-[6px]",
816
830
  day_outside: "day-outside text-disabled opacity-50 aria-selected:bg-transparent aria-selected:opacity-30",
817
831
  day_disabled: "text-disabled opacity-50 cursor-not-allowed",
@@ -1112,7 +1126,7 @@ const DateInput = forwardRef(
1112
1126
  const isError = state === "error";
1113
1127
  const isFocus = state === "focus";
1114
1128
  const isFilled = mode === "single" ? Boolean(currentDate) : Boolean(currentRange == null ? void 0 : currentRange.from);
1115
- const bgClass = isDisabled ? "bg-disabled-bg" : "bg-white";
1129
+ const bgClass = isDisabled ? "bg-disabled-bg" : "bg-background";
1116
1130
  const labelColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
1117
1131
  const valueColor = isDisabled ? "var(--disabled)" : "var(--foreground)";
1118
1132
  const iconColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
@@ -1176,30 +1190,37 @@ const DateInput = forwardRef(
1176
1190
  const valueRow = mode === "single" && currentDate ? /* @__PURE__ */ jsx(
1177
1191
  "p",
1178
1192
  {
1179
- className: "leading-[20px] not-italic relative shrink-0 text-[16px] w-full",
1193
+ className: "leading-[20px] not-italic relative text-[16px] w-full min-w-0 overflow-hidden text-ellipsis whitespace-nowrap",
1180
1194
  style: { color: valueColor },
1181
1195
  children: formatThaiDate(currentDate)
1182
1196
  }
1183
- ) : mode === "range" && (currentRange == null ? void 0 : currentRange.from) ? /* @__PURE__ */ jsxs("div", { className: "flex gap-[8px] items-center relative shrink-0 w-full", children: [
1197
+ ) : mode === "range" && (currentRange == null ? void 0 : currentRange.from) ? /* @__PURE__ */ jsxs("div", { className: "flex gap-[8px] items-center relative w-full min-w-0", children: [
1184
1198
  /* @__PURE__ */ jsx(
1185
1199
  "p",
1186
1200
  {
1187
- className: "leading-[20px] not-italic relative shrink-0 text-[16px] whitespace-nowrap",
1201
+ className: "leading-[20px] not-italic relative text-[16px] min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
1188
1202
  style: { color: valueColor },
1189
1203
  children: formatThaiDate(currentRange.from)
1190
1204
  }
1191
1205
  ),
1192
- /* @__PURE__ */ jsx(Minus, { size: 20, weight: "bold", color: minusColor }),
1206
+ /* @__PURE__ */ jsx(
1207
+ Minus,
1208
+ {
1209
+ size: 20,
1210
+ color: minusColor,
1211
+ className: "shrink-0"
1212
+ }
1213
+ ),
1193
1214
  /* @__PURE__ */ jsx(
1194
1215
  "p",
1195
1216
  {
1196
- className: "leading-[20px] not-italic relative shrink-0 text-[16px] whitespace-nowrap",
1217
+ className: "leading-[20px] not-italic relative text-[16px] min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
1197
1218
  style: { color: valueColor },
1198
1219
  children: currentRange.to ? formatThaiDate(currentRange.to) : "..."
1199
1220
  }
1200
1221
  )
1201
1222
  ] }) : null;
1202
- return /* @__PURE__ */ jsxs("div", { className: "content-stretch flex flex-1 flex-col items-center justify-center min-h-px min-w-px relative", children: [
1223
+ return /* @__PURE__ */ jsxs("div", { className: "content-stretch flex flex-1 flex-col items-center justify-center min-h-px min-w-0 overflow-hidden relative w-full", children: [
1203
1224
  floatingLabel,
1204
1225
  valueRow
1205
1226
  ] });
@@ -1259,13 +1280,13 @@ const DateInput = forwardRef(
1259
1280
  )
1260
1281
  ] });
1261
1282
  const triggerBaseClasses = cn(
1262
- "relative flex gap-[8px] items-center rounded-[8px]",
1283
+ "relative flex gap-2 items-center rounded-lg min-w-0",
1263
1284
  bgClass,
1264
- "px-[14px]",
1265
- isFilled ? "py-[6px]" : "py-[12px]",
1285
+ "px-3.5",
1286
+ isFilled ? "py-1.5" : "py-3",
1266
1287
  "w-full"
1267
1288
  );
1268
- const belowMessage = showBelow && /* @__PURE__ */ jsx("div", { className: "flex items-start px-[4px] text-[12px] leading-[16px]", children: /* @__PURE__ */ jsx(
1289
+ const belowMessage = showBelow && /* @__PURE__ */ jsx("div", { className: "flex items-start px-1 text-xs leading-4", children: /* @__PURE__ */ jsx(
1269
1290
  "span",
1270
1291
  {
1271
1292
  className: "flex-1 min-w-0",
@@ -1350,7 +1371,10 @@ const DateInput = forwardRef(
1350
1371
  {
1351
1372
  type: "button",
1352
1373
  disabled: isDisabled,
1353
- className: cn(triggerBaseClasses, "text-left cursor-pointer disabled:cursor-default"),
1374
+ className: cn(
1375
+ triggerBaseClasses,
1376
+ "text-left cursor-pointer disabled:cursor-default"
1377
+ ),
1354
1378
  children: triggerInner
1355
1379
  }
1356
1380
  );
@@ -1391,9 +1415,9 @@ const DateInput = forwardRef(
1391
1415
  {
1392
1416
  align: "start",
1393
1417
  sideOffset: 4,
1394
- className: "z-50 rounded-[8px] bg-white p-3 outline-none",
1418
+ className: "z-50 rounded-[8px] bg-popover p-3 outline-none text-popover-foreground",
1395
1419
  style: {
1396
- boxShadow: "0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1)",
1420
+ boxShadow: "var(--elevation-popover)",
1397
1421
  border: "1px solid var(--border)"
1398
1422
  },
1399
1423
  onOpenAutoFocus: (e) => e.preventDefault(),
@@ -1413,12 +1437,6 @@ const DateInput = forwardRef(
1413
1437
  }
1414
1438
  );
1415
1439
  DateInput.displayName = "DateInput";
1416
- function ChevronDownIcon$1({ className }) {
1417
- return /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", className, children: /* @__PURE__ */ jsx("path", { d: "M7 9L11 13L15 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1418
- }
1419
- function ChevronUpIcon$1({ className }) {
1420
- return /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", className, children: /* @__PURE__ */ jsx("path", { d: "M7 13L11 9L15 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1421
- }
1422
1440
  const Dropdown = forwardRef(
1423
1441
  ({
1424
1442
  placeholder = "Text label",
@@ -1446,7 +1464,7 @@ const Dropdown = forwardRef(
1446
1464
  const state = forceState ?? (open ? "focus" : "default");
1447
1465
  const isError = state === "error";
1448
1466
  const isFocus = state === "focus";
1449
- const bg = isDisabled ? "bg-disabled-bg" : "bg-white";
1467
+ const bg = isDisabled ? "bg-disabled-bg" : "bg-background";
1450
1468
  const labelColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
1451
1469
  const filledColor = isDisabled ? "var(--disabled)" : "var(--foreground)";
1452
1470
  const caretClassName = isDisabled ? "text-disabled" : "text-muted-foreground";
@@ -1507,17 +1525,17 @@ const Dropdown = forwardRef(
1507
1525
  if (typeof ref === "function") ref(node);
1508
1526
  else if (ref) ref.current = node;
1509
1527
  },
1510
- className: cn("flex flex-col gap-[4px] w-full", className),
1528
+ className: cn("flex flex-col gap-1 w-full", className),
1511
1529
  children: [
1512
- label && /* @__PURE__ */ jsx("div", { className: "relative shrink-0 w-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-start px-[4px] w-full", children: /* @__PURE__ */ jsx("p", { className: "leading-[20px] not-italic relative shrink-0 text-foreground text-[14px] font-bold whitespace-nowrap", children: label }) }) }),
1530
+ label && /* @__PURE__ */ jsx("div", { className: "relative shrink-0 w-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-start px-1 w-full", children: /* @__PURE__ */ jsx("p", { className: "leading-5 not-italic relative shrink-0 text-foreground text-sm font-bold whitespace-nowrap", children: label }) }) }),
1513
1531
  /* @__PURE__ */ jsxs(
1514
1532
  "div",
1515
1533
  {
1516
1534
  onClick: handleToggle,
1517
1535
  className: cn(
1518
- "relative flex gap-[8px] items-center rounded-[8px] px-[14px]",
1536
+ "relative flex gap-2 items-center rounded-lg px-3.5",
1519
1537
  bg,
1520
- hasExternalLabel ? "h-[38px]" : isFilled && !open ? "py-[6px]" : "p-[14px]",
1538
+ hasExternalLabel ? "h-[38px]" : isFilled && !open ? "py-1.5" : "p-3.5",
1521
1539
  !isDisabled && !forceState && "cursor-pointer"
1522
1540
  ),
1523
1541
  children: [
@@ -1542,7 +1560,7 @@ const Dropdown = forwardRef(
1542
1560
  onChange: (e) => setSearch(e.target.value),
1543
1561
  onKeyDown: handleInputKeyDown,
1544
1562
  placeholder: isFilled ? selectedLabel : placeholder + (required ? " *" : ""),
1545
- className: "flex-1 min-w-0 min-h-[1px] text-[14px] leading-[20px] not-italic bg-transparent outline-none border-none p-0 m-0 placeholder:text-disabled",
1563
+ className: "flex-1 min-w-0 min-h-[1px] text-sm leading-5 not-italic bg-transparent outline-none border-none p-0 m-0 placeholder:text-disabled",
1546
1564
  style: {
1547
1565
  color: filledColor,
1548
1566
  caretColor: "var(--caret-color)"
@@ -1593,7 +1611,7 @@ const Dropdown = forwardRef(
1593
1611
  onChange: (e) => setSearch(e.target.value),
1594
1612
  onKeyDown: handleInputKeyDown,
1595
1613
  placeholder: placeholder + (required ? " *" : ""),
1596
- className: "flex-1 min-w-0 min-h-[1px] text-[16px] leading-[20px] not-italic bg-transparent outline-none border-none p-0 m-0 placeholder:text-muted-foreground",
1614
+ className: "flex-1 min-w-0 min-h-[1px] text-base leading-5 not-italic bg-transparent outline-none border-none p-0 m-0 placeholder:text-muted-foreground",
1597
1615
  style: {
1598
1616
  color: "var(--foreground)",
1599
1617
  caretColor: "var(--caret-color)"
@@ -1609,7 +1627,7 @@ const Dropdown = forwardRef(
1609
1627
  /* @__PURE__ */ jsxs(
1610
1628
  "p",
1611
1629
  {
1612
- className: "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic text-[14px] overflow-hidden text-ellipsis whitespace-nowrap",
1630
+ className: "flex-1 min-w-0 min-h-[1px] leading-5 not-italic text-sm overflow-hidden text-ellipsis whitespace-nowrap",
1613
1631
  style: { color: filledColor },
1614
1632
  children: [
1615
1633
  selectedLabel,
@@ -1623,7 +1641,7 @@ const Dropdown = forwardRef(
1623
1641
  /* @__PURE__ */ jsxs(
1624
1642
  "p",
1625
1643
  {
1626
- className: "shrink-0 w-full leading-[16px] not-italic text-[12px]",
1644
+ className: "shrink-0 w-full leading-4 not-italic text-xs",
1627
1645
  style: { color: labelColor },
1628
1646
  children: [
1629
1647
  placeholder,
@@ -1634,7 +1652,7 @@ const Dropdown = forwardRef(
1634
1652
  /* @__PURE__ */ jsx(
1635
1653
  "p",
1636
1654
  {
1637
- className: "w-full leading-[20px] not-italic text-[14px] min-w-0 min-h-[1px]",
1655
+ className: "w-full leading-5 not-italic text-sm min-w-0 min-h-[1px]",
1638
1656
  style: { color: filledColor },
1639
1657
  children: selectedLabel
1640
1658
  }
@@ -1647,7 +1665,7 @@ const Dropdown = forwardRef(
1647
1665
  /* @__PURE__ */ jsx(
1648
1666
  "p",
1649
1667
  {
1650
- className: "leading-[20px] not-italic text-[16px] whitespace-nowrap",
1668
+ className: "leading-5 not-italic text-base whitespace-nowrap",
1651
1669
  style: { color: labelColor },
1652
1670
  children: placeholder
1653
1671
  }
@@ -1655,7 +1673,7 @@ const Dropdown = forwardRef(
1655
1673
  /* @__PURE__ */ jsx(
1656
1674
  "p",
1657
1675
  {
1658
- className: "leading-[16px] not-italic text-[12px] w-[7px]",
1676
+ className: "leading-4 not-italic text-xs w-[7px]",
1659
1677
  style: { color: isDisabled ? "var(--disabled)" : "var(--error-dark)" },
1660
1678
  children: "*"
1661
1679
  }
@@ -1663,13 +1681,13 @@ const Dropdown = forwardRef(
1663
1681
  ] }) : /* @__PURE__ */ jsx(
1664
1682
  "p",
1665
1683
  {
1666
- className: "flex-1 min-w-0 min-h-[1px] text-[16px] leading-[20px] not-italic overflow-hidden text-ellipsis whitespace-nowrap",
1684
+ className: "flex-1 min-w-0 min-h-[1px] text-base leading-5 not-italic overflow-hidden text-ellipsis whitespace-nowrap",
1667
1685
  style: { color: labelColor },
1668
1686
  children: placeholder
1669
1687
  }
1670
1688
  )
1671
1689
  ),
1672
- isFocus ? /* @__PURE__ */ jsx(ChevronUpIcon$1, { className: cn("shrink-0", caretClassName) }) : /* @__PURE__ */ jsx(ChevronDownIcon$1, { className: cn("shrink-0", caretClassName) })
1690
+ isFocus ? /* @__PURE__ */ jsx(CaretUp, { size: 22, className: cn("shrink-0", caretClassName) }) : /* @__PURE__ */ jsx(CaretDown, { size: 22, className: cn("shrink-0", caretClassName) })
1673
1691
  ]
1674
1692
  }
1675
1693
  ),
@@ -1677,11 +1695,11 @@ const Dropdown = forwardRef(
1677
1695
  "div",
1678
1696
  {
1679
1697
  className: cn(
1680
- "relative bg-white rounded-[8px] overflow-clip p-[8px] z-20 flex flex-col items-start",
1698
+ "relative bg-popover rounded-lg overflow-clip p-2 z-20 flex flex-col items-start text-popover-foreground",
1681
1699
  filteredOptions.length > 10 && "overflow-y-auto"
1682
1700
  ),
1683
1701
  style: {
1684
- boxShadow: "0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1)",
1702
+ boxShadow: "var(--elevation-popover)",
1685
1703
  ...filteredOptions.length > 10 ? { maxHeight: 10 * 48 + 16 } : {}
1686
1704
  },
1687
1705
  children: filteredOptions.length > 0 ? filteredOptions.map((opt) => /* @__PURE__ */ jsx(
@@ -1690,13 +1708,13 @@ const Dropdown = forwardRef(
1690
1708
  onClick: () => handleSelect(opt.value),
1691
1709
  className: cn(
1692
1710
  "w-full shrink-0 rounded-[4px] cursor-pointer transition-colors duration-100",
1693
- opt.value === currentValue ? "bg-primary-action-light" : "bg-white hover:bg-disabled-bg"
1711
+ opt.value === currentValue ? "bg-primary-action-light" : "bg-popover hover:bg-disabled-bg"
1694
1712
  ),
1695
- children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-[14px] relative w-full", children: /* @__PURE__ */ jsx(
1713
+ children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-3.5 relative w-full", children: /* @__PURE__ */ jsx(
1696
1714
  "p",
1697
1715
  {
1698
1716
  className: cn(
1699
- "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic overflow-hidden text-[14px] text-ellipsis whitespace-nowrap",
1717
+ "flex-1 min-w-0 min-h-[1px] leading-5 not-italic overflow-hidden text-sm text-ellipsis whitespace-nowrap",
1700
1718
  opt.value === currentValue ? "text-primary-action" : "text-foreground"
1701
1719
  ),
1702
1720
  children: opt.label
@@ -1704,7 +1722,7 @@ const Dropdown = forwardRef(
1704
1722
  ) }) })
1705
1723
  },
1706
1724
  opt.value
1707
- )) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-white", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-[14px] relative w-full", children: /* @__PURE__ */ jsx("p", { className: "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic text-[14px] text-disabled", children: "No results found" }) }) }) })
1725
+ )) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-popover", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-[14px] relative w-full", children: /* @__PURE__ */ jsx("p", { className: "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic text-[14px] text-disabled", children: "No results found" }) }) }) })
1708
1726
  }
1709
1727
  ),
1710
1728
  showBelow && /* @__PURE__ */ jsx("div", { className: "flex items-start px-[4px] text-[12px] leading-[16px]", children: /* @__PURE__ */ jsx("span", { className: "flex-1 min-w-0", style: { color: leftColor }, children: leftText }) })
@@ -1716,34 +1734,6 @@ const Dropdown = forwardRef(
1716
1734
  Dropdown.displayName = "Dropdown";
1717
1735
  const TAG_GAP = 4;
1718
1736
  const MAX_COMPONENT_WIDTH = 343;
1719
- function ChevronDownIcon({ className }) {
1720
- return /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", className, children: /* @__PURE__ */ jsx("path", { d: "M7 9L11 13L15 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1721
- }
1722
- function ChevronUpIcon({ className }) {
1723
- return /* @__PURE__ */ jsx("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", className, children: /* @__PURE__ */ jsx("path", { d: "M7 13L11 9L15 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
1724
- }
1725
- function XIcon({ color = "var(--muted-foreground)" }) {
1726
- return /* @__PURE__ */ jsx(
1727
- "svg",
1728
- {
1729
- width: "12",
1730
- height: "12",
1731
- viewBox: "0 0 12 12",
1732
- fill: "none",
1733
- className: "shrink-0",
1734
- children: /* @__PURE__ */ jsx(
1735
- "path",
1736
- {
1737
- d: "M9 3L3 9M3 3L9 9",
1738
- stroke: color,
1739
- strokeWidth: "1.5",
1740
- strokeLinecap: "round",
1741
- strokeLinejoin: "round"
1742
- }
1743
- )
1744
- }
1745
- );
1746
- }
1747
1737
  function RemovableTag({
1748
1738
  label,
1749
1739
  disabled,
@@ -1777,8 +1767,16 @@ function RemovableTag({
1777
1767
  e.stopPropagation();
1778
1768
  onRemove();
1779
1769
  },
1780
- className: "absolute right-[4px] top-1/2 -translate-y-1/2 flex items-center justify-center rounded-[2px] p-[1px] cursor-pointer opacity-0 group-hover:opacity-100 transition-all duration-150 bg-[#e5e7eb]",
1781
- children: /* @__PURE__ */ jsx(XIcon, { color: iconColor })
1770
+ className: "absolute right-[4px] top-1/2 -translate-y-1/2 flex items-center justify-center rounded-[2px] p-[1px] cursor-pointer opacity-0 group-hover:opacity-100 transition-all duration-150 bg-surface-clear-hover",
1771
+ children: /* @__PURE__ */ jsx(
1772
+ X,
1773
+ {
1774
+ size: 12,
1775
+ weight: "bold",
1776
+ color: iconColor,
1777
+ className: "shrink-0"
1778
+ }
1779
+ )
1782
1780
  }
1783
1781
  )
1784
1782
  ]
@@ -1811,7 +1809,7 @@ function OverflowBadge({
1811
1809
  count,
1812
1810
  disabled
1813
1811
  }) {
1814
- const bg = disabled ? "bg-[#fafafa]" : "bg-selected-bg";
1812
+ const bg = disabled ? "bg-surface-chip-disabled" : "bg-selected-bg";
1815
1813
  const textColor = disabled ? "var(--disabled)" : "var(--primary-action)";
1816
1814
  return /* @__PURE__ */ jsx(
1817
1815
  "div",
@@ -1834,28 +1832,6 @@ function OverflowBadge({
1834
1832
  }
1835
1833
  );
1836
1834
  }
1837
- function CheckIcon$1(props) {
1838
- return /* @__PURE__ */ jsx(
1839
- "svg",
1840
- {
1841
- width: "10",
1842
- height: "8",
1843
- viewBox: "0 0 10 8",
1844
- fill: "none",
1845
- ...props,
1846
- children: /* @__PURE__ */ jsx(
1847
- "path",
1848
- {
1849
- d: "M1 4L3.5 6.5L9 1",
1850
- stroke: "currentColor",
1851
- strokeWidth: "1.5",
1852
- strokeLinecap: "round",
1853
- strokeLinejoin: "round"
1854
- }
1855
- )
1856
- }
1857
- );
1858
- }
1859
1835
  function useChipLayout(selectedOptions, measureRef, containerRef) {
1860
1836
  const [layout, setLayout] = useState({
1861
1837
  visibleCount: selectedOptions.length,
@@ -1944,7 +1920,7 @@ const DropdownMultiple = forwardRef(
1944
1920
  const state = forceState ?? (open ? "focus" : "default");
1945
1921
  const isError = state === "error";
1946
1922
  const isFocus = state === "focus";
1947
- const bg = isDisabled ? "bg-disabled-bg" : "bg-white";
1923
+ const bg = isDisabled ? "bg-disabled-bg" : "bg-background";
1948
1924
  const labelColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
1949
1925
  const caretColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
1950
1926
  const borderInset = isFocus || isError ? "-1px" : "0px";
@@ -2026,7 +2002,7 @@ const DropdownMultiple = forwardRef(
2026
2002
  /* @__PURE__ */ jsx(
2027
2003
  "p",
2028
2004
  {
2029
- className: "shrink-0 leading-[16px] not-italic text-[12px]",
2005
+ className: "shrink-0 leading-4 not-italic text-xs",
2030
2006
  style: { color: labelColor },
2031
2007
  children: placeholder
2032
2008
  }
@@ -2044,7 +2020,7 @@ const DropdownMultiple = forwardRef(
2044
2020
  ] }) : /* @__PURE__ */ jsx(
2045
2021
  "p",
2046
2022
  {
2047
- className: "shrink-0 w-full leading-[16px] not-italic text-[12px]",
2023
+ className: "shrink-0 w-full leading-4 not-italic text-xs",
2048
2024
  style: { color: labelColor },
2049
2025
  children: placeholder
2050
2026
  }
@@ -2053,7 +2029,7 @@ const DropdownMultiple = forwardRef(
2053
2029
  /* @__PURE__ */ jsx(
2054
2030
  "p",
2055
2031
  {
2056
- className: "leading-[20px] not-italic text-[16px] whitespace-nowrap",
2032
+ className: "leading-5 not-italic text-base whitespace-nowrap",
2057
2033
  style: { color: labelColor },
2058
2034
  children: placeholder
2059
2035
  }
@@ -2061,7 +2037,7 @@ const DropdownMultiple = forwardRef(
2061
2037
  /* @__PURE__ */ jsx(
2062
2038
  "p",
2063
2039
  {
2064
- className: "leading-[16px] not-italic text-[12px] w-[7px]",
2040
+ className: "leading-4 not-italic text-xs w-[7px]",
2065
2041
  style: { color: isDisabled ? "var(--disabled)" : "var(--error-dark)" },
2066
2042
  children: "*"
2067
2043
  }
@@ -2069,7 +2045,7 @@ const DropdownMultiple = forwardRef(
2069
2045
  ] }) : /* @__PURE__ */ jsx(
2070
2046
  "p",
2071
2047
  {
2072
- className: "flex-1 min-w-0 min-h-[1px] text-[16px] leading-[20px] not-italic overflow-hidden text-ellipsis whitespace-nowrap py-[7px]",
2048
+ className: "flex-1 min-w-0 min-h-[1px] text-base leading-5 not-italic overflow-hidden text-ellipsis whitespace-nowrap py-[7px]",
2073
2049
  style: { color: labelColor },
2074
2050
  children: placeholder
2075
2051
  }
@@ -2079,7 +2055,7 @@ const DropdownMultiple = forwardRef(
2079
2055
  {
2080
2056
  ref: measureRef,
2081
2057
  "aria-hidden": true,
2082
- className: "absolute flex gap-[4px] items-center pointer-events-none",
2058
+ className: "absolute flex gap-1 items-center pointer-events-none",
2083
2059
  style: {
2084
2060
  visibility: "hidden",
2085
2061
  top: 0,
@@ -2222,8 +2198,8 @@ const DropdownMultiple = forwardRef(
2222
2198
  className: cn(
2223
2199
  "relative flex gap-[8px] items-center rounded-[8px]",
2224
2200
  bg,
2225
- "px-[14px]",
2226
- hasExternalLabel ? "h-[40px]" : "py-[4px] min-h-[48px]",
2201
+ "px-3.5",
2202
+ hasExternalLabel ? "h-10" : "py-1 min-h-12",
2227
2203
  !isDisabled && !isStatic && "cursor-pointer"
2228
2204
  ),
2229
2205
  children: [
@@ -2253,16 +2229,16 @@ const DropdownMultiple = forwardRef(
2253
2229
  )
2254
2230
  }
2255
2231
  ),
2256
- /* @__PURE__ */ jsx("span", { className: "shrink-0", style: { color: caretColor }, children: isFocus ? /* @__PURE__ */ jsx(ChevronUpIcon, {}) : /* @__PURE__ */ jsx(ChevronDownIcon, {}) })
2232
+ /* @__PURE__ */ jsx("span", { className: "shrink-0", style: { color: caretColor }, children: isFocus ? /* @__PURE__ */ jsx(CaretUp, { size: 22 }) : /* @__PURE__ */ jsx(CaretDown, { size: 22 }) })
2257
2233
  ]
2258
2234
  }
2259
2235
  ),
2260
2236
  open && !isStatic && options.length > 0 && /* @__PURE__ */ jsx(
2261
2237
  "div",
2262
2238
  {
2263
- className: "relative bg-white rounded-[8px] overflow-clip p-[8px] z-20 flex flex-col items-start",
2239
+ className: "relative bg-popover rounded-[8px] overflow-clip p-[8px] z-20 flex flex-col items-start text-popover-foreground",
2264
2240
  style: {
2265
- boxShadow: "0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1)"
2241
+ boxShadow: "var(--elevation-popover)"
2266
2242
  },
2267
2243
  children: /* @__PURE__ */ jsx(
2268
2244
  "div",
@@ -2285,7 +2261,7 @@ const DropdownMultiple = forwardRef(
2285
2261
  },
2286
2262
  className: cn(
2287
2263
  "w-full shrink-0 rounded-[4px] cursor-pointer transition-colors duration-100",
2288
- isSelected ? "bg-primary-action-light" : "bg-white hover:bg-disabled-bg"
2264
+ isSelected ? "bg-primary-action-light" : "bg-popover hover:bg-disabled-bg"
2289
2265
  ),
2290
2266
  children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[8px] p-[14px] relative w-full", children: [
2291
2267
  /* @__PURE__ */ jsx(
@@ -2305,14 +2281,21 @@ const DropdownMultiple = forwardRef(
2305
2281
  "shrink-0 w-[16px] h-[16px] rounded-[3px] flex items-center justify-center transition-colors duration-100",
2306
2282
  "bg-transparent"
2307
2283
  ),
2308
- children: isSelected && /* @__PURE__ */ jsx(CheckIcon$1, { className: "text-primary-action" })
2284
+ children: isSelected && /* @__PURE__ */ jsx(
2285
+ Check,
2286
+ {
2287
+ size: 12,
2288
+ weight: "bold",
2289
+ className: "text-primary-action"
2290
+ }
2291
+ )
2309
2292
  }
2310
2293
  )
2311
2294
  ] }) })
2312
2295
  },
2313
2296
  opt.value
2314
2297
  );
2315
- }) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-white", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-[14px] relative w-full", children: /* @__PURE__ */ jsx("p", { className: "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic text-[14px] text-disabled", children: "No results found" }) }) }) })
2298
+ }) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-popover", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ jsx("div", { className: "flex items-center p-[14px] relative w-full", children: /* @__PURE__ */ jsx("p", { className: "flex-1 min-w-0 min-h-[1px] leading-[20px] not-italic text-[14px] text-disabled", children: "No results found" }) }) }) })
2316
2299
  }
2317
2300
  )
2318
2301
  }
@@ -2349,6 +2332,7 @@ const Input = forwardRef(function Input2({
2349
2332
  onFocus: onFocusProp,
2350
2333
  onBlur: onBlurProp,
2351
2334
  disabled: _disabledProp,
2335
+ maxLength: maxLengthProp,
2352
2336
  ...inputRest
2353
2337
  }, ref) {
2354
2338
  const [focused, setFocused] = useState(false);
@@ -2360,7 +2344,7 @@ const Input = forwardRef(function Input2({
2360
2344
  const isError = state === "error";
2361
2345
  const isFocus = state === "focus";
2362
2346
  const isFilled = currentValue.length > 0;
2363
- const bg = isDisabled ? "bg-disabled-bg" : "bg-white";
2347
+ const bg = isDisabled ? "bg-disabled-bg" : "bg-background";
2364
2348
  const floatLabel = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
2365
2349
  const filledValue = isDisabled ? "var(--disabled)" : "var(--foreground)";
2366
2350
  const unitColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
@@ -2368,14 +2352,19 @@ const Input = forwardRef(function Input2({
2368
2352
  const borderRad = isFocus || isError ? "9px" : "8px";
2369
2353
  const borderColor = isDisabled ? "var(--border-disabled)" : isError ? "var(--destructive)" : isFocus ? "var(--primary-action)" : "var(--border)";
2370
2354
  const hasRight = Boolean(rightIcon) || Boolean(unit);
2371
- const padding = isFilled ? "px-[14px] py-[6px]" : hasRight ? "px-[14px] py-[12px]" : "p-[14px]";
2355
+ const padding = isFilled ? "px-[14px] py-[6px]" : hasRight ? "px-[14px] py-[14px]" : "p-[14px]";
2372
2356
  const charCount = currentValue.length;
2373
2357
  const showBelow = isError || Boolean(helperText) || showCount;
2374
2358
  const leftText = isError ? errorMessage : helperText ?? "";
2375
2359
  const leftColor = isError ? "var(--destructive)" : "var(--muted-foreground)";
2376
2360
  const handleChange = (e) => {
2377
- if (!controlled) setInternalValue(e.target.value);
2378
- onChange == null ? void 0 : onChange(e.target.value);
2361
+ if (isDisabled) return;
2362
+ let next = e.target.value;
2363
+ if (showCount && maxCount >= 0 && next.length > maxCount) {
2364
+ next = next.slice(0, maxCount);
2365
+ }
2366
+ if (!controlled) setInternalValue(next);
2367
+ onChange == null ? void 0 : onChange(next);
2379
2368
  };
2380
2369
  const handleFocus = (e) => {
2381
2370
  onFocusProp == null ? void 0 : onFocusProp(e);
@@ -2389,12 +2378,12 @@ const Input = forwardRef(function Input2({
2389
2378
  const inputCaretStyle = {
2390
2379
  caretColor: "var(--caret-color)"
2391
2380
  };
2392
- return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-[4px] w-full", className), children: [
2381
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1 w-full", className), children: [
2393
2382
  /* @__PURE__ */ jsxs(
2394
2383
  "div",
2395
2384
  {
2396
2385
  className: cn(
2397
- "relative rounded-[8px]",
2386
+ "relative rounded-lg",
2398
2387
  padding,
2399
2388
  bg,
2400
2389
  containerFlex
@@ -2425,14 +2414,15 @@ const Input = forwardRef(function Input2({
2425
2414
  {
2426
2415
  className: cn(
2427
2416
  "shrink-0 w-full not-italic",
2428
- isFilled ? "leading-[16px] text-[12px]" : "text-[16px] leading-[20px] pointer-events-none"
2417
+ isFilled ? "leading-4 text-xs" : "text-base leading-5 pointer-events-none"
2429
2418
  ),
2430
2419
  style: { color: floatLabel },
2431
2420
  children: [
2432
2421
  placeholder,
2433
- required && !isFilled && /* @__PURE__ */ jsx(
2422
+ required && /* @__PURE__ */ jsx(
2434
2423
  "span",
2435
2424
  {
2425
+ className: "text-xs leading-4",
2436
2426
  style: {
2437
2427
  color: isDisabled ? "var(--disabled)" : "var(--error-dark)"
2438
2428
  },
@@ -2442,7 +2432,7 @@ const Input = forwardRef(function Input2({
2442
2432
  ]
2443
2433
  }
2444
2434
  ),
2445
- !isDisabled && /* @__PURE__ */ jsx(
2435
+ /* @__PURE__ */ jsx(
2446
2436
  "input",
2447
2437
  {
2448
2438
  ...inputRest,
@@ -2452,10 +2442,14 @@ const Input = forwardRef(function Input2({
2452
2442
  onFocus: handleFocus,
2453
2443
  onBlur: handleBlur,
2454
2444
  disabled: isDisabled,
2445
+ maxLength: showCount ? maxCount : maxLengthProp,
2455
2446
  "aria-label": placeholder,
2456
2447
  className: cn(
2457
2448
  "w-full bg-transparent outline-none border-none min-w-0",
2458
- isFilled ? "leading-[20px] not-italic text-[14px] p-0 m-0" : "absolute inset-0 h-full cursor-text text-[16px]"
2449
+ isFilled ? "leading-5 not-italic text-sm p-0 m-0" : cn(
2450
+ "absolute inset-0 h-full text-base",
2451
+ isDisabled ? "cursor-not-allowed" : "cursor-text"
2452
+ )
2459
2453
  ),
2460
2454
  style: isFilled ? { ...inputStyleProp, color: filledValue, ...inputCaretStyle } : {
2461
2455
  ...inputStyleProp,
@@ -2483,7 +2477,7 @@ const Input = forwardRef(function Input2({
2483
2477
  "p",
2484
2478
  {
2485
2479
  className: cn(
2486
- "shrink-0 whitespace-nowrap text-[16px]",
2480
+ "shrink-0 whitespace-nowrap text-[16px] leading-[20px]",
2487
2481
  !isFilled && "relative"
2488
2482
  ),
2489
2483
  style: {
@@ -2497,7 +2491,7 @@ const Input = forwardRef(function Input2({
2497
2491
  ]
2498
2492
  }
2499
2493
  ),
2500
- showBelow && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[8px] px-[4px] text-[12px] leading-[16px]", children: [
2494
+ showBelow && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 px-1 text-xs leading-4", children: [
2501
2495
  leftText ? /* @__PURE__ */ jsx("span", { className: "flex-1 min-w-0", style: { color: leftColor }, children: leftText }) : showCount && /* @__PURE__ */ jsx("span", { className: "flex-1" }),
2502
2496
  showCount && /* @__PURE__ */ jsxs(
2503
2497
  "span",
@@ -2515,28 +2509,6 @@ const Input = forwardRef(function Input2({
2515
2509
  ] });
2516
2510
  });
2517
2511
  Input.displayName = "Input";
2518
- function CheckIcon(props) {
2519
- return /* @__PURE__ */ jsx(
2520
- "svg",
2521
- {
2522
- width: "16",
2523
- height: "11",
2524
- viewBox: "0 0 16 11",
2525
- fill: "none",
2526
- ...props,
2527
- children: /* @__PURE__ */ jsx(
2528
- "path",
2529
- {
2530
- d: "M1 5.5L5.5 10L15 1",
2531
- stroke: "currentColor",
2532
- strokeWidth: "1.5",
2533
- strokeLinecap: "round",
2534
- strokeLinejoin: "round"
2535
- }
2536
- )
2537
- }
2538
- );
2539
- }
2540
2512
  const OptionList = forwardRef(
2541
2513
  function OptionList2({
2542
2514
  options,
@@ -2565,17 +2537,17 @@ const OptionList = forwardRef(
2565
2537
  {
2566
2538
  ref,
2567
2539
  className: cn(
2568
- "flex flex-col items-start overflow-clip rounded-[8px] bg-white px-[8px] py-[8px]",
2540
+ "flex flex-col items-start overflow-clip rounded-lg bg-popover px-2 py-2 text-popover-foreground",
2569
2541
  className
2570
2542
  ),
2571
2543
  style: {
2572
- boxShadow: "0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1)",
2544
+ boxShadow: "var(--elevation-popover)",
2573
2545
  ...isScrollable ? { maxHeight, overflowY: "auto" } : {}
2574
2546
  },
2575
2547
  children: options.length > 0 ? options.map((opt) => {
2576
2548
  const selected = isSelected(opt.value);
2577
2549
  const disabled = opt.disabled === true;
2578
- const rowBg = disabled ? "bg-disabled-bg" : selected ? "bg-selected-bg" : "bg-white hover:bg-selected-bg";
2550
+ const rowBg = disabled ? "bg-disabled-bg" : selected ? "bg-selected-bg" : "bg-popover hover:bg-selected-bg";
2579
2551
  return /* @__PURE__ */ jsx(
2580
2552
  "div",
2581
2553
  {
@@ -2585,11 +2557,11 @@ const OptionList = forwardRef(
2585
2557
  rowBg,
2586
2558
  disabled ? "cursor-default" : "cursor-pointer"
2587
2559
  ),
2588
- children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-[8px] p-[14px]", children: [
2560
+ children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-2 p-3.5", children: [
2589
2561
  opt.icon && /* @__PURE__ */ jsx(
2590
2562
  "span",
2591
2563
  {
2592
- className: "flex size-[20px] shrink-0 items-center justify-center overflow-clip",
2564
+ className: "flex h-5 w-5 shrink-0 items-center justify-center overflow-clip",
2593
2565
  style: {
2594
2566
  color: disabled ? "var(--disabled)" : "var(--muted-foreground)"
2595
2567
  },
@@ -2599,19 +2571,26 @@ const OptionList = forwardRef(
2599
2571
  /* @__PURE__ */ jsx(
2600
2572
  "p",
2601
2573
  {
2602
- className: "min-h-[1px] min-w-0 flex-1 overflow-hidden text-[14px] leading-[20px] text-ellipsis whitespace-nowrap not-italic",
2574
+ className: "min-h-[1px] min-w-0 flex-1 overflow-hidden text-sm leading-5 text-ellipsis whitespace-nowrap not-italic",
2603
2575
  style: {
2604
2576
  color: disabled ? "var(--disabled)" : "var(--foreground)"
2605
2577
  },
2606
2578
  children: opt.label
2607
2579
  }
2608
2580
  ),
2609
- selected && /* @__PURE__ */ jsx("span", { className: "flex size-[20px] shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx(CheckIcon, { className: "text-primary-action" }) })
2581
+ selected && /* @__PURE__ */ jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx(
2582
+ Check,
2583
+ {
2584
+ size: 16,
2585
+ weight: "bold",
2586
+ className: "text-primary-action"
2587
+ }
2588
+ ) })
2610
2589
  ] })
2611
2590
  },
2612
2591
  opt.value
2613
2592
  );
2614
- }) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-white", children: /* @__PURE__ */ jsx("div", { className: "flex w-full items-center p-[14px]", children: /* @__PURE__ */ jsx("p", { className: "min-h-[1px] min-w-0 flex-1 text-[14px] leading-[20px] not-italic text-disabled", children: emptyText }) }) })
2593
+ }) : /* @__PURE__ */ jsx("div", { className: "w-full shrink-0 bg-popover", children: /* @__PURE__ */ jsx("div", { className: "flex w-full items-center p-3.5", children: /* @__PURE__ */ jsx("p", { className: "min-h-[1px] min-w-0 flex-1 text-sm leading-5 not-italic text-disabled", children: emptyText }) }) })
2615
2594
  }
2616
2595
  );
2617
2596
  }
@@ -2633,8 +2612,8 @@ const SearchInput = forwardRef(
2633
2612
  const currentValue = controlled ? value : internalValue;
2634
2613
  const isFilled = currentValue.length > 0;
2635
2614
  const iconSize = size === "lg" ? 24 : 22;
2636
- const minHeight = size === "sm" ? "min-h-[32px]" : "";
2637
- const padding = size === "sm" ? "px-[14px] py-[8px]" : "px-[14px] py-[12px]";
2615
+ const minHeight = size === "sm" ? "h-[38px]" : "";
2616
+ const padding = size === "sm" ? "px-3.5 py-2" : "px-3.5 py-3";
2638
2617
  const borderInset = focused ? "-1px" : "0px";
2639
2618
  const borderRad = focused ? "9px" : "8px";
2640
2619
  const borderColor = focused ? "var(--primary-action)" : "var(--border)";
@@ -2654,7 +2633,7 @@ const SearchInput = forwardRef(
2654
2633
  {
2655
2634
  ref,
2656
2635
  className: cn(
2657
- "relative flex cursor-text items-center gap-[8px] rounded-[8px] bg-white",
2636
+ "relative flex cursor-text items-center gap-2 rounded-lg bg-background",
2658
2637
  padding,
2659
2638
  minHeight,
2660
2639
  className
@@ -2680,7 +2659,7 @@ const SearchInput = forwardRef(
2680
2659
  MagnifyingGlass,
2681
2660
  {
2682
2661
  size: iconSize,
2683
- color: "var(--muted-foreground)",
2662
+ color: focused ? "var(--subtle-text)" : "var(--muted-foreground)",
2684
2663
  weight: "regular"
2685
2664
  }
2686
2665
  ) }),
@@ -2688,7 +2667,7 @@ const SearchInput = forwardRef(
2688
2667
  !isFilled && /* @__PURE__ */ jsx(
2689
2668
  "p",
2690
2669
  {
2691
- className: "pointer-events-none absolute inset-0 flex items-center text-[16px] leading-[20px] not-italic",
2670
+ className: "pointer-events-none absolute inset-0 flex items-center text-base leading-5 not-italic",
2692
2671
  style: { color: "var(--muted-foreground)" },
2693
2672
  children: placeholder
2694
2673
  }
@@ -2703,7 +2682,7 @@ const SearchInput = forwardRef(
2703
2682
  onChange: (e) => handleChange(e.target.value),
2704
2683
  onFocus: () => setFocused(true),
2705
2684
  onBlur: () => setFocused(false),
2706
- className: "m-0 w-full border-none bg-transparent p-0 text-[16px] leading-[20px] outline-none",
2685
+ className: "m-0 w-full border-none bg-transparent p-0 text-base leading-5 outline-none",
2707
2686
  style: {
2708
2687
  color: isFilled ? "var(--foreground)" : "transparent",
2709
2688
  caretColor: "var(--caret-color)"
@@ -2737,33 +2716,50 @@ const SearchInput = forwardRef(
2737
2716
  SearchInput.displayName = "SearchInput";
2738
2717
  const sizeClasses = {
2739
2718
  lg: {
2740
- pad: "px-[12px] py-[10px]",
2741
- text: "text-[14px]",
2742
- leading: "leading-[20px]",
2743
- font: "font-bold"
2719
+ pad: "px-3 py-2.5",
2720
+ text: "text-sm",
2721
+ leading: "leading-5",
2722
+ font: "font-bold",
2723
+ gap: "gap-1.5",
2724
+ iconSize: "h-5 w-5",
2725
+ badgeClass: "min-w-[18px] px-[5.5px] text-[length:var(--text-xs)] leading-[var(--leading-4)]"
2744
2726
  },
2745
2727
  md: {
2746
- pad: "px-[10px] py-[8px]",
2747
- text: "text-[14px]",
2748
- leading: "leading-[20px]",
2749
- font: "font-bold"
2728
+ pad: "px-2.5 py-2",
2729
+ text: "text-sm",
2730
+ leading: "leading-5",
2731
+ font: "font-bold",
2732
+ gap: "gap-1.5",
2733
+ iconSize: "h-[18px] w-[18px]",
2734
+ badgeClass: "min-w-[18px] px-[5.5px] text-[length:var(--text-xs)] leading-[var(--leading-4)]"
2750
2735
  },
2751
2736
  sm: {
2752
- pad: "px-[8px] py-[6px]",
2753
- text: "text-[12px]",
2754
- leading: "leading-[16px]",
2755
- font: "font-semibold"
2737
+ pad: "px-2 py-1.5",
2738
+ text: "text-xs",
2739
+ leading: "leading-4",
2740
+ font: "font-semibold",
2741
+ gap: "gap-1",
2742
+ iconSize: "h-4 w-4",
2743
+ badgeClass: "min-h-[14px] px-1 text-[length:var(--text-xxs)] leading-[var(--leading-3)]"
2756
2744
  }
2757
2745
  };
2746
+ function DefaultTabIcon({ className }) {
2747
+ return /* @__PURE__ */ jsx(Circle, { "aria-hidden": "true", weight: "regular", className: cn("shrink-0", className) });
2748
+ }
2758
2749
  const Tab = forwardRef(function Tab2({
2759
2750
  title = "Tab",
2760
2751
  size = "md",
2761
2752
  active = false,
2762
2753
  disabled = false,
2763
2754
  onClick,
2764
- className
2755
+ className,
2756
+ icon,
2757
+ notification
2765
2758
  }, ref) {
2766
2759
  const s = sizeClasses[size];
2760
+ const hasIcon = Boolean(icon);
2761
+ const hasNotification = notification !== void 0 && notification !== null;
2762
+ const renderedIcon = icon === true ? /* @__PURE__ */ jsx(DefaultTabIcon, { className: s.iconSize }) : icon;
2767
2763
  const textColor = disabled ? "text-disabled" : active ? "text-primary-action" : "text-muted-foreground";
2768
2764
  const borderColor = active && !disabled ? "border-primary-action" : "border-border";
2769
2765
  const cursor = disabled ? "cursor-not-allowed" : "cursor-pointer";
@@ -2777,8 +2773,9 @@ const Tab = forwardRef(function Tab2({
2777
2773
  "aria-disabled": disabled,
2778
2774
  onClick: !disabled ? onClick : void 0,
2779
2775
  className: cn(
2780
- "relative flex min-w-[80px] select-none items-center justify-center bg-white transition-colors duration-150",
2776
+ "relative flex min-w-[80px] select-none items-center justify-center bg-background transition-colors duration-150",
2781
2777
  s.pad,
2778
+ (hasIcon || hasNotification) && s.gap,
2782
2779
  cursor,
2783
2780
  hoverBg,
2784
2781
  className
@@ -2794,11 +2791,24 @@ const Tab = forwardRef(function Tab2({
2794
2791
  )
2795
2792
  }
2796
2793
  ),
2794
+ hasIcon && /* @__PURE__ */ jsx(
2795
+ "span",
2796
+ {
2797
+ "aria-hidden": "true",
2798
+ className: cn(
2799
+ "relative shrink-0",
2800
+ s.iconSize,
2801
+ disabled ? "text-disabled" : active ? "text-primary-action" : "text-muted-foreground"
2802
+ ),
2803
+ children: renderedIcon
2804
+ }
2805
+ ),
2797
2806
  /* @__PURE__ */ jsx(
2798
2807
  "span",
2799
2808
  {
2800
2809
  className: cn(
2801
2810
  "relative overflow-hidden text-ellipsis whitespace-nowrap text-center",
2811
+ hasIcon && hasNotification && "flex-1 min-w-px",
2802
2812
  s.text,
2803
2813
  s.leading,
2804
2814
  s.font,
@@ -2806,6 +2816,16 @@ const Tab = forwardRef(function Tab2({
2806
2816
  ),
2807
2817
  children: title
2808
2818
  }
2819
+ ),
2820
+ hasNotification && /* @__PURE__ */ jsx(
2821
+ "span",
2822
+ {
2823
+ className: cn(
2824
+ "relative flex shrink-0 items-center justify-center rounded-[60px] bg-visual-red-default text-center font-normal text-on-visual-red",
2825
+ s.badgeClass
2826
+ ),
2827
+ children: notification
2828
+ }
2809
2829
  )
2810
2830
  ]
2811
2831
  }
@@ -2821,6 +2841,8 @@ const TabGroup = forwardRef(
2821
2841
  size,
2822
2842
  active: item.id === activeId,
2823
2843
  disabled: item.disabled,
2844
+ icon: item.icon,
2845
+ notification: item.notification,
2824
2846
  onClick: () => onChange == null ? void 0 : onChange(item.id)
2825
2847
  },
2826
2848
  item.id
@@ -2828,6 +2850,112 @@ const TabGroup = forwardRef(
2828
2850
  }
2829
2851
  );
2830
2852
  TabGroup.displayName = "TabGroup";
2853
+ const sizeStyles = {
2854
+ large: {
2855
+ container: "px-2 py-1",
2856
+ text: "text-xs leading-4",
2857
+ closeIcon: "h-4 w-4",
2858
+ closeButton: "h-4 w-4"
2859
+ },
2860
+ small: {
2861
+ container: "px-1 py-0.5",
2862
+ text: "text-xxs leading-3",
2863
+ closeIcon: "h-3.5 w-3.5",
2864
+ closeButton: "h-3.5 w-3.5"
2865
+ }
2866
+ };
2867
+ const variantStyles = {
2868
+ blue: {
2869
+ bg: "bg-[var(--fill-blue-50)]",
2870
+ text: "text-[var(--fill-blue-700)]"
2871
+ },
2872
+ green: {
2873
+ bg: "bg-[var(--fill-green-100)]",
2874
+ text: "text-[var(--fill-green-600)]"
2875
+ },
2876
+ yellow: {
2877
+ bg: "bg-[var(--fill-yellow-100)]",
2878
+ text: "text-[var(--fill-yellow-600)]"
2879
+ },
2880
+ red: {
2881
+ bg: "bg-[var(--fill-red-100)]",
2882
+ text: "text-[var(--fill-red-600)]"
2883
+ },
2884
+ gray: {
2885
+ bg: "bg-[var(--fill-gray-100)]",
2886
+ text: "text-subtle-text"
2887
+ },
2888
+ lime: {
2889
+ bg: "bg-[var(--fill-lime-100)]",
2890
+ text: "text-[var(--fill-lime-600)]"
2891
+ }
2892
+ };
2893
+ function CircleIcon({ disabled }) {
2894
+ return /* @__PURE__ */ jsx(
2895
+ Circle,
2896
+ {
2897
+ "aria-hidden": "true",
2898
+ weight: "regular",
2899
+ className: "h-3.5 w-3.5 shrink-0",
2900
+ color: disabled ? "var(--disabled)" : "var(--subtle-text)"
2901
+ }
2902
+ );
2903
+ }
2904
+ function CloseIcon({ disabled, className }) {
2905
+ return /* @__PURE__ */ jsx(
2906
+ X,
2907
+ {
2908
+ "aria-hidden": "true",
2909
+ weight: "regular",
2910
+ className: cn("shrink-0", className),
2911
+ color: disabled ? "var(--disabled)" : "var(--subtle-text)"
2912
+ }
2913
+ );
2914
+ }
2915
+ const Tag = forwardRef(function Tag2({
2916
+ text = "Tag",
2917
+ size = "large",
2918
+ state = "default",
2919
+ variant = "gray",
2920
+ icon = false,
2921
+ close = false,
2922
+ className
2923
+ }, ref) {
2924
+ const isDisabled = state === "disabled";
2925
+ const s = sizeStyles[size];
2926
+ const v = variantStyles[variant];
2927
+ const bgClass = state === "disabled" ? "bg-disabled-bg" : state === "hover" ? "bg-hover-bg" : v.bg;
2928
+ const textClass = isDisabled ? "text-disabled" : v.text;
2929
+ return /* @__PURE__ */ jsxs(
2930
+ "div",
2931
+ {
2932
+ ref,
2933
+ className: cn(
2934
+ "inline-flex items-center justify-center rounded-[4px]",
2935
+ (icon || close) && "gap-[2px]",
2936
+ s.container,
2937
+ bgClass,
2938
+ className
2939
+ ),
2940
+ children: [
2941
+ icon && /* @__PURE__ */ jsx(CircleIcon, { disabled: isDisabled }),
2942
+ /* @__PURE__ */ jsx("span", { className: cn("whitespace-nowrap font-normal", s.text, textClass), children: text }),
2943
+ close && /* @__PURE__ */ jsx(
2944
+ "span",
2945
+ {
2946
+ className: cn(
2947
+ "inline-flex items-center justify-center rounded-[2px] transition-colors",
2948
+ s.closeButton,
2949
+ !isDisabled && "cursor-pointer hover:bg-black/10"
2950
+ ),
2951
+ children: /* @__PURE__ */ jsx(CloseIcon, { disabled: isDisabled, className: s.closeIcon })
2952
+ }
2953
+ )
2954
+ ]
2955
+ }
2956
+ );
2957
+ });
2958
+ Tag.displayName = "Tag";
2831
2959
  const TextArea = forwardRef(
2832
2960
  function TextArea2({
2833
2961
  placeholder = "Text label",
@@ -2870,13 +2998,13 @@ const TextArea = forwardRef(
2870
2998
  if (!controlled) setInternalValue(newValue);
2871
2999
  onChange == null ? void 0 : onChange(newValue);
2872
3000
  };
2873
- return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex w-full flex-col gap-[4px]", className), children: [
3001
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex w-full flex-col gap-1", className), children: [
2874
3002
  /* @__PURE__ */ jsxs(
2875
3003
  "div",
2876
3004
  {
2877
3005
  className: cn(
2878
- "relative h-[116px] rounded-[8px]",
2879
- isDisabled ? "bg-disabled-bg" : "bg-white"
3006
+ "relative h-[116px] rounded-lg",
3007
+ isDisabled ? "bg-disabled-bg" : "bg-background"
2880
3008
  ),
2881
3009
  children: [
2882
3010
  /* @__PURE__ */ jsx(
@@ -2887,13 +3015,27 @@ const TextArea = forwardRef(
2887
3015
  style: { inset: borderInset, borderRadius: borderRad, borderColor }
2888
3016
  }
2889
3017
  ),
2890
- isFilled ? /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col items-start p-[14px] pb-[6px]", children: [
2891
- /* @__PURE__ */ jsx(
3018
+ isFilled ? /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col px-3.5 pt-3.5 pb-1.5", children: [
3019
+ /* @__PURE__ */ jsxs(
2892
3020
  "p",
2893
3021
  {
2894
- className: "w-full shrink-0 text-[12px] leading-[16px] not-italic",
3022
+ className: "w-full shrink-0 text-xs leading-4 not-italic",
2895
3023
  style: { color: floatLabel },
2896
- children: placeholder
3024
+ children: [
3025
+ placeholder,
3026
+ required && /* @__PURE__ */ jsxs(
3027
+ "span",
3028
+ {
3029
+ style: {
3030
+ color: isDisabled ? "var(--disabled)" : "var(--error-dark)"
3031
+ },
3032
+ children: [
3033
+ " ",
3034
+ "*"
3035
+ ]
3036
+ }
3037
+ )
3038
+ ]
2897
3039
  }
2898
3040
  ),
2899
3041
  /* @__PURE__ */ jsx(
@@ -2916,7 +3058,7 @@ const TextArea = forwardRef(
2916
3058
  rows,
2917
3059
  "aria-label": placeholder,
2918
3060
  className: cn(
2919
- "m-0 min-w-0 flex-1 resize-none border-none bg-transparent p-0 text-[14px] leading-[20px] not-italic outline-none"
3061
+ "m-0 min-h-0 min-w-0 w-full flex-1 resize-none border-none bg-transparent p-0 text-sm leading-5 not-italic outline-none"
2920
3062
  ),
2921
3063
  style: {
2922
3064
  ...textareaProps.style,
@@ -2925,11 +3067,11 @@ const TextArea = forwardRef(
2925
3067
  }
2926
3068
  }
2927
3069
  )
2928
- ] }) : /* @__PURE__ */ jsxs("div", { className: "relative flex size-full items-start p-[14px]", children: [
3070
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "relative flex size-full items-start p-3.5", children: [
2929
3071
  /* @__PURE__ */ jsxs(
2930
3072
  "p",
2931
3073
  {
2932
- className: "pointer-events-none relative h-full min-h-[1px] min-w-0 flex-1 text-[16px] leading-[20px] not-italic",
3074
+ className: "pointer-events-none relative h-full min-h-[1px] min-w-0 flex-1 text-base leading-5 not-italic",
2933
3075
  style: { color: floatLabel },
2934
3076
  children: [
2935
3077
  placeholder,
@@ -2966,7 +3108,7 @@ const TextArea = forwardRef(
2966
3108
  },
2967
3109
  rows,
2968
3110
  className: cn(
2969
- "absolute inset-0 h-full w-full cursor-text resize-none border-none bg-transparent text-[16px] outline-none"
3111
+ "absolute inset-0 h-full w-full cursor-text resize-none border-none bg-transparent text-base outline-none"
2970
3112
  ),
2971
3113
  style: {
2972
3114
  ...textareaProps.style,
@@ -2981,27 +3123,21 @@ const TextArea = forwardRef(
2981
3123
  ]
2982
3124
  }
2983
3125
  ),
2984
- showBelow && /* @__PURE__ */ jsxs(
2985
- "div",
2986
- {
2987
- className: "flex items-start gap-[8px] px-[4px] text-[12px] leading-[16px]",
2988
- children: [
2989
- leftText ? /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", style: { color: leftColor }, children: leftText }) : showCount && /* @__PURE__ */ jsx("span", { className: "flex-1" }),
2990
- showCount && /* @__PURE__ */ jsxs(
2991
- "span",
2992
- {
2993
- className: "shrink-0 whitespace-nowrap text-right",
2994
- style: { color: countColor },
2995
- children: [
2996
- charCount,
2997
- "/",
2998
- maxCount
2999
- ]
3000
- }
3001
- )
3002
- ]
3003
- }
3004
- )
3126
+ showBelow && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 px-1 text-xs leading-4", children: [
3127
+ leftText ? /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", style: { color: leftColor }, children: leftText }) : showCount && /* @__PURE__ */ jsx("span", { className: "flex-1" }),
3128
+ showCount && /* @__PURE__ */ jsxs(
3129
+ "span",
3130
+ {
3131
+ className: "shrink-0 whitespace-nowrap text-right",
3132
+ style: { color: countColor },
3133
+ children: [
3134
+ charCount,
3135
+ "/",
3136
+ maxCount
3137
+ ]
3138
+ }
3139
+ )
3140
+ ] })
3005
3141
  ] });
3006
3142
  }
3007
3143
  );
@@ -3181,7 +3317,7 @@ function RangeSlotPicker({
3181
3317
  className: "leading-[22px] relative shrink-0 text-[14px] text-center whitespace-nowrap",
3182
3318
  style: {
3183
3319
  fontVariationSettings: "'wdth' 100",
3184
- color: isSelected ? "#ffffff" : "var(--foreground)"
3320
+ color: isSelected ? "var(--on-primary-action)" : "var(--foreground)"
3185
3321
  },
3186
3322
  children: slot.label
3187
3323
  }
@@ -3325,7 +3461,7 @@ const TimeInput = forwardRef(
3325
3461
  const isError = state === "error";
3326
3462
  const isFocus = state === "focus";
3327
3463
  const isFilled = mode === "single" ? Boolean(currentValue) : true;
3328
- const bgClass = isDisabled ? "bg-disabled-bg" : "bg-white";
3464
+ const bgClass = isDisabled ? "bg-disabled-bg" : "bg-background";
3329
3465
  const labelColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
3330
3466
  const valueColor = isDisabled ? "var(--disabled)" : "var(--foreground)";
3331
3467
  const iconColor = isDisabled ? "var(--disabled)" : "var(--muted-foreground)";
@@ -3406,8 +3542,7 @@ const TimeInput = forwardRef(
3406
3542
  Minus,
3407
3543
  {
3408
3544
  size: 20,
3409
- color: minusColor,
3410
- weight: "bold"
3545
+ color: minusColor
3411
3546
  }
3412
3547
  ),
3413
3548
  /* @__PURE__ */ jsx(
@@ -3454,9 +3589,9 @@ const TimeInput = forwardRef(
3454
3589
  );
3455
3590
  };
3456
3591
  const isTriggerFilled = isFilled && (mode === "range" || currentValue);
3457
- const triggerPadding = isTriggerFilled ? "py-[6px]" : "py-[12px]";
3592
+ const triggerPadding = isTriggerFilled ? "py-1.5" : "py-3";
3458
3593
  const triggerBase = cn(
3459
- "relative flex gap-[8px] items-center rounded-[8px] px-[14px] w-full",
3594
+ "relative flex gap-2 items-center rounded-lg px-3.5 w-full",
3460
3595
  bgClass,
3461
3596
  triggerPadding
3462
3597
  );
@@ -3492,7 +3627,7 @@ const TimeInput = forwardRef(
3492
3627
  }
3493
3628
  )
3494
3629
  ] });
3495
- const belowMsg = showBelow && /* @__PURE__ */ jsx("div", { className: "flex items-start px-[4px] text-[12px] leading-[16px]", children: /* @__PURE__ */ jsx(
3630
+ const belowMsg = showBelow && /* @__PURE__ */ jsx("div", { className: "flex items-start px-1 text-xs leading-4", children: /* @__PURE__ */ jsx(
3496
3631
  "span",
3497
3632
  {
3498
3633
  className: "flex-1 min-w-0",
@@ -3614,10 +3749,10 @@ const TimeInput = forwardRef(
3614
3749
  {
3615
3750
  align: "start",
3616
3751
  sideOffset: 4,
3617
- className: "z-50 rounded-[8px] bg-white p-3 outline-none max-w-[340px]",
3752
+ className: "z-50 rounded-[8px] bg-popover p-3 outline-none max-w-[340px] text-popover-foreground",
3618
3753
  style: {
3619
- boxShadow: "0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1)",
3620
- border: "1px solid rgba(0,0,0,0.08)",
3754
+ boxShadow: "var(--elevation-popover)",
3755
+ border: "1px solid var(--border)",
3621
3756
  minWidth: mode === "single" ? 327 : void 0
3622
3757
  },
3623
3758
  onOpenAutoFocus: (e) => e.preventDefault(),
@@ -3648,6 +3783,7 @@ export {
3648
3783
  SearchInput,
3649
3784
  Tab,
3650
3785
  TabGroup,
3786
+ Tag,
3651
3787
  TextArea,
3652
3788
  TimeInput,
3653
3789
  cn