@dryui/ui 0.1.2 → 0.1.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.
Files changed (79) hide show
  1. package/dist/accordion/accordion-trigger.svelte +5 -6
  2. package/dist/alert-dialog/alert-dialog-action.svelte +42 -6
  3. package/dist/alert-dialog/alert-dialog-cancel.svelte +44 -5
  4. package/dist/alert-dialog/alert-dialog-footer.svelte +3 -2
  5. package/dist/aurora/aurora.svelte.d.ts +6 -0
  6. package/dist/beam/beam.svelte +17 -10
  7. package/dist/button/button.svelte +51 -1
  8. package/dist/button-group/button-group.svelte +7 -62
  9. package/dist/button-group/context.svelte.d.ts +5 -0
  10. package/dist/button-group/context.svelte.js +11 -0
  11. package/dist/chromatic-aberration/chromatic-aberration.svelte +60 -18
  12. package/dist/collapsible/collapsible-trigger.svelte +4 -7
  13. package/dist/color-picker/color-picker-eyedropper.svelte +4 -11
  14. package/dist/combobox/combobox-group.svelte +1 -1
  15. package/dist/data-grid/data-grid-pagination.svelte +20 -2
  16. package/dist/data-grid/data-grid-root.svelte +1 -0
  17. package/dist/date-field/date-field-root.svelte +66 -20
  18. package/dist/date-field/date-field-segment.svelte +11 -9
  19. package/dist/date-field/date-field-separator.svelte +9 -1
  20. package/dist/date-picker/datepicker-calendar.svelte +168 -13
  21. package/dist/date-picker/datepicker-trigger.svelte +3 -8
  22. package/dist/date-range-picker/date-range-picker-calendar.svelte +177 -13
  23. package/dist/date-range-picker/date-range-picker-root.svelte +0 -6
  24. package/dist/date-range-picker/date-range-picker-trigger.svelte +18 -12
  25. package/dist/dialog/dialog-content.svelte +1 -0
  26. package/dist/field/field-root.svelte +0 -1
  27. package/dist/file-select/file-select-clear.svelte +2 -8
  28. package/dist/file-upload/file-upload-item-delete.svelte +4 -7
  29. package/dist/file-upload/file-upload-root.svelte +0 -4
  30. package/dist/flip-card/flip-card-back.svelte +2 -2
  31. package/dist/flip-card/flip-card-front.svelte +2 -2
  32. package/dist/flip-card/flip-card-root.svelte +2 -0
  33. package/dist/float-button/float-button-root.svelte +2 -1
  34. package/dist/image-comparison/image-comparison.svelte +16 -24
  35. package/dist/input-group/input-group-action.svelte +5 -0
  36. package/dist/input-group/input-group-input.svelte +7 -2
  37. package/dist/input-group/input-group-prefix.svelte +5 -0
  38. package/dist/input-group/input-group-root.svelte +10 -2
  39. package/dist/input-group/input-group-select.svelte +5 -0
  40. package/dist/input-group/input-group-separator.svelte +10 -0
  41. package/dist/input-group/input-group-suffix.svelte +5 -0
  42. package/dist/list/list-item-icon.svelte +8 -0
  43. package/dist/list/list-item-text.svelte +19 -0
  44. package/dist/list/list-item.svelte +42 -0
  45. package/dist/list/list-root.svelte +0 -71
  46. package/dist/list/list-subheader.svelte +11 -0
  47. package/dist/map/map-marker.svelte +10 -0
  48. package/dist/map/map-popup.svelte +7 -0
  49. package/dist/map/map-root.svelte +0 -30
  50. package/dist/multi-select-combobox/multi-select-combobox-group.svelte +1 -1
  51. package/dist/option-swatch-group/option-swatch-group-item.svelte +46 -0
  52. package/dist/option-swatch-group/option-swatch-group-label.svelte +10 -0
  53. package/dist/option-swatch-group/option-swatch-group-meta.svelte +10 -0
  54. package/dist/option-swatch-group/option-swatch-group-root.svelte +0 -79
  55. package/dist/option-swatch-group/option-swatch-group-swatch.svelte +25 -6
  56. package/dist/pin-input/pin-input-cell.svelte +4 -1
  57. package/dist/radio-group/radio-group-item.svelte +90 -0
  58. package/dist/radio-group/radio-group.svelte +0 -89
  59. package/dist/range-calendar/range-calendar-grid.svelte +217 -179
  60. package/dist/range-calendar/range-calendar-root.svelte +24 -10
  61. package/dist/rich-text-editor/rich-text-editor-content.svelte +91 -3
  62. package/dist/rich-text-editor/rich-text-editor-root.svelte +168 -3
  63. package/dist/rich-text-editor/rich-text-editor-toolbar.svelte +318 -275
  64. package/dist/select/select-trigger.svelte +5 -8
  65. package/dist/shader-canvas/shader-canvas.svelte +0 -3
  66. package/dist/sidebar/sidebar-trigger.svelte +3 -2
  67. package/dist/system-map/system-map.svelte +120 -674
  68. package/dist/tabs/tabs-trigger.svelte +7 -4
  69. package/dist/tags-input/tags-input-input.svelte +3 -0
  70. package/dist/tags-input/tags-input-root.svelte +4 -13
  71. package/dist/tags-input/tags-input-tag.svelte +3 -0
  72. package/dist/themes/dark.css +6 -0
  73. package/dist/themes/default.css +3 -0
  74. package/dist/toast/toast-action.svelte +1 -0
  75. package/dist/toast/toast-close.svelte +4 -0
  76. package/dist/toast/toast-provider.svelte +5 -26
  77. package/dist/toast/toast-root.svelte +5 -10
  78. package/dist/virtual-list/virtual-list.svelte +187 -3
  79. package/package.json +3 -3
