softui-css 1.13.0 → 1.14.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/dist/softui.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! SoftUI v1.13.0 — A Neumorphic CSS Library */
1
+ /*! SoftUI v1.14.0 — A Neumorphic CSS Library */
2
2
 
3
3
  /* ===========================================
4
4
  CSS Variables / Tokens
@@ -13647,6 +13647,661 @@ button.sui-list-group-item:hover {
13647
13647
  .sui-hero-lg { padding: 56px 16px; }
13648
13648
  }
13649
13649
 
13650
+ /* ===========================================
13651
+ Editable Text
13652
+ =========================================== */
13653
+ .sui-editable {
13654
+ display: inline-flex;
13655
+ align-items: center;
13656
+ gap: 6px;
13657
+ cursor: pointer;
13658
+ position: relative;
13659
+ }
13660
+
13661
+ .sui-editable-value {
13662
+ padding: 4px 8px;
13663
+ border-radius: var(--sui-radius-xs);
13664
+ border: 1.5px solid transparent;
13665
+ transition: border-color var(--sui-transition-fast), background var(--sui-transition-fast);
13666
+ min-width: 40px;
13667
+ }
13668
+
13669
+ .sui-editable:hover .sui-editable-value {
13670
+ border-color: var(--sui-bg-dark);
13671
+ background: var(--sui-bg-light);
13672
+ }
13673
+
13674
+ .sui-editable-icon {
13675
+ width: 14px;
13676
+ height: 14px;
13677
+ color: var(--sui-text-muted);
13678
+ opacity: 0;
13679
+ transition: opacity var(--sui-transition-fast);
13680
+ flex-shrink: 0;
13681
+ }
13682
+
13683
+ .sui-editable:hover .sui-editable-icon {
13684
+ opacity: 1;
13685
+ }
13686
+
13687
+ .sui-editable-input {
13688
+ padding: 4px 8px;
13689
+ font-size: inherit;
13690
+ font-family: var(--sui-font);
13691
+ font-weight: inherit;
13692
+ color: var(--sui-text);
13693
+ background: var(--sui-bg);
13694
+ border: 1.5px solid var(--sui-primary);
13695
+ border-radius: var(--sui-radius-xs);
13696
+ box-shadow: 0 0 0 3px rgba(91, 84, 224, 0.15);
13697
+ outline: none;
13698
+ width: 100%;
13699
+ min-width: 80px;
13700
+ }
13701
+
13702
+ .sui-editable-input:focus {
13703
+ box-shadow: 0 0 0 3px rgba(91, 84, 224, 0.25);
13704
+ }
13705
+
13706
+ /* Sizes */
13707
+ .sui-editable-sm { font-size: 13px; }
13708
+ .sui-editable-sm .sui-editable-value { padding: 2px 6px; }
13709
+ .sui-editable-sm .sui-editable-input { padding: 2px 6px; }
13710
+
13711
+ .sui-editable-lg { font-size: 18px; }
13712
+ .sui-editable-lg .sui-editable-value { padding: 6px 10px; }
13713
+ .sui-editable-lg .sui-editable-input { padding: 6px 10px; }
13714
+
13715
+ /* Underline variant */
13716
+ .sui-editable-underline .sui-editable-value {
13717
+ border: none;
13718
+ border-bottom: 1.5px dashed var(--sui-bg-dark);
13719
+ border-radius: 0;
13720
+ padding: 4px 2px;
13721
+ }
13722
+
13723
+ .sui-editable-underline:hover .sui-editable-value {
13724
+ border-bottom-color: var(--sui-primary);
13725
+ background: none;
13726
+ }
13727
+
13728
+ .sui-editable-underline .sui-editable-input {
13729
+ border: none;
13730
+ border-bottom: 1.5px solid var(--sui-primary);
13731
+ border-radius: 0;
13732
+ box-shadow: none;
13733
+ padding: 4px 2px;
13734
+ }
13735
+
13736
+ /* ===========================================
13737
+ Scrollspy
13738
+ =========================================== */
13739
+ .sui-scrollspy {
13740
+ display: flex;
13741
+ flex-direction: column;
13742
+ gap: 2px;
13743
+ list-style: none;
13744
+ padding: 0;
13745
+ margin: 0;
13746
+ }
13747
+
13748
+ .sui-scrollspy a {
13749
+ display: block;
13750
+ padding: 6px 16px;
13751
+ font-size: 13px;
13752
+ font-weight: 500;
13753
+ color: var(--sui-text-muted);
13754
+ text-decoration: none;
13755
+ border-inline-start: 2px solid transparent;
13756
+ border-radius: 0 var(--sui-radius-xs) var(--sui-radius-xs) 0;
13757
+ transition: color var(--sui-transition-fast), border-color var(--sui-transition-fast), background var(--sui-transition-fast);
13758
+ }
13759
+
13760
+ .sui-scrollspy a:hover {
13761
+ color: var(--sui-text);
13762
+ }
13763
+
13764
+ .sui-scrollspy a.active {
13765
+ color: var(--sui-primary);
13766
+ font-weight: 600;
13767
+ border-inline-start-color: var(--sui-primary);
13768
+ background: rgba(91, 84, 224, 0.06);
13769
+ }
13770
+
13771
+ [data-theme="dark"] .sui-scrollspy a.active {
13772
+ background: rgba(124, 107, 255, 0.1);
13773
+ }
13774
+
13775
+ /* Horizontal variant */
13776
+ .sui-scrollspy-horizontal {
13777
+ flex-direction: row;
13778
+ gap: 0;
13779
+ }
13780
+
13781
+ .sui-scrollspy-horizontal a {
13782
+ border-inline-start: none;
13783
+ border-bottom: 2px solid transparent;
13784
+ border-radius: 0;
13785
+ padding: 8px 16px;
13786
+ }
13787
+
13788
+ .sui-scrollspy-horizontal a.active {
13789
+ border-bottom-color: var(--sui-primary);
13790
+ background: none;
13791
+ }
13792
+
13793
+ /* Pill variant */
13794
+ .sui-scrollspy-pill a {
13795
+ border-inline-start: none;
13796
+ border-radius: var(--sui-radius-full);
13797
+ padding: 6px 14px;
13798
+ }
13799
+
13800
+ .sui-scrollspy-pill a.active {
13801
+ background: rgba(91, 84, 224, 0.1);
13802
+ }
13803
+
13804
+ /* ===========================================
13805
+ Countdown
13806
+ =========================================== */
13807
+ .sui-countdown {
13808
+ display: inline-flex;
13809
+ align-items: center;
13810
+ gap: 8px;
13811
+ }
13812
+
13813
+ .sui-countdown-unit {
13814
+ display: flex;
13815
+ flex-direction: column;
13816
+ align-items: center;
13817
+ gap: 4px;
13818
+ }
13819
+
13820
+ .sui-countdown-value {
13821
+ display: flex;
13822
+ align-items: center;
13823
+ justify-content: center;
13824
+ min-width: 56px;
13825
+ height: 56px;
13826
+ font-size: 28px;
13827
+ font-weight: 800;
13828
+ font-family: var(--sui-font);
13829
+ color: var(--sui-text);
13830
+ background: var(--sui-bg);
13831
+ border-radius: var(--sui-radius-sm);
13832
+ box-shadow: var(--sui-shadow-raised);
13833
+ line-height: 1;
13834
+ }
13835
+
13836
+ .sui-countdown-label {
13837
+ font-size: 11px;
13838
+ font-weight: 600;
13839
+ text-transform: uppercase;
13840
+ letter-spacing: 0.5px;
13841
+ color: var(--sui-text-muted);
13842
+ }
13843
+
13844
+ .sui-countdown-separator {
13845
+ font-size: 24px;
13846
+ font-weight: 700;
13847
+ color: var(--sui-text-muted);
13848
+ margin-top: -16px;
13849
+ }
13850
+
13851
+ /* Inset variant */
13852
+ .sui-countdown-inset .sui-countdown-value {
13853
+ box-shadow: var(--sui-shadow-inset);
13854
+ }
13855
+
13856
+ /* Bordered variant */
13857
+ .sui-countdown-bordered .sui-countdown-value {
13858
+ box-shadow: none;
13859
+ border: 1.5px solid var(--sui-bg-dark);
13860
+ }
13861
+
13862
+ /* Primary variant */
13863
+ .sui-countdown-primary .sui-countdown-value {
13864
+ background: var(--sui-primary);
13865
+ color: #fff;
13866
+ box-shadow: 0 4px 12px rgba(91, 84, 224, 0.3);
13867
+ }
13868
+
13869
+ /* Sizes */
13870
+ .sui-countdown-sm .sui-countdown-value {
13871
+ min-width: 40px;
13872
+ height: 40px;
13873
+ font-size: 20px;
13874
+ border-radius: var(--sui-radius-xs);
13875
+ }
13876
+
13877
+ .sui-countdown-sm .sui-countdown-label {
13878
+ font-size: 9px;
13879
+ }
13880
+
13881
+ .sui-countdown-sm .sui-countdown-separator {
13882
+ font-size: 18px;
13883
+ margin-top: -12px;
13884
+ }
13885
+
13886
+ .sui-countdown-lg .sui-countdown-value {
13887
+ min-width: 72px;
13888
+ height: 72px;
13889
+ font-size: 36px;
13890
+ border-radius: var(--sui-radius);
13891
+ }
13892
+
13893
+ .sui-countdown-lg .sui-countdown-label {
13894
+ font-size: 12px;
13895
+ }
13896
+
13897
+ .sui-countdown-lg .sui-countdown-separator {
13898
+ font-size: 30px;
13899
+ margin-top: -18px;
13900
+ }
13901
+
13902
+ /* ===========================================
13903
+ Segmented Control
13904
+ =========================================== */
13905
+ .sui-segmented {
13906
+ display: inline-flex;
13907
+ background: var(--sui-bg);
13908
+ border-radius: var(--sui-radius-full);
13909
+ box-shadow: var(--sui-shadow-inset);
13910
+ padding: 4px;
13911
+ position: relative;
13912
+ gap: 0;
13913
+ }
13914
+
13915
+ .sui-segmented input {
13916
+ position: absolute;
13917
+ opacity: 0;
13918
+ width: 0;
13919
+ height: 0;
13920
+ }
13921
+
13922
+ .sui-segmented label {
13923
+ position: relative;
13924
+ z-index: 1;
13925
+ padding: 8px 20px;
13926
+ font-size: 14px;
13927
+ font-weight: 500;
13928
+ font-family: var(--sui-font);
13929
+ color: var(--sui-text-muted);
13930
+ cursor: pointer;
13931
+ border-radius: var(--sui-radius-full);
13932
+ transition: color var(--sui-transition-fast);
13933
+ -webkit-user-select: none;
13934
+ user-select: none;
13935
+ white-space: nowrap;
13936
+ text-align: center;
13937
+ }
13938
+
13939
+ .sui-segmented input:checked + label {
13940
+ color: var(--sui-text);
13941
+ font-weight: 600;
13942
+ }
13943
+
13944
+ .sui-segmented input:focus-visible + label {
13945
+ outline: 2px solid var(--sui-primary);
13946
+ outline-offset: 2px;
13947
+ }
13948
+
13949
+ /* Sliding indicator */
13950
+ .sui-segmented-indicator {
13951
+ position: absolute;
13952
+ top: 4px;
13953
+ bottom: 4px;
13954
+ left: 0;
13955
+ border-radius: var(--sui-radius-full);
13956
+ background: var(--sui-bg);
13957
+ box-shadow: var(--sui-shadow-raised-sm);
13958
+ transition: left var(--sui-transition-base) ease, width var(--sui-transition-base) ease;
13959
+ z-index: 0;
13960
+ }
13961
+
13962
+ /* Primary color variant */
13963
+ .sui-segmented-primary input:checked + label {
13964
+ color: #fff;
13965
+ }
13966
+
13967
+ .sui-segmented-primary .sui-segmented-indicator {
13968
+ background: var(--sui-primary);
13969
+ box-shadow: 0 2px 8px rgba(91, 84, 224, 0.3);
13970
+ }
13971
+
13972
+ /* Block (full width) */
13973
+ .sui-segmented-block {
13974
+ display: flex;
13975
+ width: 100%;
13976
+ }
13977
+
13978
+ .sui-segmented-block label {
13979
+ flex: 1;
13980
+ }
13981
+
13982
+ /* Sizes */
13983
+ .sui-segmented-sm {
13984
+ padding: 3px;
13985
+ }
13986
+
13987
+ .sui-segmented-sm label {
13988
+ padding: 5px 14px;
13989
+ font-size: 13px;
13990
+ }
13991
+
13992
+ .sui-segmented-lg label {
13993
+ padding: 10px 28px;
13994
+ font-size: 16px;
13995
+ }
13996
+
13997
+ /* Disabled */
13998
+ .sui-segmented input:disabled + label {
13999
+ opacity: 0.4;
14000
+ cursor: not-allowed;
14001
+ }
14002
+
14003
+ /* ===========================================
14004
+ Navigation Menu
14005
+ =========================================== */
14006
+ .sui-nav-menu {
14007
+ display: flex;
14008
+ align-items: center;
14009
+ gap: 4px;
14010
+ list-style: none;
14011
+ padding: 0;
14012
+ margin: 0;
14013
+ }
14014
+
14015
+ .sui-nav-menu-item {
14016
+ position: relative;
14017
+ }
14018
+
14019
+ .sui-nav-menu-trigger {
14020
+ display: inline-flex;
14021
+ align-items: center;
14022
+ gap: 6px;
14023
+ padding: 8px 16px;
14024
+ font-size: 14px;
14025
+ font-weight: 500;
14026
+ font-family: var(--sui-font);
14027
+ color: var(--sui-text-muted);
14028
+ background: none;
14029
+ border: none;
14030
+ border-radius: var(--sui-radius-sm);
14031
+ cursor: pointer;
14032
+ transition: var(--sui-transition);
14033
+ text-decoration: none;
14034
+ }
14035
+
14036
+ .sui-nav-menu-trigger:hover {
14037
+ color: var(--sui-text);
14038
+ background: var(--sui-bg-dark);
14039
+ }
14040
+
14041
+ .sui-nav-menu-trigger.active {
14042
+ color: var(--sui-primary);
14043
+ font-weight: 600;
14044
+ }
14045
+
14046
+ /* Arrow */
14047
+ .sui-nav-menu-trigger::after {
14048
+ content: '';
14049
+ width: 5px;
14050
+ height: 5px;
14051
+ border-right: 1.5px solid currentColor;
14052
+ border-bottom: 1.5px solid currentColor;
14053
+ transform: rotate(45deg);
14054
+ margin-top: 0px;
14055
+ margin-inline-start: 4px;
14056
+ transition: transform var(--sui-transition-fast);
14057
+ }
14058
+
14059
+ .sui-nav-menu-item.open .sui-nav-menu-trigger::after {
14060
+ transform: rotate(-135deg);
14061
+ margin-top: 2px;
14062
+ }
14063
+
14064
+ /* No arrow for plain links */
14065
+ a.sui-nav-menu-trigger::after {
14066
+ display: none;
14067
+ }
14068
+
14069
+ /* Panel (mega-menu dropdown) */
14070
+ .sui-nav-menu-panel {
14071
+ position: absolute;
14072
+ top: calc(100% + 6px);
14073
+ left: 0;
14074
+ min-width: 240px;
14075
+ background: var(--sui-bg);
14076
+ border-radius: var(--sui-radius-sm);
14077
+ box-shadow: var(--sui-shadow-raised);
14078
+ padding: 12px;
14079
+ display: none;
14080
+ z-index: 100;
14081
+ }
14082
+
14083
+ /* Invisible bridge to prevent hover gap */
14084
+ .sui-nav-menu-item > .sui-nav-menu-panel::before {
14085
+ content: '';
14086
+ position: absolute;
14087
+ top: -10px;
14088
+ left: 0;
14089
+ right: 0;
14090
+ height: 10px;
14091
+ }
14092
+
14093
+ .sui-nav-menu-item.open .sui-nav-menu-panel {
14094
+ display: block;
14095
+ }
14096
+
14097
+ /* Wide panel (mega-menu) */
14098
+ .sui-nav-menu-panel-wide {
14099
+ min-width: 480px;
14100
+ display: none;
14101
+ }
14102
+
14103
+ .sui-nav-menu-item.open .sui-nav-menu-panel-wide {
14104
+ display: grid;
14105
+ grid-template-columns: repeat(2, 1fr);
14106
+ gap: 8px;
14107
+ }
14108
+
14109
+ /* Full-width panel */
14110
+ .sui-nav-menu-panel-full {
14111
+ left: 0;
14112
+ right: 0;
14113
+ min-width: auto;
14114
+ display: none;
14115
+ }
14116
+
14117
+ .sui-nav-menu-item.open .sui-nav-menu-panel-full {
14118
+ display: grid;
14119
+ grid-template-columns: repeat(3, 1fr);
14120
+ gap: 8px;
14121
+ }
14122
+
14123
+ /* Panel link */
14124
+ .sui-nav-menu-link {
14125
+ display: flex;
14126
+ align-items: flex-start;
14127
+ gap: 12px;
14128
+ padding: 10px 12px;
14129
+ border-radius: var(--sui-radius-xs);
14130
+ text-decoration: none;
14131
+ color: var(--sui-text);
14132
+ transition: background var(--sui-transition-fast);
14133
+ }
14134
+
14135
+ .sui-nav-menu-link:hover {
14136
+ background: rgba(91, 84, 224, 0.06);
14137
+ }
14138
+
14139
+ [data-theme="dark"] .sui-nav-menu-link:hover {
14140
+ background: rgba(124, 107, 255, 0.1);
14141
+ }
14142
+
14143
+ .sui-nav-menu-link-icon {
14144
+ width: 36px;
14145
+ height: 36px;
14146
+ border-radius: var(--sui-radius-xs);
14147
+ display: flex;
14148
+ align-items: center;
14149
+ justify-content: center;
14150
+ font-size: 18px;
14151
+ flex-shrink: 0;
14152
+ background: var(--sui-bg-dark);
14153
+ }
14154
+
14155
+ .sui-nav-menu-link-text {
14156
+ flex: 1;
14157
+ min-width: 0;
14158
+ }
14159
+
14160
+ .sui-nav-menu-link-title {
14161
+ font-size: 14px;
14162
+ font-weight: 600;
14163
+ color: var(--sui-text);
14164
+ }
14165
+
14166
+ .sui-nav-menu-link-desc {
14167
+ font-size: 12px;
14168
+ color: var(--sui-text-muted);
14169
+ margin-top: 2px;
14170
+ }
14171
+
14172
+ /* Group label inside panel */
14173
+ .sui-nav-menu-group-label {
14174
+ font-size: 11px;
14175
+ font-weight: 700;
14176
+ text-transform: uppercase;
14177
+ letter-spacing: 0.5px;
14178
+ color: var(--sui-text-muted);
14179
+ padding: 8px 12px 4px;
14180
+ }
14181
+
14182
+ /* Separator */
14183
+ .sui-nav-menu-separator {
14184
+ height: 1px;
14185
+ background: var(--sui-bg-dark);
14186
+ margin: 6px 0;
14187
+ }
14188
+
14189
+ /* Raised variant */
14190
+ .sui-nav-menu-raised {
14191
+ background: var(--sui-bg);
14192
+ border-radius: var(--sui-radius-sm);
14193
+ box-shadow: var(--sui-shadow-raised);
14194
+ padding: 6px 8px;
14195
+ }
14196
+
14197
+ /* Bordered variant */
14198
+ .sui-nav-menu-bordered {
14199
+ border: 1.5px solid var(--sui-bg-dark);
14200
+ border-radius: var(--sui-radius-sm);
14201
+ padding: 6px 8px;
14202
+ }
14203
+
14204
+ /* Inset variant */
14205
+ .sui-nav-menu-inset {
14206
+ background: var(--sui-bg);
14207
+ border-radius: var(--sui-radius-sm);
14208
+ box-shadow: var(--sui-shadow-inset);
14209
+ padding: 6px 8px;
14210
+ }
14211
+
14212
+ /* Hover to open */
14213
+ .sui-nav-menu-hover .sui-nav-menu-item:hover > .sui-nav-menu-panel,
14214
+ .sui-nav-menu-hover .sui-nav-menu-item:hover > .sui-nav-menu-panel-wide {
14215
+ display: block;
14216
+ }
14217
+
14218
+ .sui-nav-menu-hover .sui-nav-menu-item:hover > .sui-nav-menu-panel-wide {
14219
+ display: grid;
14220
+ grid-template-columns: repeat(2, 1fr);
14221
+ gap: 8px;
14222
+ }
14223
+
14224
+ .sui-nav-menu-hover .sui-nav-menu-item:hover > .sui-nav-menu-trigger::after {
14225
+ transform: rotate(-135deg);
14226
+ margin-top: 2px;
14227
+ }
14228
+
14229
+ /* Sub-menu (nested panel) */
14230
+ .sui-nav-menu-sub {
14231
+ position: relative;
14232
+ }
14233
+
14234
+ .sui-nav-menu-sub > .sui-nav-menu-panel {
14235
+ position: absolute;
14236
+ left: calc(100% + 4px);
14237
+ top: -12px;
14238
+ display: none;
14239
+ pointer-events: none;
14240
+ opacity: 0;
14241
+ transition: opacity var(--sui-transition-fast);
14242
+ }
14243
+
14244
+ .sui-nav-menu-sub:hover > .sui-nav-menu-panel,
14245
+ .sui-nav-menu-sub.open > .sui-nav-menu-panel {
14246
+ display: block;
14247
+ pointer-events: auto;
14248
+ opacity: 1;
14249
+ }
14250
+
14251
+ /* Click-only sub-menus (disable hover) */
14252
+ .sui-nav-menu-sub-click .sui-nav-menu-sub:hover > .sui-nav-menu-panel {
14253
+ display: none;
14254
+ pointer-events: none;
14255
+ opacity: 0;
14256
+ }
14257
+
14258
+ .sui-nav-menu-sub-click .sui-nav-menu-sub.open > .sui-nav-menu-panel {
14259
+ display: block;
14260
+ pointer-events: auto;
14261
+ opacity: 1;
14262
+ }
14263
+
14264
+ /* Invisible bridge for sub-menu gap */
14265
+ .sui-nav-menu-sub > .sui-nav-menu-panel::before {
14266
+ content: '';
14267
+ position: absolute;
14268
+ top: 0;
14269
+ left: -8px;
14270
+ width: 8px;
14271
+ height: 100%;
14272
+ }
14273
+
14274
+ .sui-nav-menu-sub > .sui-nav-menu-link::after {
14275
+ content: '›';
14276
+ margin-inline-start: auto;
14277
+ font-size: 16px;
14278
+ color: var(--sui-text-muted);
14279
+ line-height: 1;
14280
+ }
14281
+
14282
+ /* Responsive */
14283
+ @media (max-width: 768px) {
14284
+ .sui-nav-menu {
14285
+ flex-direction: column;
14286
+ align-items: stretch;
14287
+ }
14288
+ .sui-nav-menu-panel,
14289
+ .sui-nav-menu-panel-wide,
14290
+ .sui-nav-menu-item.open .sui-nav-menu-panel-wide {
14291
+ position: static;
14292
+ box-shadow: none;
14293
+ grid-template-columns: 1fr;
14294
+ padding: 0 0 0 16px;
14295
+ }
14296
+ .sui-nav-menu-panel-full,
14297
+ .sui-nav-menu-item.open .sui-nav-menu-panel-full {
14298
+ position: static;
14299
+ box-shadow: none;
14300
+ grid-template-columns: 1fr;
14301
+ padding: 0 0 0 16px;
14302
+ }
14303
+ }
14304
+
13650
14305
  /* ===========================================
13651
14306
  Reduced Motion
13652
14307
  =========================================== */