@yuva-devlab/ui 2.2.0 → 3.0.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.
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ## What's New in v2.0.0
14
14
 
15
- - **Pure Platform CSS Architecture**: Completely eliminated Tailwind CSS runtime and utility dependencies from components. Component styling is strictly governed by W3C Cascade Layers (`@layer dl-base, dl-tokens, dl-components, dl-utilities`), eliminating CSS specificity conflicts and removing build-step plugin overhead.
15
+ - **Pure Platform CSS Architecture**: Completely authored in pure platform CSS without third-party utility runtime dependencies. Component styling is strictly governed by W3C Cascade Layers (`@layer dl-base, dl-tokens, dl-components, dl-utilities`), eliminating CSS specificity conflicts and removing build-step plugin overhead.
16
16
  - **First-Class Typography Primitives**: Added `<Heading>` and `<Text>` primitives with decoupled semantic HTML tags (`as="h1"`..`as="h6"`, `span`, `div`) and visual scales (`size="display" | "h1".."h6"` and `variant="body-lg" | "body" | "body-sm" | "caption" | "code" | "metric"`).
17
17
  - **64+ Accessible UI Primitives**: Expanded catalog with Radix UI accessibility compliance and multi-brand responsiveness.
18
18
  - **Upgraded Design Tokens Peer**: Upgraded to `@yuva-devlab/tokens@^2.0.0` with isolated brand extensions and native VS Code autocomplete.
@@ -21,7 +21,7 @@
21
21
 
22
22
  ## Features
23
23
 
24
- - 🎨 **Multi-Brand Theme Architecture** - Seamless brand isolation across OrchestrAI, VitalAI, FinAI, Logs, and Portal.
24
+ - 🎨 **Multi-Brand Theme Architecture** - Seamless brand isolation across OrchestrAI, FinAI, Logs, Portal, and KnowledgeAI.
25
25
  - 📐 **Dynamic Theme-Driven Sizing** - Automatic adaptation across brand densities (compact telemetry logs, precision finance tables, athletic kinetic scaling).
26
26
  - ⚡ **Pure Platform CSS** - Scoped W3C Cascade Layers (`@layer dl-components, dl-layout, dl-utilities`) and semantic design tokens.
27
27
  - 🔤 **Typography Primitives** - First-class `<Heading>` and `<Text>` primitives with semantic decoupling.
@@ -74,7 +74,7 @@ In your application's root stylesheet (e.g. `globals.css` or `app.css`), establi
74
74
  @import "@yuva-devlab/ui/styles.css";
