@rokkit/themes 1.0.0-next.14 → 1.0.0-next.141

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 (125) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +106 -9
  3. package/build.mjs +235 -0
  4. package/dist/base.css +4934 -0
  5. package/dist/glass.css +1400 -0
  6. package/dist/index.css +10991 -0
  7. package/dist/material.css +1435 -0
  8. package/dist/minimal.css +1389 -0
  9. package/dist/rokkit.css +1829 -0
  10. package/package.json +53 -52
  11. package/src/base/breadcrumbs.css +47 -0
  12. package/src/base/button.css +254 -0
  13. package/src/base/card.css +36 -0
  14. package/src/base/carousel.css +128 -0
  15. package/src/base/connector.css +92 -0
  16. package/src/base/display.css +91 -0
  17. package/src/base/floating-action.css +388 -0
  18. package/src/base/floating-navigation.css +405 -0
  19. package/src/base/graph-paper.css +83 -0
  20. package/src/base/grid.css +93 -0
  21. package/src/base/index.css +40 -0
  22. package/src/base/input.css +238 -0
  23. package/src/base/item.css +78 -0
  24. package/src/base/list.css +179 -0
  25. package/src/base/menu.css +274 -0
  26. package/src/base/pill.css +57 -0
  27. package/src/base/progress.css +34 -0
  28. package/src/base/range.css +121 -0
  29. package/src/base/rating.css +42 -0
  30. package/src/base/reveal.css +37 -0
  31. package/src/base/search-filter.css +132 -0
  32. package/src/base/select.css +411 -0
  33. package/src/base/shine.css +14 -0
  34. package/src/base/stepper.css +140 -0
  35. package/src/base/switch.css +152 -0
  36. package/src/base/table.css +159 -0
  37. package/src/base/tabs.css +171 -0
  38. package/src/base/tilt.css +14 -0
  39. package/src/base/timeline.css +84 -0
  40. package/src/base/toggle.css +138 -0
  41. package/src/base/toolbar.css +337 -0
  42. package/src/base/tree.css +235 -0
  43. package/src/base/upload-progress.css +155 -0
  44. package/src/base/upload-target.css +67 -0
  45. package/src/glass/button.css +153 -0
  46. package/src/glass/card.css +66 -0
  47. package/src/glass/floating-action.css +61 -0
  48. package/src/glass/floating-navigation.css +74 -0
  49. package/src/glass/index.css +23 -0
  50. package/src/glass/input.css +126 -0
  51. package/src/glass/list.css +122 -0
  52. package/src/glass/menu.css +92 -0
  53. package/src/glass/range.css +61 -0
  54. package/src/glass/search-filter.css +49 -0
  55. package/src/glass/select.css +178 -0
  56. package/src/glass/switch.css +28 -0
  57. package/src/glass/table.css +87 -0
  58. package/src/glass/tabs.css +58 -0
  59. package/src/glass/timeline.css +46 -0
  60. package/src/glass/toggle.css +48 -0
  61. package/src/glass/toolbar.css +84 -0
  62. package/src/glass/tree.css +110 -0
  63. package/src/index.css +18 -0
  64. package/src/index.js +25 -2
  65. package/src/material/button.css +157 -0
  66. package/src/material/card.css +61 -0
  67. package/src/material/floating-action.css +60 -0
  68. package/src/material/floating-navigation.css +74 -0
  69. package/src/material/index.css +23 -0
  70. package/src/material/input.css +159 -0
  71. package/src/material/list.css +126 -0
  72. package/src/material/menu.css +92 -0
  73. package/src/material/range.css +62 -0
  74. package/src/material/search-filter.css +49 -0
  75. package/src/material/select.css +170 -0
  76. package/src/material/switch.css +28 -0
  77. package/src/material/table.css +91 -0
  78. package/src/material/tabs.css +62 -0
  79. package/src/material/timeline.css +46 -0
  80. package/src/material/toggle.css +48 -0
  81. package/src/material/toolbar.css +85 -0
  82. package/src/material/tree.css +103 -0
  83. package/src/minimal/button.css +155 -0
  84. package/src/minimal/card.css +61 -0
  85. package/src/minimal/floating-action.css +59 -0
  86. package/src/minimal/floating-navigation.css +70 -0
  87. package/src/minimal/index.css +23 -0
  88. package/src/minimal/input.css +119 -0
  89. package/src/minimal/list.css +126 -0
  90. package/src/minimal/menu.css +88 -0
  91. package/src/minimal/range.css +61 -0
  92. package/src/minimal/search-filter.css +49 -0
  93. package/src/minimal/select.css +170 -0
  94. package/src/minimal/switch.css +28 -0
  95. package/src/minimal/table.css +89 -0
  96. package/src/minimal/tabs.css +68 -0
  97. package/src/minimal/timeline.css +45 -0
  98. package/src/minimal/toggle.css +48 -0
  99. package/src/minimal/toolbar.css +85 -0
  100. package/src/minimal/tree.css +106 -0
  101. package/src/palette.css +7 -0
  102. package/src/rokkit/button.css +254 -0
  103. package/src/rokkit/card.css +64 -0
  104. package/src/rokkit/connector.css +11 -0
  105. package/src/rokkit/floating-action.css +65 -0
  106. package/src/rokkit/floating-navigation.css +83 -0
  107. package/src/rokkit/grid.css +46 -0
  108. package/src/rokkit/index.css +27 -0
  109. package/src/rokkit/input.css +134 -0
  110. package/src/rokkit/list.css +132 -0
  111. package/src/rokkit/menu.css +93 -0
  112. package/src/rokkit/range.css +62 -0
  113. package/src/rokkit/search-filter.css +49 -0
  114. package/src/rokkit/select.css +190 -0
  115. package/src/rokkit/switch.css +28 -0
  116. package/src/rokkit/table.css +89 -0
  117. package/src/rokkit/tabs.css +87 -0
  118. package/src/rokkit/timeline.css +46 -0
  119. package/src/rokkit/toggle.css +48 -0
  120. package/src/rokkit/toolbar.css +84 -0
  121. package/src/rokkit/tree.css +149 -0
  122. package/src/rokkit/upload-progress.css +102 -0
  123. package/src/rokkit/upload-target.css +50 -0
  124. package/src/constants.js +0 -4
  125. package/src/utils.js +0 -88