@@ -17,6 +17,7 @@
17
17
  data-size={ctx.size}
18
18
  data-disabled={ctx.disabled || undefined}
19
19
  data-invalid={ctx.invalid || undefined}
20
+ data-orientation={ctx.orientation}
20
21
  {...rest}
21
22
  data-input-group-suffix
22
23
  class={className}
@@ -35,4 +36,8 @@
35
36
  color: var(--dry-input-group-muted);
36
37
  white-space: nowrap;
37
38
  }
39
+
40
+ [data-input-group-suffix][data-orientation='horizontal'] {
41
+ grid-column: 3;
42
+ }
38
43
  </style>
@@ -12,3 +12,11 @@
12
12
  <div data-list-item-icon class={className} {...rest}>
13
13
  {@render children()}
14
14
  </div>
15
+
16
+ <style>
17
+ [data-list-item-icon] {
18
+ display: inline-grid;
19
+ place-items: center;
20
+ color: var(--dry-list-item-icon-color);
21
+ }
22
+ </style>
@@ -21,3 +21,22 @@
21
21
  <span data-list-item-secondary>{@render secondary()}</span>
22
22
  {/if}
23
23
  </div>
24
+
25
+ <style>
26
+ [data-list-item-text] {
27
+ display: grid;
28
+ grid-template-columns: minmax(0, 1fr);
29
+ gap: var(--dry-space-0_5);
30
+ }
31
+
32
+ [data-list-item-text] > [data-list-item-primary] {
33
+ font-size: var(--dry-list-primary-size);
34
+ line-height: 1.5;
35
+ }
36
+
37
+ [data-list-item-text] > [data-list-item-secondary] {
38
+ font-size: var(--dry-list-secondary-size);
39
+ color: var(--dry-list-secondary-color);
40
+ line-height: 1.4;
41
+ }
42
+ </style>
@@ -47,3 +47,45 @@
47
47
  >
48
48
  {@render children()}
49
49
  </li>