75
75
  ```
76
76
 
77
- > **Tip:** You can import any theme preset from `@yuva-devlab/tokens/themes/*` (`finai`, `vitalai`, `logs`, `orchestrai`, `portal`).
77
+ > **Tip:** You can import any theme preset from `@yuva-devlab/tokens/themes/*` (`finai`, `logs`, `orchestrai`, `portal`).
78
78
 
79
79
  ### 2. Render Components & Typography Primitives
80
80
 
@@ -172,7 +172,6 @@ DevLab UI supports multi-brand switching at runtime using `data-brand` and `data
172
172
  | Brand Key | Theme Name | Primary Aesthetic | Token Import |
173
173
  | :----------- | :---------------- | :------------------------ | :------------------------------------------ |
174
174
  | `finai` | **FinAI** | High-Finance Emerald | `@yuva-devlab/tokens/themes/finai.css` |
175
- | `vitalai` | **VitalAI** | Athletic Volt Kinetic | `@yuva-devlab/tokens/themes/vitalai.css` |
176
175
  | `logs` | **DevLab Logs** | High-Density Matrix Amber | `@yuva-devlab/tokens/themes/logs.css` |
177
176
  | `orchestrai` | **OrchestrAI** | Midnight Neon Violet | `@yuva-devlab/tokens/themes/orchestrai.css` |
178
177
  | `portal` | **DevLab Portal** | Enterprise Modern Indigo | `@yuva-devlab/tokens/themes/portal.css` |
@@ -241,6 +240,7 @@ Explore the interactive component playground, live documentation, and API refere
241
240
 
242
241
  ---
243
242
 
244
- ## License
243
+ ## Author & Attribution
245
244
 
246
- MIT © [Yuva DevLab](https://github.com/yuvadevlab)
245
+ - **Author**: Yuva DevLab (`yuva.devlab@gmail.com`)
246
+ - **License**: MIT
@@ -33,6 +33,12 @@
33
33
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
34
34
  }
35
35
 
36
+ .dl-checkpoint__icon {
37
+ width: 0.75rem;
38
+ height: 0.75rem;
39
+ color: var(--muted-foreground);
40
+ }
41
+
36
42
  .dl-checkpoint__restore-btn {
37
43
  display: inline-flex;
38
44
  align-items: center;
@@ -23,6 +23,18 @@
23
23
  color: var(--muted-foreground);
24
24
  }
25
25
 
26
+ .dl-code-block__header-meta {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 0.5rem;
30
+ }
31
+
32
+ .dl-code-block__header-actions {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 0.375rem;
36
+ }
37
+
26
38
  .dl-code-block__filename {
27
39
  font-weight: 500;
28
40
  color: var(--foreground);
@@ -56,3 +56,42 @@
56
56
  padding-left: 0.5rem;
57
57
  border-left: 1px solid var(--border);
58
58
  }
59
+
60
+ .dl-file-tree__item {
61
+ display: flex;
62
+ flex-direction: column;
63
+ }
64
+
65
+ .dl-file-tree__chevron {
66
+ width: 0.75rem;
67
+ height: 0.75rem;
68
+ color: var(--muted-foreground);
69
+ transition: transform 0.15s ease;
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ .dl-file-tree__chevron--open {
74
+ transform: rotate(90deg);
75
+ }
76
+
77
+ .dl-file-tree__glyph {
78
+ width: 0.875rem;
79
+ height: 0.875rem;
80
+ flex-shrink: 0;
81
+ }
82
+
83
+ .dl-file-tree__glyph--muted {
84
+ color: var(--muted-foreground);
85
+ }
86
+
87
+ .dl-file-tree__glyph--warning {
88
+ color: var(--warning, #eab308);
89
+ }
90
+
91
+ .dl-file-tree__glyph--info {
92
+ color: var(--info, #3b82f6);
93
+ }
94
+
95
+ .dl-file-tree__glyph--primary {
96
+ color: var(--primary);
97
+ }
@@ -22,6 +22,55 @@
22
22
  font-family: inherit;
23
23
  }
24
24
 
25
+ .dl-model-selector__trigger-label {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: 0.375rem;
29
+ }
30
+
31
+ .dl-model-selector__chevron {
32
+ width: 0.75rem;
33
+ height: 0.75rem;
34
+ color: var(--muted-foreground);
35
+ transition: transform 0.2s ease;
36
+ }
37
+
38
+ .dl-model-selector__chevron--open {
39
+ transform: rotate(180deg);
40
+ }
41
+
42
+ .dl-model-selector__search-wrapper {
43
+ position: relative;
44
+ }
45
+
46
+ .dl-model-selector__search-icon {
47
+ position: absolute;
48
+ left: 0.5rem;
49
+ top: 0.625rem;
50
+ width: 0.75rem;
51
+ height: 0.75rem;
52
+ color: var(--muted-foreground);
53
+ }
54
+
55
+ .dl-model-selector__empty {
56
+ padding: 0.75rem;
57
+ text-align: center;
58
+ font-size: 0.75rem;
59
+ color: var(--muted-foreground);
60
+ }
61
+
62
+ .dl-model-selector__list {
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 0.125rem;
66
+ }
67
+
68
+ .dl-model-selector__provider {
69
+ font-size: 0.75rem;
70
+ color: var(--muted-foreground);
71
+ font-weight: 400;
72
+ }
73
+
25
74
  .dl-model-selector__trigger:hover:not(:disabled) {
26
75
  background-color: var(--accent);
27
76
  color: var(--accent-foreground);
@@ -81,6 +81,18 @@
81
81
  color: var(--foreground);
82
82
  }
83
83
 
84
+ .dl-multi-select-chevron {
85
+ width: 1rem;
86
+ height: 1rem;
87
+ flex-shrink: 0;
88
+ color: var(--muted-foreground);
89
+ }
90
+
91
+ .dl-multi-select-chip__icon {
92
+ width: 0.75rem;
93
+ height: 0.75rem;
94
+ }
95
+
84
96
  .dl-multi-select-content {
85
97
  width: var(--radix-popover-trigger-width);
86
98
  min-width: 14rem;
@@ -104,3 +104,50 @@
104
104
  gap: 0.375rem;
105
105
  padding: 0.125rem 0;
106
106
  }
107
+
108
+ .dl-plan__status-chip {
109
+ padding: 0.125rem 0.5rem;
110
+ border-radius: 9999px;
111
+ font-size: 0.75rem;
112
+ font-weight: 600;
113
+ text-transform: uppercase;
114
+ letter-spacing: 0.05em;
115
+ }
116
+
117
+ .dl-plan__status-chip--completed {
118
+ background-color: color-mix(in oklch, var(--success) 15%, transparent);
119
+ color: var(--success);
120
+ }
121
+
122
+ .dl-plan__status-chip--in-progress {
123
+ background-color: color-mix(in oklch, var(--primary) 15%, transparent);
124
+ color: var(--primary);
125
+ }
126
+
127
+ .dl-plan__status-chip--failed {
128
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
129
+ color: var(--destructive);
130
+ }
131
+
132
+ .dl-plan__status-chip--pending {
133
+ background-color: var(--muted);
134
+ color: var(--muted-foreground);
135
+ }
136
+
137
+ .dl-plan__chevron {
138
+ width: 0.875rem;
139
+ height: 0.875rem;
140
+ color: var(--muted-foreground);
141
+ transition: transform 0.15s ease;
142
+ flex-shrink: 0;
143
+ margin-top: 0.125rem;
144
+ }
145
+
146
+ .dl-plan__chevron--expanded {
147
+ transform: rotate(90deg);
148
+ }
149
+
150
+ .dl-plan__desc-block {
151
+ margin-bottom: 0.5rem;
152
+ line-height: 1.625;
153
+ }
@@ -62,6 +62,13 @@
62
62
  color: var(--foreground);
63
63
  }
64
64
 
65
+ .dl-prompt-input__chip-icon {
66
+ width: 0.75rem;
67
+ height: 0.75rem;
68
+ color: var(--muted-foreground);
69
+ flex-shrink: 0;
70
+ }
71
+
65
72
  .dl-prompt-input__textarea {
66
73
  width: 100%;
67
74
  min-height: 3.5rem;
@@ -74,3 +74,64 @@
74
74
  gap: 0.5rem;
75
75
  shrink: 0;
76
76
  }
77
+
78
+ .dl-queue-item__priority {
79
+ display: inline-flex;
80
+ align-items: center;
81
+ padding: 0.125rem 0.375rem;
82
+ border-radius: var(--radius-sm, 0.25rem);
83
+ font-size: 0.625rem;
84
+ font-weight: 600;
85
+ text-transform: uppercase;
86
+ letter-spacing: 0.05em;
87
+ }
88
+
89
+ .dl-queue-item__priority--high {
90
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
91
+ color: var(--destructive);
92
+ }
93
+
94
+ .dl-queue-item__priority--normal {
95
+ background-color: color-mix(in oklch, var(--primary) 15%, transparent);
96
+ color: var(--primary);
97
+ }
98
+
99
+ .dl-queue-item__priority--low {
100
+ background-color: var(--muted);
101
+ color: var(--muted-foreground);
102
+ }
103
+
104
+ .dl-queue-item__duration {
105
+ font-size: 0.75rem;
106
+ color: var(--muted-foreground);
107
+ font-family: var(--font-mono, monospace);
108
+ }
109
+
110
+ .dl-queue-item__remove-btn {
111
+ display: inline-flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ color: var(--muted-foreground);
115
+ background: transparent;
116
+ border: none;
117
+ cursor: pointer;
118
+ padding: 0.125rem;
119
+ border-radius: var(--radius-sm, 0.25rem);
120
+ transition: color 0.15s ease;
121
+ }
122
+
123
+ .dl-queue-item__remove-btn:hover {
124
+ color: var(--foreground);
125
+ }
126
+
127
+ .dl-queue__header-left {
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 0.375rem;
131
+ }
132
+
133
+ .dl-queue__header-count {
134
+ font-size: 0.75rem;
135
+ color: var(--muted-foreground);
136
+ font-weight: 400;
137
+ }
@@ -19,3 +19,15 @@
19
19
  outline-offset: 2px;
20
20
  border-radius: var(--radius-sm, 0.25rem);
21
21
  }
22
+
23
+ .dl-search-icon {
24
+ width: 1rem;
25
+ height: 1rem;
26
+ }
27
+
28
+ .dl-search-spinner {
29
+ width: 1rem;
30
+ height: 1rem;
31
+ animation: dl-spin 1s linear infinite;
32
+ color: var(--muted-foreground);
33
+ }
@@ -93,6 +93,22 @@
93
93
  white-space: nowrap;
94
94
  }
95
95
 
96
+ .dl-source-card__icon {
97
+ width: 0.75rem;
98
+ height: 0.75rem;
99
+ color: var(--muted-foreground);
100
+ flex-shrink: 0;
101
+ }
102
+
103
+ .dl-source-card__external {
104
+ width: 0.625rem;
105
+ height: 0.625rem;
106
+ margin-left: auto;
107
+ color: var(--muted-foreground);
108
+ flex-shrink: 0;
109
+ opacity: 0.7;
110
+ }
111
+
96
112
  .dl-source-card__title {
97
113
  margin-top: 0.25rem;
98
114
  font-size: 0.75rem;
@@ -80,6 +80,25 @@
80
80
  user-select: none;
81
81
  }
82
82
 
83
+ .dl-stack-frame__fn-wrapper {
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 0.375rem;
87
+ min-width: 0;
88
+ }
89
+
90
+ .dl-stack-frame__chevron {
91
+ width: 0.75rem;
92
+ height: 0.75rem;
93
+ color: var(--muted-foreground);
94
+ transition: transform 0.15s ease;
95
+ flex-shrink: 0;
96
+ }
97
+
98
+ .dl-stack-frame__chevron--expanded {
99
+ transform: rotate(90deg);
100
+ }
101
+
83
102
  .dl-stack-frame__fn {
84
103
  font-weight: 600;
85
104
  color: var(--primary);
@@ -61,6 +61,53 @@
61
61
  gap: 0.375rem;
62
62
  }
63
63
 
64
+ .dl-subagent__status {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ gap: 0.25rem;
68
+ font-size: 0.75rem;
69
+ font-weight: 500;
70
+ }
71
+
72
+ .dl-subagent__status--running {
73
+ color: var(--primary);
74
+ }
75
+
76
+ .dl-subagent__status--completed {
77
+ color: var(--success);
78
+ }
79
+
80
+ .dl-subagent__status--failed {
81
+ color: var(--destructive);
82
+ }
83
+
84
+ .dl-subagent__status--idle {
85
+ color: var(--muted-foreground);
86
+ }
87
+
88
+ .dl-subagent__chip {
89
+ padding: 0.125rem 0.375rem;
90
+ border-radius: var(--radius-sm, 0.25rem);
91
+ font-size: 0.625rem;
92
+ font-family: var(--font-mono, monospace);
93
+ background-color: var(--muted);
94
+ color: var(--muted-foreground);
95
+ border: 1px solid var(--border);
96
+ }
97
+
98
+ .dl-subagent__chevron {
99
+ width: 0.875rem;
100
+ height: 0.875rem;
101
+ color: var(--muted-foreground);
102
+ transition: transform 0.15s ease;
103
+ flex-shrink: 0;
104
+ margin-left: 0.25rem;
105
+ }
106
+
107
+ .dl-subagent__chevron--open {
108
+ transform: rotate(90deg);
109
+ }
110
+
64
111
  .dl-subagent__content {
65
112
  padding: 0.75rem;
66
113
  background-color: var(--background);
@@ -1,32 +1,52 @@
1
1
  .dl-table-wrapper {
2
2
  position: relative;
3
3
  width: 100%;
4
- overflow: auto;
4
+ overflow-x: auto;
5
+ -webkit-overflow-scrolling: touch;
5
6
  }
6
7
 
7
8
  .dl-table {
8
9
  width: 100%;
9
10
  caption-side: bottom;
10
- font-size: 0.875rem;
11
+ font-size: var(--text-body, 0.875rem);
11
12
  border-collapse: collapse;
12
13
  }
14
+
13
15
  .dl-table__head tr {
14
16
  border-bottom: 1px solid var(--border);
15
17
  }
18
+
16
19
  .dl-table__body tr:last-child {
17
20
  border-bottom: none;
18
21
  }
19
- .dl-table__body tr:hover {
20
- background-color: color-mix(in oklch, var(--muted) 50%, transparent);
21
- }
22
+
22
23
  .dl-table__foot {
23
24
  border-top: 1px solid var(--border);
24
25
  font-weight: 500;
25
26
  }
27
+
26
28
  .dl-table__row {
27
29
  border-bottom: 1px solid var(--border);
28
- transition: background-color 0.1s;
30
+ transition:
31
+ background-color 0.15s ease,
32
+ color 0.15s ease;
33
+ }
34
+
35
+ /* Base subtle row hover */
36
+ .dl-table__body tr:hover {
37
+ background-color: color-mix(in oklch, var(--muted) 40%, transparent);
38
+ }
39
+
40
+ /* Theme-Aware Enhanced Row Hover Highlighting */
41
+ .dl-table--hoverable .dl-table__body tr:hover,
42
+ .dl-table--hoverable .dl-table__row:hover,
43
+ .dl-table__row--hoverable:hover {
44
+ background-color: var(
45
+ --table-row-hover,
46
+ color-mix(in oklch, var(--primary) 8%, transparent)
47
+ );
29
48
  }
