@nexus-cross/design-system 1.0.13 → 1.1.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/claude-rules/nexus/CLAUDE.md +85 -0
- package/claude-rules/nexus/commands/nexus-audit.md +79 -0
- package/claude-rules/nexus/commands/nexus-component-map.md +85 -0
- package/claude-rules/nexus/commands/nexus-token-check.md +68 -0
- package/claude-rules/nexus/skills/nexus-design-system/SKILL.md +92 -0
- package/cursor-rules/nexus-ui-api.mdc +824 -41
- package/cursor-rules/nexus-ui-decisions.mdc +259 -0
- package/dist/accordion.js +0 -1
- package/dist/accordion.mjs +0 -1
- package/dist/alert.js +0 -1
- package/dist/alert.mjs +0 -1
- package/dist/avatar.js +0 -1
- package/dist/avatar.mjs +0 -1
- package/dist/badge.js +0 -1
- package/dist/badge.mjs +0 -1
- package/dist/breadcrumb.js +0 -1
- package/dist/breadcrumb.mjs +0 -1
- package/dist/button.js +0 -1
- package/dist/button.mjs +0 -1
- package/dist/carousel.js +0 -1
- package/dist/carousel.mjs +0 -1
- package/dist/checkbox.js +0 -1
- package/dist/checkbox.mjs +0 -1
- package/dist/chip.js +0 -1
- package/dist/chip.mjs +0 -1
- package/dist/chunks/chunk-2Z52NPWB.js +78 -0
- package/dist/chunks/chunk-46P52MFM.mjs +56 -0
- package/dist/chunks/{chunk-X3CTJ7TD.js → chunk-4KBFVIKX.js} +41 -11
- package/dist/chunks/chunk-56ZOOQFE.mjs +514 -0
- package/dist/chunks/chunk-5ASTWFJW.js +538 -0
- package/dist/chunks/{chunk-33UFQJIO.mjs → chunk-BJMXZJWO.mjs} +16 -5
- package/dist/chunks/chunk-EILXBLEV.mjs +5 -0
- package/dist/chunks/chunk-G3RLK2HS.js +7 -0
- package/dist/chunks/{chunk-YZV6FWE7.js → chunk-JLDQNDFT.js} +16 -5
- package/dist/chunks/{chunk-K574BYHQ.js → chunk-K3CK7NTP.js} +22 -4
- package/dist/chunks/{chunk-Z4YM7LU3.mjs → chunk-PIGHBDK5.mjs} +22 -4
- package/dist/chunks/{chunk-PEIEVKD5.js → chunk-RCIBLLSF.js} +11 -12
- package/dist/chunks/{chunk-MMCA33FW.mjs → chunk-RSFLNWOM.mjs} +41 -11
- package/dist/chunks/{chunk-K2TBLM3F.mjs → chunk-THBE27U3.mjs} +11 -12
- package/dist/client-only.js +0 -1
- package/dist/client-only.mjs +0 -1
- package/dist/combobox.js +16 -0
- package/dist/combobox.mjs +3 -0
- package/dist/components/Combobox.d.ts +48 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/DataGrid.d.ts +44 -0
- package/dist/components/DataGrid.d.ts.map +1 -0
- package/dist/components/DataList.d.ts +3 -1
- package/dist/components/DataList.d.ts.map +1 -1
- package/dist/components/RadioGroup.d.ts +4 -0
- package/dist/components/RadioGroup.d.ts.map +1 -1
- package/dist/components/Stepper.d.ts.map +1 -1
- package/dist/components/ToggleGroup.d.ts +2 -1
- package/dist/components/ToggleGroup.d.ts.map +1 -1
- package/dist/countdown.js +0 -1
- package/dist/countdown.mjs +0 -1
- package/dist/counter.js +0 -1
- package/dist/counter.mjs +0 -1
- package/dist/data-grid.js +14 -0
- package/dist/data-grid.mjs +5 -0
- package/dist/data-list.js +2 -3
- package/dist/data-list.mjs +1 -2
- package/dist/date-picker.js +0 -1
- package/dist/date-picker.mjs +0 -1
- package/dist/divider.js +0 -1
- package/dist/divider.mjs +0 -1
- package/dist/drawer.js +0 -1
- package/dist/drawer.mjs +0 -1
- package/dist/dropdown-menu.js +0 -1
- package/dist/dropdown-menu.mjs +0 -1
- package/dist/ellipsis.js +0 -1
- package/dist/ellipsis.mjs +0 -1
- package/dist/empty-state.js +0 -1
- package/dist/empty-state.mjs +0 -1
- package/dist/error-boundary.js +0 -1
- package/dist/error-boundary.mjs +0 -1
- package/dist/hooks/useCheckDevice.js +0 -1
- package/dist/hooks/useCheckDevice.mjs +0 -1
- package/dist/hooks/useClickOutside.js +0 -1
- package/dist/hooks/useClickOutside.mjs +0 -1
- package/dist/hooks/useDraggableBottomSheet.js +0 -1
- package/dist/hooks/useDraggableBottomSheet.mjs +0 -1
- package/dist/hooks/useDraggableWindow.js +0 -1
- package/dist/hooks/useDraggableWindow.mjs +0 -1
- package/dist/hooks/useInView.js +0 -1
- package/dist/hooks/useInView.mjs +0 -1
- package/dist/hooks/useModal.js +0 -1
- package/dist/hooks/useModal.mjs +0 -1
- package/dist/image-upload.js +0 -1
- package/dist/image-upload.mjs +0 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -88
- package/dist/index.mjs +12 -12
- package/dist/infinite-scroll.js +0 -1
- package/dist/infinite-scroll.mjs +0 -1
- package/dist/marquee.js +0 -1
- package/dist/marquee.mjs +0 -1
- package/dist/modal/index.js +11 -12
- package/dist/modal/index.mjs +2 -3
- package/dist/number-input.js +0 -1
- package/dist/number-input.mjs +0 -1
- package/dist/nx-image.js +0 -1
- package/dist/nx-image.mjs +0 -1
- package/dist/pagination.js +0 -1
- package/dist/pagination.mjs +0 -1
- package/dist/popover.js +0 -1
- package/dist/popover.mjs +0 -1
- package/dist/price-input.js +0 -1
- package/dist/price-input.mjs +0 -1
- package/dist/progress.js +0 -1
- package/dist/progress.mjs +0 -1
- package/dist/radio-group.js +5 -6
- package/dist/radio-group.mjs +1 -2
- package/dist/schemas/_all.json +308 -117
- package/dist/schemas/accordion.d.ts.map +1 -1
- package/dist/schemas/accordion.json +1 -1
- package/dist/schemas/alert.d.ts.map +1 -1
- package/dist/schemas/alert.json +1 -1
- package/dist/schemas/avatar.d.ts.map +1 -1
- package/dist/schemas/avatar.json +1 -1
- package/dist/schemas/badge.d.ts.map +1 -1
- package/dist/schemas/badge.json +1 -1
- package/dist/schemas/breadcrumb.d.ts.map +1 -1
- package/dist/schemas/breadcrumb.json +1 -1
- package/dist/schemas/button.d.ts.map +1 -1
- package/dist/schemas/button.json +1 -1
- package/dist/schemas/carousel.d.ts.map +1 -1
- package/dist/schemas/carousel.json +1 -1
- package/dist/schemas/checkBox.json +1 -1
- package/dist/schemas/checkbox.d.ts.map +1 -1
- package/dist/schemas/chip.d.ts.map +1 -1
- package/dist/schemas/chip.json +1 -1
- package/dist/schemas/client-only.d.ts.map +1 -1
- package/dist/schemas/clientOnly.json +1 -1
- package/dist/schemas/combobox.d.ts +85 -0
- package/dist/schemas/combobox.d.ts.map +1 -0
- package/dist/schemas/combobox.json +98 -0
- package/dist/schemas/comboboxOption.json +30 -0
- package/dist/schemas/countdown.d.ts.map +1 -1
- package/dist/schemas/countdown.json +1 -1
- package/dist/schemas/counter.d.ts.map +1 -1
- package/dist/schemas/counter.json +1 -1
- package/dist/schemas/data-grid.d.ts +74 -0
- package/dist/schemas/data-grid.d.ts.map +1 -0
- package/dist/schemas/data-list.d.ts.map +1 -1
- package/dist/schemas/dataGrid.json +102 -0
- package/dist/schemas/dataList.json +1 -1
- package/dist/schemas/date-picker.d.ts.map +1 -1
- package/dist/schemas/datePicker.json +1 -1
- package/dist/schemas/divider.d.ts.map +1 -1
- package/dist/schemas/divider.json +1 -1
- package/dist/schemas/drawer.d.ts.map +1 -1
- package/dist/schemas/drawer.json +1 -1
- package/dist/schemas/dropdown-menu.d.ts.map +1 -1
- package/dist/schemas/dropdownMenu.json +1 -1
- package/dist/schemas/ellipsis.d.ts.map +1 -1
- package/dist/schemas/ellipsis.json +1 -1
- package/dist/schemas/empty-state.d.ts.map +1 -1
- package/dist/schemas/emptyState.json +1 -1
- package/dist/schemas/error-boundary.d.ts.map +1 -1
- package/dist/schemas/errorBoundary.json +1 -1
- package/dist/schemas/image-upload.d.ts.map +1 -1
- package/dist/schemas/imageUpload.json +1 -1
- package/dist/schemas/index.d.ts +2 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/infinite-scroll.d.ts.map +1 -1
- package/dist/schemas/infiniteScroll.json +1 -1
- package/dist/schemas/marquee.d.ts.map +1 -1
- package/dist/schemas/marquee.json +1 -1
- package/dist/schemas/modal.d.ts.map +1 -1
- package/dist/schemas/modalTemplate.json +1 -1
- package/dist/schemas/number-input.d.ts.map +1 -1
- package/dist/schemas/numberInput.json +1 -1
- package/dist/schemas/nx-image.d.ts.map +1 -1
- package/dist/schemas/nxImage.json +1 -1
- package/dist/schemas/pagination.d.ts.map +1 -1
- package/dist/schemas/pagination.json +1 -1
- package/dist/schemas/popover.d.ts.map +1 -1
- package/dist/schemas/popover.json +1 -1
- package/dist/schemas/price-input.d.ts.map +1 -1
- package/dist/schemas/priceInput.json +1 -1
- package/dist/schemas/progress.d.ts.map +1 -1
- package/dist/schemas/progress.json +1 -1
- package/dist/schemas/radio-group.d.ts +9 -0
- package/dist/schemas/radio-group.d.ts.map +1 -1
- package/dist/schemas/radioGroup.json +10 -1
- package/dist/schemas/radioItem.json +11 -0
- package/dist/schemas/select.d.ts.map +1 -1
- package/dist/schemas/select.json +1 -1
- package/dist/schemas/skeleton.d.ts.map +1 -1
- package/dist/schemas/skeleton.json +1 -1
- package/dist/schemas/slider.d.ts.map +1 -1
- package/dist/schemas/slider.json +1 -1
- package/dist/schemas/spinner.d.ts.map +1 -1
- package/dist/schemas/spinner.json +1 -1
- package/dist/schemas/stepper.d.ts.map +1 -1
- package/dist/schemas/stepper.json +1 -1
- package/dist/schemas/switch.d.ts.map +1 -1
- package/dist/schemas/switch.json +1 -1
- package/dist/schemas/tab.d.ts.map +1 -1
- package/dist/schemas/tab.json +1 -1
- package/dist/schemas/table.d.ts.map +1 -1
- package/dist/schemas/table.json +1 -1
- package/dist/schemas/tableRow.json +1 -1
- package/dist/schemas/tag-input.d.ts.map +1 -1
- package/dist/schemas/tagInput.json +1 -1
- package/dist/schemas/tdColumn.json +1 -1
- package/dist/schemas/text-area.d.ts.map +1 -1
- package/dist/schemas/text-input.d.ts +2 -2
- package/dist/schemas/text-input.d.ts.map +1 -1
- package/dist/schemas/textArea.json +1 -1
- package/dist/schemas/textInput.json +1 -1
- package/dist/schemas/toast.d.ts.map +1 -1
- package/dist/schemas/toastOptions.json +1 -1
- package/dist/schemas/toaster.json +1 -1
- package/dist/schemas/toggle-group.d.ts +6 -3
- package/dist/schemas/toggle-group.d.ts.map +1 -1
- package/dist/schemas/toggleGroup.json +9 -3
- package/dist/schemas/tooltip.d.ts.map +1 -1
- package/dist/schemas/tooltip.json +1 -1
- package/dist/schemas/virtual-scroll.d.ts.map +1 -1
- package/dist/schemas/virtualGrid.json +1 -1
- package/dist/schemas/virtualList.json +1 -1
- package/dist/schemas.js +867 -66
- package/dist/schemas.mjs +865 -66
- package/dist/select.js +0 -1
- package/dist/select.mjs +0 -1
- package/dist/skeleton.js +0 -1
- package/dist/skeleton.mjs +0 -1
- package/dist/slider.js +0 -1
- package/dist/slider.mjs +0 -1
- package/dist/spinner.js +0 -1
- package/dist/spinner.mjs +0 -1
- package/dist/stepper.js +3 -4
- package/dist/stepper.mjs +1 -2
- package/dist/styles/.generated/built.d.ts +1 -1
- package/dist/styles/.generated/built.d.ts.map +1 -1
- package/dist/styles/layer.js +2 -3
- package/dist/styles/layer.mjs +1 -2
- package/dist/styles.css +554 -51
- package/dist/styles.js +2 -3
- package/dist/styles.layered.css +554 -51
- package/dist/styles.mjs +1 -2
- package/dist/switch.js +0 -1
- package/dist/switch.mjs +0 -1
- package/dist/tab.js +0 -1
- package/dist/tab.mjs +0 -1
- package/dist/table.js +0 -1
- package/dist/table.mjs +0 -1
- package/dist/tag-input.js +0 -1
- package/dist/tag-input.mjs +0 -1
- package/dist/text-area.js +0 -1
- package/dist/text-area.mjs +0 -1
- package/dist/text-input.js +0 -1
- package/dist/text-input.mjs +0 -1
- package/dist/toast.js +0 -1
- package/dist/toast.mjs +0 -1
- package/dist/toggle-group.js +3 -4
- package/dist/toggle-group.mjs +1 -2
- package/dist/tooltip.js +0 -1
- package/dist/tooltip.mjs +0 -1
- package/dist/utils/cn.js +0 -1
- package/dist/utils/cn.mjs +0 -1
- package/dist/utils/scroll.js +0 -1
- package/dist/utils/scroll.mjs +0 -1
- package/dist/virtual-scroll.js +0 -1
- package/dist/virtual-scroll.mjs +0 -1
- package/package.json +14 -8
- package/scripts/setup-cursor-rules.cjs +164 -27
- package/dist/chunks/chunk-22ULI3BF.js +0 -21
- package/dist/chunks/chunk-6ECGMUT6.mjs +0 -5
- package/dist/chunks/chunk-CVYXRSXT.mjs +0 -8
- package/dist/chunks/chunk-I252NERB.mjs +0 -21
- package/dist/chunks/chunk-JNMCYWGY.js +0 -10
- package/dist/chunks/chunk-V35IEPRL.js +0 -7
- package/dist/components/ThemeProvider.d.ts +0 -25
- package/dist/components/ThemeProvider.d.ts.map +0 -1
- package/dist/schemas/theme-provider.d.ts +0 -36
- package/dist/schemas/theme-provider.d.ts.map +0 -1
- package/dist/schemas/themeProvider.json +0 -65
- package/dist/theme-provider.js +0 -15
- package/dist/theme-provider.mjs +0 -2
- package/dist/chunks/{chunk-CWMLTXOH.mjs → chunk-5ZVPTIL3.mjs} +1 -1
- package/dist/chunks/{chunk-HFBTS42N.js → chunk-7F4SOLAC.js} +1 -1
package/dist/styles.layered.css
CHANGED
|
@@ -149,9 +149,12 @@
|
|
|
149
149
|
}
|
|
150
150
|
.nexus-btn:disabled,
|
|
151
151
|
.nexus-btn[aria-disabled='true'] {
|
|
152
|
-
|
|
152
|
+
cursor: not-allowed;
|
|
153
153
|
opacity: var(--opacity-comp-btn-disabled);
|
|
154
154
|
}
|
|
155
|
+
.nexus-btn[aria-disabled='true'] {
|
|
156
|
+
pointer-events: none;
|
|
157
|
+
}
|
|
155
158
|
.nexus-btn:focus-visible {
|
|
156
159
|
outline: 2px solid
|
|
157
160
|
color-mix(in srgb, var(--color-comp-btn-focus-ring) 50%, transparent);
|
|
@@ -856,6 +859,9 @@
|
|
|
856
859
|
border-color: var(--color-status-danger-focus);
|
|
857
860
|
outline-color: var(--color-status-danger-focus);
|
|
858
861
|
}
|
|
862
|
+
.nexus-number-input--disabled {
|
|
863
|
+
cursor: not-allowed;
|
|
864
|
+
}
|
|
859
865
|
.nexus-number-input--disabled .nexus-number-input__container {
|
|
860
866
|
background: var(--color-surface-strong);
|
|
861
867
|
border-color: var(--color-border-medium);
|
|
@@ -958,7 +964,7 @@
|
|
|
958
964
|
}
|
|
959
965
|
.nexus-number-input__step:disabled {
|
|
960
966
|
color: var(--color-text-muted);
|
|
961
|
-
|
|
967
|
+
cursor: not-allowed;
|
|
962
968
|
}
|
|
963
969
|
.nexus-number-input__step--up {
|
|
964
970
|
border-bottom: 1px solid var(--color-border-default);
|
|
@@ -997,7 +1003,7 @@
|
|
|
997
1003
|
}
|
|
998
1004
|
.nexus-number-input__bind-btn:disabled {
|
|
999
1005
|
color: var(--color-text-muted);
|
|
1000
|
-
|
|
1006
|
+
cursor: not-allowed;
|
|
1001
1007
|
}
|
|
1002
1008
|
.nexus-number-input--xl .nexus-number-input__bind-btn {
|
|
1003
1009
|
width: 30px;
|
|
@@ -1276,6 +1282,15 @@
|
|
|
1276
1282
|
.nexus-radio-item--md {
|
|
1277
1283
|
font-size: var(--text-text-sm, 0.875rem);
|
|
1278
1284
|
}
|
|
1285
|
+
/* When description is present: align radio with the first line of label */
|
|
1286
|
+
.nexus-radio-item--with-description {
|
|
1287
|
+
align-items: flex-start;
|
|
1288
|
+
gap: var(--spacing-gap-xs, 0.375rem);
|
|
1289
|
+
}
|
|
1290
|
+
.nexus-radio-item--with-description .nexus-radio__circle {
|
|
1291
|
+
/* Vertically center the circle to the label's first-line cap height */
|
|
1292
|
+
margin-top: 0.125rem;
|
|
1293
|
+
}
|
|
1279
1294
|
.nexus-radio-item--pointer {
|
|
1280
1295
|
cursor: pointer;
|
|
1281
1296
|
}
|
|
@@ -1313,6 +1328,25 @@
|
|
|
1313
1328
|
border-color: var(--color-border-default);
|
|
1314
1329
|
background: var(--color-surface-default);
|
|
1315
1330
|
}
|
|
1331
|
+
/* ── Ring variant: thick border replaces inner dot ── */
|
|
1332
|
+
.nexus-radio__circle--ring {
|
|
1333
|
+
background: transparent;
|
|
1334
|
+
transition-property: border-color, border-width;
|
|
1335
|
+
transition-duration: 150ms;
|
|
1336
|
+
}
|
|
1337
|
+
.nexus-radio__circle--ring.nexus-radio__circle--unchecked {
|
|
1338
|
+
border-width: 1px;
|
|
1339
|
+
border-color: var(--color-border-default);
|
|
1340
|
+
}
|
|
1341
|
+
.nexus-radio__circle--ring.nexus-radio__circle--checked {
|
|
1342
|
+
border-color: var(--color-accent-primary);
|
|
1343
|
+
}
|
|
1344
|
+
.nexus-radio__circle--ring.nexus-radio__circle--sm.nexus-radio__circle--checked {
|
|
1345
|
+
border-width: 4px;
|
|
1346
|
+
}
|
|
1347
|
+
.nexus-radio__circle--ring.nexus-radio__circle--md.nexus-radio__circle--checked {
|
|
1348
|
+
border-width: 5px;
|
|
1349
|
+
}
|
|
1316
1350
|
.nexus-radio__dot {
|
|
1317
1351
|
border-radius: 9999px;
|
|
1318
1352
|
background: currentColor;
|
|
@@ -1327,6 +1361,20 @@
|
|
|
1327
1361
|
}
|
|
1328
1362
|
.nexus-radio__label {
|
|
1329
1363
|
color: var(--color-text-primary);
|
|
1364
|
+
line-height: 1;
|
|
1365
|
+
}
|
|
1366
|
+
.nexus-radio__text {
|
|
1367
|
+
display: inline-flex;
|
|
1368
|
+
flex-direction: column;
|
|
1369
|
+
gap: var(--spacing-gap-xs, 0.25rem);
|
|
1370
|
+
min-width: 0;
|
|
1371
|
+
}
|
|
1372
|
+
.nexus-radio__description {
|
|
1373
|
+
color: var(--color-text-tertiary);
|
|
1374
|
+
font-size: var(--text-text-xs, 0.75rem);
|
|
1375
|
+
font-weight: 400;
|
|
1376
|
+
line-height: 1.5;
|
|
1377
|
+
letter-spacing: -0.01em;
|
|
1330
1378
|
}
|
|
1331
1379
|
|
|
1332
1380
|
/* ═══════════════════════════════════════════
|
|
@@ -1353,7 +1401,7 @@
|
|
|
1353
1401
|
}
|
|
1354
1402
|
.nexus-chip[aria-disabled='true'] {
|
|
1355
1403
|
opacity: 0.5;
|
|
1356
|
-
|
|
1404
|
+
cursor: not-allowed;
|
|
1357
1405
|
}
|
|
1358
1406
|
.nexus-chip--default {
|
|
1359
1407
|
border-color: var(--color-border-default);
|
|
@@ -1733,7 +1781,7 @@
|
|
|
1733
1781
|
}
|
|
1734
1782
|
.nexus-page-btn:disabled {
|
|
1735
1783
|
opacity: 0.4;
|
|
1736
|
-
|
|
1784
|
+
cursor: not-allowed;
|
|
1737
1785
|
}
|
|
1738
1786
|
.nexus-page-btn--sm {
|
|
1739
1787
|
width: 1.75rem;
|
|
@@ -1833,7 +1881,7 @@
|
|
|
1833
1881
|
}
|
|
1834
1882
|
.nexus-tab-trigger--disabled {
|
|
1835
1883
|
opacity: 0.4;
|
|
1836
|
-
|
|
1884
|
+
cursor: not-allowed;
|
|
1837
1885
|
}
|
|
1838
1886
|
|
|
1839
1887
|
/* ═══════════════════════════════════════════
|
|
@@ -1923,6 +1971,84 @@
|
|
|
1923
1971
|
color: var(--color-text-tertiary);
|
|
1924
1972
|
}
|
|
1925
1973
|
|
|
1974
|
+
/* ═══════════════════════════════════════════
|
|
1975
|
+
DataGrid
|
|
1976
|
+
═══════════════════════════════════════════ */
|
|
1977
|
+
|
|
1978
|
+
.nexus-data-grid {
|
|
1979
|
+
display: grid;
|
|
1980
|
+
grid-template-columns: repeat(var(--nexus-dg-cols, 1), minmax(0, 1fr));
|
|
1981
|
+
gap: var(--nexus-dg-gap, 0);
|
|
1982
|
+
}
|
|
1983
|
+
/* Loading / empty 상태일 때는 단일 자식이 그리드 전체 너비를 점유하도록 강제 */
|
|
1984
|
+
.nexus-data-grid[data-state='loading'] > *,
|
|
1985
|
+
.nexus-data-grid[data-state='empty'] > * {
|
|
1986
|
+
grid-column: 1 / -1;
|
|
1987
|
+
justify-self: stretch;
|
|
1988
|
+
}
|
|
1989
|
+
.nexus-data-grid > .nexus-datalist-center,
|
|
1990
|
+
.nexus-data-grid > .nexus-datalist-empty {
|
|
1991
|
+
grid-column: 1 / -1;
|
|
1992
|
+
}
|
|
1993
|
+
@media (min-width: 640px) {
|
|
1994
|
+
.nexus-data-grid {
|
|
1995
|
+
grid-template-columns: repeat(
|
|
1996
|
+
var(--nexus-dg-cols-sm, var(--nexus-dg-cols, 1)),
|
|
1997
|
+
minmax(0, 1fr)
|
|
1998
|
+
);
|
|
1999
|
+
}
|
|
2000
|
+
}
|
|
2001
|
+
@media (min-width: 768px) {
|
|
2002
|
+
.nexus-data-grid {
|
|
2003
|
+
grid-template-columns: repeat(
|
|
2004
|
+
var(--nexus-dg-cols-md, var(--nexus-dg-cols-sm, var(--nexus-dg-cols, 1))),
|
|
2005
|
+
minmax(0, 1fr)
|
|
2006
|
+
);
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
@media (min-width: 1024px) {
|
|
2010
|
+
.nexus-data-grid {
|
|
2011
|
+
grid-template-columns: repeat(
|
|
2012
|
+
var(
|
|
2013
|
+
--nexus-dg-cols-lg,
|
|
2014
|
+
var(--nexus-dg-cols-md, var(--nexus-dg-cols-sm, var(--nexus-dg-cols, 1)))
|
|
2015
|
+
),
|
|
2016
|
+
minmax(0, 1fr)
|
|
2017
|
+
);
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
@media (min-width: 1280px) {
|
|
2021
|
+
.nexus-data-grid {
|
|
2022
|
+
grid-template-columns: repeat(
|
|
2023
|
+
var(
|
|
2024
|
+
--nexus-dg-cols-xl,
|
|
2025
|
+
var(
|
|
2026
|
+
--nexus-dg-cols-lg,
|
|
2027
|
+
var(--nexus-dg-cols-md, var(--nexus-dg-cols-sm, var(--nexus-dg-cols, 1)))
|
|
2028
|
+
)
|
|
2029
|
+
),
|
|
2030
|
+
minmax(0, 1fr)
|
|
2031
|
+
);
|
|
2032
|
+
}
|
|
2033
|
+
}
|
|
2034
|
+
@media (min-width: 1536px) {
|
|
2035
|
+
.nexus-data-grid {
|
|
2036
|
+
grid-template-columns: repeat(
|
|
2037
|
+
var(
|
|
2038
|
+
--nexus-dg-cols-2xl,
|
|
2039
|
+
var(
|
|
2040
|
+
--nexus-dg-cols-xl,
|
|
2041
|
+
var(
|
|
2042
|
+
--nexus-dg-cols-lg,
|
|
2043
|
+
var(--nexus-dg-cols-md, var(--nexus-dg-cols-sm, var(--nexus-dg-cols, 1)))
|
|
2044
|
+
)
|
|
2045
|
+
)
|
|
2046
|
+
),
|
|
2047
|
+
minmax(0, 1fr)
|
|
2048
|
+
);
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
|
|
1926
2052
|
/* ═══════════════════════════════════════════
|
|
1927
2053
|
InfiniteScroll
|
|
1928
2054
|
═══════════════════════════════════════════ */
|
|
@@ -2138,7 +2264,7 @@
|
|
|
2138
2264
|
background: var(--color-surface-hover);
|
|
2139
2265
|
}
|
|
2140
2266
|
.nexus-select-item[data-disabled] {
|
|
2141
|
-
|
|
2267
|
+
cursor: not-allowed;
|
|
2142
2268
|
opacity: 0.5;
|
|
2143
2269
|
}
|
|
2144
2270
|
|
|
@@ -2211,7 +2337,7 @@
|
|
|
2211
2337
|
background: var(--color-surface-hover);
|
|
2212
2338
|
}
|
|
2213
2339
|
.nexus-dropdown-item[data-disabled] {
|
|
2214
|
-
|
|
2340
|
+
cursor: not-allowed;
|
|
2215
2341
|
opacity: var(--opacity-disabled-element, 0.4);
|
|
2216
2342
|
}
|
|
2217
2343
|
.nexus-dropdown-item--danger {
|
|
@@ -2277,6 +2403,50 @@
|
|
|
2277
2403
|
padding: var(--spacing-padding-2xs, 0.25rem);
|
|
2278
2404
|
gap: 0;
|
|
2279
2405
|
}
|
|
2406
|
+
|
|
2407
|
+
/* ── Outline variant: independent bordered buttons ── */
|
|
2408
|
+
.nexus-toggle-group--outline {
|
|
2409
|
+
display: inline-flex;
|
|
2410
|
+
background: transparent;
|
|
2411
|
+
padding: 0;
|
|
2412
|
+
gap: var(--spacing-gap-sm, 0.5rem);
|
|
2413
|
+
border-radius: 0;
|
|
2414
|
+
}
|
|
2415
|
+
.nexus-toggle-group--outline .nexus-toggle-group__indicator {
|
|
2416
|
+
display: none;
|
|
2417
|
+
}
|
|
2418
|
+
.nexus-toggle-group--outline .nexus-toggle-group__item {
|
|
2419
|
+
border: 0.5px solid var(--color-border-medium);
|
|
2420
|
+
border-radius: var(--radius-corner-md, 0.5rem);
|
|
2421
|
+
background: transparent;
|
|
2422
|
+
color: var(--color-text-tertiary);
|
|
2423
|
+
font-weight: var(--font-weight-text-medium-sm, 500);
|
|
2424
|
+
transition:
|
|
2425
|
+
border-color var(--duration-transition-normal, 200ms)
|
|
2426
|
+
var(--ease-transition-fast),
|
|
2427
|
+
color var(--duration-transition-normal, 200ms) var(--ease-transition-fast);
|
|
2428
|
+
}
|
|
2429
|
+
.nexus-toggle-group--outline .nexus-toggle-group__item:hover:not([data-state='on']):not([data-disabled]) {
|
|
2430
|
+
border-color: var(--color-border-default-hover);
|
|
2431
|
+
color: var(--color-text-secondary);
|
|
2432
|
+
}
|
|
2433
|
+
.nexus-toggle-group--outline .nexus-toggle-group__item[data-state='on'] {
|
|
2434
|
+
border-color: var(--color-border-strong);
|
|
2435
|
+
color: var(--color-text-primary);
|
|
2436
|
+
}
|
|
2437
|
+
.nexus-toggle-group--outline .nexus-toggle-group__item[data-state='on'] .nexus-toggle-group__icon {
|
|
2438
|
+
color: var(--color-icon-primary);
|
|
2439
|
+
}
|
|
2440
|
+
|
|
2441
|
+
/* ── Full width: stretch group + equal-width items ── */
|
|
2442
|
+
.nexus-toggle-group--full-width {
|
|
2443
|
+
display: flex;
|
|
2444
|
+
width: 100%;
|
|
2445
|
+
}
|
|
2446
|
+
.nexus-toggle-group--full-width .nexus-toggle-group__item {
|
|
2447
|
+
flex: 1 1 0;
|
|
2448
|
+
min-width: 0;
|
|
2449
|
+
}
|
|
2280
2450
|
.nexus-toggle-group__item {
|
|
2281
2451
|
display: inline-flex;
|
|
2282
2452
|
align-items: center;
|
|
@@ -2301,7 +2471,7 @@
|
|
|
2301
2471
|
0 0 0 4px var(--color-accent-primary-focus);
|
|
2302
2472
|
}
|
|
2303
2473
|
.nexus-toggle-group__item[data-disabled] {
|
|
2304
|
-
|
|
2474
|
+
cursor: not-allowed;
|
|
2305
2475
|
opacity: var(--opacity-disabled-element, 0.4);
|
|
2306
2476
|
}
|
|
2307
2477
|
.nexus-toggle-group--default .nexus-toggle-group__item[data-state='on'] {
|
|
@@ -2379,7 +2549,7 @@
|
|
|
2379
2549
|
}
|
|
2380
2550
|
.nexus-slider[data-disabled] {
|
|
2381
2551
|
opacity: var(--opacity-disabled-element, 0.4);
|
|
2382
|
-
|
|
2552
|
+
cursor: not-allowed;
|
|
2383
2553
|
}
|
|
2384
2554
|
.nexus-slider__track {
|
|
2385
2555
|
position: relative;
|
|
@@ -2740,7 +2910,7 @@
|
|
|
2740
2910
|
}
|
|
2741
2911
|
.nexus-carousel-btn:disabled {
|
|
2742
2912
|
opacity: 0.4;
|
|
2743
|
-
|
|
2913
|
+
cursor: not-allowed;
|
|
2744
2914
|
}
|
|
2745
2915
|
.nexus-carousel-btn--prev {
|
|
2746
2916
|
left: 0.5rem;
|
|
@@ -2915,12 +3085,14 @@
|
|
|
2915
3085
|
display: flex;
|
|
2916
3086
|
cursor: default;
|
|
2917
3087
|
}
|
|
2918
|
-
.nexus-table-skeleton-td {
|
|
3088
|
+
:where(.nexus-table-skeleton-td) {
|
|
3089
|
+
display: flex;
|
|
3090
|
+
align-items: center;
|
|
2919
3091
|
height: 100%;
|
|
2920
3092
|
width: 100%;
|
|
2921
3093
|
padding-block: var(--spacing-padding-md, 1rem);
|
|
2922
3094
|
}
|
|
2923
|
-
.nexus-table-skeleton-bar {
|
|
3095
|
+
:where(.nexus-table-skeleton-bar) {
|
|
2924
3096
|
height: 1rem;
|
|
2925
3097
|
width: 100%;
|
|
2926
3098
|
}
|
|
@@ -3625,17 +3797,14 @@
|
|
|
3625
3797
|
}
|
|
3626
3798
|
.nexus-stepper--horizontal .nexus-stepper__connector {
|
|
3627
3799
|
flex: 1;
|
|
3628
|
-
height:
|
|
3629
|
-
|
|
3630
|
-
transition:
|
|
3800
|
+
height: 0;
|
|
3801
|
+
border-top: 1px dashed var(--color-border-default);
|
|
3802
|
+
transition: border-color var(--duration-transition-normal, 200ms)
|
|
3631
3803
|
var(--ease-transition-normal);
|
|
3632
3804
|
}
|
|
3633
3805
|
.nexus-stepper--horizontal .nexus-stepper__connector--hidden {
|
|
3634
3806
|
visibility: hidden;
|
|
3635
3807
|
}
|
|
3636
|
-
.nexus-stepper--horizontal .nexus-stepper__connector--completed {
|
|
3637
|
-
background: var(--color-accent-primary);
|
|
3638
|
-
}
|
|
3639
3808
|
.nexus-stepper--horizontal .nexus-stepper__content {
|
|
3640
3809
|
margin-top: var(--spacing-gap-sm, 0.5rem);
|
|
3641
3810
|
padding: 0 var(--spacing-padding-2xs, 0.25rem);
|
|
@@ -3660,16 +3829,13 @@
|
|
|
3660
3829
|
flex-shrink: 0;
|
|
3661
3830
|
}
|
|
3662
3831
|
.nexus-stepper--vertical .nexus-stepper__connector {
|
|
3663
|
-
width:
|
|
3832
|
+
width: 0;
|
|
3664
3833
|
flex: 1;
|
|
3665
3834
|
min-height: var(--spacing-padding-sm, 0.75rem);
|
|
3666
|
-
|
|
3667
|
-
transition:
|
|
3835
|
+
border-left: 1px dashed var(--color-border-default);
|
|
3836
|
+
transition: border-color var(--duration-transition-normal, 200ms)
|
|
3668
3837
|
var(--ease-transition-normal);
|
|
3669
3838
|
}
|
|
3670
|
-
.nexus-stepper--vertical .nexus-stepper__connector--completed {
|
|
3671
|
-
background: var(--color-accent-primary);
|
|
3672
|
-
}
|
|
3673
3839
|
.nexus-stepper--vertical .nexus-stepper__content {
|
|
3674
3840
|
padding: var(--spacing-padding-xs, 0.5rem) 0;
|
|
3675
3841
|
}
|
|
@@ -3680,25 +3846,27 @@
|
|
|
3680
3846
|
align-items: center;
|
|
3681
3847
|
justify-content: center;
|
|
3682
3848
|
flex-shrink: 0;
|
|
3683
|
-
width:
|
|
3684
|
-
height:
|
|
3849
|
+
width: 30px;
|
|
3850
|
+
height: 30px;
|
|
3685
3851
|
border-radius: var(--radius-corner-full, 9999px);
|
|
3686
|
-
border:
|
|
3687
|
-
background:
|
|
3688
|
-
font-size: var(--text-
|
|
3689
|
-
font-weight: var(--font-weight-
|
|
3690
|
-
color: var(--color-text-
|
|
3691
|
-
transition:
|
|
3692
|
-
var(--ease-transition-normal)
|
|
3852
|
+
border: 1px solid var(--color-border-medium);
|
|
3853
|
+
background: transparent;
|
|
3854
|
+
font-size: var(--text-label-semibold-md, 0.875rem);
|
|
3855
|
+
font-weight: var(--font-weight-label-semibold-md, 600);
|
|
3856
|
+
color: var(--color-text-tertiary);
|
|
3857
|
+
transition:
|
|
3858
|
+
border-color var(--duration-transition-normal, 200ms) var(--ease-transition-normal),
|
|
3859
|
+
background-color var(--duration-transition-normal, 200ms) var(--ease-transition-normal),
|
|
3860
|
+
color var(--duration-transition-normal, 200ms) var(--ease-transition-normal);
|
|
3693
3861
|
}
|
|
3694
3862
|
.nexus-stepper--sm .nexus-stepper__indicator {
|
|
3695
|
-
width: 1.
|
|
3696
|
-
height: 1.
|
|
3863
|
+
width: 1.5rem;
|
|
3864
|
+
height: 1.5rem;
|
|
3697
3865
|
font-size: var(--text-text-xs, 0.75rem);
|
|
3698
3866
|
}
|
|
3699
3867
|
.nexus-stepper__check {
|
|
3700
|
-
width:
|
|
3701
|
-
height:
|
|
3868
|
+
width: 13px;
|
|
3869
|
+
height: 13px;
|
|
3702
3870
|
}
|
|
3703
3871
|
.nexus-stepper--sm .nexus-stepper__check {
|
|
3704
3872
|
width: var(--size-icon-xs, 0.75rem);
|
|
@@ -3708,33 +3876,31 @@
|
|
|
3708
3876
|
/* ── State colors ── */
|
|
3709
3877
|
.nexus-stepper__step--completed .nexus-stepper__indicator {
|
|
3710
3878
|
border-color: var(--color-accent-primary);
|
|
3711
|
-
background:
|
|
3712
|
-
color: var(--color-accent-
|
|
3879
|
+
background: transparent;
|
|
3880
|
+
color: var(--color-accent-primary);
|
|
3713
3881
|
}
|
|
3714
3882
|
.nexus-stepper__step--active .nexus-stepper__indicator {
|
|
3715
3883
|
border-color: var(--color-accent-primary);
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
box-shadow: 0 0 0 3px
|
|
3719
|
-
color-mix(in srgb, var(--color-accent-primary) 20%, transparent);
|
|
3884
|
+
background: var(--color-accent-primary);
|
|
3885
|
+
color: var(--color-accent-on-primary);
|
|
3720
3886
|
}
|
|
3721
3887
|
.nexus-stepper__step--error .nexus-stepper__indicator {
|
|
3722
3888
|
border-color: var(--color-status-danger);
|
|
3723
3889
|
color: var(--color-status-danger);
|
|
3724
|
-
background:
|
|
3725
|
-
box-shadow: 0 0 0 3px
|
|
3726
|
-
color-mix(in srgb, var(--color-status-danger) 20%, transparent);
|
|
3890
|
+
background: transparent;
|
|
3727
3891
|
}
|
|
3728
3892
|
.nexus-stepper__step--pending .nexus-stepper__indicator {
|
|
3729
|
-
border-color: var(--color-border-
|
|
3893
|
+
border-color: var(--color-border-medium);
|
|
3730
3894
|
color: var(--color-text-tertiary);
|
|
3731
3895
|
}
|
|
3732
3896
|
|
|
3733
3897
|
/* ── Labels ── */
|
|
3734
3898
|
.nexus-stepper__label {
|
|
3735
3899
|
display: block;
|
|
3736
|
-
font-size: var(--text-text-
|
|
3737
|
-
font-weight: var(--font-weight-text-medium-
|
|
3900
|
+
font-size: var(--text-text-medium-xs, 0.75rem);
|
|
3901
|
+
font-weight: var(--font-weight-text-medium-xs, 500);
|
|
3902
|
+
line-height: 1.5;
|
|
3903
|
+
letter-spacing: var(--letter-spacing-text-medium-xs, -0.01em);
|
|
3738
3904
|
color: var(--color-text-primary);
|
|
3739
3905
|
}
|
|
3740
3906
|
.nexus-stepper--sm .nexus-stepper__label {
|
|
@@ -3746,13 +3912,64 @@
|
|
|
3746
3912
|
font-size: var(--text-text-xs, 0.75rem);
|
|
3747
3913
|
color: var(--color-text-secondary);
|
|
3748
3914
|
}
|
|
3749
|
-
.nexus-stepper__step--
|
|
3915
|
+
.nexus-stepper__step--completed .nexus-stepper__label {
|
|
3750
3916
|
color: var(--color-text-secondary);
|
|
3751
3917
|
}
|
|
3918
|
+
.nexus-stepper__step--completed .nexus-stepper__description {
|
|
3919
|
+
color: var(--color-text-muted);
|
|
3920
|
+
}
|
|
3921
|
+
.nexus-stepper__step--pending .nexus-stepper__label {
|
|
3922
|
+
color: var(--color-text-tertiary);
|
|
3923
|
+
}
|
|
3752
3924
|
.nexus-stepper__step--pending .nexus-stepper__description {
|
|
3753
3925
|
color: var(--color-text-muted);
|
|
3754
3926
|
}
|
|
3755
3927
|
|
|
3928
|
+
/* ── Animations ── */
|
|
3929
|
+
|
|
3930
|
+
@keyframes nexus-stepper-pulse {
|
|
3931
|
+
0%, 100% { box-shadow: 0 0 0 0 rgba(9, 180, 152, 0.25); }
|
|
3932
|
+
50% { box-shadow: 0 0 0 3px rgba(9, 180, 152, 0.25); }
|
|
3933
|
+
}
|
|
3934
|
+
@keyframes nexus-stepper-pop {
|
|
3935
|
+
0% { transform: scale(0.7); opacity: 0.5; }
|
|
3936
|
+
60% { transform: scale(1.15); opacity: 1; }
|
|
3937
|
+
100% { transform: scale(1); opacity: 1; }
|
|
3938
|
+
}
|
|
3939
|
+
@keyframes nexus-stepper-check-in {
|
|
3940
|
+
0% { opacity: 0; transform: scale(0) rotate(-45deg); }
|
|
3941
|
+
60% { opacity: 1; transform: scale(1.2) rotate(0deg); }
|
|
3942
|
+
100% { opacity: 1; transform: scale(1) rotate(0deg); }
|
|
3943
|
+
}
|
|
3944
|
+
@keyframes nexus-stepper-label-slide {
|
|
3945
|
+
0% { opacity: 0; transform: translateY(4px); }
|
|
3946
|
+
100% { opacity: 1; transform: translateY(0); }
|
|
3947
|
+
}
|
|
3948
|
+
|
|
3949
|
+
.nexus-stepper__step--active .nexus-stepper__indicator {
|
|
3950
|
+
animation: nexus-stepper-pulse 2s ease-in-out infinite;
|
|
3951
|
+
}
|
|
3952
|
+
|
|
3953
|
+
.nexus-stepper__step--animating.nexus-stepper__step--active .nexus-stepper__indicator {
|
|
3954
|
+
animation:
|
|
3955
|
+
nexus-stepper-pop 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275) both,
|
|
3956
|
+
nexus-stepper-pulse 2s ease-in-out 500ms infinite;
|
|
3957
|
+
}
|
|
3958
|
+
.nexus-stepper__step--animating.nexus-stepper__step--active .nexus-stepper__label {
|
|
3959
|
+
animation: nexus-stepper-label-slide 350ms ease-out both;
|
|
3960
|
+
}
|
|
3961
|
+
.nexus-stepper__step--animating.nexus-stepper__step--active .nexus-stepper__description {
|
|
3962
|
+
animation: nexus-stepper-label-slide 350ms ease-out 50ms both;
|
|
3963
|
+
}
|
|
3964
|
+
|
|
3965
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3966
|
+
.nexus-stepper__step--active .nexus-stepper__indicator,
|
|
3967
|
+
.nexus-stepper__step--animating .nexus-stepper__indicator,
|
|
3968
|
+
.nexus-stepper__step--animating .nexus-stepper__label,
|
|
3969
|
+
.nexus-stepper__step--animating .nexus-stepper__description,
|
|
3970
|
+
.nexus-stepper__check { animation: none !important; }
|
|
3971
|
+
}
|
|
3972
|
+
|
|
3756
3973
|
/* ═══════════════════════════════════════════
|
|
3757
3974
|
TagInput
|
|
3758
3975
|
═══════════════════════════════════════════ */
|
|
@@ -4415,4 +4632,290 @@
|
|
|
4415
4632
|
margin: 0;
|
|
4416
4633
|
}
|
|
4417
4634
|
|
|
4635
|
+
/* ═══════════════════════════════════════════
|
|
4636
|
+
Combobox (Searchable Select)
|
|
4637
|
+
═══════════════════════════════════════════ */
|
|
4638
|
+
.nexus-combobox {
|
|
4639
|
+
display: flex;
|
|
4640
|
+
align-items: center;
|
|
4641
|
+
flex-wrap: nowrap;
|
|
4642
|
+
gap: var(--spacing-gap-xs, 0.25rem);
|
|
4643
|
+
border-radius: var(--radius-corner-md, 0.5rem);
|
|
4644
|
+
border: 1px solid var(--color-border-default);
|
|
4645
|
+
background: var(--color-surface-default);
|
|
4646
|
+
font-size: var(--text-text-sm, 0.875rem);
|
|
4647
|
+
font-weight: 500;
|
|
4648
|
+
line-height: 1;
|
|
4649
|
+
color: var(--color-text-primary);
|
|
4650
|
+
cursor: text;
|
|
4651
|
+
transition:
|
|
4652
|
+
border-color 200ms,
|
|
4653
|
+
box-shadow 200ms;
|
|
4654
|
+
}
|
|
4655
|
+
|
|
4656
|
+
/* Left content area: chips + input wrap together, suffix stays vertically centered */
|
|
4657
|
+
.nexus-combobox__content {
|
|
4658
|
+
display: flex;
|
|
4659
|
+
flex: 1 1 auto;
|
|
4660
|
+
align-items: center;
|
|
4661
|
+
flex-wrap: wrap;
|
|
4662
|
+
gap: var(--spacing-gap-xs, 0.25rem);
|
|
4663
|
+
min-width: 0;
|
|
4664
|
+
}
|
|
4665
|
+
|
|
4666
|
+
/* Right suffix area: clear / loading / chevron — always vertically centered */
|
|
4667
|
+
.nexus-combobox__suffix {
|
|
4668
|
+
display: inline-flex;
|
|
4669
|
+
align-items: center;
|
|
4670
|
+
flex-shrink: 0;
|
|
4671
|
+
gap: var(--spacing-gap-xs, 0.25rem);
|
|
4672
|
+
align-self: center;
|
|
4673
|
+
}
|
|
4674
|
+
:where(.nexus-combobox) {
|
|
4675
|
+
width: 100%;
|
|
4676
|
+
}
|
|
4677
|
+
.nexus-combobox:hover:not(.nexus-combobox--disabled):not(:focus-within) {
|
|
4678
|
+
border-color: var(--color-border-default-hover);
|
|
4679
|
+
box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
|
|
4680
|
+
}
|
|
4681
|
+
.nexus-combobox--default:focus-within,
|
|
4682
|
+
.nexus-combobox--default.nexus-combobox--open {
|
|
4683
|
+
border-color: var(--color-accent-primary);
|
|
4684
|
+
box-shadow: 0 0 0 0.5px var(--color-accent-primary);
|
|
4685
|
+
}
|
|
4686
|
+
.nexus-combobox--error {
|
|
4687
|
+
border-color: var(--color-status-danger);
|
|
4688
|
+
}
|
|
4689
|
+
.nexus-combobox--error:focus-within,
|
|
4690
|
+
.nexus-combobox--error.nexus-combobox--open {
|
|
4691
|
+
border-color: var(--color-status-danger);
|
|
4692
|
+
box-shadow: 0 0 0 0.5px var(--color-status-danger);
|
|
4693
|
+
}
|
|
4694
|
+
.nexus-combobox--disabled {
|
|
4695
|
+
cursor: not-allowed;
|
|
4696
|
+
background: var(--color-surface-strong);
|
|
4697
|
+
border-color: var(--color-border-medium);
|
|
4698
|
+
color: var(--color-text-muted);
|
|
4699
|
+
}
|
|
4700
|
+
.nexus-combobox--disabled .nexus-combobox__input {
|
|
4701
|
+
cursor: not-allowed;
|
|
4702
|
+
}
|
|
4703
|
+
|
|
4704
|
+
/* ── Sizes (mirror TextInput tokens) ── */
|
|
4705
|
+
.nexus-combobox--xl {
|
|
4706
|
+
padding: calc(var(--spacing-padding-md, 1rem) - 1px)
|
|
4707
|
+
var(--spacing-padding-md, 1rem);
|
|
4708
|
+
font-size: var(--text-text-base, 1rem);
|
|
4709
|
+
}
|
|
4710
|
+
.nexus-combobox--lg {
|
|
4711
|
+
padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px)
|
|
4712
|
+
var(--spacing-padding-sm, 0.75rem);
|
|
4713
|
+
font-size: var(--text-text-base, 1rem);
|
|
4714
|
+
}
|
|
4715
|
+
.nexus-combobox--md {
|
|
4716
|
+
padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px)
|
|
4717
|
+
var(--spacing-padding-sm, 0.75rem);
|
|
4718
|
+
font-size: var(--text-text-sm, 0.875rem);
|
|
4719
|
+
}
|
|
4720
|
+
|
|
4721
|
+
/* ── Inner input ── */
|
|
4722
|
+
.nexus-combobox__input {
|
|
4723
|
+
flex: 1 1 auto;
|
|
4724
|
+
min-width: 4rem;
|
|
4725
|
+
background: transparent;
|
|
4726
|
+
border: 0;
|
|
4727
|
+
outline: none;
|
|
4728
|
+
box-shadow: none;
|
|
4729
|
+
color: inherit;
|
|
4730
|
+
font: inherit;
|
|
4731
|
+
padding: 0;
|
|
4732
|
+
appearance: none;
|
|
4733
|
+
-webkit-appearance: none;
|
|
4734
|
+
}
|
|
4735
|
+
.nexus-combobox__input:focus,
|
|
4736
|
+
.nexus-combobox__input:focus-visible {
|
|
4737
|
+
outline: none;
|
|
4738
|
+
box-shadow: none;
|
|
4739
|
+
border: 0;
|
|
4740
|
+
}
|
|
4741
|
+
.nexus-combobox__input::placeholder {
|
|
4742
|
+
color: var(--color-text-muted);
|
|
4743
|
+
}
|
|
4744
|
+
.nexus-combobox__input:disabled {
|
|
4745
|
+
color: var(--color-text-muted);
|
|
4746
|
+
}
|
|
4747
|
+
|
|
4748
|
+
/* ── Suffix icons (clear / loading / chevron) ── */
|
|
4749
|
+
.nexus-combobox__icon {
|
|
4750
|
+
display: inline-flex;
|
|
4751
|
+
align-items: center;
|
|
4752
|
+
justify-content: center;
|
|
4753
|
+
flex-shrink: 0;
|
|
4754
|
+
color: var(--color-icon-secondary);
|
|
4755
|
+
}
|
|
4756
|
+
.nexus-combobox__icon--loading {
|
|
4757
|
+
color: var(--color-accent-primary);
|
|
4758
|
+
}
|
|
4759
|
+
.nexus-combobox__clear {
|
|
4760
|
+
display: inline-flex;
|
|
4761
|
+
align-items: center;
|
|
4762
|
+
justify-content: center;
|
|
4763
|
+
flex-shrink: 0;
|
|
4764
|
+
width: 1.125rem;
|
|
4765
|
+
height: 1.125rem;
|
|
4766
|
+
border-radius: 999px;
|
|
4767
|
+
border: 0;
|
|
4768
|
+
background: transparent;
|
|
4769
|
+
color: var(--color-icon-secondary);
|
|
4770
|
+
cursor: pointer;
|
|
4771
|
+
padding: 0;
|
|
4772
|
+
}
|
|
4773
|
+
.nexus-combobox__clear:hover {
|
|
4774
|
+
background: var(--color-surface-hover);
|
|
4775
|
+
color: var(--color-icon-primary);
|
|
4776
|
+
}
|
|
4777
|
+
.nexus-combobox__chevron {
|
|
4778
|
+
display: inline-flex;
|
|
4779
|
+
align-items: center;
|
|
4780
|
+
justify-content: center;
|
|
4781
|
+
flex-shrink: 0;
|
|
4782
|
+
color: var(--color-icon-secondary);
|
|
4783
|
+
transition: transform 150ms ease;
|
|
4784
|
+
}
|
|
4785
|
+
.nexus-combobox__chevron--open {
|
|
4786
|
+
transform: rotate(180deg);
|
|
4787
|
+
}
|
|
4788
|
+
|
|
4789
|
+
/* ── Multi-select chips inside input ── */
|
|
4790
|
+
.nexus-combobox__chip {
|
|
4791
|
+
display: inline-flex;
|
|
4792
|
+
align-items: center;
|
|
4793
|
+
gap: 0.25rem;
|
|
4794
|
+
padding: 0.125rem 0.375rem 0.125rem 0.5rem;
|
|
4795
|
+
border-radius: var(--radius-corner-sm, 0.25rem);
|
|
4796
|
+
background: var(--color-surface-subtle);
|
|
4797
|
+
color: var(--color-text-primary);
|
|
4798
|
+
font-size: var(--text-text-xs, 0.75rem);
|
|
4799
|
+
font-weight: 500;
|
|
4800
|
+
line-height: 1.25;
|
|
4801
|
+
max-width: 100%;
|
|
4802
|
+
}
|
|
4803
|
+
.nexus-combobox__chip-label {
|
|
4804
|
+
overflow: hidden;
|
|
4805
|
+
text-overflow: ellipsis;
|
|
4806
|
+
white-space: nowrap;
|
|
4807
|
+
}
|
|
4808
|
+
.nexus-combobox__chip-remove {
|
|
4809
|
+
display: inline-flex;
|
|
4810
|
+
align-items: center;
|
|
4811
|
+
justify-content: center;
|
|
4812
|
+
width: 1rem;
|
|
4813
|
+
height: 1rem;
|
|
4814
|
+
border-radius: 999px;
|
|
4815
|
+
border: 0;
|
|
4816
|
+
background: transparent;
|
|
4817
|
+
color: var(--color-icon-secondary);
|
|
4818
|
+
cursor: pointer;
|
|
4819
|
+
padding: 0;
|
|
4820
|
+
flex-shrink: 0;
|
|
4821
|
+
}
|
|
4822
|
+
.nexus-combobox__chip-remove:hover {
|
|
4823
|
+
background: var(--color-surface-hover);
|
|
4824
|
+
color: var(--color-icon-primary);
|
|
4825
|
+
}
|
|
4826
|
+
|
|
4827
|
+
/* ── Field wrapper (label/description) ── */
|
|
4828
|
+
.nexus-combobox-field {
|
|
4829
|
+
display: flex;
|
|
4830
|
+
flex-direction: column;
|
|
4831
|
+
gap: var(--spacing-gap-xs, 0.25rem);
|
|
4832
|
+
}
|
|
4833
|
+
.nexus-combobox-field__label {
|
|
4834
|
+
font-size: var(--text-label-semibold-md);
|
|
4835
|
+
font-weight: var(--font-weight-label-semibold-md, 600);
|
|
4836
|
+
line-height: 1;
|
|
4837
|
+
color: var(--color-text-tertiary);
|
|
4838
|
+
}
|
|
4839
|
+
.nexus-combobox-field__description {
|
|
4840
|
+
font-size: var(--text-text-xs);
|
|
4841
|
+
font-weight: var(--font-weight-text-xs, 400);
|
|
4842
|
+
line-height: 1.5;
|
|
4843
|
+
color: var(--color-text-tertiary);
|
|
4844
|
+
margin: 0;
|
|
4845
|
+
}
|
|
4846
|
+
.nexus-combobox-field__description--error {
|
|
4847
|
+
color: var(--color-status-danger);
|
|
4848
|
+
}
|
|
4849
|
+
|
|
4850
|
+
/* ── Popover / Listbox ── */
|
|
4851
|
+
.nexus-combobox-popover {
|
|
4852
|
+
z-index: 50;
|
|
4853
|
+
border-radius: var(--radius-corner-md, 0.5rem);
|
|
4854
|
+
border: 1px solid var(--color-border-default);
|
|
4855
|
+
background: var(--color-surface-default);
|
|
4856
|
+
box-shadow: var(--shadow-md, 0 8px 24px rgba(0, 0, 0, 0.08));
|
|
4857
|
+
overflow: hidden;
|
|
4858
|
+
}
|
|
4859
|
+
.nexus-combobox-listbox {
|
|
4860
|
+
max-height: 18rem;
|
|
4861
|
+
overflow-y: auto;
|
|
4862
|
+
padding: 0.25rem;
|
|
4863
|
+
}
|
|
4864
|
+
.nexus-combobox-popover__status {
|
|
4865
|
+
display: flex;
|
|
4866
|
+
align-items: center;
|
|
4867
|
+
justify-content: center;
|
|
4868
|
+
gap: 0.5rem;
|
|
4869
|
+
padding: 1rem;
|
|
4870
|
+
color: var(--color-text-muted);
|
|
4871
|
+
font-size: var(--text-text-sm, 0.875rem);
|
|
4872
|
+
}
|
|
4873
|
+
|
|
4874
|
+
/* ── Option ── */
|
|
4875
|
+
.nexus-combobox-option {
|
|
4876
|
+
display: flex;
|
|
4877
|
+
align-items: center;
|
|
4878
|
+
gap: 0.5rem;
|
|
4879
|
+
padding: 0.5rem 0.625rem;
|
|
4880
|
+
border-radius: var(--radius-corner-sm, 0.25rem);
|
|
4881
|
+
cursor: pointer;
|
|
4882
|
+
color: var(--color-text-primary);
|
|
4883
|
+
font-size: var(--text-text-sm, 0.875rem);
|
|
4884
|
+
line-height: 1.25;
|
|
4885
|
+
user-select: none;
|
|
4886
|
+
}
|
|
4887
|
+
.nexus-combobox-option--active {
|
|
4888
|
+
background: var(--color-surface-hover);
|
|
4889
|
+
}
|
|
4890
|
+
.nexus-combobox-option--selected {
|
|
4891
|
+
color: var(--color-accent-primary);
|
|
4892
|
+
font-weight: 600;
|
|
4893
|
+
}
|
|
4894
|
+
.nexus-combobox-option--disabled {
|
|
4895
|
+
opacity: 0.5;
|
|
4896
|
+
cursor: not-allowed;
|
|
4897
|
+
}
|
|
4898
|
+
.nexus-combobox-option__body {
|
|
4899
|
+
flex: 1 1 auto;
|
|
4900
|
+
min-width: 0;
|
|
4901
|
+
}
|
|
4902
|
+
.nexus-combobox-option__label {
|
|
4903
|
+
overflow: hidden;
|
|
4904
|
+
text-overflow: ellipsis;
|
|
4905
|
+
white-space: nowrap;
|
|
4906
|
+
}
|
|
4907
|
+
.nexus-combobox-option__description {
|
|
4908
|
+
margin-top: 0.125rem;
|
|
4909
|
+
color: var(--color-text-muted);
|
|
4910
|
+
font-size: var(--text-text-xs, 0.75rem);
|
|
4911
|
+
font-weight: 400;
|
|
4912
|
+
overflow: hidden;
|
|
4913
|
+
text-overflow: ellipsis;
|
|
4914
|
+
white-space: nowrap;
|
|
4915
|
+
}
|
|
4916
|
+
.nexus-combobox-option__check {
|
|
4917
|
+
flex-shrink: 0;
|
|
4918
|
+
color: var(--color-accent-primary);
|
|
4919
|
+
}
|
|
4920
|
+
|
|
4418
4921
|
}
|