@rcarls/rc-theme-tailwind 0.0.0-next-20261103014840

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 (64) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +127 -0
  3. package/bridge.css +245 -0
  4. package/components/accordion.css +18 -0
  5. package/components/adaptive-menu.css +98 -0
  6. package/components/app-bar.css +21 -0
  7. package/components/bottom-sheet.css +90 -0
  8. package/components/breadcrumbs.css +38 -0
  9. package/components/button.css +44 -0
  10. package/components/card.css +51 -0
  11. package/components/carousel.css +31 -0
  12. package/components/chip-group.css +21 -0
  13. package/components/chip.css +20 -0
  14. package/components/combobox.css +55 -0
  15. package/components/data-table.css +55 -0
  16. package/components/dialog.css +39 -0
  17. package/components/disclosure.css +112 -0
  18. package/components/fab-menu.css +36 -0
  19. package/components/fab.css +44 -0
  20. package/components/field.css +154 -0
  21. package/components/icons.css +19 -0
  22. package/components/list-item.css +70 -0
  23. package/components/listbox.css +29 -0
  24. package/components/markdown-editor.css +53 -0
  25. package/components/menu-button.css +18 -0
  26. package/components/menu.css +28 -0
  27. package/components/menubar.css +17 -0
  28. package/components/modes.css +60 -0
  29. package/components/navigation-bar.css +43 -0
  30. package/components/navigation-rail.css +72 -0
  31. package/components/page-turner.css +19 -0
  32. package/components/pagination.css +50 -0
  33. package/components/popover.css +13 -0
  34. package/components/progress.css +11 -0
  35. package/components/range-slider.css +18 -0
  36. package/components/scroller.css +19 -0
  37. package/components/search-bar.css +30 -0
  38. package/components/segmented-button.css +19 -0
  39. package/components/select.css +74 -0
  40. package/components/slider.css +10 -0
  41. package/components/snackbar.css +23 -0
  42. package/components/splitter.css +39 -0
  43. package/components/switch.css +28 -0
  44. package/components/textarea.css +21 -0
  45. package/components/toolbar.css +36 -0
  46. package/components/tooltip.css +15 -0
  47. package/components/transfer-list.css +30 -0
  48. package/components/virtual-canvas.css +18 -0
  49. package/components/virtual-scroller.css +7 -0
  50. package/components.css +49 -0
  51. package/css-components/button.css +66 -0
  52. package/css-components/card.css +14 -0
  53. package/css-components/chip-group.css +9 -0
  54. package/css-components/chip.css +80 -0
  55. package/css-components/disclosure.css +25 -0
  56. package/css-components/list.css +34 -0
  57. package/css-components/select.css +20 -0
  58. package/css-components/textarea.css +22 -0
  59. package/css-components.css +31 -0
  60. package/defaults.css +137 -0
  61. package/layers.css +10 -0
  62. package/native.css +249 -0
  63. package/package.json +49 -0
  64. package/theme.css +3 -0