49
+
30
50
  .dl-table__head-cell {
31
51
  height: var(--control-height-md, 2.5rem);
32
52
  padding: var(--table-row-padding-y, 0.5rem)
@@ -36,13 +56,15 @@
36
56
  color: var(--muted-foreground);
37
57
  white-space: nowrap;
38
58
  }
59
+
39
60
  .dl-table__cell {
40
61
  padding: var(--table-row-padding-y, 0.75rem)
41
62
  var(--table-row-padding-x, 0.75rem);
42
63
  vertical-align: middle;
43
64
  }
65
+
44
66
  .dl-table__caption {
45
67
  margin-top: 1rem;
46
- font-size: 0.875rem;
68
+ font-size: var(--text-body-sm, 0.875rem);
47
69
  color: var(--muted-foreground);
48
70
  }
@@ -21,6 +21,23 @@
21
21
  font-size: 0.75rem;
22
22
  }
23
23
 
24
+ .dl-terminal__header-left {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 0.5rem;
28
+ }
29
+
30
+ .dl-terminal__header-actions {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: 0.375rem;
34
+ }
35
+
36
+ .dl-terminal__icon {
37
+ width: 0.875rem;
38
+ height: 0.875rem;
39
+ }
40
+
24
41
  .dl-terminal__dots {
25
42
  display: flex;
26
43
  align-items: center;
@@ -18,6 +18,23 @@
18
18
  border-bottom: 1px solid var(--border);
19
19
  }
20
20
 
21
+ .dl-test-results__header-left {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 0.5rem;
25
+ }
26
+
27
+ .dl-test-results__title {
28
+ font-weight: 600;
29
+ color: var(--foreground);
30
+ }
31
+
32
+ .dl-test-results__duration {
33
+ font-size: 0.75rem;
34
+ color: var(--muted-foreground);
35
+ font-family: var(--font-mono, monospace);
36
+ }
37
+
21
38
  .dl-test-results__summary {
22
39
  display: flex;
23
40
  align-items: center;
@@ -70,6 +87,23 @@
70
87
  gap: 0.5rem;
71
88
  }
72
89
 
90
+ .dl-test-case__meta {
91
+ display: flex;
92
+ align-items: center;
93
+ gap: 0.5rem;
94
+ }
95
+
96
+ .dl-test-case__chevron {
97
+ width: 0.75rem;
98
+ height: 0.75rem;
99
+ color: var(--muted-foreground);
100
+ transition: transform 0.15s ease;
101
+ }
102
+
103
+ .dl-test-case__chevron--expanded {
104
+ transform: rotate(90deg);
105
+ }
106
+
73
107
  .dl-test-case__info {
74
108
  display: flex;
75
109
  align-items: center;