@marigold/theme-rui 0.5.0 → 1.0.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/styles.css CHANGED
@@ -118,6 +118,8 @@
118
118
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
119
119
  --default-font-family: Inter, system-ui, sans-serif;
120
120
  --default-mono-font-family: var(--font-mono);
121
+ --color-disabled: var(--color-stone-200);
122
+ --color-disabled-foreground: var(--color-stone-400);
121
123
  --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
122
124
  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
123
125
  --fade-in-duration: 0.3s;
@@ -323,15 +325,15 @@
323
325
  [data-theme="rui"] .top-2 {
324
326
  top: calc(var(--spacing) * 2);
325
327
  }
326
- [data-theme="rui"] .top-3 {
327
- top: calc(var(--spacing) * 3);
328
- }
329
328
  [data-theme="rui"] .top-3\.5 {
330
329
  top: calc(var(--spacing) * 3.5);
331
330
  }
332
331
  [data-theme="rui"] .top-4 {
333
332
  top: calc(var(--spacing) * 4);
334
333
  }
334
+ [data-theme="rui"] .top-6 {
335
+ top: calc(var(--spacing) * 6);
336
+ }
335
337
  [data-theme="rui"] .top-\[50\%\] {
336
338
  top: 50%;
337
339
  }
@@ -422,15 +424,24 @@
422
424
  [data-theme="rui"] .me-auto {
423
425
  margin-inline-end: auto;
424
426
  }
427
+ [data-theme="rui"] .-mt-0\.5 {
428
+ margin-top: calc(var(--spacing) * -0.5);
429
+ }
425
430
  [data-theme="rui"] .mt-0\.5 {
426
431
  margin-top: calc(var(--spacing) * 0.5);
427
432
  }
428
433
  [data-theme="rui"] .mt-2 {
429
434
  margin-top: calc(var(--spacing) * 2);
430
435
  }
436
+ [data-theme="rui"] .mt-4 {
437
+ margin-top: calc(var(--spacing) * 4);
438
+ }
431
439
  [data-theme="rui"] .mb-0\.5 {
432
440
  margin-bottom: calc(var(--spacing) * 0.5);
433
441
  }
442
+ [data-theme="rui"] .mb-1 {
443
+ margin-bottom: calc(var(--spacing) * 1);
444
+ }
434
445
  [data-theme="rui"] .mb-4 {
435
446
  margin-bottom: calc(var(--spacing) * 4);
436
447
  }
@@ -1486,8 +1497,8 @@
1486
1497
  [data-theme="rui"] .gap-x-2 {
1487
1498
  column-gap: calc(var(--spacing) * 2);
1488
1499
  }
1489
- [data-theme="rui"] .gap-x-3 {
1490
- column-gap: calc(var(--spacing) * 3);
1500
+ [data-theme="rui"] .gap-x-4 {
1501
+ column-gap: calc(var(--spacing) * 4);
1491
1502
  }
1492
1503
  [data-theme="rui"] .space-x-2 {
1493
1504
  [data-theme="rui"] :where(& > :not(:last-child)) {
@@ -2958,6 +2969,10 @@
2958
2969
  outline-color: color-mix(in oklab, var(--color-stone-400) 70%, transparent);
2959
2970
  }
2960
2971
  }
2972
+ [data-theme="rui"] .blur {
2973
+ --tw-blur: blur(8px);
2974
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
2975
+ }
2961
2976
  [data-theme="rui"] .blur-xs {
2962
2977
  --tw-blur: blur(var(--blur-xs));
2963
2978
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
@@ -3204,6 +3219,70 @@
3204
3219
  background-color: var(--color-stone-100);
3205
3220
  }
3206
3221
  }
