@ryanhelsing/ry-ui 1.0.5 → 1.0.7

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.
@@ -290,7 +290,7 @@ ry {
290
290
  ry-toggle-button, ry-knob, ry-slider, ry-number-select, ry-color-picker, ry-color-input,
291
291
  ry-gradient-picker, ry-tree, ry-tree-item,
292
292
  ry-tag, ry-tag-input, ry-hero, ry-stat, ry-feature, ry-feature-grid,
293
- ry-pricing, ry-pricing-card, ry-carousel) {
293
+ ry-pricing, ry-pricing-card, ry-carousel, ry-combobox) {
294
294
  box-sizing: border-box;
295
295
  }
296
296
 
@@ -675,20 +675,13 @@ ry-button[icon][size="sm"]:empty {
675
675
 
676
676
  ry-button-group {
677
677
  display: inline-flex;
678
+ gap: 2px;
679
+ padding: 2px;
680
+ border-radius: var(--ry-radius-md, 0.375rem);
678
681
  }
679
682
 
680
683
  ry-button-group > :is(ry-button, ry-toggle-button) {
681
- border-radius: 0;
682
- }
683
-
684
- ry-button-group > :is(ry-button, ry-toggle-button):first-child {
685
- border-start-start-radius: var(--ry-radius-md, 0.375rem);
686
- border-end-start-radius: var(--ry-radius-md, 0.375rem);
687
- }
688
-
689
- ry-button-group > :is(ry-button, ry-toggle-button):last-child {
690
- border-start-end-radius: var(--ry-radius-md, 0.375rem);
691
- border-end-end-radius: var(--ry-radius-md, 0.375rem);
684
+ border-radius: calc(var(--ry-radius-md, 0.375rem) - 2px);
692
685
  }
693
686
 
694
687
  /* ═══════════════════════════════════════════════════════════════
@@ -1065,22 +1058,18 @@ ry-card {
1065
1058
  display: block;
1066
1059
  padding: var(--ry-space-6, 1.5rem);
1067
1060
  container-type: inline-size;
1068
- transition: transform var(--ry-duration-fast, 100ms) var(--ry-ease, ease);
1069
1061
  }
1070
1062
 
1071
- ry-card:hover {
1072
- transform: translateY(-2px);
1073
- }
1074
-
1075
- ry-card[interactive] {
1063
+ :is(a, [interactive]):is(ry-card) {
1076
1064
  cursor: pointer;
1065
+ transition: transform var(--ry-duration-normal, 200ms) var(--ry-ease, ease);
1077
1066
  }
1078
1067
 
1079
- ry-card[interactive]:hover {
1080
- transform: translateY(-3px);
1068
+ :is(a, [interactive]):is(ry-card):hover {
1069
+ transform: translateY(-1px);
1081
1070
  }
1082
1071
 
1083
- ry-card[interactive]:active {
1072
+ :is(a, [interactive]):is(ry-card):active {
1084
1073
  transform: translateY(0);
1085
1074
  }
1086
1075
 
@@ -3066,6 +3055,126 @@ ry-carousel [data-ry-target="dot"] {
3066
3055
  cursor: pointer;
3067
3056
  }
3068
3057
 
3058
+ /* ═══════════════════════════════════════════════════════════════
3059
+ COMBOBOX
3060
+ ═══════════════════════════════════════════════════════════════ */
3061
+
3062
+ ry-combobox {
3063
+ position: relative;
3064
+ display: inline-block;
3065
+ min-width: 12rem;
3066
+ }
3067
+
3068
+ ry-combobox[disabled] {
3069
+ cursor: not-allowed;
3070
+ }
3071
+
3072
+ ry-combobox [data-ry-target="input-wrapper"] {
3073
+ display: flex;
3074
+ align-items: center;
3075
+ gap: var(--ry-space-2, 0.5rem);
3076
+ width: 100%;
3077
+ }
3078
+
3079
+ ry-combobox [data-ry-target="input"] {
3080
+ flex: 1;
3081
+ width: 100%;
3082
+ min-width: 0;
3083
+ padding: var(--ry-space-2, 0.5rem) var(--ry-space-3, 0.75rem);
3084
+ border: none;
3085
+ outline: none;
3086
+ background: transparent;
3087
+ }
3088
+
3089
+ ry-combobox [data-ry-target="arrow"] {
3090
+ flex-shrink: 0;
3091
+ padding-inline-end: var(--ry-space-2, 0.5rem);
3092
+ cursor: pointer;
3093
+ transition: transform var(--ry-duration-fast, 100ms) var(--ry-ease, ease);
3094
+ }
3095
+
3096
+ ry-combobox[data-ry-state="open"] [data-ry-target="arrow"] {
3097
+ transform: rotate(180deg);
3098
+ }
3099
+
3100
+ ry-combobox [data-ry-target="dropdown"] {
3101
+ position: absolute;
3102
+ top: 100%;
3103
+ left: 0;
3104
+ right: 0;
3105
+ z-index: var(--ry-z-dropdown, 1000);
3106
+ margin-block-start: var(--ry-space-1, 0.25rem);
3107
+ padding: var(--ry-space-1, 0.25rem);
3108
+ max-height: 15rem;
3109
+ overflow-y: auto;
3110
+ overscroll-behavior: contain;
3111
+ opacity: 0;
3112
+ visibility: hidden;
3113
+ transform: translateY(-0.5rem);
3114
+ transition: opacity var(--ry-duration-fast, 100ms) var(--ry-ease, ease),
3115
+ visibility var(--ry-duration-fast, 100ms) var(--ry-ease, ease),
3116
+ transform var(--ry-duration-fast, 100ms) var(--ry-ease, ease);
3117
+ transition-behavior: allow-discrete;
3118
+ }
3119
+
3120
+ ry-combobox[data-ry-state="open"] [data-ry-target="dropdown"] {
3121
+ opacity: 1;
3122
+ visibility: visible;
3123
+ transform: translateY(0);
3124
+ }
3125
+
3126
+ @starting-style {
3127
+ ry-combobox[data-ry-state="open"] [data-ry-target="dropdown"] {
3128
+ opacity: 0;
3129
+ transform: translateY(-0.5rem);
3130
+ }
3131
+ }
3132
+
3133
+ ry-combobox[data-ry-position="top"] [data-ry-target="dropdown"] {
3134
+ top: auto;
3135
+ bottom: 100%;
3136
+ margin-block-start: 0;
3137
+ margin-block-end: var(--ry-space-1, 0.25rem);
3138
+ transform: translateY(0.5rem);
3139
+ }
3140
+
3141
+ ry-combobox[data-ry-position="top"][data-ry-state="open"] [data-ry-target="dropdown"] {
3142
+ transform: translateY(0);
3143
+ }
3144
+
3145
+ ry-combobox [data-ry-target="option"] {
3146
+ padding: var(--ry-space-2, 0.5rem) var(--ry-space-3, 0.75rem);
3147
+ cursor: pointer;
3148
+ }
3149
+
3150
+ ry-combobox [data-ry-target="option"][hidden] {
3151
+ display: none;
3152
+ }
3153
+
3154
+ ry-combobox [data-ry-target="option"][data-disabled] {
3155
+ cursor: not-allowed;
3156
+ }
3157
+
3158
+ ry-combobox [data-ry-target="empty"] {
3159
+ padding: var(--ry-space-3, 0.75rem);
3160
+ text-align: center;
3161
+ }
3162
+
3163
+ ry-combobox [data-ry-target="empty"][hidden] {
3164
+ display: none;
3165
+ }
3166
+
3167
+ ry-combobox [data-ry-target="native"] {
3168
+ position: absolute;
3169
+ width: 1px;
3170
+ height: 1px;
3171
+ margin: -1px;
3172
+ padding: 0;
3173
+ overflow: hidden;
3174
+ clip: rect(0, 0, 0, 0);
3175
+ border: 0;
3176
+ }
3177
+
3069
3178
  } /* @layer ry-structure */