50
+
51
+ <style>
52
+ [data-list-item] {
53
+ display: grid;
54
+ grid-template-columns: auto minmax(0, 1fr);
55
+ align-items: start;
56
+ gap: var(--dry-list-item-gap);
57
+ padding: var(--dry-list-item-padding);
58
+ border-radius: var(--dry-list-item-radius);
59
+ transition:
60
+ background var(--dry-duration-fast) var(--dry-ease-default),
61
+ color var(--dry-duration-fast) var(--dry-ease-default);
62
+ }
63
+
64
+ [data-list-item][data-interactive='true'] {
65
+ cursor: pointer;
66
+ }
67
+
68
+ [data-list-item][data-interactive='true']:hover,
69
+ [data-list-item][data-interactive='true']:focus-visible {
70
+ background: var(--dry-list-item-hover-bg);
71
+ }
72
+
73
+ [data-list-item][data-interactive='true']:active {
74
+ background: var(--dry-list-item-active-bg);
75
+ }
76
+
77
+ [data-list-item][data-interactive='true']:focus-visible {
78
+ outline: 2px solid var(--dry-color-focus-ring);
79
+ outline-offset: -2px;
80
+ }
81
+
82
+ [data-list-item][data-disabled='true'] {
83
+ opacity: 0.5;
84
+ cursor: not-allowed;
85
+ pointer-events: none;
86
+ }
87
+
88
+ [data-list-item][data-dense='true'] {
89
+ --dry-list-item-padding: var(--dry-space-1_5) var(--dry-space-2);
90
+ }
91
+ </style>
@@ -66,75 +66,4 @@
66
66
  --dry-list-padding: 0;
67
67
  }
68
68
 
69
- [data-list-item] {
70
- display: grid;
71
- grid-template-columns: auto minmax(0, 1fr);
72
- align-items: start;
73
- gap: var(--dry-list-item-gap);
74
- padding: var(--dry-list-item-padding);
75
- border-radius: var(--dry-list-item-radius);
76
- transition:
77
- background var(--dry-duration-fast) var(--dry-ease-default),
78
- color var(--dry-duration-fast) var(--dry-ease-default);
79
- }
80
-
81
- [data-list-item][data-interactive='true'] {
82
- cursor: pointer;
83
- }
84
-
85
- [data-list-item][data-interactive='true']:hover,
86
- [data-list-item][data-interactive='true']:focus-visible {
87
- background: var(--dry-list-item-hover-bg);
88
- }
89
-
90
- [data-list-item][data-interactive='true']:active {
91
- background: var(--dry-list-item-active-bg);
92
- }
93
-
94
- [data-list-item][data-interactive='true']:focus-visible {
95
- outline: 2px solid var(--dry-color-focus-ring);
96
- outline-offset: -2px;
97
- }
98
-
99
- [data-list-item][data-disabled='true'] {
100
- opacity: 0.5;
101
- cursor: not-allowed;
102
- pointer-events: none;
103
- }
104
-
105
- [data-list-item][data-dense='true'] {
106
- --dry-list-item-padding: var(--dry-space-1_5) var(--dry-space-2);
107
- }
108
-
109
- [data-list-item-icon] {
110
- display: inline-grid;
111
- place-items: center;
112
- color: var(--dry-list-item-icon-color);
113
- }
114
-
115
- [data-list-item-text] {
116
- display: grid;
117
- grid-template-columns: minmax(0, 1fr);
118
- gap: var(--dry-space-0_5);
119
- }
120
-
121
- [data-list-item-text] > [data-list-item-primary] {
122
- font-size: var(--dry-list-primary-size);
123
- line-height: 1.5;
124
- }
125
-
126
- [data-list-item-text] > [data-list-item-secondary] {
127
- font-size: var(--dry-list-secondary-size);
128
- color: var(--dry-list-secondary-color);
129
- line-height: 1.4;
130
- }
131
-
132
- [data-list-subheader] {
133
- padding: var(--dry-space-1_5) var(--dry-space-3) var(--dry-space-1);
134
- font-size: var(--dry-list-secondary-size);
135
- font-weight: 600;
136
- letter-spacing: 0.04em;
137
- text-transform: uppercase;
138
- color: var(--dry-list-subheader-color);
139
- }
140
69
  </style>