3222
+ [data-theme="rui"] .group-focus-visible\/checkbox\:util-focus-ring {
3223
+ [data-theme="rui"] &:is(:where(.group\/checkbox):where([data-rac])[data-focus-visible] *) {
3224
+ border-color: var(--color-stone-400);
3225
+ outline-style: none;
3226
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3227
+ @supports (color: color-mix(in lab, red, red)) {
3228
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3229
+ }
3230
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3231
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3232
+ }
3233
+ [data-theme="rui"] &:is(:where(.group\/checkbox):where(:not([data-rac])):focus-visible *) {
3234
+ border-color: var(--color-stone-400);
3235
+ outline-style: none;
3236
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3237
+ @supports (color: color-mix(in lab, red, red)) {
3238
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3239
+ }
3240
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3241
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3242
+ }
3243
+ }
3244
+ [data-theme="rui"] .group-focus-visible\/radio\:util-focus-ring {
3245
+ [data-theme="rui"] &:is(:where(.group\/radio):where([data-rac])[data-focus-visible] *) {
3246
+ border-color: var(--color-stone-400);
3247
+ outline-style: none;
3248
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3249
+ @supports (color: color-mix(in lab, red, red)) {
3250
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3251
+ }
3252
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3253
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3254
+ }
3255
+ [data-theme="rui"] &:is(:where(.group\/radio):where(:not([data-rac])):focus-visible *) {
3256
+ border-color: var(--color-stone-400);
3257
+ outline-style: none;
3258
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3259
+ @supports (color: color-mix(in lab, red, red)) {
3260
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3261
+ }
3262
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3263
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3264
+ }
3265
+ }
3266
+ [data-theme="rui"] .group-focus-visible\/switch\:util-focus-borderless-ring {
3267
+ [data-theme="rui"] &:is(:where(.group\/switch):where([data-rac])[data-focus-visible] *) {
3268
+ outline-style: none;
3269
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3270
+ @supports (color: color-mix(in lab, red, red)) {
3271
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3272
+ }
3273
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3274
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3275
+ }
3276
+ [data-theme="rui"] &:is(:where(.group\/switch):where(:not([data-rac])):focus-visible *) {
3277
+ outline-style: none;
3278
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3279
+ @supports (color: color-mix(in lab, red, red)) {
3280
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3281
+ }
3282
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3283
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3284
+ }
3285
+ }
3207
3286
  [data-theme="rui"] .group-disabled\/checkbox\:cursor-not-allowed {
3208
3287
  [data-theme="rui"] &:is(:where(.group\/checkbox):where([data-rac])[data-disabled] *) {
3209
3288
  cursor: not-allowed;
@@ -3902,6 +3981,48 @@
3902
3981
  }
3903
3982
  }
3904
3983
  }
3984
+ [data-theme="rui"] .focus-visible\:util-focus-ring {
3985
+ [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
3986
+ border-color: var(--color-stone-400);
3987
+ outline-style: none;
3988
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3989
+ @supports (color: color-mix(in lab, red, red)) {
3990
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
3991
+ }
3992
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
3993
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3994
+ }
3995
+ [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
3996
+ border-color: var(--color-stone-400);
3997
+ outline-style: none;
3998
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
3999
+ @supports (color: color-mix(in lab, red, red)) {
4000
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4001
+ }
4002
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
4003
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4004
+ }
4005
+ }
4006
+ [data-theme="rui"] .focus-visible\:util-focus-borderless-ring {
4007
+ [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
4008
+ outline-style: none;
4009
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4010
+ @supports (color: color-mix(in lab, red, red)) {
4011
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4012
+ }
4013
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
4014
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4015
+ }
4016
+ [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
4017
+ outline-style: none;
4018
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4019
+ @supports (color: color-mix(in lab, red, red)) {
4020
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4021
+ }
4022
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
4023
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4024
+ }
4025
+ }
3905
4026
  [data-theme="rui"] .focus-visible\:outline {
3906
4027
  [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
3907
4028
  outline-style: var(--tw-outline-style);
@@ -3930,6 +4051,26 @@
3930
4051
  pointer-events: none;
3931
4052
  }
3932
4053
  }