@@ -0,0 +1,19 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
3
+ :where(
4
+ [data-rc-icon],
5
+ [data-rc-button-icon],
6
+ [data-rc-button-selected-icon],
7
+ [data-rc-navigation-icon]
8
+ ) {
9
+ display: inline-grid;
10
+ place-items: center;
11
+ font-size: var(--rc-icon-font-size, 1.5rem);
12
+ /*
13
+ * Unlayered icon-font boilerplate otherwise beats this layered theme rule.
14
+ * Keep the geometry invariant important, but let consumers opt out by
15
+ * overriding the normally-cascaded custom property.
16
+ */
17
+ line-height: var(--rc-icon-font-line-height, var(--rc-icon-font-size, 1.5rem)) !important;
18
+ }
19
+ }
@@ -0,0 +1,70 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) {
3
+ /* Compatibility tokens retained for rc-listbox and embedded selectors. */
4
+ --rc-list-item-gap: var(--tailwind-item-gap, 0.5rem);
5
+ --rc-list-item-min-block-size: 2.25rem;
6
+ --rc-list-item-padding-block: var(--tailwind-item-padding-block, 0.55rem);
7
+ --rc-list-item-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
8
+ --rc-list-item-hover-bg: color-mix(in srgb, var(--rc-accent, Highlight) 10%, transparent);
9
+ --rc-list-item-active-bg: color-mix(in srgb, var(--rc-accent, Highlight) 16%, transparent);
10
+ --rc-list-item-selected-bg: var(--rc-highlight, Highlight);
11
+ --rc-list-item-selected-color: var(--rc-highlight-text, HighlightText);
12
+ --rc-list-item-disabled-opacity: var(--rc-disabled-opacity, 0.52);
13
+ }
14
+
15
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-list {
16
+ --rc-list-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
17
+ --rc-list-leading-gap: var(--tailwind-item-gap, 0.5rem);
18
+ --rc-list-trailing-gap: var(--tailwind-item-gap, 0.5rem);
19
+ --rc-list-row-gap: 0;
20
+ --rc-list-item-min-block-size: 2.25rem;
21
+ --rc-list-item-padding-block: var(--tailwind-item-padding-block, 0.55rem);
22
+ --rc-list-item-color: var(--rc-field-text, FieldText);
23
+ --rc-list-item-background: transparent;
24
+ --rc-list-item-selected-color: var(--rc-highlight-text, HighlightText);
25
+ --rc-list-item-selected-background: var(--rc-highlight, Highlight);
26
+ --rc-list-item-divider: 1px solid var(--tailwind-border-color, GrayText);
27
+ --rc-list-item-state-layer-color: var(--rc-accent, Highlight);
28
+ --rc-list-item-hover-state-layer-opacity: 0.1;
29
+ --rc-list-item-focus-state-layer-opacity: 0.12;
30
+ --rc-list-item-pressed-state-layer-opacity: 0.16;
31
+ --rc-list-item-disabled-opacity: var(--rc-disabled-opacity, 0.52);
32
+ --rc-list-item-transition-duration: var(--rc-motion-effects-duration-fast, 100ms);
33
+ }
34
+
35
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-list[variant='segmented'] {
36
+ --rc-list-padding-inline: 0;
37
+ --rc-list-row-gap: 0.25rem;
38
+ --rc-list-item-background: var(--tailwind-surface-raised, Field);
39
+ --rc-list-item-divider: 0;
40
+ --rc-list-item-border: 1px solid var(--tailwind-border-color, GrayText);
41
+ --rc-list-item-border-radius: var(--tailwind-radius-md, 0.375rem);
42
+ }
43
+
44
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
45
+ rc-list-item
46
+ > :where([data-rc-list-supporting], small) {
47
+ display: block;
48
+ color: var(--tailwind-on-surface-muted, GrayText);
49
+ }
50
+
51
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
52
+ rc-list-item
53
+ > :is(input[type='checkbox'], input[type='radio'])[slot='leading'] {
54
+ margin: 0;
55
+ accent-color: var(--rc-accent, Highlight);
56
+ }
57
+
58
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-listbox,
59
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) [part~='listbox'] {
60
+ --rc-listbox-option-gap: var(--rc-list-item-gap);
61
+ --rc-listbox-option-min-block-size: var(--rc-list-item-min-block-size);
62
+ --rc-listbox-option-padding-block: var(--rc-list-item-padding-block);
63
+ --rc-listbox-option-padding-inline: var(--rc-list-item-padding-inline);
64
+ --rc-listbox-hover-bg: var(--rc-list-item-hover-bg);
65
+ --rc-listbox-active-bg: var(--rc-list-item-active-bg);
66
+ --rc-listbox-selected-bg: var(--rc-list-item-selected-bg);
67
+ --rc-listbox-selected-color: var(--rc-list-item-selected-color);
68
+ --rc-listbox-disabled-opacity: var(--rc-list-item-disabled-opacity);
69
+ }
70
+ }
@@ -0,0 +1,29 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-listbox {
3
+ --rc-listbox-option-gap: var(--rc-list-item-gap, var(--tailwind-item-gap, 0.5rem));
4
+ --rc-listbox-option-min-block-size: 2.25rem;
5
+ --rc-listbox-option-padding-block: var(--tailwind-item-padding-block, 0.55rem);
6
+ --rc-listbox-option-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
7
+ --rc-listbox-option-transition:
8
+ background-color var(--tailwind-motion-effects-duration-default, 160ms)
9
+ var(--tailwind-motion-easing, ease),
10
+ color var(--tailwind-motion-effects-duration-default, 160ms)
11
+ var(--tailwind-motion-easing, ease);
12
+ --rc-listbox-hover-bg: color-mix(in srgb, var(--rc-accent, Highlight) 10%, transparent);
13
+ --rc-listbox-hover-color: var(--rc-field-text, FieldText);
14
+ --rc-listbox-active-bg: color-mix(in srgb, var(--rc-accent, Highlight) 16%, transparent);
15
+ --rc-listbox-active-color: var(--rc-field-text, FieldText);
16
+ --rc-listbox-selected-bg: var(--rc-highlight, Highlight);
17
+ --rc-listbox-selected-color: var(--rc-highlight-text, HighlightText);
18
+ display: block;
19
+ border-radius: var(--tailwind-radius-lg, 0.75rem);
20
+ font: var(--rc-font-weight, 400) var(--rc-font-size, 1em) / var(--rc-line-height, normal)
21
+ var(--rc-font-family, inherit);
22
+ }
23
+
24
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
25
+ rc-listbox[checkmark]
26
+ [part~='option-checkmark'] {
27
+ color: var(--rc-accent, Highlight);
28
+ }
29
+ }
@@ -0,0 +1,53 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-markdown-editor {
3
+ --rc-markdown-editor-padding: 0.75rem;
4
+ --rc-markdown-editor-border: var(--rc-border, 1px solid ButtonBorder);
5
+ --rc-markdown-editor-border-radius: 0 0 var(--tailwind-radius-lg, 0.75rem)
6
+ var(--tailwind-radius-lg, 0.75rem);
7
+ --rc-markdown-editor-background: var(--rc-field, Field);
8
+ --rc-markdown-editor-color: var(--rc-field-text, FieldText);
9
+ --rc-markdown-editor-toolbar-background: var(--tailwind-surface-raised, Canvas);
10
+ --rc-markdown-editor-toolbar-color: var(--tailwind-on-surface, CanvasText);
11
+ --rc-markdown-editor-toolbar-border: var(--rc-border, 1px solid ButtonBorder);
12
+ --rc-markdown-editor-toolbar-gap: 0.125rem;
13
+ --rc-markdown-editor-toolbar-padding: 0.25rem;
14
+ --rc-markdown-editor-toolbar-radius: var(--tailwind-radius-lg, 0.75rem)
15
+ var(--tailwind-radius-lg, 0.75rem) 0 0;
16
+ --rc-markdown-editor-toolbar-button-size: var(--rc-control-block-size, 2.5rem);
17
+ --rc-markdown-editor-toolbar-button-color: var(--tailwind-on-surface, ButtonText);
18
+ --rc-markdown-editor-toolbar-button-border: 1px solid transparent;
19
+ --rc-markdown-editor-toolbar-button-radius: var(--tailwind-radius-md, 0.5rem);
20
+ --rc-markdown-editor-toolbar-button-active-background: var(
21
+ --tailwind-primary-container,
22
+ Highlight
23
+ );
24
+ --rc-markdown-editor-toolbar-button-active-color: var(
25
+ --tailwind-on-primary-container,
26
+ HighlightText
27
+ );
28
+ --rc-markdown-editor-toolbar-button-active-border: 1px solid var(--tailwind-primary, Highlight);
29
+ --rc-markdown-editor-toolbar-focus-outline: var(--rc-focus-ring, 2px solid Highlight);
30
+ --rc-markdown-editor-toolbar-focus-outline-offset: var(--rc-focus-ring-offset, 2px);
31
+ --rc-markdown-editor-toolbar-select-background: var(--tailwind-field, Field);
32
+ --rc-markdown-editor-toolbar-select-color: var(--tailwind-on-surface, FieldText);
33
+ --rc-markdown-editor-toolbar-select-border: var(--rc-border, 1px solid ButtonBorder);
34
+ --rc-markdown-editor-toolbar-select-radius: var(--tailwind-radius-sm, 0.25rem);
35
+ --rc-markdown-editor-toolbar-select-active-background: var(
36
+ --tailwind-primary-container,
37
+ Highlight
38
+ );
39
+ --rc-markdown-editor-toolbar-select-active-color: var(
40
+ --tailwind-on-primary-container,
41
+ HighlightText
42
+ );
43
+ --rc-markdown-editor-toolbar-select-active-border-color: var(--tailwind-primary, Highlight);
44
+ --rc-markdown-editor-toolbar-input-background: var(--tailwind-field, Field);
45
+ --rc-markdown-editor-toolbar-input-color: var(--tailwind-on-surface, FieldText);
46
+ --rc-markdown-editor-toolbar-input-border: var(--rc-border, 1px solid ButtonBorder);
47
+ --rc-markdown-editor-toolbar-input-radius: var(--tailwind-radius-sm, 0.25rem);
48
+ }
49
+
50
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-markdown-editor::part(rich-view) {
51
+ line-height: var(--rc-line-height, normal);
52
+ }
53
+ }
@@ -0,0 +1,18 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-menu-button {
3
+ --rc-menu-button-trigger-background: var(--rc-button-bg, ButtonFace);
4
+ --rc-menu-button-trigger-color: var(--rc-button-text, ButtonText);
5
+ --rc-menu-button-trigger-hover-background: color-mix(
6
+ in srgb,
7
+ var(--rc-accent, Highlight) 10%,
8
+ var(--rc-button-bg, ButtonFace)
9
+ );
10
+ --rc-menu-button-trigger-open-background: color-mix(
11
+ in srgb,
12
+ var(--rc-accent, Highlight) 16%,
13
+ var(--rc-button-bg, ButtonFace)
14
+ );
15
+ --rc-menu-button-indicator-color: var(--rc-accent, Highlight);
16
+ display: inline-block;
17
+ }
18
+ }
@@ -0,0 +1,28 @@
1
+ @layer rc-theme-tailwind.components {
2
+ /*
3
+ * Declared on the theme root rather than on rc-menu so menus rendered
4
+ * inside other shadow roots inherit the same values.
5
+ */
6
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) {
7
+ --rc-menu-item-gap: var(--tailwind-item-gap, 0.5rem);
8
+ --rc-menu-item-min-block-size: 2.25rem;
9
+ --rc-menu-item-padding-block: var(--tailwind-item-padding-block, 0.55rem);
10
+ --rc-menu-item-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
11
+ --rc-menu-hover-bg: color-mix(in srgb, var(--rc-accent, Highlight) 10%, transparent);
12
+ --rc-menu-active-bg: color-mix(in srgb, var(--rc-accent, Highlight) 16%, transparent);
13
+ --rc-menu-check-size: 1.25rem;
14
+ --rc-menu-background: var(--tailwind-surface-raised, Canvas);
15
+ --rc-menu-shadow: var(--rc-shadow, none);
16
+ --rc-menu-padding-block: 0.25rem;
17
+ }
18
+
19
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-menu {
20
+ display: inline-block;
21
+ }
22
+
23
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-menu [data-group-label] {
24
+ color: var(--tailwind-on-surface-muted, GrayText);
25
+ font-size: 0.8em;
26
+ font-weight: 650;
27
+ }
28
+ }
@@ -0,0 +1,17 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-menubar {
3
+ --rc-menubar-item-block-size: 2.25rem;
4
+ --rc-menubar-item-padding-inline: 0.75rem;
5
+ --rc-menubar-item-background: transparent;
6
+ --rc-menubar-item-open-background: color-mix(
7
+ in srgb,
8
+ var(--rc-accent, Highlight) 14%,
9
+ transparent
10
+ );
11
+ display: inline-block;
12
+ }
13
+
14
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-menubar::part(root) {
15
+ gap: 0.125rem;
16
+ }
17
+ }
@@ -0,0 +1,60 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) {
3
+ background: var(--tailwind-surface, Canvas);
4
+ color: var(--tailwind-on-surface, CanvasText);
5
+ font-family: var(--rc-font-family, inherit);
6
+ }
7
+
8
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) *,
9
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) *::before,
10
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) *::after {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) :focus-visible {
15
+ outline: var(--rc-focus-ring, 2px solid Highlight);
16
+ outline-offset: var(--rc-focus-ring-offset, 2px);
17
+ }
18
+
19
+ @supports (view-transition-name: none) {
20
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) [data-rc-view-transition] {
21
+ view-transition-name: var(--rc-view-transition-name, none);
22
+ }
23
+ }
24
+
25
+ /*
26
+ * The vestibular harm reduced motion guards against is movement across the
27
+ * visual field, which a color or opacity change does not trigger; removing
28
+ * every transition over-corrected. Spatial motion still goes fully to
29
+ * zero. Effects motion is kept but shortened, scaled down from
30
+ * Tailwind's own already-quick 100/160/240ms scale. The two legacy
31
+ * primitives (--tailwind-motion-duration and its -slow companion,
32
+ * predating the effects/spatial split) and the cross-theme compatibility
33
+ * token stay at zero: dialog.css is their one remaining direct consumer,
34
+ * animating opacity, display, and transform together in one declaration
35
+ * that mixes spatial and effects properties and can't be cleanly
36
+ * classified into one bucket. (That file's own transform-based entrance
37
+ * is a separate, pre-existing conflict with rc-dialog's pointer-resize
38
+ * geometry reads and remains outside this theme-level override.)
39
+ */
40
+ @media (prefers-reduced-motion: reduce) {
41
+ .rc-theme-tailwind,
42
+ :host(.rc-theme-tailwind) {
43
+ --tailwind-motion-duration: 0ms;
44
+ --tailwind-motion-duration-slow: 0ms;
45
+ --tailwind-motion-effects-duration-fast: 40ms;
46
+ --tailwind-motion-effects-duration-default: 55ms;
47
+ --tailwind-motion-effects-duration-slow: 70ms;
48
+ --tailwind-motion-spatial-duration-fast: 0ms;
49
+ --tailwind-motion-spatial-duration-default: 0ms;
50
+ --tailwind-motion-spatial-duration-slow: 0ms;
51
+ --rc-motion-duration: 0ms;
52
+ --rc-motion-effects-duration-fast: 40ms;
53
+ --rc-motion-effects-duration-default: 55ms;
54
+ --rc-motion-effects-duration-slow: 70ms;
55
+ --rc-motion-spatial-duration-fast: 0ms;
56
+ --rc-motion-spatial-duration-default: 0ms;
57
+ --rc-motion-spatial-duration-slow: 0ms;
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,43 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-navigation-bar {
3
+ --rc-navigation-bar-bg: var(--rc-surface, Canvas);
4
+ --rc-navigation-bar-color: var(--rc-color, CanvasText);
5
+ --rc-navigation-bar-block-size: 4rem;
6
+ --rc-navigation-bar-padding-block: 0;
7
+ --rc-navigation-bar-padding-inline: 0;
8
+ --rc-navigation-bar-gap: 0;
9
+ --rc-navigation-bar-item-gap: 0.25rem;
10
+ --rc-navigation-bar-item-min-block-size: 3rem;
11
+ --rc-navigation-bar-item-padding-block: 0.5rem;
12
+ --rc-navigation-bar-item-padding-inline: var(--rc-item-padding-inline, 0.75rem);
13
+ --rc-navigation-bar-item-color: var(--rc-muted-color, CanvasText);
14
+ --rc-navigation-bar-item-text-decoration: none;
15
+ --rc-navigation-bar-active-color: var(--rc-accent, Highlight);
16
+ --rc-navigation-bar-indicator-bg: transparent;
17
+ --rc-navigation-bar-indicator-border: 0;
18
+ --rc-navigation-bar-indicator-radius: 0;
19
+ --rc-navigation-bar-indicator-duration: 0ms;
20
+ --rc-navigation-bar-indicator-easing: ease;
21
+ --rc-icon-font-line-height: 2.5rem;
22
+ --rc-navigation-bar-focus-ring: var(--rc-focus-ring, 2px solid Highlight);
23
+ --rc-navigation-bar-focus-ring-offset: var(--rc-focus-ring-offset, 2px);
24
+ }
25
+
26
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
27
+ rc-navigation-bar
28
+ > a
29
+ :where([data-rc-navigation-icon], [data-rc-navigation-indicator]) {
30
+ display: inline-grid;
31
+ place-items: center;
32
+ inline-size: 2.5rem;
33
+ block-size: 2.5rem;
34
+ border-radius: var(--rc-radius-pill, 9999px);
35
+ }
36
+
37
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
38
+ rc-navigation-bar
39
+ > a[aria-current]:not([aria-current='false']) {
40
+ border-radius: var(--rc-radius-md, 0.5rem);
41
+ background: color-mix(in srgb, var(--rc-accent, Highlight) 12%, transparent);
42
+ }
43
+ }
@@ -0,0 +1,72 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-navigation-rail {
3
+ --rc-navigation-rail-bg: var(--rc-surface, Canvas);
4
+ --rc-navigation-rail-color: var(--rc-color, CanvasText);
5
+ --rc-navigation-rail-inline-size: 6rem;
6
+ --rc-navigation-rail-expanded-inline-size: 15rem;
7
+ --rc-navigation-rail-padding-block: 0.75rem;
8
+ --rc-navigation-rail-padding-inline: 0.5rem;
9
+ --rc-navigation-rail-gap: var(--rc-item-gap, 0.75rem);
10
+ --rc-navigation-rail-item-gap: var(--rc-item-gap, 0.75rem);
11
+ --rc-navigation-rail-link-gap: 0.25rem;
12
+ --rc-navigation-rail-item-min-block-size: 3.5rem;
13
+ --rc-navigation-rail-expanded-item-min-block-size: 3.5rem;
14
+ --rc-navigation-rail-item-padding-block: 0.25rem;
15
+ --rc-navigation-rail-item-padding-inline: 0.5rem;
16
+ --rc-navigation-rail-expanded-item-padding-inline: var(--rc-item-padding-inline, 1rem);
17
+ --rc-navigation-rail-item-color: var(--rc-muted-color, CanvasText);
18
+ --rc-navigation-rail-item-text-decoration: none;
19
+ --rc-navigation-rail-active-color: var(--rc-accent, Highlight);
20
+ --rc-navigation-rail-indicator-bg: transparent;
21
+ --rc-navigation-rail-indicator-border: 0;
22
+ --rc-navigation-rail-indicator-radius: 0;
23
+ --rc-navigation-rail-indicator-duration: 0ms;
24
+ --rc-navigation-rail-indicator-easing: ease;
25
+ --rc-icon-font-line-height: 2.5rem;
26
+ --rc-navigation-rail-toggle-size: 3rem;
27
+ --rc-navigation-rail-toggle-inline-offset: 0.5rem;
28
+ --rc-navigation-rail-duration: var(--rc-motion-duration, 200ms);
29
+ --rc-navigation-rail-easing: ease;
30
+ --rc-navigation-rail-focus-ring: var(--rc-focus-ring, 2px solid Highlight);
31
+ --rc-navigation-rail-focus-ring-offset: var(--rc-focus-ring-offset, 2px);
32
+ }
33
+
34
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-navigation-rail > a {
35
+ inline-size: 100%;
36
+ }
37
+
38
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
39
+ rc-navigation-rail
40
+ > a[aria-current]:not([aria-current='false']) {
41
+ border-radius: var(--rc-radius-md, 0.5rem);
42
+ background: color-mix(in srgb, var(--rc-accent, Highlight) 12%, transparent);
43
+ }
44
+
45
+ /*
46
+ * Size the icon itself (whether a direct `<a>` child or nested in
47
+ * [data-rc-navigation-indicator]) rather than the indicator wrapper, so the
48
+ * wrapper stays sized to its normal-flow content (icon + label) and the
49
+ * active-state background above wraps the whole item, not just the icon.
50
+ */
51
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
52
+ rc-navigation-rail:not([expanded])
53
+ > a
54
+ [data-rc-navigation-icon] {
55
+ inline-size: 2.5rem;
56
+ block-size: 2.5rem;
57
+ border-radius: var(--rc-radius-pill, 9999px);
58
+ }
59
+
60
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
61
+ rc-navigation-rail[expanded]
62
+ > a
63
+ > :where([data-rc-navigation-icon], [data-rc-navigation-indicator]) {
64
+ justify-content: flex-start;
65
+ gap: var(--rc-item-gap, 0.75rem);
66
+ inline-size: 100%;
67
+ block-size: 3.5rem;
68
+ padding-inline: var(--rc-item-padding-inline, 1rem);
69
+ box-sizing: border-box;
70
+ text-align: start;
71
+ }
72
+ }
@@ -0,0 +1,19 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-page-turner {
3
+ --rc-page-turner-color: var(--color-slate-950, CanvasText);
4
+ --rc-page-turner-duration: var(--rc-motion-spatial-duration-default, 400ms);
5
+ --rc-page-turner-easing: var(--rc-motion-spatial-easing-default, cubic-bezier(0.2, 0, 0, 1));
6
+ --rc-page-turner-page-back-background: var(--color-slate-50, Canvas);
7
+ --rc-page-turner-navigation-button-background: color-mix(
8
+ in srgb,
9
+ var(--color-slate-50, Canvas) 75%,
10
+ transparent
11
+ );
12
+ --rc-page-turner-navigation-button-color: var(--color-slate-950, CanvasText);
13
+ }
14
+
15
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-page-turner-page {
16
+ --rc-page-turner-page-background: var(--color-slate-50, Canvas);
17
+ --rc-page-turner-page-color: var(--color-slate-950, CanvasText);
18
+ }
19
+ }
@@ -0,0 +1,50 @@
1
+ @layer rc-theme-tailwind.components {
2
+ /* Compact square page buttons with the current page on the primary container. */
3
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-pagination {
4
+ --rc-pagination-gap: 0.25rem;
5
+ --rc-pagination-item-min-inline-size: var(--tailwind-control-block-size, 2.25rem);
6
+
7
+ color: var(--tailwind-on-surface, CanvasText);
8
+ font-size: var(--tailwind-font-size, 0.95rem);
9
+ }
10
+
11
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-pagination [data-rc-page] {
12
+ box-sizing: border-box;
13
+ min-block-size: var(--tailwind-control-block-size, 2.25rem);
14
+ padding-inline: 0.625rem;
15
+ border: 1px solid var(--tailwind-border-color, ButtonBorder);
16
+ border-radius: var(--tailwind-radius-md, 0.5rem);
17
+ background: var(--tailwind-surface-raised, ButtonFace);
18
+ color: inherit;
19
+ font: inherit;
20
+ text-decoration: none;
21
+ cursor: pointer;
22
+ }
23
+
24
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-pagination [data-rc-page]:hover {
25
+ background: color-mix(
26
+ in srgb,
27
+ var(--tailwind-primary, Highlight) 8%,
28
+ var(--tailwind-surface-raised, ButtonFace)
29
+ );
30
+ }
31
+
32
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-pagination [data-rc-page]:focus-visible {
33
+ outline: var(--tailwind-focus-ring, 2px solid Highlight);
34
+ outline-offset: var(--tailwind-focus-ring-offset, 2px);
35
+ }
36
+
37
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-pagination [aria-current='page'] {
38
+ border-color: var(--tailwind-primary, Highlight);
39
+ background: var(--tailwind-primary-container, Highlight);
40
+ color: var(--tailwind-on-primary-container, HighlightText);
41
+ font-weight: 600;
42
+ }
43
+
44
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
45
+ rc-pagination
46
+ :is([data-rc-page]:disabled, [data-rc-page][aria-disabled='true']) {
47
+ opacity: var(--tailwind-disabled-opacity, 0.5);
48
+ cursor: default;
49
+ }
50
+ }
@@ -0,0 +1,13 @@
1
+ @layer rc-theme-tailwind.components {
2
+ /*
3
+ * The border, corner, and elevation come from the bridge's --rc-popup-*
4
+ * tokens. A popover sits on the raised surface like a menu, with item-scale
5
+ * padding. Declared on the theme root so popovers rendered inside other
6
+ * shadow roots inherit the same values.
7
+ */
8
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) {
9
+ --rc-popover-background: var(--tailwind-surface-raised, Canvas);
10
+ --rc-popover-padding-block: var(--tailwind-item-padding-block, 0.55rem);
11
+ --rc-popover-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
12
+ }
13
+ }
@@ -0,0 +1,11 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-progress::part(value-display) {
3
+ color: var(--tailwind-on-surface-muted, GrayText);
4
+ font-variant-numeric: tabular-nums;
5
+ }
6
+
7
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-progress {
8
+ --rc-progress-fill-transition-duration: var(--rc-motion-effects-duration-fast, 100ms);
9
+ --rc-progress-fill-transition-easing: var(--rc-motion-effects-easing-fast, ease-out);
10
+ }
11
+ }
@@ -0,0 +1,18 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-range-slider::part(thumb) {
3
+ box-shadow: var(--tailwind-shadow-sm, none);
4
+ transition:
5
+ border-color var(--rc-motion-duration, 160ms) var(--tailwind-motion-easing, ease),
6
+ box-shadow var(--rc-motion-duration, 160ms) var(--tailwind-motion-easing, ease),
7
+ scale var(--rc-motion-duration, 160ms) var(--tailwind-motion-easing, ease);
8
+ }
9
+
10
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-range-slider::part(thumb):hover {
11
+ scale: 1.04;
12
+ }
13
+
14
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-range-slider::part(value-display) {
15
+ color: var(--tailwind-on-surface-muted, GrayText);
16
+ font-variant-numeric: tabular-nums;
17
+ }
18
+ }
@@ -0,0 +1,19 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-scroller {
3
+ /*
4
+ * Capped a little narrower than Material's 1200px: Tailwind runs a smaller
5
+ * base font, so the same pixel width carries more characters per line.
6
+ */
7
+ --rc-scroller-content-max-inline-size: 68rem;
8
+ --rc-scroller-content-padding-inline: var(--tailwind-item-padding-inline, 0.75rem);
9
+ --rc-scroller-content-row-gap: var(--tailwind-item-gap, 0.5rem);
10
+
11
+ --rc-scroller-scrollbar-width: thin;
12
+ --rc-scroller-scrollbar-color: color-mix(
13
+ in srgb,
14
+ var(--tailwind-on-surface-muted, GrayText) 45%,
15
+ transparent
16
+ )
17
+ transparent;
18
+ }
19
+ }
@@ -0,0 +1,30 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-search-bar {
3
+ display: inline-block;
4
+ --rc-search-bar-radius: var(--tailwind-radius-lg, 0.75rem);
5
+ --rc-search-bar-border: var(--rc-border, 1px solid ButtonBorder);
6
+ --rc-search-bar-shadow: var(--tailwind-shadow-sm, none);
7
+ }
8
+
9
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-search-bar::part(root) {
10
+ background: var(--rc-field, Field);
11
+ transition:
12
+ border-color var(--rc-motion-duration, 160ms) var(--tailwind-motion-easing, ease),
13
+ box-shadow var(--rc-motion-duration, 160ms) var(--tailwind-motion-easing, ease);
14
+ }
15
+
16
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-search-bar:hover::part(root) {
17
+ border-color: color-mix(in srgb, var(--rc-accent, Highlight) 55%, var(--rc-border-color));
18
+ }
19
+
20
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-search-bar:focus-within::part(root) {
21
+ outline: var(--rc-focus-ring, 2px solid Highlight);
22
+ outline-offset: var(--rc-focus-ring-offset, 2px);
23
+ }
24
+
25
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind))
26
+ rc-search-bar
27
+ > input[type='search']:focus-visible {
28
+ outline: none;
29
+ }
30
+ }
@@ -0,0 +1,19 @@
1
+ @layer rc-theme-tailwind.components {
2
+ :where(.rc-theme-tailwind, :host(.rc-theme-tailwind)) rc-segmented-button {
3
+ /* One switch turns on the component-owned segmented recipe. */
4
+ --rc-segmented-button-appearance: segmented;
5
+ --rc-segmented-button-border: var(--rc-border);
6
+ --rc-segmented-button-radius: var(--rc-control-radius);
7
+ --rc-segmented-button-divider: 0;
8
+ --rc-segmented-button-bg: var(--tailwind-surface-raised, ButtonFace);
9
+ --rc-segmented-button-color: var(--tailwind-on-surface, ButtonText);
10
+ --rc-segmented-button-selected-bg: var(--rc-highlight, Highlight);
11
+ --rc-segmented-button-selected-color: var(--rc-highlight-text, HighlightText);
12
+ --rc-segmented-button-segment-min-block-size: var(--rc-control-block-size, 2.5rem);
13
+ --rc-segmented-button-segment-padding-inline: var(--rc-control-padding-inline, 0.75rem);
14
+ --rc-segmented-button-segment-gap: 0.5em;
15
+ --rc-segmented-button-focus-ring: var(--rc-focus-ring);
16
+ --rc-segmented-button-focus-ring-offset: -2px;
17
+ --rc-segmented-button-disabled-opacity: var(--rc-disabled-opacity);
18
+ }
19
+ }