@yuva-devlab/ui 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,39 +3,61 @@
3
3
  width: 100%;
4
4
  border-radius: var(--radius-lg, 0.5rem);
5
5
  border: 1px solid var(--border);
6
- padding: 1rem;
6
+ padding: 0.875rem 1rem;
7
7
  font-size: 0.875rem;
8
8
  display: grid;
9
- grid-template-columns: auto 1fr;
10
- gap: 0 0.75rem;
9
+ grid-template-columns: 1fr;
10
+ row-gap: 0.25rem;
11
11
  align-items: start;
12
12
  }
13
- .dl-alert svg {
13
+
14
+ .dl-alert:has(> svg) {
15
+ grid-template-columns: 1rem 1fr;
16
+ column-gap: 0.75rem;
17
+ }
18
+
19
+ .dl-alert > svg {
20
+ grid-column: 1;
21
+ grid-row: 1 / span 2;
14
22
  width: 1rem;
15
23
  height: 1rem;
16
24
  margin-top: 0.125rem;
25
+ color: currentColor;
26
+ flex-shrink: 0;
27
+ }
28
+
29
+ .dl-alert:has(> svg) .dl-alert__title,
30
+ .dl-alert:has(> svg) .dl-alert__desc {
31
+ grid-column: 2;
17
32
  }
33
+
18
34
  .dl-alert--default {
19
- background-color: var(--background);
35
+ background-color: var(--card, var(--background));
20
36
  color: var(--foreground);
21
37
  }
38
+
22
39
  .dl-alert--destructive {
23
- border-color: color-mix(in oklch, var(--destructive) 50%, transparent);
40
+ border-color: color-mix(in oklch, var(--destructive) 45%, transparent);
24
41
  color: var(--destructive);
25
42
  background-color: color-mix(
26
43
  in oklch,
27
- var(--destructive) 6%,
44
+ var(--destructive) 8%,
28
45
  var(--background)
29
46
  );
30
47
  }
48
+
31
49
  .dl-alert__title {
32
50
  font-weight: 600;
33
- line-height: 1;
51
+ line-height: 1.35;
34
52
  letter-spacing: -0.01em;
35
- margin-bottom: 0.25rem;
36
53
  }
54
+
37
55
  .dl-alert__desc {
38
56
  font-size: 0.875rem;
39
57
  color: var(--muted-foreground);
40
58
  line-height: 1.5;
41
59
  }
60
+
61
+ .dl-alert--destructive .dl-alert__desc {
62
+ color: color-mix(in oklch, var(--destructive) 80%, var(--foreground));
63
+ }
@@ -0,0 +1,26 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as AlertStories from "./alert.stories";
3
+
4
+ <Meta of={AlertStories} />
5
+
6
+ <Title />
7
+
8
+ # Alert
9
+
10
+ The `Alert` component displays contextual feedback, announcements, or critical system errors to users with accessible ARIA semantics and high-contrast color styling.
11
+
12
+ ## Default Alert
13
+
14
+ Used for neutral announcements, system notices, and informational messages.
15
+
16
+ <Canvas of={AlertStories.Default} />
17
+
18
+ ## Destructive Alert
19
+
20
+ Used for critical runtime exceptions, failed agent steps, or irreversible actions.
21
+
22
+ <Canvas of={AlertStories.Destructive} />
23
+
24
+ ## Component Properties
25
+
26
+ <Controls />
@@ -19,15 +19,19 @@
19
19
  top: 50%;
20
20
  transform: translate(-50%, -50%);
21
21
  z-index: 50;
22
- display: grid;
23
- width: 100%;
24
- max-width: 32rem;
22
+ display: flex;
23
+ flex-direction: column;
24
+ width: calc(100% - 2rem);
25
+ max-width: var(--dl-dialog-max-width, 32rem);
26
+ max-height: calc(100dvh - 3rem);
25
27
  gap: 1rem;
26
28
  border: 1px solid var(--border);
27
29
  background-color: var(--background);
28
30
  padding: 1.5rem;
29
31
  box-shadow: 0 8px 32px rgb(0 0 0 / 0.2);
30
32
  border-radius: var(--radius-lg, 0.5rem);
33
+ overflow-y: auto;
34
+ overscroll-behavior: contain;
31
35
  }
32
36
 