@@ -12,3 +12,14 @@
12
12
  <li role="presentation" data-list-subheader class={className} {...rest}>
13
13
  {@render children()}
14
14
  </li>
15
+
16
+ <style>
17
+ [data-list-subheader] {
18
+ padding: var(--dry-space-1_5) var(--dry-space-3) var(--dry-space-1);
19
+ font-size: var(--dry-list-secondary-size);
20
+ font-weight: 600;
21
+ letter-spacing: 0.04em;
22
+ text-transform: uppercase;
23
+ color: var(--dry-list-subheader-color);
24
+ }
25
+ </style>
@@ -70,3 +70,13 @@
70
70
  {@render children()}
71
71
  </div>
72
72
  {/if}
73
+
74
+ <style>
75
+ [data-part='marker-content'] {
76
+ background: var(--dry-color-bg-raised, #ffffff);
77
+ border-radius: var(--dry-radius-md, 0.375rem);
78
+ box-shadow: var(--dry-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));
79
+ padding: var(--dry-space-2, 0.5rem);
80
+ cursor: pointer;
81
+ }
82
+ </style>
@@ -61,3 +61,10 @@
61
61
  <div bind:this={contentEl} data-part="popup-content">
62
62
  {@render children()}
63
63
  </div>
64
+
65
+ <style>
66
+ [data-part='popup-content'] {
67
+ display: grid;
68
+ grid-template-columns: minmax(0, 20rem);
69
+ }
70
+ </style>
@@ -223,36 +223,6 @@
223
223
  height: 400px;
224
224
  }
225
225
 
