@morscherlab/mld-sdk 0.7.2 → 0.7.4
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/components/BaseInput.vue.d.ts +1 -0
- package/dist/components/BaseInput.vue.js +5 -2
- package/dist/components/BaseInput.vue.js.map +1 -1
- package/dist/components/BaseModal.vue.d.ts +6 -2
- package/dist/components/BaseModal.vue.js +54 -10
- package/dist/components/BaseModal.vue.js.map +1 -1
- package/dist/components/BaseSelect.vue.d.ts +1 -0
- package/dist/components/BaseSelect.vue.js +5 -2
- package/dist/components/BaseSelect.vue.js.map +1 -1
- package/dist/components/BaseTextarea.vue.d.ts +1 -0
- package/dist/components/BaseTextarea.vue.js +5 -2
- package/dist/components/BaseTextarea.vue.js.map +1 -1
- package/dist/components/ExperimentCodeBadge.vue.d.ts +8 -0
- package/dist/components/ExperimentCodeBadge.vue.js +19 -0
- package/dist/components/ExperimentCodeBadge.vue.js.map +1 -0
- package/dist/components/ExperimentCodeBadge.vue3.js +6 -0
- package/dist/components/ExperimentCodeBadge.vue3.js.map +1 -0
- package/dist/components/ExperimentDataViewer.vue.d.ts +29 -0
- package/dist/components/ExperimentDataViewer.vue.js +258 -0
- package/dist/components/ExperimentDataViewer.vue.js.map +1 -0
- package/dist/components/ExperimentDataViewer.vue3.js +6 -0
- package/dist/components/ExperimentDataViewer.vue3.js.map +1 -0
- package/dist/components/FormField.vue.d.ts +4 -1
- package/dist/components/FormField.vue.js +24 -12
- package/dist/components/FormField.vue.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +14 -8
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14 -8
- package/dist/index.js.map +1 -1
- package/dist/styles.css +311 -30
- package/dist/types/components.d.ts +23 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/BaseInput.vue +3 -0
- package/src/components/BaseModal.vue +59 -10
- package/src/components/BaseSelect.vue +3 -0
- package/src/components/BaseTextarea.vue +3 -0
- package/src/components/ExperimentCodeBadge.vue +20 -0
- package/src/components/ExperimentDataViewer.vue +250 -0
- package/src/components/FormField.vue +17 -4
- package/src/components/index.ts +4 -0
- package/src/index.ts +10 -0
- package/src/styles/components/button.css +4 -4
- package/src/styles/components/collapsible-card.css +7 -0
- package/src/styles/components/experiment-code-badge.css +13 -0
- package/src/styles/components/experiment-data-viewer.css +131 -0
- package/src/styles/components/modal.css +1 -1
- package/src/styles/components/select.css +1 -1
- package/src/styles/components/slider.css +4 -8
- package/src/styles/components/textarea.css +5 -1
- package/src/styles/index.css +2 -0
- package/src/styles/variables.css +7 -2
- package/src/types/components.ts +27 -0
- package/src/types/index.ts +4 -0
package/dist/styles.css
CHANGED
|
@@ -59,14 +59,19 @@
|
|
|
59
59
|
|
|
60
60
|
/* Semantic colors */
|
|
61
61
|
--mld-success: #10B981;
|
|
62
|
+
--mld-success-hover: #059669;
|
|
62
63
|
--mld-success-bg: rgba(16, 185, 129, 0.1);
|
|
63
64
|
--mld-error: #EF4444;
|
|
65
|
+
--mld-error-hover: #DC2626;
|
|
64
66
|
--mld-error-bg: rgba(239, 68, 68, 0.1);
|
|
65
67
|
--mld-warning: #F59E0B;
|
|
66
68
|
--mld-warning-bg: rgba(245, 158, 11, 0.1);
|
|
67
69
|
--mld-info: #3B82F6;
|
|
68
70
|
--mld-info-bg: rgba(59, 130, 246, 0.1);
|
|
69
71
|
|
|
72
|
+
/* Shared component tokens */
|
|
73
|
+
--mld-disabled-opacity: 0.6;
|
|
74
|
+
|
|
70
75
|
/* Legacy aliases (for backwards compatibility) */
|
|
71
76
|
--mld-bg-primary: var(--bg-primary);
|
|
72
77
|
--mld-bg-secondary: var(--bg-secondary);
|
|
@@ -556,10 +561,10 @@ code, pre {
|
|
|
556
561
|
background-color: var(--mld-success);
|
|
557
562
|
}
|
|
558
563
|
.hover\:bg-mld-success-hover:hover {
|
|
559
|
-
background-color:
|
|
564
|
+
background-color: var(--mld-success-hover);
|
|
560
565
|
}
|
|
561
566
|
.hover\:bg-mld-danger-hover:hover {
|
|
562
|
-
background-color:
|
|
567
|
+
background-color: var(--mld-error-hover);
|
|
563
568
|
}
|
|
564
569
|
.bg-mld-primary\/10 {
|
|
565
570
|
background-color: rgba(99, 102, 241, 0.1);
|
|
@@ -1563,11 +1568,11 @@ html.dark .focus\:ring-offset-2:focus {
|
|
|
1563
1568
|
border: none;
|
|
1564
1569
|
box-sizing: border-box;
|
|
1565
1570
|
}
|
|
1566
|
-
.mld-button:focus {
|
|
1571
|
+
.mld-button:focus-visible {
|
|
1567
1572
|
outline: none;
|
|
1568
1573
|
box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color-primary);
|
|
1569
1574
|
}
|
|
1570
|
-
html.dark .mld-button:focus {
|
|
1575
|
+
html.dark .mld-button:focus-visible {
|
|
1571
1576
|
box-shadow: 0 0 0 2px var(--bg-primary), 0 0 0 4px var(--color-primary);
|
|
1572
1577
|
}
|
|
1573
1578
|
.mld-button--disabled {
|
|
@@ -1605,14 +1610,14 @@ html.dark .mld-button:focus {
|
|
|
1605
1610
|
color: white;
|
|
1606
1611
|
}
|
|
1607
1612
|
.mld-button--danger:hover:not(.mld-button--disabled) {
|
|
1608
|
-
background-color:
|
|
1613
|
+
background-color: var(--mld-error-hover);
|
|
1609
1614
|
}
|
|
1610
1615
|
.mld-button--success {
|
|
1611
1616
|
background-color: var(--mld-success);
|
|
1612
1617
|
color: white;
|
|
1613
1618
|
}
|
|
1614
1619
|
.mld-button--success:hover:not(.mld-button--disabled) {
|
|
1615
|
-
background-color:
|
|
1620
|
+
background-color: var(--mld-success-hover);
|
|
1616
1621
|
}
|
|
1617
1622
|
.mld-button--ghost {
|
|
1618
1623
|
background-color: transparent;
|
|
@@ -1751,6 +1756,12 @@ html.dark .mld-checkbox__native:focus-visible + .mld-checkbox__box {
|
|
|
1751
1756
|
overflow: hidden;
|
|
1752
1757
|
background-color: var(--bg-card);
|
|
1753
1758
|
}
|
|
1759
|
+
/* Allow floating dropdowns (DatePicker, TimePicker, etc.) to escape overflow */
|
|
1760
|
+
.mld-collapsible-card:has(.mld-date-picker__dropdown),
|
|
1761
|
+
.mld-collapsible-card:has(.mld-time-picker__dropdown),
|
|
1762
|
+
.mld-collapsible-card:has(.mld-datetime-picker__dropdown) {
|
|
1763
|
+
overflow: visible;
|
|
1764
|
+
}
|
|
1754
1765
|
.mld-collapsible-card__header {
|
|
1755
1766
|
display: flex;
|
|
1756
1767
|
align-items: center;
|
|
@@ -3318,7 +3329,7 @@ html.dark .mld-checkbox__native:focus-visible + .mld-checkbox__box {
|
|
|
3318
3329
|
padding: 0 !important;
|
|
3319
3330
|
}
|
|
3320
3331
|
.mld-modal__close {
|
|
3321
|
-
padding: 0.
|
|
3332
|
+
padding: 0.5rem;
|
|
3322
3333
|
border-radius: var(--mld-radius-sm);
|
|
3323
3334
|
color: var(--text-muted);
|
|
3324
3335
|
background: none;
|
|
@@ -4187,7 +4198,7 @@ html.dark .mld-radio-option__native:focus-visible + .mld-radio-option__circle {
|
|
|
4187
4198
|
box-shadow: 0 0 0 2px var(--mld-error);
|
|
4188
4199
|
}
|
|
4189
4200
|
.mld-select__control--disabled {
|
|
4190
|
-
opacity:
|
|
4201
|
+
opacity: var(--mld-disabled-opacity);
|
|
4191
4202
|
cursor: not-allowed;
|
|
4192
4203
|
background-color: var(--bg-tertiary);
|
|
4193
4204
|
}
|
|
@@ -4326,7 +4337,7 @@ html.dark .mld-radio-option__native:focus-visible + .mld-radio-option__circle {
|
|
|
4326
4337
|
gap: 12px;
|
|
4327
4338
|
}
|
|
4328
4339
|
.mld-slider--disabled {
|
|
4329
|
-
opacity:
|
|
4340
|
+
opacity: var(--mld-disabled-opacity);
|
|
4330
4341
|
cursor: not-allowed;
|
|
4331
4342
|
}
|
|
4332
4343
|
.mld-slider__container {
|
|
@@ -4341,16 +4352,13 @@ html.dark .mld-radio-option__native:focus-visible + .mld-radio-option__circle {
|
|
|
4341
4352
|
left: 0;
|
|
4342
4353
|
right: 0;
|
|
4343
4354
|
border-radius: 9999px;
|
|
4344
|
-
background-color:
|
|
4345
|
-
}
|
|
4346
|
-
html.dark .mld-slider__track {
|
|
4347
|
-
background-color: #334155;
|
|
4355
|
+
background-color: var(--bg-tertiary);
|
|
4348
4356
|
}
|
|
4349
4357
|
.mld-slider__fill {
|
|
4350
4358
|
position: absolute;
|
|
4351
4359
|
left: 0;
|
|
4352
4360
|
border-radius: 9999px;
|
|
4353
|
-
background-color:
|
|
4361
|
+
background-color: var(--color-primary);
|
|
4354
4362
|
}
|
|
4355
4363
|
.mld-slider__input {
|
|
4356
4364
|
position: absolute;
|
|
@@ -4371,7 +4379,7 @@ html.dark .mld-slider__track {
|
|
|
4371
4379
|
transform: translateX(-50%) translateY(-50%);
|
|
4372
4380
|
border-radius: 9999px;
|
|
4373
4381
|
background-color: white;
|
|
4374
|
-
border: 2px solid
|
|
4382
|
+
border: 2px solid var(--color-primary);
|
|
4375
4383
|
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
|
|
4376
4384
|
pointer-events: none;
|
|
4377
4385
|
transition: transform 150ms ease;
|
|
@@ -4589,6 +4597,9 @@ html.dark .mld-slider__track {
|
|
|
4589
4597
|
.mld-textarea::placeholder {
|
|
4590
4598
|
color: var(--text-muted);
|
|
4591
4599
|
}
|
|
4600
|
+
.mld-textarea:hover:not(:focus):not(.mld-textarea--disabled):not(.mld-textarea--error) {
|
|
4601
|
+
border-color: var(--text-muted);
|
|
4602
|
+
}
|
|
4592
4603
|
.mld-textarea:focus {
|
|
4593
4604
|
outline: none;
|
|
4594
4605
|
border-color: transparent;
|
|
@@ -4601,7 +4612,7 @@ html.dark .mld-slider__track {
|
|
|
4601
4612
|
box-shadow: 0 0 0 2px var(--mld-error);
|
|
4602
4613
|
}
|
|
4603
4614
|
.mld-textarea--disabled {
|
|
4604
|
-
opacity:
|
|
4615
|
+
opacity: var(--mld-disabled-opacity);
|
|
4605
4616
|
cursor: not-allowed;
|
|
4606
4617
|
background-color: var(--bg-tertiary);
|
|
4607
4618
|
}
|
|
@@ -12048,6 +12059,135 @@ html.dark .mld-settings-modal__option-btn--active {
|
|
|
12048
12059
|
padding-top: 1rem;
|
|
12049
12060
|
border-top: 1px solid var(--color-border, #e5e7eb);
|
|
12050
12061
|
}
|
|
12062
|
+
.mld-data-viewer {
|
|
12063
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12064
|
+
border-radius: var(--mld-radius-md, 8px);
|
|
12065
|
+
overflow: hidden;
|
|
12066
|
+
}
|
|
12067
|
+
.mld-data-viewer__header {
|
|
12068
|
+
display: flex;
|
|
12069
|
+
align-items: center;
|
|
12070
|
+
justify-content: space-between;
|
|
12071
|
+
padding: 8px 12px;
|
|
12072
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12073
|
+
background: var(--mld-color-surface-1, #fafafa);
|
|
12074
|
+
gap: 8px;
|
|
12075
|
+
}
|
|
12076
|
+
.mld-data-viewer__controls { display: flex; gap: 8px; }
|
|
12077
|
+
.mld-data-viewer__actions { display: flex; gap: 4px; align-items: center; }
|
|
12078
|
+
.mld-data-viewer__content {
|
|
12079
|
+
padding: 12px;
|
|
12080
|
+
max-height: 600px;
|
|
12081
|
+
overflow-y: auto;
|
|
12082
|
+
}
|
|
12083
|
+
.mld-data-viewer__loading,
|
|
12084
|
+
.mld-data-viewer__empty {
|
|
12085
|
+
text-align: center;
|
|
12086
|
+
padding: 32px;
|
|
12087
|
+
color: var(--mld-color-text-muted, #999);
|
|
12088
|
+
}
|
|
12089
|
+
/* Summary view */
|
|
12090
|
+
.mld-summary {
|
|
12091
|
+
display: flex;
|
|
12092
|
+
flex-direction: column;
|
|
12093
|
+
gap: 16px;
|
|
12094
|
+
}
|
|
12095
|
+
/* Metadata pills row */
|
|
12096
|
+
.mld-summary__metadata {
|
|
12097
|
+
display: flex;
|
|
12098
|
+
flex-wrap: wrap;
|
|
12099
|
+
gap: 6px;
|
|
12100
|
+
}
|
|
12101
|
+
.mld-summary__pill {
|
|
12102
|
+
display: inline-flex;
|
|
12103
|
+
align-items: center;
|
|
12104
|
+
border-radius: 6px;
|
|
12105
|
+
overflow: hidden;
|
|
12106
|
+
font-size: 0.8125rem;
|
|
12107
|
+
line-height: 1;
|
|
12108
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12109
|
+
}
|
|
12110
|
+
.mld-summary__pill--sm {
|
|
12111
|
+
font-size: 0.75rem;
|
|
12112
|
+
}
|
|
12113
|
+
.mld-summary__pill-key {
|
|
12114
|
+
padding: 4px 8px;
|
|
12115
|
+
background: var(--mld-color-surface-1, #f5f5f5);
|
|
12116
|
+
color: var(--mld-color-text-muted, #666);
|
|
12117
|
+
text-transform: capitalize;
|
|
12118
|
+
font-weight: 500;
|
|
12119
|
+
}
|
|
12120
|
+
.mld-summary__pill-value {
|
|
12121
|
+
padding: 4px 8px;
|
|
12122
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
12123
|
+
}
|
|
12124
|
+
/* Section */
|
|
12125
|
+
.mld-summary__section {
|
|
12126
|
+
display: flex;
|
|
12127
|
+
flex-direction: column;
|
|
12128
|
+
gap: 12px;
|
|
12129
|
+
}
|
|
12130
|
+
.mld-summary__section-label {
|
|
12131
|
+
font-weight: 600;
|
|
12132
|
+
font-size: 0.875rem;
|
|
12133
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
12134
|
+
}
|
|
12135
|
+
.mld-summary__section-count {
|
|
12136
|
+
font-size: 0.75rem;
|
|
12137
|
+
color: var(--mld-color-text-muted, #999);
|
|
12138
|
+
margin-left: 8px;
|
|
12139
|
+
}
|
|
12140
|
+
.mld-summary__table-header {
|
|
12141
|
+
display: flex;
|
|
12142
|
+
align-items: baseline;
|
|
12143
|
+
gap: 4px;
|
|
12144
|
+
}
|
|
12145
|
+
/* Group cards */
|
|
12146
|
+
.mld-summary__group-card {
|
|
12147
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12148
|
+
border-radius: var(--mld-radius-md, 8px);
|
|
12149
|
+
overflow: hidden;
|
|
12150
|
+
}
|
|
12151
|
+
.mld-summary__group-header {
|
|
12152
|
+
display: flex;
|
|
12153
|
+
align-items: center;
|
|
12154
|
+
justify-content: space-between;
|
|
12155
|
+
padding: 10px 14px;
|
|
12156
|
+
background: var(--mld-color-surface-1, #fafafa);
|
|
12157
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12158
|
+
}
|
|
12159
|
+
.mld-summary__group-label {
|
|
12160
|
+
font-weight: 600;
|
|
12161
|
+
font-size: 0.875rem;
|
|
12162
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
12163
|
+
}
|
|
12164
|
+
.mld-summary__group-count {
|
|
12165
|
+
font-size: 0.75rem;
|
|
12166
|
+
color: var(--mld-color-text-muted, #999);
|
|
12167
|
+
background: var(--mld-color-surface-2, #eee);
|
|
12168
|
+
padding: 2px 8px;
|
|
12169
|
+
border-radius: 10px;
|
|
12170
|
+
}
|
|
12171
|
+
.mld-summary__group-meta {
|
|
12172
|
+
display: flex;
|
|
12173
|
+
flex-wrap: wrap;
|
|
12174
|
+
gap: 6px;
|
|
12175
|
+
padding: 8px 14px;
|
|
12176
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
12177
|
+
}
|
|
12178
|
+
.mld-exp-code {
|
|
12179
|
+
display: inline-flex;
|
|
12180
|
+
align-items: center;
|
|
12181
|
+
font-family: var(--mld-font-mono, ui-monospace, monospace);
|
|
12182
|
+
font-weight: 600;
|
|
12183
|
+
background: var(--mld-color-surface-2, #f0f0f0);
|
|
12184
|
+
color: var(--mld-color-text-secondary, #666);
|
|
12185
|
+
border-radius: var(--mld-radius-sm, 4px);
|
|
12186
|
+
letter-spacing: 0.02em;
|
|
12187
|
+
}
|
|
12188
|
+
.mld-exp-code--sm { padding: 1px 6px; font-size: 11px; }
|
|
12189
|
+
.mld-exp-code--md { padding: 2px 8px; font-size: 12px; }
|
|
12190
|
+
.mld-exp-code--lg { padding: 3px 10px; font-size: 14px; }
|
|
12051
12191
|
/* BaseButton Component Styles */
|
|
12052
12192
|
.mld-button {
|
|
12053
12193
|
display: inline-flex;
|
|
@@ -12063,11 +12203,11 @@ html.dark .mld-settings-modal__option-btn--active {
|
|
|
12063
12203
|
border: none;
|
|
12064
12204
|
box-sizing: border-box;
|
|
12065
12205
|
}
|
|
12066
|
-
.mld-button:focus {
|
|
12206
|
+
.mld-button:focus-visible {
|
|
12067
12207
|
outline: none;
|
|
12068
12208
|
box-shadow: 0 0 0 2px white, 0 0 0 4px var(--color-primary);
|
|
12069
12209
|
}
|
|
12070
|
-
html.dark .mld-button:focus {
|
|
12210
|
+
html.dark .mld-button:focus-visible {
|
|
12071
12211
|
box-shadow: 0 0 0 2px var(--bg-primary), 0 0 0 4px var(--color-primary);
|
|
12072
12212
|
}
|
|
12073
12213
|
.mld-button--disabled {
|
|
@@ -12106,14 +12246,14 @@ html.dark .mld-button:focus {
|
|
|
12106
12246
|
color: white;
|
|
12107
12247
|
}
|
|
12108
12248
|
.mld-button--danger:hover:not(.mld-button--disabled) {
|
|
12109
|
-
background-color:
|
|
12249
|
+
background-color: var(--mld-error-hover);
|
|
12110
12250
|
}
|
|
12111
12251
|
.mld-button--success {
|
|
12112
12252
|
background-color: var(--mld-success);
|
|
12113
12253
|
color: white;
|
|
12114
12254
|
}
|
|
12115
12255
|
.mld-button--success:hover:not(.mld-button--disabled) {
|
|
12116
|
-
background-color:
|
|
12256
|
+
background-color: var(--mld-success-hover);
|
|
12117
12257
|
}
|
|
12118
12258
|
.mld-button--ghost {
|
|
12119
12259
|
background-color: transparent;
|
|
@@ -12214,6 +12354,9 @@ to {
|
|
|
12214
12354
|
.mld-textarea::placeholder {
|
|
12215
12355
|
color: var(--text-muted);
|
|
12216
12356
|
}
|
|
12357
|
+
.mld-textarea:hover:not(:focus):not(.mld-textarea--disabled):not(.mld-textarea--error) {
|
|
12358
|
+
border-color: var(--text-muted);
|
|
12359
|
+
}
|
|
12217
12360
|
.mld-textarea:focus {
|
|
12218
12361
|
outline: none;
|
|
12219
12362
|
border-color: transparent;
|
|
@@ -12226,7 +12369,7 @@ to {
|
|
|
12226
12369
|
box-shadow: 0 0 0 2px var(--mld-error);
|
|
12227
12370
|
}
|
|
12228
12371
|
.mld-textarea--disabled {
|
|
12229
|
-
opacity:
|
|
12372
|
+
opacity: var(--mld-disabled-opacity);
|
|
12230
12373
|
cursor: not-allowed;
|
|
12231
12374
|
background-color: var(--bg-tertiary);
|
|
12232
12375
|
}
|
|
@@ -12283,7 +12426,7 @@ to {
|
|
|
12283
12426
|
box-shadow: 0 0 0 2px var(--mld-error);
|
|
12284
12427
|
}
|
|
12285
12428
|
.mld-select__control--disabled {
|
|
12286
|
-
opacity:
|
|
12429
|
+
opacity: var(--mld-disabled-opacity);
|
|
12287
12430
|
cursor: not-allowed;
|
|
12288
12431
|
background-color: var(--bg-tertiary);
|
|
12289
12432
|
}
|
|
@@ -12640,7 +12783,7 @@ html.dark .mld-radio-option__native:focus-visible + .mld-radio-option__circle {
|
|
|
12640
12783
|
gap: 12px;
|
|
12641
12784
|
}
|
|
12642
12785
|
.mld-slider--disabled {
|
|
12643
|
-
opacity:
|
|
12786
|
+
opacity: var(--mld-disabled-opacity);
|
|
12644
12787
|
cursor: not-allowed;
|
|
12645
12788
|
}
|
|
12646
12789
|
.mld-slider__container {
|
|
@@ -12655,16 +12798,13 @@ html.dark .mld-radio-option__native:focus-visible + .mld-radio-option__circle {
|
|
|
12655
12798
|
left: 0;
|
|
12656
12799
|
right: 0;
|
|
12657
12800
|
border-radius: 9999px;
|
|
12658
|
-
background-color:
|
|
12659
|
-
}
|
|
12660
|
-
html.dark .mld-slider__track {
|
|
12661
|
-
background-color: #334155;
|
|
12801
|
+
background-color: var(--bg-tertiary);
|
|
12662
12802
|
}
|
|
12663
12803
|
.mld-slider__fill {
|
|
12664
12804
|
position: absolute;
|
|
12665
12805
|
left: 0;
|
|
12666
12806
|
border-radius: 9999px;
|
|
12667
|
-
background-color:
|
|
12807
|
+
background-color: var(--color-primary);
|
|
12668
12808
|
}
|
|
12669
12809
|
.mld-slider__input {
|
|
12670
12810
|
position: absolute;
|
|
@@ -12685,7 +12825,7 @@ html.dark .mld-slider__track {
|
|
|
12685
12825
|
transform: translateX(-50%) translateY(-50%);
|
|
12686
12826
|
border-radius: 9999px;
|
|
12687
12827
|
background-color: white;
|
|
12688
|
-
border: 2px solid
|
|
12828
|
+
border: 2px solid var(--color-primary);
|
|
12689
12829
|
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
|
|
12690
12830
|
pointer-events: none;
|
|
12691
12831
|
transition: transform 150ms ease;
|
|
@@ -12946,7 +13086,7 @@ html.dark .mld-slider__track {
|
|
|
12946
13086
|
padding: 0 !important;
|
|
12947
13087
|
}
|
|
12948
13088
|
.mld-modal__close {
|
|
12949
|
-
padding: 0.
|
|
13089
|
+
padding: 0.5rem;
|
|
12950
13090
|
border-radius: var(--mld-radius-sm);
|
|
12951
13091
|
color: var(--text-muted);
|
|
12952
13092
|
background: none;
|
|
@@ -15577,6 +15717,13 @@ to {
|
|
|
15577
15717
|
overflow: hidden;
|
|
15578
15718
|
background-color: var(--bg-card);
|
|
15579
15719
|
}
|
|
15720
|
+
|
|
15721
|
+
/* Allow floating dropdowns (DatePicker, TimePicker, etc.) to escape overflow */
|
|
15722
|
+
.mld-collapsible-card:has(.mld-date-picker__dropdown),
|
|
15723
|
+
.mld-collapsible-card:has(.mld-time-picker__dropdown),
|
|
15724
|
+
.mld-collapsible-card:has(.mld-datetime-picker__dropdown) {
|
|
15725
|
+
overflow: visible;
|
|
15726
|
+
}
|
|
15580
15727
|
.mld-collapsible-card__header {
|
|
15581
15728
|
display: flex;
|
|
15582
15729
|
align-items: center;
|
|
@@ -22891,6 +23038,140 @@ to { transform: rotate(360deg);
|
|
|
22891
23038
|
padding-top: 1rem;
|
|
22892
23039
|
border-top: 1px solid var(--color-border, #e5e7eb);
|
|
22893
23040
|
}
|
|
23041
|
+
.mld-data-viewer {
|
|
23042
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23043
|
+
border-radius: var(--mld-radius-md, 8px);
|
|
23044
|
+
overflow: hidden;
|
|
23045
|
+
}
|
|
23046
|
+
.mld-data-viewer__header {
|
|
23047
|
+
display: flex;
|
|
23048
|
+
align-items: center;
|
|
23049
|
+
justify-content: space-between;
|
|
23050
|
+
padding: 8px 12px;
|
|
23051
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23052
|
+
background: var(--mld-color-surface-1, #fafafa);
|
|
23053
|
+
gap: 8px;
|
|
23054
|
+
}
|
|
23055
|
+
.mld-data-viewer__controls { display: flex; gap: 8px;
|
|
23056
|
+
}
|
|
23057
|
+
.mld-data-viewer__actions { display: flex; gap: 4px; align-items: center;
|
|
23058
|
+
}
|
|
23059
|
+
.mld-data-viewer__content {
|
|
23060
|
+
padding: 12px;
|
|
23061
|
+
max-height: 600px;
|
|
23062
|
+
overflow-y: auto;
|
|
23063
|
+
}
|
|
23064
|
+
.mld-data-viewer__loading,
|
|
23065
|
+
.mld-data-viewer__empty {
|
|
23066
|
+
text-align: center;
|
|
23067
|
+
padding: 32px;
|
|
23068
|
+
color: var(--mld-color-text-muted, #999);
|
|
23069
|
+
}
|
|
23070
|
+
/* Summary view */
|
|
23071
|
+
.mld-summary {
|
|
23072
|
+
display: flex;
|
|
23073
|
+
flex-direction: column;
|
|
23074
|
+
gap: 16px;
|
|
23075
|
+
}
|
|
23076
|
+
/* Metadata pills row */
|
|
23077
|
+
.mld-summary__metadata {
|
|
23078
|
+
display: flex;
|
|
23079
|
+
flex-wrap: wrap;
|
|
23080
|
+
gap: 6px;
|
|
23081
|
+
}
|
|
23082
|
+
.mld-summary__pill {
|
|
23083
|
+
display: inline-flex;
|
|
23084
|
+
align-items: center;
|
|
23085
|
+
border-radius: 6px;
|
|
23086
|
+
overflow: hidden;
|
|
23087
|
+
font-size: 0.8125rem;
|
|
23088
|
+
line-height: 1;
|
|
23089
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23090
|
+
}
|
|
23091
|
+
.mld-summary__pill--sm {
|
|
23092
|
+
font-size: 0.75rem;
|
|
23093
|
+
}
|
|
23094
|
+
.mld-summary__pill-key {
|
|
23095
|
+
padding: 4px 8px;
|
|
23096
|
+
background: var(--mld-color-surface-1, #f5f5f5);
|
|
23097
|
+
color: var(--mld-color-text-muted, #666);
|
|
23098
|
+
text-transform: capitalize;
|
|
23099
|
+
font-weight: 500;
|
|
23100
|
+
}
|
|
23101
|
+
.mld-summary__pill-value {
|
|
23102
|
+
padding: 4px 8px;
|
|
23103
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
23104
|
+
}
|
|
23105
|
+
/* Section */
|
|
23106
|
+
.mld-summary__section {
|
|
23107
|
+
display: flex;
|
|
23108
|
+
flex-direction: column;
|
|
23109
|
+
gap: 12px;
|
|
23110
|
+
}
|
|
23111
|
+
.mld-summary__section-label {
|
|
23112
|
+
font-weight: 600;
|
|
23113
|
+
font-size: 0.875rem;
|
|
23114
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
23115
|
+
}
|
|
23116
|
+
.mld-summary__section-count {
|
|
23117
|
+
font-size: 0.75rem;
|
|
23118
|
+
color: var(--mld-color-text-muted, #999);
|
|
23119
|
+
margin-left: 8px;
|
|
23120
|
+
}
|
|
23121
|
+
.mld-summary__table-header {
|
|
23122
|
+
display: flex;
|
|
23123
|
+
align-items: baseline;
|
|
23124
|
+
gap: 4px;
|
|
23125
|
+
}
|
|
23126
|
+
/* Group cards */
|
|
23127
|
+
.mld-summary__group-card {
|
|
23128
|
+
border: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23129
|
+
border-radius: var(--mld-radius-md, 8px);
|
|
23130
|
+
overflow: hidden;
|
|
23131
|
+
}
|
|
23132
|
+
.mld-summary__group-header {
|
|
23133
|
+
display: flex;
|
|
23134
|
+
align-items: center;
|
|
23135
|
+
justify-content: space-between;
|
|
23136
|
+
padding: 10px 14px;
|
|
23137
|
+
background: var(--mld-color-surface-1, #fafafa);
|
|
23138
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23139
|
+
}
|
|
23140
|
+
.mld-summary__group-label {
|
|
23141
|
+
font-weight: 600;
|
|
23142
|
+
font-size: 0.875rem;
|
|
23143
|
+
color: var(--mld-color-text, #1a1a1a);
|
|
23144
|
+
}
|
|
23145
|
+
.mld-summary__group-count {
|
|
23146
|
+
font-size: 0.75rem;
|
|
23147
|
+
color: var(--mld-color-text-muted, #999);
|
|
23148
|
+
background: var(--mld-color-surface-2, #eee);
|
|
23149
|
+
padding: 2px 8px;
|
|
23150
|
+
border-radius: 10px;
|
|
23151
|
+
}
|
|
23152
|
+
.mld-summary__group-meta {
|
|
23153
|
+
display: flex;
|
|
23154
|
+
flex-wrap: wrap;
|
|
23155
|
+
gap: 6px;
|
|
23156
|
+
padding: 8px 14px;
|
|
23157
|
+
border-bottom: 1px solid var(--mld-color-border, #e0e0e0);
|
|
23158
|
+
}
|
|
23159
|
+
.mld-exp-code {
|
|
23160
|
+
display: inline-flex;
|
|
23161
|
+
align-items: center;
|
|
23162
|
+
font-family: var(--mld-font-mono, ui-monospace, monospace);
|
|
23163
|
+
font-weight: 600;
|
|
23164
|
+
background: var(--mld-color-surface-2, #f0f0f0);
|
|
23165
|
+
color: var(--mld-color-text-secondary, #666);
|
|
23166
|
+
border-radius: var(--mld-radius-sm, 4px);
|
|
23167
|
+
letter-spacing: 0.02em;
|
|
23168
|
+
}
|
|
23169
|
+
.mld-exp-code--sm { padding: 1px 6px; font-size: 11px;
|
|
23170
|
+
}
|
|
23171
|
+
.mld-exp-code--md { padding: 2px 8px; font-size: 12px;
|
|
23172
|
+
}
|
|
23173
|
+
.mld-exp-code--lg { padding: 3px 10px; font-size: 14px;
|
|
23174
|
+
}
|
|
22894
23175
|
/* TimeRangeInput Component Styles */
|
|
22895
23176
|
.mld-time-range {
|
|
22896
23177
|
display: flex;
|
|
@@ -410,6 +410,29 @@ export interface ScheduleEventUpdateContext {
|
|
|
410
410
|
newStart: Date;
|
|
411
411
|
newEnd: Date;
|
|
412
412
|
}
|
|
413
|
+
export interface SummarySectionItem {
|
|
414
|
+
label: string;
|
|
415
|
+
metadata?: Record<string, unknown>;
|
|
416
|
+
item_count: number;
|
|
417
|
+
item_key: string;
|
|
418
|
+
columns: string[];
|
|
419
|
+
rows: Record<string, unknown>[];
|
|
420
|
+
}
|
|
421
|
+
export interface SummarySection {
|
|
422
|
+
key: string;
|
|
423
|
+
label: string;
|
|
424
|
+
type: 'table' | 'group';
|
|
425
|
+
/** Group sections: list of group items with embedded tables */
|
|
426
|
+
items?: SummarySectionItem[];
|
|
427
|
+
/** Table sections: flat table columns and rows */
|
|
428
|
+
columns?: string[];
|
|
429
|
+
rows?: Record<string, unknown>[];
|
|
430
|
+
row_count?: number;
|
|
431
|
+
}
|
|
432
|
+
export interface SummaryData {
|
|
433
|
+
metadata: Record<string, unknown>;
|
|
434
|
+
sections: SummarySection[];
|
|
435
|
+
}
|
|
413
436
|
export type ResourceStatus = 'available' | 'in-use' | 'maintenance' | 'offline';
|
|
414
437
|
export interface ResourceSpec {
|
|
415
438
|
label: string;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { ContainerDirection, ButtonVariant, ButtonSize, InputType, ModalSize, AlertType, Toast, TabItem, SelectOption, RadioOption, FormFieldProps, SidebarToolSection, CollapsibleState, TopBarVariant, TopBarPage, TopBarTab, TopBarTabOption, TopBarSettingsConfig, WellPlateFormat, WellState, WellPlateSelectionMode, WellPlateSize, WellShape, Well, HeatmapColorScale, HeatmapConfig, SlotPosition, WellExtendedData, WellEditData, WellEditField, WellLegendItem, PlateCondition, ColumnCondition, RowCondition, Rack, SampleType, PlateMap, PlateMapEditorState, ProtocolStepType, ProtocolStepStatus, ProtocolStep, SampleGroup, GroupItem, FileUploaderMode, SegmentedOption, SegmentedControlVariant, SegmentedControlSize, MultiSelectOption, MultiSelectSize, PillVariant, PillSize, CalendarSelectionMode, CalendarMarker, CalendarDayContext, SortDirection, SortState, DataFrameColumn, PaginationState, SpinnerSize, SpinnerVariant, DividerSpacing, StatusType, ProgressVariant, ProgressSize, AvatarSize, EmptyStateColor, EmptyStateSize, BreadcrumbItem, TooltipPosition, ConfirmVariant, SettingsTab, NumberNotation, UnitOption, WizardStep, WizardStepState, AuditEntryType, AuditEntry, BatchItemStatus, BatchItem, BatchSummary, TimePickerFormat, TimeRange, ScheduleView, ScheduleEventStatus, ScheduleEvent, ScheduleBlockedSlot, ScheduleSlotContext, ScheduleEventCreateContext, ScheduleEventUpdateContext, ResourceStatus, ResourceSpec, MoleculeData, StorageCondition, ReagentColumn, Reagent, TreeNodeType, BadgeVariant, TreeNode, } from './components';
|
|
1
|
+
export type { ContainerDirection, ButtonVariant, ButtonSize, InputType, ModalSize, AlertType, Toast, TabItem, SelectOption, RadioOption, FormFieldProps, SidebarToolSection, CollapsibleState, TopBarVariant, TopBarPage, TopBarTab, TopBarTabOption, TopBarSettingsConfig, WellPlateFormat, WellState, WellPlateSelectionMode, WellPlateSize, WellShape, Well, HeatmapColorScale, HeatmapConfig, SlotPosition, WellExtendedData, WellEditData, WellEditField, WellLegendItem, PlateCondition, ColumnCondition, RowCondition, Rack, SampleType, PlateMap, PlateMapEditorState, ProtocolStepType, ProtocolStepStatus, ProtocolStep, SampleGroup, GroupItem, FileUploaderMode, SegmentedOption, SegmentedControlVariant, SegmentedControlSize, MultiSelectOption, MultiSelectSize, PillVariant, PillSize, CalendarSelectionMode, CalendarMarker, CalendarDayContext, SortDirection, SortState, DataFrameColumn, PaginationState, SpinnerSize, SpinnerVariant, DividerSpacing, StatusType, ProgressVariant, ProgressSize, AvatarSize, EmptyStateColor, EmptyStateSize, BreadcrumbItem, TooltipPosition, ConfirmVariant, SettingsTab, NumberNotation, UnitOption, WizardStep, WizardStepState, AuditEntryType, AuditEntry, BatchItemStatus, BatchItem, BatchSummary, TimePickerFormat, TimeRange, ScheduleView, ScheduleEventStatus, ScheduleEvent, ScheduleBlockedSlot, ScheduleSlotContext, ScheduleEventCreateContext, ScheduleEventUpdateContext, SummarySectionItem, SummarySection, SummaryData, ResourceStatus, ResourceSpec, MoleculeData, StorageCondition, ReagentColumn, Reagent, TreeNodeType, BadgeVariant, TreeNode, } from './components';
|
|
2
2
|
export type { FormFieldType, FieldCondition, FieldValidation, FormFieldSchema, FormSectionSchema, FormStepSchema, FormSchema, FieldEnhancement, FormEnhancements, UseFormBuilderReturn, } from './form-builder';
|
|
3
3
|
export type { AuthConfig, UserInfo, LoginResponse, TokenVerifyResponse, RegisterRequest, UpdateProfileRequest, CredentialInfo, } from './auth';
|
|
4
4
|
export type { PluginInfo, PluginNavItem, PluginSettings, PluginSettingField, PlatformContext, PlatformContextOptions, PlatformEventType, PlatformEvent, ThemeMode, ColorPalette, TableDensity, } from './platform';
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ interface Props {
|
|
|
14
14
|
min?: number
|
|
15
15
|
max?: number
|
|
16
16
|
step?: number
|
|
17
|
+
ariaDescribedby?: string
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -52,6 +53,8 @@ function handleInput(event: Event) {
|
|
|
52
53
|
:min="min"
|
|
53
54
|
:max="max"
|
|
54
55
|
:step="step"
|
|
56
|
+
:aria-invalid="error || undefined"
|
|
57
|
+
:aria-describedby="ariaDescribedby || undefined"
|
|
55
58
|
:class="[
|
|
56
59
|
'mld-input',
|
|
57
60
|
`mld-input--${size}`,
|