3070
3179
 
3071
3180
  /**
@@ -3298,23 +3407,18 @@ ry-split [data-ry-target="handle"]:focus-visible::after {
3298
3407
  BUTTON GROUP
3299
3408
  ═══════════════════════════════════════════════════════════════ */
3300
3409
 
3301
- ry-button-group > :is(ry-button, ry-toggle-button) {
3302
- border-color: var(--ry-color-border);
3410
+ ry-button-group {
3411
+ background-color: var(--ry-color-bg-muted);
3303
3412
  }
3304
3413
 
3305
- ry-button-group > :is(ry-button, ry-toggle-button):not(:first-child) {
3306
- border-inline-start-color: transparent;
3414
+ ry-button-group > :is(ry-button, ry-toggle-button) {
3415
+ border-color: transparent;
3416
+ background-color: transparent;
3417
+ color: var(--ry-color-text-muted);
3307
3418
  }
3308
3419
 
3309
- /* Default children to outline style for segmented look */
3310
- ry-button-group:not([variant]) > :is(ry-button, ry-toggle-button):not([pressed]) {
3311
- background-color: var(--ry-color-bg);
3420
+ ry-button-group > :is(ry-button, ry-toggle-button):hover:not([pressed]) {
3312
3421
  color: var(--ry-color-text);
3313
- border-color: var(--ry-color-border);
3314
- }
3315
-
3316
- ry-button-group:not([variant]) > :is(ry-button, ry-toggle-button):not([pressed]):hover {
3317
- background-color: var(--ry-color-bg-muted);
3318
3422
  }
3319
3423
 
3320
3424
  /* Button sizes (typography only - padding is structural) */
@@ -3750,18 +3854,16 @@ ry-card {
3750
3854
  border: var(--ry-border-width) solid var(--ry-color-border);
3751
3855
  border-radius: var(--ry-radius-lg);
3752
3856
  box-shadow: var(--ry-shadow-sm);
3753
- transition: border-color var(--ry-duration-fast) var(--ry-ease),
3754
- box-shadow var(--ry-duration-fast) var(--ry-ease);
3755
3857
  }
3756
3858
 
3757
- ry-card:hover {
3758
- border-color: var(--ry-color-border-strong);
3759
- box-shadow: var(--ry-shadow-md);
3859
+ :is(a, [interactive]):is(ry-card) {
3860
+ transition: border-color var(--ry-duration-normal) var(--ry-ease),
3861
+ box-shadow var(--ry-duration-normal) var(--ry-ease);
3760
3862
  }
3761
3863
 
3762
- ry-card[interactive]:hover {
3763
- border-color: var(--ry-color-primary);
3764
- box-shadow: var(--ry-shadow-lg);
3864
+ :is(a, [interactive]):is(ry-card):hover {
3865
+ border-color: var(--ry-color-border-strong);
3866
+ box-shadow: var(--ry-shadow-md);
3765
3867
  }
3766
3868
 
3767
3869
  ry-card h3 {
@@ -5278,4 +5380,86 @@ ry-pricing-card ul li:last-child {
5278
5380
  font-weight: var(--ry-font-bold);
5279
5381
  }
5280
5382
 
5383
+ /* ═══════════════════════════════════════════════════════════════
5384
+ COMBOBOX
5385
+ ═══════════════════════════════════════════════════════════════ */
5386
+
5387
+ ry-combobox[disabled] {
5388
+ opacity: 0.5;
5389
+ }
5390
+
5391
+ .ry-combobox__input-wrapper {
5392
+ font-family: var(--ry-font-sans);
5393
+ font-size: var(--ry-text-base);
5394
+ line-height: var(--ry-leading-normal);
5395
+ background-color: var(--ry-color-bg);
5396
+ border: var(--ry-border-width) solid var(--ry-color-border);
5397
+ border-radius: var(--ry-radius-md);
5398
+ transition: border-color var(--ry-duration-fast) var(--ry-ease),
5399
+ box-shadow var(--ry-duration-fast) var(--ry-ease);
5400
+ }
5401
+
5402
+ ry-combobox:hover .ry-combobox__input-wrapper {
5403
+ border-color: var(--ry-color-border-strong);
5404
+ }
5405
+
5406
+ ry-combobox:focus-within .ry-combobox__input-wrapper {
5407
+ border-color: var(--ry-color-primary);
5408
+ box-shadow: var(--ry-focus-ring);
5409
+ }
5410
+
5411
+ ry-combobox[data-ry-state="open"] .ry-combobox__input-wrapper {
5412
+ border-color: var(--ry-color-primary);
5413
+ }
5414
+
5415
+ .ry-combobox__input {
5416
+ font: inherit;
5417
+ color: var(--ry-color-text);
5418
+ }
5419
+
5420
+ .ry-combobox__input::placeholder {
5421
+ color: var(--ry-color-text-muted);
5422
+ }
5423
+
5424
+ .ry-combobox__arrow {
5425
+ font-size: var(--ry-text-xs);
5426
+ color: var(--ry-color-text-muted);
5427
+ }
5428
+
5429
+ .ry-combobox__dropdown {
5430
+ background-color: var(--ry-color-bg);
5431
+ border: var(--ry-border-width) solid var(--ry-color-border);
5432
+ border-radius: var(--ry-radius-lg);
5433
+ box-shadow: var(--ry-shadow-lg);
5434
+ }
5435
+
5436
+ .ry-combobox__option {
5437
+ font-size: var(--ry-text-sm);
5438
+ color: var(--ry-color-text);
5439
+ border-radius: var(--ry-radius-md);
5440
+ transition: background-color var(--ry-duration-fast) var(--ry-ease);
5441
+ }
5442
+
5443
+ .ry-combobox__option:is(:hover, [data-highlighted]) {
5444
+ background-color: var(--ry-color-bg-muted);
5445
+ }
5446
+
5447
+ .ry-combobox__option[aria-selected="true"] {
5448
+ background-color: var(--ry-color-primary);
5449
+ color: var(--ry-color-text-inverse);
5450
+ }
5451
+
5452
+ .ry-combobox__option[data-disabled] {
5453
+ opacity: 0.5;
5454
+ }
5455
+
5456
+ .ry-combobox__option[data-disabled]:hover {
5457
+ background-color: transparent;
5458
+ }
5459
+
5460
+ .ry-combobox__empty {
5461
+ font-size: var(--ry-text-sm);
5462
+ color: var(--ry-color-text-muted);
5463
+ }
5464
+
5281
5465
  } /* @layer ry-theme */
package/dist/ry-ui.d.ts CHANGED
@@ -38,6 +38,7 @@ export { RyTooltip } from './components/ry-tooltip.js';
38
38
  export { RyDrawer } from './components/ry-drawer.js';
39
39
  export { RyToast } from './components/ry-toast.js';
40
40
  export { RySelect } from './components/ry-select.js';
41
+ export { RyCombobox } from './components/ry-combobox.js';
41
42
  export { RyCode } from './components/ry-code.js';
42
43
  export { RyExample } from './components/ry-example.js';
43
44
  export { RyIcon } from './components/ry-icon.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ry-ui.d.ts","sourceRoot":"","sources":["../src/ts/ry-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ry-ui.d.ts","sourceRoot":"","sources":["../src/ts/ry-ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,OAAO,QAAQ,CAAC;KAC1B;CACF"}