4054
+ [data-theme="rui"] .disabled\:util-disabled {
4055
+ [data-theme="rui"] &:where([data-rac])[data-disabled] {
4056
+ background-color: var(--color-disabled);
4057
+ color: var(--color-disabled-foreground);
4058
+ cursor: not-allowed;
4059
+ --tw-border-style: none;
4060
+ border-style: none;
4061
+ --tw-shadow: 0 0 #0000;
4062
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4063
+ }
4064
+ [data-theme="rui"] &:where(:not([data-rac])):disabled {
4065
+ background-color: var(--color-disabled);
4066
+ color: var(--color-disabled-foreground);
4067
+ cursor: not-allowed;
4068
+ --tw-border-style: none;
4069
+ border-style: none;
4070
+ --tw-shadow: 0 0 #0000;
4071
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4072
+ }
4073
+ }
3933
4074
  [data-theme="rui"] .disabled\:cursor-none {
3934
4075
  [data-theme="rui"] &:where([data-rac])[data-disabled] {
3935
4076
  cursor: none;
@@ -4025,6 +4166,28 @@
4025
4166
  padding-bottom: calc(var(--spacing) * 2);
4026
4167
  }
4027
4168
  }
4169
+ [data-theme="rui"] .has-focus-visible\:util-focus-ring {
4170
+ [data-theme="rui"] &:has(*:where([data-rac])[data-focus-visible]) {
4171
+ border-color: var(--color-stone-400);
4172
+ outline-style: none;
4173
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4174
+ @supports (color: color-mix(in lab, red, red)) {
4175
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4176
+ }
4177
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
4178
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4179
+ }
4180
+ [data-theme="rui"] &:has(*:where(:not([data-rac])):focus-visible) {
4181
+ border-color: var(--color-stone-400);
4182
+ outline-style: none;
4183
+ --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4184
+ @supports (color: color-mix(in lab, red, red)) {
4185
+ --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4186
+ }
4187
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
4188
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4189
+ }
4190
+ }
4028
4191
  [data-theme="rui"] .has-\[input\[aria-readonly\=true\]\]\:bg-muted {
4029
4192
  [data-theme="rui"] &:has(*:is(input[aria-readonly=true])) {
4030
4193
  background-color: var(--color-stone-100);
@@ -4679,6 +4842,12 @@
4679
4842
  height: calc(var(--spacing) * 4);
4680
4843
  }
4681
4844
  }
4845
+ [data-theme="rui"] .\[\&_svg\]\:size-6 {
4846
+ [data-theme="rui"] & svg {
4847
+ width: calc(var(--spacing) * 6);
4848
+ height: calc(var(--spacing) * 6);
4849
+ }
4850
+ }
4682
4851
  [data-theme="rui"] .\[\&_svg\]\:shrink-0 {
4683
4852
  [data-theme="rui"] & svg {
4684
4853
  flex-shrink: 0;
@@ -4903,192 +5072,6 @@
4903
5072
  }
4904
5073
  }
4905
5074
  }