226
- [data-map-root] [data-map-mapboxgl]-canvas,
227
- [data-map-root] [data-map-maplibregl]-canvas {
228
- border-radius: var(--dry-map-radius);
229
- }
230
-
231
- [data-map-marker] {
232
- cursor: pointer;
233
- }
234
-
235
- [data-map-marker] [data-part='marker-content'] {
236
- background: var(--dry-color-bg-raised, #ffffff);
237
- border-radius: var(--dry-radius-md, 0.375rem);
238
- box-shadow: var(--dry-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));
239
- padding: var(--dry-space-2, 0.5rem);
240
- }
241
-
242
- [data-map-popup] {
243
- display: grid;
244
- grid-template-columns: minmax(0, 20rem);
245
- }
246
-
247
- [data-map-popup] [data-map-mapboxgl]-popup-content,
248
- [data-map-popup] [data-map-maplibregl]-popup-content {
249
- background: var(--dry-color-bg-raised, #ffffff);
250
- border-radius: var(--dry-radius-lg, 0.5rem);
251
- box-shadow: var(--dry-shadow-lg);
252
- padding: var(--dry-space-4, 1rem);
253
- border: 1px solid var(--dry-color-stroke-weak, #e2e8f0);
254
- }
255
-
256
226
  [data-part='map-error'] {
257
227
  display: grid;
258
228
  place-items: center;
@@ -25,7 +25,7 @@
25
25
  letter-spacing: 0.05em;
26
26
  }
27
27
 
28
- [data-multi-select-group] + [data-multi-select-group] {
28
+ [data-multi-select-group]:not(:first-of-type) {
29
29
  border-top: 1px solid var(--dry-color-stroke-weak);
30
30
  margin-top: var(--dry-space-1);
31
31
  padding-top: var(--dry-space-1);
@@ -81,3 +81,49 @@
81
81
  >
82
82
  {@render children()}
83
83
  </button>
84
+
85
+ <style>
86
+ [data-option-swatch-group-item] {
87
+ --dry-option-swatch-bg: var(--dry-color-bg-raised);
88
+ --dry-option-swatch-border: var(--dry-color-stroke-weak);
89
+ --dry-option-swatch-border-selected: var(--dry-color-stroke-focus);
90
+ --dry-option-swatch-text: var(--dry-color-text-strong);
91
+ --dry-option-swatch-muted: var(--dry-color-text-weak);
92
+
93
+ display: grid;
94
+ grid-template-columns: 1.5rem minmax(0, 1fr);
95
+ align-items: center;
96
+ gap: var(--dry-space-3);
97
+ padding: var(--dry-space-3);
98
+ border: 1px solid var(--dry-option-swatch-border);
99
+ border-radius: var(--dry-radius-xl);
100
+ background: var(--dry-option-swatch-bg);
101
+ color: var(--dry-option-swatch-text);
102
+ box-shadow: var(--dry-shadow-xs);
103
+ cursor: pointer;
104
+ text-align: left;
105
+ transition:
106
+ border-color var(--dry-duration-fast) var(--dry-ease-default),
107
+ box-shadow var(--dry-duration-fast) var(--dry-ease-default),
108
+ transform var(--dry-duration-fast) var(--dry-ease-default);
109
+ }
110
+
111
+ [data-option-swatch-group-item]:hover:not(:disabled) {
112
+ border-color: var(--dry-color-stroke-strong);
113
+ transform: translateY(-1px);
114
+ }
115
+
116
+ [data-option-swatch-group-item]:focus-visible {
117
+ outline: 2px solid var(--dry-color-focus-ring);
118
+ outline-offset: 2px;
119
+ }
120
+
121
+ [data-option-swatch-group-item][data-state='checked'] {
122
+ border-color: var(--dry-option-swatch-border-selected);
123
+ box-shadow: 0 0 0 1px var(--dry-option-swatch-border-selected);
124
+ }
125
+
126
+ [data-option-swatch-group-item][data-unavailable] {
127
+ opacity: 0.6;
128
+ }
129
+ </style>
@@ -12,3 +12,13 @@
12
12
  <span data-part="label" data-option-swatch-group-label class={className} {...rest}
13
13
  >{@render children?.()}</span
14
14
  >
15
+
16
+ <style>
17
+ [data-option-swatch-group-label] {
18
+ grid-column: 2;
19
+ grid-row: 1;
20
+ font-size: var(--dry-type-small-size);
21
+ font-weight: 600;
22
+ line-height: 1.2;
23
+ }
24
+ </style>
@@ -12,3 +12,13 @@
12
12
  <span data-part="meta" data-option-swatch-group-meta class={className} {...rest}
13
13
  >{@render children?.()}</span
14
14
  >
15
+
16
+ <style>
17
+ [data-option-swatch-group-meta] {
18
+ grid-column: 2;
19
+ grid-row: 2;
20
+ color: var(--dry-option-swatch-muted);
21
+ font-size: var(--dry-type-tiny-size);
22
+ line-height: 1.2;
23
+ }
24
+ </style>
@@ -60,83 +60,4 @@
60
60
  [data-option-swatch-group-root][data-orientation='vertical'] {
61
61
  grid-template-columns: 1fr;
62
62
  }
63
-
64
- [data-option-swatch-group-item] {
65
- --dry-option-swatch-bg: var(--dry-color-bg-raised);
66
- --dry-option-swatch-border: var(--dry-color-stroke-weak);
67
- --dry-option-swatch-border-selected: var(--dry-color-stroke-focus);
68
- --dry-option-swatch-text: var(--dry-color-text-strong);
69
- --dry-option-swatch-muted: var(--dry-color-text-weak);
70
-
71
- display: grid;
72
- grid-template-columns: 1.5rem minmax(0, 1fr);
73
- align-items: center;
74
- gap: var(--dry-space-3);
75
- padding: var(--dry-space-3);
76
- border: 1px solid var(--dry-option-swatch-border);
77
- border-radius: var(--dry-radius-xl);
78
- background: var(--dry-option-swatch-bg);
79
- color: var(--dry-option-swatch-text);
80
- box-shadow: var(--dry-shadow-xs);
81
- cursor: pointer;
82
- transition:
83
- border-color var(--dry-duration-fast) var(--dry-ease-default),
84
- box-shadow var(--dry-duration-fast) var(--dry-ease-default),
85
- transform var(--dry-duration-fast) var(--dry-ease-default);
86
- }
87
-
88
- [data-option-swatch-group-item]:hover:not(:disabled) {
89
- border-color: var(--dry-color-stroke-strong);
90
- transform: translateY(-1px);
91
- }
92
-
93
- [data-option-swatch-group-item]:focus-visible {
94
- outline: 2px solid var(--dry-color-focus-ring);
95
- outline-offset: 2px;
96
- }
97
-
98
- [data-option-swatch-group-item][data-state='checked'] {
99
- border-color: var(--dry-option-swatch-border-selected);
100
- box-shadow: 0 0 0 1px var(--dry-option-swatch-border-selected);
101
- }
102
-
103
- [data-option-swatch-group-item][data-unavailable] {
104
- opacity: 0.6;
105
- }
106
-
107
- [data-option-swatch-group-swatch] {
108
- --dry-option-swatch-chip: var(--dry-color-fill-brand);
109
-
110
- display: inline-grid;
111
- aspect-ratio: 1;
112
- height: 1.5rem;
113
- border-radius: 999px;
114
- border: 1px solid color-mix(in srgb, black 16%, transparent);
115
- background: var(--dry-option-swatch-chip);
116
- box-shadow:
117
- inset 0 0 0 1px rgb(255 255 255 / 0.24),
118
- 0 1px 3px rgb(15 23 42 / 0.15);
119
- }
120
-
121
- [data-option-swatch-group-rounded] {
122
- border-radius: var(--dry-radius-md);
123
- }
124
-
125
- [data-option-swatch-group-content] {
126
- display: grid;
127
- gap: var(--dry-space-1);
128
- text-align: left;
129
- }
130
-
131
- [data-option-swatch-group-label] {
132
- font-size: var(--dry-type-small-size);
133
- font-weight: 600;
134
- line-height: 1.2;
135
- }
136
-
137
- [data-option-swatch-group-meta] {
138
- color: var(--dry-option-swatch-muted);
139
- font-size: var(--dry-type-tiny-size);
140
- line-height: 1.2;
141
- }
142
63
  </style>
@@ -8,15 +8,11 @@
8
8
  children?: Snippet;
9
9
  }
10
10
 
11
- let { color, shape = 'circle', class: className, children, ...rest }: Props = $props();
11
+ let { color, shape = 'circle', class: className, style, children, ...rest }: Props = $props();
12
12
 
13
13
  function setSwatchChip(node: HTMLSpanElement) {
14
14
  $effect(() => {
15
- if (color) {
16
- node.style.setProperty('--dry-option-swatch-chip', color);
17
- } else {
18
- node.style.removeProperty('--dry-option-swatch-chip');
19
- }
15
+ node.style.cssText = `${style ?? ''}${color ? `; --dry-option-swatch-chip: ${color};` : ''}`;
20
16
  });
21
17
  }
22
18
  </script>
@@ -30,3 +26,26 @@
30
26
  >
31
27
  {@render children?.()}
32
28
  </span>
29
+
30
+ <style>
31
+ [data-option-swatch-group-swatch] {
32
+ --dry-option-swatch-chip: var(--dry-color-fill-brand);
33
+
34
+ display: inline-grid;
35
+ grid-column: 1;
36
+ grid-row: 1 / span 2;
37
+ align-self: center;
38
+ aspect-ratio: 1;
39
+ height: 1.5rem;
40
+ border-radius: 999px;
41
+ border: 1px solid color-mix(in srgb, black 16%, transparent);
42
+ background: var(--dry-option-swatch-chip);
43
+ box-shadow:
44
+ inset 0 0 0 1px rgb(255 255 255 / 0.24),
45
+ 0 1px 3px rgb(15 23 42 / 0.15);
46
+ }
47
+
48
+ [data-option-swatch-group-rounded] {
49
+ border-radius: var(--dry-radius-md);
50
+ }
51
+ </style>
@@ -60,7 +60,10 @@
60
60
  position: relative;
61
61
  user-select: none;
62
62
  border: var(--dry-pin-cell-border, 2px solid var(--dry-pin-border));
63
- border-bottom: var(--dry-pin-cell-border-bottom, none);
63
+ border-bottom: var(
64
+ --dry-pin-cell-border-bottom,
65
+ var(--dry-pin-cell-border, 2px solid var(--dry-pin-border))
66
+ );
64
67
  border-radius: var(--dry-pin-cell-radius, var(--dry-pin-radius));
65
68
  transition:
66
69
  border-color var(--dry-duration-fast) var(--dry-ease-default),
@@ -44,3 +44,93 @@
44
44
  {@render children()}
45
45
  {/if}
46
46
  </label>
47
+
48
+ <style>
49
+ [data-radio-group-item] {
50
+ display: inline-grid;
51
+ grid-auto-flow: column;
52
+ grid-template-columns: var(--dry-space-8);
53
+ grid-auto-columns: max-content;
54
+ align-items: center;
55
+ gap: var(--dry-space-3);
56
+ cursor: pointer;
57
+ font-size: var(--dry-type-small-size, var(--dry-text-sm-size));
58
+ line-height: var(--dry-type-small-leading, var(--dry-text-sm-leading));
59
+ font-family: var(--dry-font-sans);
60
+ color: var(--dry-color-text-strong);
61
+ padding: var(--dry-space-1) 0;
62
+ min-height: 48px;
63
+ user-select: none;
64
+
65
+ &[data-disabled] {
66
+ color: var(--dry-color-text-disabled);
67
+ opacity: 1;
68
+ cursor: not-allowed;
69
+ }
70
+ }
71
+
72
+ [data-radio-group-item] input[type='radio'] {
73
+ appearance: none;
74
+ -webkit-appearance: none;
75
+ height: var(--dry-space-8);
76
+ min-height: var(--dry-space-8);
77
+ border: 2px solid var(--dry-color-stroke-strong);
78
+ border-radius: var(--dry-radius-full);
79
+ background: var(--dry-color-bg-raised);
80
+ margin: 0;
81
+ cursor: pointer;
82
+ position: relative;
83
+ transition:
84
+ border-color var(--dry-duration-fast) var(--dry-ease-default),
85
+ background-color var(--dry-duration-fast) var(--dry-ease-default),
86
+ transform var(--dry-duration-fast) var(--dry-ease-default);
87
+ }
88
+
89
+ [data-radio-group-item] input[type='radio']::after {
90
+ content: '';
91
+ position: absolute;
92
+ top: 50%;
93
+ left: 50%;
94
+ transform: translate(-50%, -50%) scale(0);
95
+ height: 8px;
96
+ aspect-ratio: 1;
97
+ border-radius: var(--dry-radius-full);
98
+ background: var(--dry-color-on-brand);
99
+ transition: transform var(--dry-duration-fast) var(--dry-ease-default);
100
+ }
101
+
102
+ [data-radio-group-item] input[type='radio']:hover:not(:disabled) {
103
+ border-color: var(--dry-color-stroke-selected);
104
+ }
105
+
106
+ [data-radio-group-item] input[type='radio']:active:not(:disabled) {
107
+ transform: scale(0.96);
108
+ }
109
+
110
+ [data-radio-group-item] input[type='radio']:focus-visible {
111
+ outline: 2px solid var(--dry-color-stroke-focus);
112
+ outline-offset: 2px;
113
+ }
114
+
115
+ [data-radio-group-item] input[type='radio']:checked {
116
+ background: var(--dry-color-fill-selected);
117
+ border-color: var(--dry-color-stroke-selected);
118
+ box-shadow: inset 0 0 0 1px var(--dry-color-stroke-selected);
119
+ }
120
+
121
+ [data-radio-group-item] input[type='radio']:checked::after {
122
+ transform: translate(-50%, -50%) scale(1);
123
+ }
124
+
125
+ [data-radio-group-item] input[type='radio']:checked:hover:not(:disabled) {
126
+ background: var(--dry-color-fill-selected);
127
+ border-color: var(--dry-color-stroke-selected);
128
+ }
129
+
130
+ [data-radio-group-item] input[type='radio']:disabled {
131
+ background: var(--dry-color-fill-disabled);
132
+ border-color: var(--dry-color-stroke-disabled);
133
+ opacity: 1;
134
+ cursor: not-allowed;
135
+ }
136
+ </style>
@@ -115,93 +115,4 @@
115
115
  }
116
116
  }
117
117
 
118
- [data-radio-group-item] {
119
- /* Label styling */
120
- display: inline-grid;
121
- grid-auto-flow: column;
122
- grid-template-columns: var(--dry-space-8);
123
- grid-auto-columns: max-content;
124
- align-items: center;
125
- gap: var(--dry-space-3);
126
- cursor: pointer;
127
- font-size: var(--dry-type-small-size, var(--dry-text-sm-size));
128
- line-height: var(--dry-type-small-leading, var(--dry-text-sm-leading));
129
- font-family: var(--dry-font-sans);
130
- color: var(--dry-color-text-strong);
131
- padding: var(--dry-space-1) 0;
132
- min-height: 48px;
133
- user-select: none;
134
-
135
- &[data-disabled] {
136
- color: var(--dry-color-text-disabled);
137
- opacity: 1;
138
- cursor: not-allowed;
139
- }
140
-
141
- /* Custom radio input */
142
- & input[type='radio'] {
143
- appearance: none;
144
- -webkit-appearance: none;
145
- height: var(--dry-space-8);
146
- min-height: var(--dry-space-8);
147
- border: 2px solid var(--dry-color-stroke-strong);
148
- border-radius: var(--dry-radius-full);
149
- background: var(--dry-color-bg-raised);
150
- margin: 0;
151
- cursor: pointer;
152
- position: relative;
153
- transition:
154
- border-color var(--dry-duration-fast) var(--dry-ease-default),
155
- background-color var(--dry-duration-fast) var(--dry-ease-default),
156
- transform var(--dry-duration-fast) var(--dry-ease-default);
157
-
158
- &::after {
159
- content: '';
160
- position: absolute;
161
- top: 50%;
162
- left: 50%;
163
- transform: translate(-50%, -50%) scale(0);
164
- height: 8px;
165
- aspect-ratio: 1;
166
- border-radius: var(--dry-radius-full);
167
- background: var(--dry-color-on-brand);
168
- transition: transform var(--dry-duration-fast) var(--dry-ease-default);
169
- }
170
-
171
- &:hover:not(:disabled) {
172
- border-color: var(--dry-color-stroke-selected);
173
- }
174
-
175
- &:active:not(:disabled) {
176
- transform: scale(0.96);
177
- }
178
-
179
- &:focus-visible {
180
- outline: 2px solid var(--dry-color-stroke-focus);
181
- outline-offset: 2px;
182
- }
183
-
184
- &:checked {
185
- background: var(--dry-color-fill-selected);
186
- border-color: var(--dry-color-stroke-selected);
187
- box-shadow: inset 0 0 0 1px var(--dry-color-stroke-selected);
188
-
189
- &::after {
190
- transform: translate(-50%, -50%) scale(1);
191
- }
192
-
193
- &:hover:not(:disabled) {
194
- background: var(--dry-color-fill-selected);
195
- border-color: var(--dry-color-stroke-selected);
196
- }
197
- }
198
-
199
- &:disabled {
200
- background: var(--dry-color-fill-disabled);
201
- border-color: var(--dry-color-stroke-disabled);
202
- opacity: 1;
203
- cursor: not-allowed;
204
- }
205
- }
206
- }
207
118
  </style>