@@ -0,0 +1,67 @@
1
+ /**
2
+ * UploadTarget - Base Structural Styles
3
+ *
4
+ * Layout: flex centering, dashed border, sizing, transitions.
5
+ * No colors or visual theming - those belong in theme styles.
6
+ */
7
+
8
+ /* =============================================================================
9
+ Drop Zone Container
10
+ ============================================================================= */
11
+
12
+ [data-upload-target] {
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: center;
16
+ justify-content: center;
17
+ gap: 0.75rem;
18
+ min-height: 10rem;
19
+ padding: 2rem;
20
+ border: 2px dashed currentColor;
21
+ border-radius: 0.5rem;
22
+ cursor: pointer;
23
+ transition:
24
+ border-color 150ms ease,
25
+ background-color 150ms ease;
26
+ user-select: none;
27
+ }
28
+
29
+ [data-upload-target]:focus {
30
+ outline: none;
31
+ }
32
+
33
+ [data-upload-target][data-disabled] {
34
+ pointer-events: none;
35
+ opacity: 0.5;
36
+ cursor: not-allowed;
37
+ }
38
+
39
+ /* =============================================================================
40
+ Upload Icon
41
+ ============================================================================= */
42
+
43
+ [data-upload-target] [data-upload-icon] {
44
+ font-size: 2rem;
45
+ }
46
+
47
+ /* =============================================================================
48
+ Browse Button
49
+ ============================================================================= */
50
+
51
+ [data-upload-target] [data-upload-button] {
52
+ padding: 0.375rem 0.75rem;
53
+ border-radius: 0.375rem;
54
+ font-size: 0.875rem;
55
+ font-weight: 500;
56
+ cursor: pointer;
57
+ border: 1px solid currentColor;
58
+ background: transparent;
59
+ transition:
60
+ background-color 150ms ease,
61
+ color 150ms ease;
62
+ }
63
+
64
+ [data-upload-target] [data-upload-button]:disabled {
65
+ pointer-events: none;
66
+ opacity: 0.5;
67
+ }
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Button - Glass Theme Styles
3
+ *
4
+ * Glassmorphism styling with blur and transparency.
5
+ */
6
+
7
+ /* =============================================================================
8
+ Default Style (filled)
9
+ ============================================================================= */
10
+
11
+ [data-style='glass'] [data-button][data-style='default'][data-variant='default'],
12
+ [data-style='glass'] [data-button]:not([data-style])[data-variant='default'],
13
+ [data-style='glass'] [data-button][data-style='default']:not([data-variant]),
14
+ [data-style='glass'] [data-button]:not([data-style]):not([data-variant]) {
15
+ @apply bg-surface-z2/70 border-surface-z5/20 text-surface-z9 border shadow-sm backdrop-blur-md;
16
+ }
17
+
18
+ [data-style='glass'] [data-button][data-style='default'][data-variant='primary'],
19
+ [data-style='glass'] [data-button]:not([data-style])[data-variant='primary'] {
20
+ @apply bg-primary-z5/80 text-on-primary shadow-sm backdrop-blur-md;
21
+ }
22
+
23
+ [data-style='glass'] [data-button][data-style='default'][data-variant='secondary'],
24
+ [data-style='glass'] [data-button]:not([data-style])[data-variant='secondary'] {
25
+ @apply bg-secondary-z4/80 text-on-secondary shadow-sm backdrop-blur-md;
26
+ }
27
+
28
+ [data-style='glass'] [data-button][data-style='default'][data-variant='danger'],
29
+ [data-style='glass'] [data-button]:not([data-style])[data-variant='danger'] {
30
+ @apply bg-danger-z4/80 text-on-danger shadow-sm backdrop-blur-md;
31
+ }
32
+
33
+ /* =============================================================================
34
+ Outline Style
35
+ ============================================================================= */
36
+
37
+ [data-style='glass'] [data-button][data-style='outline'][data-variant='default'],
38
+ [data-style='glass'] [data-button][data-style='outline']:not([data-variant]) {
39
+ @apply border-surface-z5/30 text-surface-z8 border bg-transparent;
40
+ }
41
+
42
+ [data-style='glass'] [data-button][data-style='outline'][data-variant='primary'] {
43
+ @apply border-primary-z4/40 text-primary-z6 border bg-transparent;
44
+ }
45
+
46
+ [data-style='glass'] [data-button][data-style='outline'][data-variant='secondary'] {
47
+ @apply border-secondary-z4/40 text-secondary-z6 border bg-transparent;
48
+ }
49
+
50
+ [data-style='glass'] [data-button][data-style='outline'][data-variant='danger'] {
51
+ @apply border-danger-z4/40 text-danger-z4 border bg-transparent;
52
+ }
53
+
54
+ /* =============================================================================
55
+ Ghost Style
56
+ ============================================================================= */
57
+
58
+ [data-style='glass'] [data-button][data-style='ghost'] {
59
+ @apply border-transparent bg-transparent;
60
+ }
61
+
62
+ [data-style='glass'] [data-button][data-style='ghost'][data-variant='default'],
63
+ [data-style='glass'] [data-button][data-style='ghost']:not([data-variant]) {
64
+ @apply text-surface-z8;
65
+ }
66
+
67
+ [data-style='glass'] [data-button][data-style='ghost'][data-variant='primary'] {
68
+ @apply text-primary-z6;
69
+ }
70
+
71
+ [data-style='glass'] [data-button][data-style='ghost'][data-variant='secondary'] {
72
+ @apply text-secondary-z6;
73
+ }
74
+
75
+ [data-style='glass'] [data-button][data-style='ghost'][data-variant='danger'] {
76
+ @apply text-danger-z4;
77
+ }
78
+
79
+ /* =============================================================================
80
+ Gradient Style
81
+ ============================================================================= */
82
+
83
+ [data-style='glass'] [data-button][data-style='gradient'][data-variant='default'],
84
+ [data-style='glass'] [data-button][data-style='gradient']:not([data-variant]) {
85
+ @apply from-surface-z3/80 to-surface-z1/60 text-surface-z10 bg-gradient-to-br backdrop-blur-md;
86
+ }
87
+
88
+ [data-style='glass'] [data-button][data-style='gradient'][data-variant='primary'] {
89
+ @apply from-primary-z5/80 to-primary-z3/60 text-on-primary bg-gradient-to-br backdrop-blur-md;
90
+ }
91
+
92
+ [data-style='glass'] [data-button][data-style='gradient'][data-variant='secondary'] {
93
+ @apply from-secondary-z5/80 to-secondary-z3/60 text-on-secondary bg-gradient-to-br backdrop-blur-md;
94
+ }
95
+
96
+ [data-style='glass'] [data-button][data-style='gradient'][data-variant='danger'] {
97
+ @apply from-danger-z5/80 to-danger-z3/60 text-on-danger bg-gradient-to-br backdrop-blur-md;
98
+ }
99
+
100
+ [data-style='glass']
101
+ [data-button][data-style='gradient']:hover:not(:disabled):not([data-disabled]) {
102
+ filter: brightness(1.1);
103
+ }
104
+
105
+ /* =============================================================================
106
+ Link Style
107
+ ============================================================================= */
108
+
109
+ [data-style='glass'] [data-button][data-style='link'][data-variant='default'],
110
+ [data-style='glass'] [data-button][data-style='link']:not([data-variant]) {
111
+ @apply text-surface-z8;
112
+ }
113
+
114
+ [data-style='glass'] [data-button][data-style='link'][data-variant='primary'] {
115
+ @apply text-primary-z6;
116
+ }
117
+
118
+ [data-style='glass'] [data-button][data-style='link'][data-variant='secondary'] {
119
+ @apply text-secondary-z6;
120
+ }
121
+
122
+ [data-style='glass'] [data-button][data-style='link'][data-variant='danger'] {
123
+ @apply text-danger-z4;
124
+ }
125
+
126
+ [data-style='glass'] [data-button][data-style='link']:hover:not(:disabled):not([data-disabled]) {
127
+ @apply text-primary-z7;
128
+ }
129
+
130
+ /* =============================================================================
131
+ Hover States
132
+ ============================================================================= */
133
+
134
+ [data-style='glass'] [data-button][data-style='default']:hover:not(:disabled):not([data-disabled]),
135
+ [data-style='glass'] [data-button]:not([data-style]):hover:not(:disabled):not([data-disabled]) {
136
+ @apply shadow-md;
137
+ }
138
+
139
+ [data-style='glass'] [data-button][data-style='outline']:hover:not(:disabled):not([data-disabled]) {
140
+ @apply bg-surface-z2/40;
141
+ }
142
+
143
+ [data-style='glass'] [data-button][data-style='ghost']:hover:not(:disabled):not([data-disabled]) {
144
+ @apply bg-surface-z2/30;
145
+ }
146
+
147
+ /* =============================================================================
148
+ Focus
149
+ ============================================================================= */
150
+
151
+ [data-style='glass'] [data-button]:focus-visible {
152
+ @apply ring-surface-z5/40 ring-2 outline-none;
153
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Card - Glass Theme Styles
3
+ *
4
+ * Glassmorphism styling with blur and transparency.
5
+ */
6
+
7
+ /* =============================================================================
8
+ Base Card Styles
9
+ ============================================================================= */
10
+
11
+ [data-style='glass'] [data-card] {
12
+ @apply bg-surface-z2/60 border-surface-z5/20 text-surface-z9 border shadow-lg backdrop-blur-md;
13
+ }
14
+
15
+ /* Interactive cards (buttons) */
16
+ [data-style='glass'] [data-card][data-card-interactive] {
17
+ cursor: pointer;
18
+ transition:
19
+ transform 0.2s ease,
20
+ box-shadow 0.2s ease,
21
+ background-color 0.2s ease;
22
+ }
23
+
24
+ [data-style='glass'] [data-card][data-card-interactive]:hover {
25
+ @apply bg-surface-z2/80 shadow-xl;
26
+ transform: translateY(-2px);
27
+ }
28
+
29
+ [data-style='glass'] [data-card][data-card-interactive]:active {
30
+ @apply shadow-lg;
31
+ transform: translateY(0);
32
+ }
33
+
34
+ /* =============================================================================
35
+ Card Sections
36
+ ============================================================================= */
37
+
38
+ [data-style='glass'] [data-card-header] {
39
+ @apply border-surface-z5/20 border-b;
40
+ }
41
+
42
+ [data-style='glass'] [data-card-body] {
43
+ @apply text-surface-z8;
44
+ }
45
+
46
+ [data-style='glass'] [data-card-footer] {
47
+ @apply border-surface-z5/20 text-surface-z7 border-t;
48
+ }
49
+
50
+ /* =============================================================================
51
+ Focus States
52
+ ============================================================================= */
53
+
54
+ [data-style='glass'] [data-card][data-card-interactive]:focus-visible {
55
+ @apply ring-surface-z5/40 ring-2 outline-none;
56
+ }
57
+
58
+ /* =============================================================================
59
+ Disabled State
60
+ ============================================================================= */
61
+
62
+ [data-style='glass'] [data-card][data-card-interactive][data-disabled],
63
+ [data-style='glass'] [data-card][data-card-interactive]:disabled {
64
+ @apply cursor-not-allowed opacity-50;
65
+ transform: none;
66
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * FloatingAction - Glass Theme Styles
3
+ *
4
+ * Glassmorphism styling with blur and transparency.
5
+ */
6
+
7
+ /* =============================================================================
8
+ FAB Trigger Button
9
+ ============================================================================= */
10
+
11
+ [data-style='glass'] [data-fab-trigger] {
12
+ @apply bg-primary-z5/80 text-white shadow-lg backdrop-blur-md;
13
+ }
14
+
15
+ [data-style='glass'] [data-fab-trigger]:hover:not(:disabled) {
16
+ @apply bg-primary-z5/90 shadow-xl;
17
+ transform: scale(1.05);
18
+ }
19
+
20
+ [data-style='glass'] [data-fab-trigger]:focus-visible {
21
+ @apply ring-surface-z5/40 ring-2 outline-none;
22
+ }
23
+
24
+ [data-style='glass'] [data-fab][data-open='true'] [data-fab-trigger] {
25
+ @apply bg-surface-z6/80;
26
+ transform: rotate(45deg);
27
+ }
28
+
29
+ /* =============================================================================
30
+ FAB Items
31
+ ============================================================================= */
32
+
33
+ [data-style='glass'] [data-fab-item] {
34
+ @apply text-surface-z9 bg-surface-z1/70 border-surface-z5/20 border shadow-md backdrop-blur-md;
35
+ }
36
+
37
+ [data-style='glass'] [data-fab-item]:hover:not(:disabled) {
38
+ @apply text-surface-z10 bg-surface-z2/80 shadow-lg;
39
+ }
40
+
41
+ [data-style='glass'] [data-fab-item]:focus-visible {
42
+ @apply ring-surface-z5/40 ring-2 outline-none;
43
+ }
44
+
45
+ /* Item icon */
46
+ [data-style='glass'] [data-fab-item] [data-fab-item-icon] {
47
+ @apply text-primary-z6;
48
+ }
49
+
50
+ [data-style='glass'] [data-fab-item]:hover:not(:disabled) [data-fab-item-icon] {
51
+ @apply text-primary-z7;
52
+ }
53
+
54
+ /* =============================================================================
55
+ Backdrop
56
+ ============================================================================= */
57
+
58
+ [data-style='glass'] [data-fab-backdrop] {
59
+ background: rgba(0, 0, 0, 0.3);
60
+ backdrop-filter: blur(4px);
61
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * FloatingNavigation - Glass Theme Styles
3
+ *
4
+ * Glassmorphism styling with blur and transparency.
5
+ */
6
+
7
+ /* =============================================================================
8
+ Container
9
+ ============================================================================= */
10
+
11
+ [data-style='glass'] [data-floating-nav] {
12
+ @apply bg-surface-z1/70 border-surface-z5/20 border shadow-xl backdrop-blur-xl;
13
+ }
14
+
15
+ /* =============================================================================
16
+ Header
17
+ ============================================================================= */
18
+
19
+ [data-style='glass'] [data-floating-nav-title] {
20
+ @apply text-surface-z6;
21
+ }
22
+
23
+ [data-style='glass'] [data-floating-nav-pin] {
24
+ @apply text-surface-z6;
25
+ }
26
+
27
+ [data-style='glass'] [data-floating-nav-pin]:hover {
28
+ @apply text-primary-z6;
29
+ }
30
+
31
+ [data-style='glass'] [data-floating-nav-pin][aria-pressed='true'] {
32
+ @apply text-primary-z7;
33
+ }
34
+
35
+ /* =============================================================================
36
+ Items
37
+ ============================================================================= */
38
+
39
+ [data-style='glass'] [data-floating-nav-item] {
40
+ @apply text-surface-z8;
41
+ }
42
+
43
+ [data-style='glass'] [data-floating-nav-item]:hover {
44
+ @apply text-surface-z10 bg-surface-z2/50;
45
+ }
46
+
47
+ [data-style='glass'] [data-floating-nav-item][data-active] {
48
+ @apply text-primary-z7 bg-primary-z5/10;
49
+ }
50
+
51
+ [data-style='glass'] [data-floating-nav-item]:focus-visible {
52
+ @apply ring-surface-z5/40 ring-2 outline-none;
53
+ }
54
+
55
+ /* Icon */
56
+ [data-style='glass'] [data-floating-nav-icon] {
57
+ @apply text-surface-z6;
58
+ }
59
+
60
+ [data-style='glass'] [data-floating-nav-item]:hover [data-floating-nav-icon] {
61
+ @apply text-primary-z6;
62
+ }
63
+
64
+ [data-style='glass'] [data-floating-nav-item][data-active] [data-floating-nav-icon] {
65
+ @apply text-primary-z7;
66
+ }
67
+
68
+ /* =============================================================================
69
+ Active Indicator
70
+ ============================================================================= */
71
+
72
+ [data-style='glass'] [data-floating-nav-indicator] {
73
+ @apply bg-primary-z5/80;
74
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @rokkit/themes - Glass Theme
3
+ *
4
+ * Glassmorphism styling with blur, transparency, and subtle borders.
5
+ * Use with data-style="glass" wrapper.
6
+ */
7
+
8
+ @import './button.css';
9
+ @import './input.css';
10
+ @import './toolbar.css';
11
+ @import './tabs.css';
12
+ @import './toggle.css';
13
+ @import './switch.css';
14
+ @import './list.css';
15
+ @import './tree.css';
16
+ @import './select.css';
17
+ @import './menu.css';
18
+ @import './floating-action.css';
19
+ @import './table.css';
20
+ @import './search-filter.css';
21
+ @import './range.css';
22
+ @import './timeline.css';
23
+ @import './floating-navigation.css';
@@ -0,0 +1,126 @@
1
+ /* Glass Theme - Form field and input styles
2
+ * Glassmorphism inputs with blur, transparency, and subtle borders.
3
+ */
4
+
5
+ /* Field root: text color, spacing */
6
+ [data-style='glass'] [data-field-root] {
7
+ @apply text-surface-z9 gap-1 rounded-md transition-all;
8
+ }
9
+
10
+ /* Disabled state */
11
+ [data-style='glass'] [data-field-root][data-field-disabled] [data-input-root] {
12
+ @apply cursor-not-allowed opacity-50;
13
+ }
14
+
15
+ /* Labels */
16
+ [data-style='glass'] [data-field] > label {
17
+ @apply text-surface-z7;
18
+ }
19
+
20
+ [data-style='glass'] [data-form-root] label {
21
+ @apply text-surface-z7;
22
+ }
23
+
24
+ /* Info field value */
25
+ [data-style='glass'] [data-field-info] {
26
+ @apply text-primary-z6 font-medium;
27
+ }
28
+
29
+ /* Separator */
30
+ [data-style='glass'] [data-form-separator] {
31
+ @apply border-surface-z5/20;
32
+ }
33
+
34
+ /* Input root: glass container — p-0.5 gives a small gap between border and content.
35
+ * No backdrop-blur here: it creates a stacking context that traps select dropdowns.
36
+ * The semi-transparent background provides the frosted glass look. */
37
+ [data-style='glass'] [data-input-root] {
38
+ @apply bg-surface-z1/70 border-surface-z5/20 flex items-center rounded-md border p-0.5 transition-all;
39
+ }
40
+
41
+ [data-style='glass'] [data-input-root]:hover {
42
+ @apply border-surface-z5/30;
43
+ }
44
+
45
+ [data-style='glass'] [data-input-root]:focus-within {
46
+ @apply border-primary-z5/50 bg-surface-z1/70;
47
+ }
48
+
49
+ /* Standard inputs inside wrapper */
50
+ [data-style='glass'] [data-input-root] input:not([type='checkbox'], [type='radio'], [type='color']),
51
+ [data-style='glass'] [data-input-root] select {
52
+ @apply text-surface-z8 rounded-md border-none bg-transparent px-3 focus:outline-none;
53
+ font-size: 0.875rem;
54
+ height: 2.25rem;
55
+ }
56
+
57
+ [data-style='glass'] [data-input-root] textarea {
58
+ @apply text-surface-z8 rounded-md border-none bg-transparent px-3 py-2 focus:outline-none;
59
+ font-size: 0.875rem;
60
+ }
61
+
62
+ /* Select inside input-root: suppress standalone glass select styles */
63
+ [data-style='glass'] [data-input-root] [data-select-trigger] {
64
+ @apply text-surface-z8 rounded-md border-none bg-transparent shadow-none ring-0 focus:outline-none;
65
+ background-image: none;
66
+ backdrop-filter: none;
67
+ }
68
+
69
+ /* Suppress standalone select open-state when inside input-root */
70
+ [data-style='glass'] [data-input-root] [data-select][data-open='true'] [data-select-trigger] {
71
+ @apply border-none shadow-none ring-0;
72
+ }
73
+
74
+ /* Placeholders */
75
+ [data-style='glass'] [data-input-root] input::placeholder,
76
+ [data-style='glass'] [data-input-root] textarea::placeholder {
77
+ @apply text-surface-z5;
78
+ }
79
+
80
+ /* Checkbox field */
81
+ [data-style='glass'] [data-field-type='checkbox'] [data-field] {
82
+ @apply flex items-center leading-loose;
83
+ }
84
+
85
+ /* Checkbox icon */
86
+ [data-style='glass'] [data-checkbox-icon] {
87
+ @apply text-surface-z5 cursor-pointer rounded text-lg transition-colors;
88
+ }
89
+
90
+ [data-style='glass'] [data-checkbox-icon]:focus-visible {
91
+ @apply outline-primary-z4 outline-2 outline-offset-2;
92
+ }
93
+
94
+ [data-style='glass']
95
+ [data-checkbox-root][data-variant='custom']:has(input:checked)
96
+ [data-checkbox-icon] {
97
+ @apply text-primary-z6;
98
+ }
99
+
100
+ [data-style='glass'] [data-field] textarea {
101
+ @apply resize-vertical min-h-20 py-2;
102
+ }
103
+
104
+ /* Color input */
105
+ [data-style='glass'] [data-field-type='color'] [data-input-root] {
106
+ @apply overflow-hidden;
107
+ }
108
+
109
+ [data-style='glass'] [data-field-type='color'] input[type='color'] {
110
+ @apply flex min-h-11 flex-1 rounded-md bg-transparent focus:outline-none;
111
+ }
112
+
113
+ /* Description and message */
114
+ [data-style='glass'] [data-description],
115
+ [data-style='glass'] [data-message] {
116
+ @apply text-surface-z6;
117
+ }
118
+
119
+ [data-style='glass'] [data-message] {
120
+ @apply rounded-md px-2 py-1;
121
+ }
122
+
123
+ /* Error state */
124
+ [data-style='glass'] [data-field-root][data-field-state='fail'] [data-input-root] {
125
+ @apply border-danger-z5/50;
126
+ }
@@ -0,0 +1,122 @@
1
+ /**
2
+ * List - Glass Theme Styles
3
+ *
4
+ * Glassmorphism styling with blur and transparency.
5
+ */
6
+
7
+ /* =============================================================================
8
+ List Container
9
+ ============================================================================= */
10
+
11
+ [data-style='glass'] [data-list]:focus-within {
12
+ @apply ring-surface-z5/40 rounded ring-1;
13
+ }
14
+
15
+ /* =============================================================================
16
+ List Items
17
+ ============================================================================= */
18
+
19
+ [data-style='glass'] [data-list] [data-list-item] {
20
+ @apply text-surface-z8;
21
+ }
22
+
23
+ [data-style='glass'] [data-list] a[data-list-item],
24
+ [data-style='glass'] [data-list] button[data-list-item] {
25
+ @apply text-surface-z7;
26
+ }
27
+
28
+ /* Hover and focus (keyboard navigation) */
29
+ [data-style='glass'] [data-list] [data-list-item]:hover:not(:disabled):not([data-disabled='true']),
30
+ [data-style='glass'] [data-list] [data-list-item]:focus:not(:disabled):not([data-disabled='true']) {
31
+ @apply text-surface-z10 bg-surface-z2/15 outline-none;
32
+ }
33
+
34
+ /* Active state — muted when list not focused */
35
+ [data-style='glass'] [data-list] [data-list-item][data-active='true'] {
36
+ @apply bg-surface-z2/15 text-primary-z9;
37
+ }
38
+
39
+ /* Active state — full highlight when list has focus */
40
+ [data-style='glass'] [data-list]:focus-within [data-list-item][data-active='true'] {
41
+ @apply bg-primary-z5/30 text-primary-z9;
42
+ }
43
+
44
+ /* Active + hover/focus */
45
+ [data-style='glass'] [data-list] [data-list-item][data-active='true']:hover:not(:disabled),
46
+ [data-style='glass'] [data-list] [data-list-item][data-active='true']:focus:not(:disabled) {
47
+ @apply bg-primary-z5/40;
48
+ }
49
+
50
+ /* =============================================================================
51
+ Item Elements
52
+ ============================================================================= */
53
+
54
+ [data-style='glass'] [data-list] [data-list-item] [data-item-icon] {
55
+ @apply text-surface-z5;
56
+ }
57
+
58
+ [data-style='glass'] [data-list] [data-list-item]:hover:not(:disabled) [data-item-icon],
59
+ [data-style='glass'] [data-list] [data-list-item]:focus:not(:disabled) [data-item-icon] {
60
+ @apply text-surface-z7;
61
+ }
62
+
63
+ [data-style='glass'] [data-list] [data-list-item][data-active='true'] [data-item-icon] {
64
+ @apply text-primary-z6;
65
+ }
66
+
67
+ [data-style='glass'] [data-list] [data-list-item] [data-item-description] {
68
+ @apply text-surface-z5;
69
+ }
70
+
71
+ [data-style='glass'] [data-list] [data-list-item][data-active='true'] [data-item-description] {
72
+ @apply text-primary-z7;
73
+ }
74
+
75
+ [data-style='glass'] [data-list] [data-list-item] [data-item-badge] {
76
+ @apply text-surface-z6 bg-surface-z2/15;
77
+ }
78
+
79
+ [data-style='glass'] [data-list] [data-list-item][data-active='true'] [data-item-badge] {
80
+ @apply text-primary-z8 bg-primary-z5/25;
81
+ }
82
+
83
+ /* =============================================================================
84
+ Groups
85
+ ============================================================================= */
86
+
87
+ [data-style='glass'] [data-list] [data-list-group] {
88
+ @apply text-surface-z6;
89
+ }
90
+
91
+ [data-style='glass'] [data-list] [data-list-group]:hover:not(:disabled),
92
+ [data-style='glass'] [data-list] [data-list-group]:focus:not(:disabled) {
93
+ @apply bg-surface-z3/25 text-surface-z8;
94
+ }
95
+
96
+ /* =============================================================================
97
+ Separator
98
+ ============================================================================= */
99
+
100
+ [data-style='glass'] [data-list] [data-list-separator] {
101
+ @apply bg-surface-z5/20;
102
+ }
103
+
104
+ /* =============================================================================
105
+ Multi-Selection
106
+ ============================================================================= */
107
+
108
+ [data-style='glass'] [data-list] [data-list-item][data-selected='true'] {
109
+ @apply bg-primary-z5/20 text-primary-z9;
110
+ }
111
+
112
+ [data-style='glass'] [data-list]:focus-within [data-list-item][data-selected='true'] {
113
+ @apply bg-primary-z5/30;
114
+ }
115
+
116
+ [data-style='glass'] [data-list] [data-list-item][data-selected='true']:hover:not(:disabled) {
117
+ @apply bg-primary-z5/40;
118
+ }
119
+
120
+ [data-style='glass'] [data-list] [data-list-item][data-selected='true'] [data-item-icon] {
121
+ @apply text-primary-z6;
122
+ }