4906
- @layer utilities {
4907
- [data-theme="rui"] .mixin-ring-focus-visible {
4908
- --tw-outline-style: none;
4909
- outline-style: none;
4910
- [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
4911
- border-color: var(--color-stone-400);
4912
- }
4913
- [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
4914
- border-color: var(--color-stone-400);
4915
- }
4916
- [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
4917
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4918
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4919
- }
4920
- [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
4921
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4922
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4923
- }
4924
- [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
4925
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4926
- @supports (color: color-mix(in lab, red, red)) {
4927
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4928
- }
4929
- }
4930
- [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
4931
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4932
- @supports (color: color-mix(in lab, red, red)) {
4933
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4934
- }
4935
- }
4936
- }
4937
- [data-theme="rui"] .mixin-ring-has-focus-visible {
4938
- [data-theme="rui"] &:has(*:where([data-rac])[data-focus-visible]) {
4939
- border-color: var(--color-stone-200);
4940
- }
4941
- [data-theme="rui"] &:has(*:where(:not([data-rac])):focus-visible) {
4942
- border-color: var(--color-stone-200);
4943
- }
4944
- [data-theme="rui"] &:has(*:where([data-rac])[data-focus-visible]) {
4945
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4946
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4947
- }
4948
- [data-theme="rui"] &:has(*:where(:not([data-rac])):focus-visible) {
4949
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4950
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4951
- }
4952
- [data-theme="rui"] &:has(*:where([data-rac])[data-focus-visible]) {
4953
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4954
- @supports (color: color-mix(in lab, red, red)) {
4955
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4956
- }
4957
- }
4958
- [data-theme="rui"] &:has(*:where(:not([data-rac])):focus-visible) {
4959
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4960
- @supports (color: color-mix(in lab, red, red)) {
4961
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4962
- }
4963
- }
4964
- }
4965
- [data-theme="rui"] .mixin-ring-focus-visible-checkbox {
4966
- [data-theme="rui"] &:is(:where(.group\/checkbox):where([data-rac])[data-focus-visible] *) {
4967
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4968
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4969
- }
4970
- [data-theme="rui"] &:is(:where(.group\/checkbox):where(:not([data-rac])):focus-visible *) {
4971
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4972
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4973
- }
4974
- [data-theme="rui"] &:is(:where(.group\/checkbox):where([data-rac])[data-focus-visible] *) {
4975
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4976
- @supports (color: color-mix(in lab, red, red)) {
4977
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4978
- }
4979
- }
4980
- [data-theme="rui"] &:is(:where(.group\/checkbox):where(:not([data-rac])):focus-visible *) {
4981
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4982
- @supports (color: color-mix(in lab, red, red)) {
4983
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
4984
- }
4985
- }
4986
- }
4987
- [data-theme="rui"] .mixin-ring-focus-visible-radio {
4988
- [data-theme="rui"] &:is(:where(.group\/radio):where([data-rac])[data-focus-visible] *) {
4989
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4990
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4991
- }
4992
- [data-theme="rui"] &:is(:where(.group\/radio):where(:not([data-rac])):focus-visible *) {
4993
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4994
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4995
- }
4996
- [data-theme="rui"] &:is(:where(.group\/radio):where([data-rac])[data-focus-visible] *) {
4997
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
4998
- @supports (color: color-mix(in lab, red, red)) {
4999
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5000
- }
5001
- }
5002
- [data-theme="rui"] &:is(:where(.group\/radio):where(:not([data-rac])):focus-visible *) {
5003
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
5004
- @supports (color: color-mix(in lab, red, red)) {
5005
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5006
- }
5007
- }
5008
- }
5009
- [data-theme="rui"] .mixin-ring-focus-visible-switch {
5010
- [data-theme="rui"] &:is(:where(.group\/switch):where([data-rac])[data-focus-visible] *) {
5011
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
5012
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5013
- }
5014
- [data-theme="rui"] &:is(:where(.group\/switch):where(:not([data-rac])):focus-visible *) {
5015
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
5016
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5017
- }
5018
- [data-theme="rui"] &:is(:where(.group\/switch):where([data-rac])[data-focus-visible] *) {
5019
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
5020
- @supports (color: color-mix(in lab, red, red)) {
5021
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5022
- }
5023
- }
5024
- [data-theme="rui"] &:is(:where(.group\/switch):where(:not([data-rac])):focus-visible *) {
5025
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
5026
- @supports (color: color-mix(in lab, red, red)) {
5027
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5028
- }
5029
- }
5030
- }
5031
- [data-theme="rui"] .mixin-ring-focus-visible-borderless {
5032
- --tw-outline-style: none;
5033
- outline-style: none;
5034
- [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
5035
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
5036
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5037
- }
5038
- [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
5039
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
5040
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5041
- }
5042
- [data-theme="rui"] &:where([data-rac])[data-focus-visible] {
5043
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
5044
- @supports (color: color-mix(in lab, red, red)) {
5045
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5046
- }
5047
- }
5048
- [data-theme="rui"] &:where(:not([data-rac])):focus-visible {
5049
- --tw-ring-color: color-mix(in srgb, oklch(70.9% 0.01 56.259) 50%, transparent);
5050
- @supports (color: color-mix(in lab, red, red)) {
5051
- --tw-ring-color: color-mix(in oklab, var(--color-stone-400) 50%, transparent);
5052
- }
5053
- }
5054
- }
5055
- [data-theme="rui"] .mixin-disabled {
5056
- [data-theme="rui"] &:where([data-rac])[data-disabled] {
5057
- cursor: not-allowed;
5058
- }
5059
- [data-theme="rui"] &:where(:not([data-rac])):disabled {
5060
- cursor: not-allowed;
5061
- }
5062
- [data-theme="rui"] &:where([data-rac])[data-disabled] {
5063
- --tw-border-style: none;
5064
- border-style: none;
5065
- }
5066
- [data-theme="rui"] &:where(:not([data-rac])):disabled {
5067
- --tw-border-style: none;
5068
- border-style: none;
5069
- }
5070
- [data-theme="rui"] &:where([data-rac])[data-disabled] {
5071
- background-color: var(--color-stone-200);
5072
- }
5073
- [data-theme="rui"] &:where(:not([data-rac])):disabled {
5074
- background-color: var(--color-stone-200);
5075
- }
5076
- [data-theme="rui"] &:where([data-rac])[data-disabled] {
5077
- color: var(--color-stone-400);
5078
- }
5079
- [data-theme="rui"] &:where(:not([data-rac])):disabled {
5080
- color: var(--color-stone-400);
5081
- }
5082
- [data-theme="rui"] &:where([data-rac])[data-disabled] {
5083
- --tw-shadow: 0 0 #0000;
5084
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5085
- }
5086
- [data-theme="rui"] &:where(:not([data-rac])):disabled {
5087
- --tw-shadow: 0 0 #0000;
5088
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5089
- }
5090
- }
5091
- }
5092
5075
  @layer base {
5093
5076
  [data-theme="rui"] {
5094
5077
  font-optical-sizing: auto;
package/dist/theme.css CHANGED
@@ -1,4 +1,4 @@
1
- @import './mixins.css';
1
+ @import './utils.css';
2
2
 
3
3
  /*
4
4
  TODO: how to do normalization so we doesn't break everything?
package/dist/utils.css ADDED
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Custom Tailwind utilities
3
+ *
4
+ * This file contains reusable utility functions and class shortcuts that
5
+ * encapsulate common design decisions across the theme. These include
6
+ * standardized styling for interactive states like keyboard focus, disabled
7
+ * components, and other consistent UI patterns.
8
+ */
9
+
10
+ /*
11
+ * Applies a consistent visual style for keyboard focus states across components.
12
+ * This utility sets a colored focus ring and border based on the given theme color,
13
+ * while removing the default outline.
14
+ *
15
+ * Use this as a default for all components (that don't have their own border).
16
+ */
17
+ @utility util-focus-* {
18
+ border-color: --value(--color- *);
19
+ outline-style: none;
20
+
21
+ --tw-ring-color: --alpha(--value(--color- *) / 50%);
22
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
23
+ box-shadow:
24
+ var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
25
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
26
+ }
27
+
28
+ /*
29
+ * Applies a consistent visual style for keyboard focus states across components.
30
+ * This utility sets a colored focus ring based on the given theme color,
31
+ * while removing the default outline.
32
+ *
33
+ * Use this when the component has its own border and you need to keep it.
34
+ */
35
+ @utility util-focus-borderless-* {
36
+ outline-style: none;
37
+
38
+ --tw-ring-color: --alpha(--value(--color- *) / 50%);
39
+ --tw-ring-shadow: 0 0 0 3px var(--tw-ring-color, currentcolor);
40
+ box-shadow:
41
+ var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
42
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
43
+ }
44
+
45
+ /*
46
+ * Defines a consistent visual and behavioral style for disabled UI elements.
47
+ */
48
+ @utility util-disabled {
49
+ background-color: var(--color-disabled);
50
+ color: var(--color-disabled-foreground);
51
+
52
+ cursor: not-allowed;
53
+
54
+ --tw-border-style: none;
55
+ border-style: none;
56
+
57
+ --tw-shadow: 0 0 #0000;
58
+ box-shadow:
59
+ var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
60
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
61
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marigold/theme-rui",
3
- "version": "0.5.0",
3
+ "version": "1.0.0",
4
4
  "description": "Marigold RUI Theme",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -53,11 +53,11 @@
53
53
  "dependencies": {
54
54
  "tailwindcss-animate": "1.0.7",
55
55
  "tailwindcss-react-aria-components": "2.0.0",
56
- "@marigold/components": "11.4.0",
57
- "@marigold/system": "11.4.0",
56
+ "@marigold/components": "11.4.1",
57
+ "@marigold/system": "11.4.1",
58
58
  "@marigold/theme-plugins": "1.0.1"
59
59
  },
60
60
  "scripts": {
61
- "build": "NODE_ENV=production tsup && postcss -o dist/styles.css src/styles.css && cp src/theme.css src/global.css src/mixins.css dist/"
61
+ "build": "NODE_ENV=production tsup && postcss -o dist/styles.css src/styles.css && cp src/theme.css src/global.css src/utils.css dist/"
62
62
  }
63
63
  }
package/dist/mixins.css DELETED
@@ -1,54 +0,0 @@
1
- /*
2
- File: tailwind-components.css
3
-
4
- Description
5
- -----------
6
- This file defines custom Tailwind CSS component classes by bundling commonly used utility classes
7
- with the @apply directive. The goal is to reduce duplication, enhance maintainability, and ensure
8
- a consistent styling pattern across various components.
9
-
10
- Usage
11
- -----
12
- Import this file into your main stylesheet or reference it in your Tailwind CSS configuration.
13
-
14
- Best Practices
15
- --------------
16
- - Encapsulate frequently used utility combinations into custom classes for better reusability.
17
- - Update the definitions here to maintain consistency in our design system across all components.
18
- - Keep custom classes focused on specific styling concerns to preserve clarity.
19
- */
20
-
21
- @layer utilities {
22
- /*==============*/
23
- /* Focus */
24
- /*==============*/
25
- .mixin-ring-focus-visible {
26
- @apply focus-visible:border-ring focus-visible:ring-ring/50 outline-none focus-visible:ring-[3px];
27
- }
28
-
29
- .mixin-ring-has-focus-visible {
30
- @apply has-focus-visible:border-border has-focus-visible:ring-ring/50 has-focus-visible:ring-[3px];
31
- }
32
-
33
- /* TODO: rename the groups to something common? e.g. "control" or something */
34
- .mixin-ring-focus-visible-checkbox {
35
- @apply group-focus-visible/checkbox:ring-ring/50 group-focus-visible/checkbox:ring-[3px];
36
- }
37
- .mixin-ring-focus-visible-radio {
38
- @apply group-focus-visible/radio:ring-ring/50 group-focus-visible/radio:ring-[3px];
39
- }
40
- .mixin-ring-focus-visible-switch {
41
- @apply group-focus-visible/switch:ring-ring/50 group-focus-visible/switch:ring-[3px];
42
- }
43
-
44
- .mixin-ring-focus-visible-borderless {
45
- @apply focus-visible:ring-ring/50 outline-none focus-visible:ring-[3px];
46
- }
47
-
48
- /*==============*/
49
- /* Disabled */
50
- /*==============*/
51
- .mixin-disabled {
52
- @apply disabled:bg-disabled disabled:text-disabled-foreground disabled:cursor-not-allowed disabled:border-none disabled:shadow-none;
53
- }
54
- }