33
37
  .dl-alert-dialog-content[data-state="open"] {
@@ -43,6 +47,7 @@
43
47
  flex-direction: column;
44
48
  gap: 0.5rem;
45
49
  text-align: center;
50
+ flex-shrink: 0;
46
51
  }
47
52
 
48
53
  @media (min-width: 640px) {
@@ -55,6 +60,7 @@
55
60
  display: flex;
56
61
  flex-direction: column-reverse;
57
62
  gap: 0.5rem;
63
+ flex-shrink: 0;
58
64
  }
59
65
 
60
66
  @media (min-width: 640px) {
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as AvatarStories from "./avatar.stories";
3
+
4
+ <Meta of={AvatarStories} />
5
+
6
+ <Title />
7
+
8
+ # Avatar
9
+
10
+ Image element with fallback text initials for representing users, agents, or entities.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={AvatarStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,24 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as BadgeStories from "./badge.stories";
3
+
4
+ <Meta of={BadgeStories} />
5
+
6
+ <Title />
7
+
8
+ # Badge
9
+
10
+ Displays metadata, statuses, count indicators, or short labels with semantic color tokens.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={BadgeStories.Default} />
15
+
16
+ ## Variants
17
+
18
+ Available in `default`, `secondary`, `outline`, `destructive`, `success`, `warning`, and `info`.
19
+
20
+ <Canvas of={BadgeStories.AllVariants} />
21
+
22
+ ## Component Properties
23
+
24
+ <Controls />
@@ -0,0 +1,40 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as ButtonStories from "./button.stories";
3
+
4
+ <Meta of={ButtonStories} />
5
+
6
+ <Title />
7
+
8
+ # Button
9
+
10
+ Buttons allow users to take actions, submit forms, and make choices with a single tap or click. Built with pure CSS tokens and accessible interactive states.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={ButtonStories.Default} />
15
+
16
+ ## Variants
17
+
18
+ Available in `default`, `secondary`, `outline`, `destructive`, `ghost`, and `link`.
19
+
20
+ <Canvas of={ButtonStories.AllVariants} />
21
+
22
+ ## Sizes
23
+
24
+ Supports `sm`, `default`, `lg`, and `icon`.
25
+
26
+ <Canvas of={ButtonStories.AllSizes} />
27
+
28
+ ## With Icons
29
+
30
+ Integrates seamlessly with Lucide or any SVG icon set.
31
+
32
+ <Canvas of={ButtonStories.WithIcons} />
33
+
34
+ ## Disabled State
35
+
36
+ <Canvas of={ButtonStories.Disabled} />
37
+
38
+ ## Component Properties
39
+
40
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as CardStories from "./card.stories";
3
+
4
+ <Meta of={CardStories} />
5
+
6
+ <Title />
7
+
8
+ # Card
9
+
10
+ Structured content container featuring header, title, description, content body, and action footer subcomponents.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={CardStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,22 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as CheckboxStories from "./checkbox.stories";
3
+
4
+ <Meta of={CheckboxStories} />
5
+
6
+ <Title />
7
+
8
+ # Checkbox
9
+
10
+ Accessible binary selection control built upon Radix UI Checkbox supporting checked, unchecked, and indeterminate states.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={CheckboxStories.Default} />
15
+
16
+ ## Disabled State
17
+
18
+ <Canvas of={CheckboxStories.Disabled} />
19
+
20
+ ## Component Properties
21
+
22
+ <Controls />
@@ -17,15 +17,19 @@
17
17
  top: 50%;
18
18
  transform: translate(-50%, -50%);
19
19
  z-index: 50;
20
- display: grid;
21
- width: 100%;
22
- max-width: 32rem;
23
- gap: 1rem;
20
+ display: flex;
21
+ flex-direction: column;
22
+ width: calc(100% - 2rem);
23
+ max-width: var(--dl-dialog-max-width, 32rem);
24
+ max-height: calc(100dvh - 3rem);
24
25
  border: 1px solid var(--border);
25
26
  background-color: var(--background);
26
- padding: 1.5rem;
27
- box-shadow: 0 8px 32px rgb(0 0 0/0.18);
28
- border-radius: var(--radius-lg, 0.5rem);
27
+ padding: 0;
28
+ gap: 0;
29
+ box-shadow: 0 16px 48px rgb(0 0 0 / 0.24);
30
+ border-radius: var(--radius-lg, 0.75rem);
31
+ overflow: hidden;
32
+ overscroll-behavior: contain;
29
33
  }
30
34
  .dl-dialog-content[data-state="open"] {
31
35
  animation: dl-zoom-in 150ms ease;
@@ -34,10 +38,42 @@
34
38
  animation: dl-zoom-out 150ms ease;
35
39
  }
36
40
 
41
+ /* ── Sizing Variants ── */
42
+ .dl-dialog--sm {
43
+ max-width: 24rem;
44
+ }
45
+ .dl-dialog--md {
46
+ max-width: 32rem;
47
+ }
48
+ .dl-dialog--lg {
49
+ width: 90vw;
50
+ max-width: 44rem;
51
+ height: 80vh;
52
+ max-height: 80vh;
53
+ }
54
+ .dl-dialog--xl {
55
+ width: 92vw;
56
+ max-width: 56rem;
57
+ height: 85vh;
58
+ max-height: 85vh;
59
+ }
60
+ .dl-dialog--2xl {
61
+ width: 94vw;
62
+ max-width: 72rem;
63
+ height: 85vh;
64
+ max-height: 85vh;
65
+ }
66
+ .dl-dialog--full {
67
+ width: calc(100vw - 2rem);
68
+ max-width: calc(100vw - 2rem);
69
+ height: calc(100dvh - 2rem);
70
+ max-height: calc(100dvh - 2rem);
71
+ }
72
+
37
73
  .dl-dialog-close {
38
74
  position: absolute;
39
- right: 1rem;
40
- top: 1rem;
75
+ right: 1.25rem;
76
+ top: 1.25rem;
41
77
  border-radius: var(--radius-sm, 0.25rem);
42
78
  opacity: 0.7;
43
79
  cursor: pointer;
@@ -46,6 +82,7 @@
46
82
  padding: 0.25rem;
47
83
  transition: opacity 0.15s ease;
48
84
  color: var(--foreground);
85
+ z-index: 10;
49
86
  }
50
87
  .dl-dialog-close:hover {
51
88
  opacity: 1;
@@ -54,22 +91,52 @@
54
91
  outline: 2px solid var(--ring);
55
92
  outline-offset: 2px;
56
93
  }
94
+ .dl-dialog-close svg {
95
+ width: 1rem;
96
+ height: 1rem;
97
+ }
98
+
99
+ .dl-dialog-sr-only {
100
+ position: absolute;
101
+ width: 1px;
102
+ height: 1px;
103
+ padding: 0;
104
+ margin: -1px;
105
+ overflow: hidden;
106
+ clip: rect(0, 0, 0, 0);
107
+ white-space: nowrap;
108
+ border-width: 0;
109
+ }
57
110
 
58
111
  .dl-dialog__header {
59
112
  display: flex;
60
113
  flex-direction: column;
61
114
  gap: 0.375rem;
115
+ padding: 1.25rem 1.5rem;
116
+ padding-right: 3.5rem;
117
+ border-bottom: 1px solid var(--border);
118
+ flex-shrink: 0;
119
+ }
120
+ .dl-dialog__body {
121
+ flex: 1 1 auto;
122
+ min-height: 0;
123
+ overflow-y: auto;
124
+ padding: 1.25rem 1.5rem;
62
125
  }
63
126
  .dl-dialog__footer {
64
127
  display: flex;
65
128
  flex-direction: row;
66
129
  justify-content: flex-end;
67
130
  gap: 0.5rem;
131
+ padding: 0.875rem 1.5rem;
132
+ border-top: 1px solid var(--border);
133
+ background-color: color-mix(in srgb, var(--muted) 35%, transparent);
134
+ flex-shrink: 0;
68
135
  }
69
136
  .dl-dialog__title {
70
137
  font-size: 1.125rem;
71
138
  font-weight: 600;
72
- line-height: 1;
139
+ line-height: 1.25;
73
140
  letter-spacing: -0.01em;
74
141
  }
75
142
  .dl-dialog__desc {
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as DialogStories from "./dialog.stories";
3
+
4
+ <Meta of={DialogStories} />
5
+
6
+ <Title />
7
+
8
+ # Dialog
9
+
10
+ Modal dialog built on accessible Radix primitives with focus trapping, ESC dismiss, and animated backdrop overlays.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={DialogStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,30 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as InputStories from "./input.stories";
3
+
4
+ <Meta of={InputStories} />
5
+
6
+ <Title />
7
+
8
+ # Input
9
+
10
+ Form text input supporting start and end icons, password masking toggles, error borders, and customizable focus rings.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={InputStories.Default} />
15
+
16
+ ## With Start Icon
17
+
18
+ <Canvas of={InputStories.WithStartIcon} />
19
+
20
+ ## With End Icon
21
+
22
+ <Canvas of={InputStories.WithEndIcon} />
23
+
24
+ ## Disabled State
25
+
26
+ <Canvas of={InputStories.Disabled} />
27
+
28
+ ## Component Properties
29
+
30
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as ProgressStories from "./progress.stories";
3
+
4
+ <Meta of={ProgressStories} />
5
+
6
+ <Title />
7
+
8
+ # Progress
9
+
10
+ Visual progress indicator displaying task completion, data loading, or quota utilization.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={ProgressStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as SelectStories from "./select.stories";
3
+
4
+ <Meta of={SelectStories} />
5
+
6
+ <Title />
7
+
8
+ # Select
9
+
10
+ Accessible dropdown selector component built on Radix primitives with grouped items, keyboard navigation, and custom trigger values.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={SelectStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as SkeletonStories from "./skeleton.stories";
3
+
4
+ <Meta of={SkeletonStories} />
5
+
6
+ <Title />
7
+
8
+ # Skeleton
9
+
10
+ Placeholder skeleton loading animation used while waiting for data or component trees to resolve.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={SkeletonStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,22 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as SonnerStories from "./sonner.stories";
3
+
4
+ <Meta of={SonnerStories} />
5
+
6
+ <Title />
7
+
8
+ # Toaster / Toast
9
+
10
+ An opinionated, elegant toast notification component built upon Sonner and styled with `@yuva-devlab/ui` design system tokens.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={SonnerStories.Default} />
15
+
16
+ ## With Action Button
17
+
18
+ <Canvas of={SonnerStories.WithAction} />
19
+
20
+ ## Component Properties
21
+
22
+ <Controls />
@@ -0,0 +1,24 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as StatusBadgeStories from "./status-badge.stories";
3
+
4
+ <Meta of={StatusBadgeStories} />
5
+
6
+ <Title />
7
+
8
+ # StatusBadge
9
+
10
+ Context-aware status indicator with colored dot and semantic token mapping for agent execution states.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={StatusBadgeStories.Default} />
15
+
16
+ ## Statuses
17
+
18
+ Automatically adapts its color and pulse dot based on status names like `Active`, `Completed`, `In Progress`, `Needs Approval`, `Failed`, and `Offline`.
19
+
20
+ <Canvas of={StatusBadgeStories.AllStatuses} />
21
+
22
+ ## Component Properties
23
+
24
+ <Controls />
@@ -0,0 +1,22 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as SwitchStories from "./switch.stories";
3
+
4
+ <Meta of={SwitchStories} />
5
+
6
+ <Title />
7
+
8
+ # Switch
9
+
10
+ A control that allows the user to toggle between checked and unchecked states.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={SwitchStories.Default} />
15
+
16
+ ## Disabled State
17
+
18
+ <Canvas of={SwitchStories.Disabled} />
19
+
20
+ ## Component Properties
21
+
22
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as TableStories from "./table.stories";
3
+
4
+ <Meta of={TableStories} />
5
+
6
+ <Title />
7
+
8
+ # Table
9
+
10
+ Accessible data table layout components providing header, body, rows, cells, and captions with hover row highlights.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={TableStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />
@@ -0,0 +1,18 @@
1
+ import { Meta, Title, Description, Canvas, Controls } from "@storybook/blocks";
2
+ import * as TabsStories from "./tabs.stories";
3
+
4
+ <Meta of={TabsStories} />
5
+
6
+ <Title />
7
+
8
+ # Tabs
9
+
10
+ Tabbed interface built upon Radix UI Tabs for switching between related views and panels with keyboard accessibility.
11
+
12
+ ## Default
13
+
14
+ <Canvas of={TabsStories.Default} />
15
+
16
+ ## Component Properties
17
+
18
+ <Controls />