@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,91 @@
1
+ /* Base structural styles for display components */
2
+
3
+ /* Display section: key-value pairs */
4
+ [data-display-section] {
5
+ @apply flex flex-col gap-2;
6
+ }
7
+
8
+ [data-display-title] {
9
+ @apply text-on-surface text-sm font-semibold;
10
+ }
11
+
12
+ [data-display-field] {
13
+ @apply flex items-baseline justify-between gap-4;
14
+ }
15
+
16
+ [data-display-label] {
17
+ @apply text-on-surface/70 shrink-0 text-sm;
18
+ }
19
+
20
+ [data-display-value] {
21
+ @apply text-on-surface text-right text-sm;
22
+ }
23
+
24
+ /* Badge format: pill style */
25
+ [data-display-value][data-format='badge'] {
26
+ @apply bg-surface-z2 rounded-full px-2 py-0.5 text-xs font-medium;
27
+ }
28
+
29
+ /* Boolean format */
30
+ [data-display-value][data-format='boolean'] {
31
+ @apply font-mono;
32
+ }
33
+
34
+ /* Display table wrapper */
35
+ [data-display-table] {
36
+ @apply flex flex-col gap-2;
37
+ }
38
+
39
+ /* Display card grid */
40
+ [data-display-cards] {
41
+ @apply flex flex-col gap-2;
42
+ }
43
+
44
+ [data-display-grid] {
45
+ @apply grid grid-cols-1 gap-3;
46
+ }
47
+
48
+ @media (min-width: 640px) {
49
+ [data-display-grid] {
50
+ @apply grid-cols-2;
51
+ }
52
+ }
53
+
54
+ @media (min-width: 1024px) {
55
+ [data-display-grid] {
56
+ @apply grid-cols-3;
57
+ }
58
+ }
59
+
60
+ [data-display-card] {
61
+ @apply border-surface-z2 bg-surface flex flex-col gap-1 rounded border p-3;
62
+ }
63
+
64
+ [data-display-card][data-selected] {
65
+ @apply border-primary ring-primary ring-1;
66
+ }
67
+
68
+ [data-selectable] [data-display-card] {
69
+ @apply cursor-pointer transition-colors;
70
+ }
71
+
72
+ [data-selectable] [data-display-card]:hover {
73
+ @apply bg-surface-z1;
74
+ }
75
+
76
+ /* Display list */
77
+ [data-display-list] {
78
+ @apply flex flex-col gap-2;
79
+ }
80
+
81
+ [data-display-list] ul {
82
+ @apply flex flex-col gap-1;
83
+ }
84
+
85
+ [data-display-list-item] {
86
+ @apply border-surface-z2 flex items-baseline gap-4 border-b py-1 last:border-0;
87
+ }
88
+
89
+ [data-display-list-item] [data-display-field] {
90
+ @apply flex gap-1;
91
+ }
@@ -0,0 +1,388 @@
1
+ /**
2
+ * FloatingAction - Base Structural Styles
3
+ *
4
+ * These styles provide layout, positioning, and basic structure.
5
+ * No colors, shadows, or visual theming - those belong in theme styles.
6
+ */
7
+
8
+ /* =============================================================================
9
+ FAB Container
10
+ ============================================================================= */
11
+
12
+ [data-fab] {
13
+ position: fixed;
14
+ z-index: 50;
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: center;
18
+ background: transparent;
19
+ /* Ensure the container only sizes to the trigger button */
20
+ width: fit-content;
21
+ height: fit-content;
22
+ }
23
+
24
+ /* Contained mode - position relative to parent instead of viewport */
25
+ [data-fab][data-contained] {
26
+ position: absolute;
27
+ }
28
+
29
+ [data-fab][data-contained] [data-fab-backdrop] {
30
+ position: absolute;
31
+ }
32
+
33
+ /* Position variants */
34
+ [data-fab][data-position='bottom-right'] {
35
+ bottom: 1.5rem;
36
+ right: 1.5rem;
37
+ }
38
+
39
+ [data-fab][data-position='bottom-left'] {
40
+ bottom: 1.5rem;
41
+ left: 1.5rem;
42
+ }
43
+
44
+ [data-fab][data-position='top-right'] {
45
+ top: 1.5rem;
46
+ right: 1.5rem;
47
+ }
48
+
49
+ [data-fab][data-position='top-left'] {
50
+ top: 1.5rem;
51
+ left: 1.5rem;
52
+ }
53
+
54
+ [data-fab][data-disabled='true'] {
55
+ pointer-events: none;
56
+ opacity: 0.5;
57
+ }
58
+
59
+ /* =============================================================================
60
+ FAB Trigger Button
61
+ ============================================================================= */
62
+
63
+ [data-fab-trigger] {
64
+ position: relative;
65
+ z-index: 1;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ border-radius: 9999px;
70
+ border: none;
71
+ cursor: pointer;
72
+ transition:
73
+ transform 150ms ease,
74
+ background-color 150ms ease,
75
+ box-shadow 150ms ease;
76
+ }
77
+
78
+ [data-fab-trigger]:disabled {
79
+ cursor: not-allowed;
80
+ }
81
+
82
+ [data-fab-trigger]:focus-visible {
83
+ outline: 2px solid currentColor;
84
+ outline-offset: 2px;
85
+ }
86
+
87
+ /* Size variants for trigger */
88
+ [data-fab][data-size='sm'] [data-fab-trigger] {
89
+ width: 3rem;
90
+ height: 3rem;
91
+ font-size: 1.25rem;
92
+ }
93
+
94
+ [data-fab][data-size='md'] [data-fab-trigger],
95
+ [data-fab]:not([data-size]) [data-fab-trigger] {
96
+ width: 3.5rem;
97
+ height: 3.5rem;
98
+ font-size: 1.5rem;
99
+ }
100
+
101
+ [data-fab][data-size='lg'] [data-fab-trigger] {
102
+ width: 4rem;
103
+ height: 4rem;
104
+ font-size: 1.75rem;
105
+ }
106
+
107
+ /* Trigger rotation when open */
108
+ [data-fab][data-open='true'] [data-fab-trigger] {
109
+ transform: rotate(45deg);
110
+ }
111
+
112
+ /* Icon inside trigger */
113
+ [data-fab-icon] {
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ transition: transform 150ms ease;
118
+ }
119
+
120
+ /* Counter-rotate icon when trigger rotates (if using plus icon) */
121
+ [data-fab][data-open='true'] [data-fab-icon] {
122
+ transform: rotate(-45deg);
123
+ }
124
+
125
+ /* =============================================================================
126
+ FAB Menu (Action Items Container)
127
+ ============================================================================= */
128
+
129
+ [data-fab-menu] {
130
+ position: absolute;
131
+ display: flex;
132
+ gap: 0.75rem;
133
+ pointer-events: none;
134
+ }
135
+
136
+ [data-fab][data-open='true'] [data-fab-menu] {
137
+ pointer-events: auto;
138
+ }
139
+
140
+ /* Vertical expansion (default) */
141
+ [data-fab][data-expand='vertical'] [data-fab-menu],
142
+ [data-fab]:not([data-expand]) [data-fab-menu] {
143
+ flex-direction: column-reverse;
144
+ align-items: center;
145
+ }
146
+
147
+ /* Item alignment for vertical expansion - align relative to trigger button */
148
+ [data-fab][data-expand='vertical'][data-item-align='start'] [data-fab-menu],
149
+ [data-fab]:not([data-expand])[data-item-align='start'] [data-fab-menu] {
150
+ align-items: flex-start;
151
+ left: 0;
152
+ }
153
+
154
+ [data-fab][data-expand='vertical'][data-item-align='center'] [data-fab-menu],
155
+ [data-fab]:not([data-expand])[data-item-align='center'] [data-fab-menu],
156
+ [data-fab][data-expand='vertical']:not([data-item-align]) [data-fab-menu],
157
+ [data-fab]:not([data-expand]):not([data-item-align]) [data-fab-menu] {
158
+ left: 50%;
159
+ transform: translateX(-50%);
160
+ }
161
+
162
+ [data-fab][data-expand='vertical'][data-item-align='end'] [data-fab-menu],
163
+ [data-fab]:not([data-expand])[data-item-align='end'] [data-fab-menu] {
164
+ align-items: flex-end;
165
+ right: 0;
166
+ }
167
+
168
+ /* Position menu based on FAB position */
169
+ [data-fab][data-position='bottom-right'][data-expand='vertical'] [data-fab-menu],
170
+ [data-fab][data-position='bottom-right']:not([data-expand]) [data-fab-menu],
171
+ [data-fab][data-position='bottom-left'][data-expand='vertical'] [data-fab-menu],
172
+ [data-fab][data-position='bottom-left']:not([data-expand]) [data-fab-menu] {
173
+ bottom: calc(100% + 0.75rem);
174
+ }
175
+
176
+ [data-fab][data-position='top-right'][data-expand='vertical'] [data-fab-menu],
177
+ [data-fab][data-position='top-right']:not([data-expand]) [data-fab-menu],
178
+ [data-fab][data-position='top-left'][data-expand='vertical'] [data-fab-menu],
179
+ [data-fab][data-position='top-left']:not([data-expand]) [data-fab-menu] {
180
+ top: calc(100% + 0.75rem);
181
+ flex-direction: column;
182
+ }
183
+
184
+ /* Horizontal expansion */
185
+ [data-fab][data-expand='horizontal'] [data-fab-menu] {
186
+ flex-direction: row;
187
+ align-items: center;
188
+ }
189
+
190
+ /* Item alignment for horizontal expansion */
191
+ [data-fab][data-expand='horizontal'][data-item-align='start'] [data-fab-menu] {
192
+ align-items: flex-start;
193
+ }
194
+
195
+ [data-fab][data-expand='horizontal'][data-item-align='end'] [data-fab-menu] {
196
+ align-items: flex-end;
197
+ }
198
+
199
+ [data-fab][data-position='bottom-right'][data-expand='horizontal'] [data-fab-menu],
200
+ [data-fab][data-position='top-right'][data-expand='horizontal'] [data-fab-menu] {
201
+ right: calc(100% + 0.75rem);
202
+ flex-direction: row-reverse;
203
+ }
204
+
205
+ [data-fab][data-position='bottom-left'][data-expand='horizontal'] [data-fab-menu],
206
+ [data-fab][data-position='top-left'][data-expand='horizontal'] [data-fab-menu] {
207
+ left: calc(100% + 0.75rem);
208
+ }
209
+
210
+ /* Radial expansion */
211
+ [data-fab][data-expand='radial'] [data-fab-menu] {
212
+ position: absolute;
213
+ top: 50%;
214
+ left: 50%;
215
+ transform: translate(-50%, -50%);
216
+ width: 0;
217
+ height: 0;
218
+ }
219
+
220
+ /* =============================================================================
221
+ FAB Items
222
+ ============================================================================= */
223
+
224
+ [data-fab-item] {
225
+ display: flex;
226
+ align-items: center;
227
+ gap: 0.5rem;
228
+ border-radius: 9999px;
229
+ border: none;
230
+ cursor: pointer;
231
+ white-space: nowrap;
232
+ transition:
233
+ transform 200ms ease,
234
+ opacity 200ms ease,
235
+ background-color 150ms ease;
236
+ transition-delay: var(--fab-delay, 0ms);
237
+ }
238
+
239
+ /* Hidden state (before animation) */
240
+ [data-fab]:not([data-open='true']) [data-fab-item] {
241
+ opacity: 0;
242
+ transform: scale(0.5);
243
+ pointer-events: none;
244
+ }
245
+
246
+ /* Visible state (after animation) */
247
+ [data-fab][data-open='true'] [data-fab-item] {
248
+ opacity: 1;
249
+ transform: scale(1);
250
+ }
251
+
252
+ [data-fab-item][data-disabled='true'],
253
+ [data-fab-item]:disabled {
254
+ pointer-events: none;
255
+ opacity: 0.5;
256
+ cursor: not-allowed;
257
+ }
258
+
259
+ [data-fab-item]:focus-visible {
260
+ outline: 2px solid currentColor;
261
+ outline-offset: 2px;
262
+ }
263
+
264
+ /* Size variants for items */
265
+ [data-fab][data-size='sm'] [data-fab-item] {
266
+ min-width: 2.5rem;
267
+ height: 2.5rem;
268
+ padding: 0 0.75rem;
269
+ font-size: 0.875rem;
270
+ }
271
+
272
+ [data-fab][data-size='md'] [data-fab-item],
273
+ [data-fab]:not([data-size]) [data-fab-item] {
274
+ min-width: 3rem;
275
+ height: 3rem;
276
+ padding: 0 1rem;
277
+ font-size: 0.875rem;
278
+ }
279
+
280
+ [data-fab][data-size='lg'] [data-fab-item] {
281
+ min-width: 3.5rem;
282
+ height: 3.5rem;
283
+ padding: 0 1.25rem;
284
+ font-size: 1rem;
285
+ }
286
+
287
+ /* Icon-only items (no label) */
288
+ [data-fab-item]:not(:has([data-fab-item-label])) {
289
+ padding: 0;
290
+ aspect-ratio: 1;
291
+ justify-content: center;
292
+ }
293
+
294
+ [data-fab-item-icon] {
295
+ display: flex;
296
+ align-items: center;
297
+ justify-content: center;
298
+ flex-shrink: 0;
299
+ }
300
+
301
+ [data-fab-item-label] {
302
+ flex: 1;
303
+ }
304
+
305
+ /* =============================================================================
306
+ Radial Expansion Positioning
307
+ ============================================================================= */
308
+
309
+ [data-fab][data-expand='radial'][data-open='true'] [data-fab-item] {
310
+ position: absolute;
311
+ }
312
+
313
+ /* Radial positions for bottom-right (expanding up-left arc) */
314
+ [data-fab][data-expand='radial'][data-position='bottom-right'][data-open='true']
315
+ [data-fab-item]:nth-child(1) {
316
+ transform: translate(-120%, -20%);
317
+ }
318
+ [data-fab][data-expand='radial'][data-position='bottom-right'][data-open='true']
319
+ [data-fab-item]:nth-child(2) {
320
+ transform: translate(-85%, -85%);
321
+ }
322
+ [data-fab][data-expand='radial'][data-position='bottom-right'][data-open='true']
323
+ [data-fab-item]:nth-child(3) {
324
+ transform: translate(-20%, -120%);
325
+ }
326
+ [data-fab][data-expand='radial'][data-position='bottom-right'][data-open='true']
327
+ [data-fab-item]:nth-child(4) {
328
+ transform: translate(45%, -120%);
329
+ }
330
+ [data-fab][data-expand='radial'][data-position='bottom-right'][data-open='true']
331
+ [data-fab-item]:nth-child(5) {
332
+ transform: translate(-120%, 45%);
333
+ }
334
+
335
+ /* Radial positions for bottom-left (expanding up-right arc) */
336
+ [data-fab][data-expand='radial'][data-position='bottom-left'][data-open='true']
337
+ [data-fab-item]:nth-child(1) {
338
+ transform: translate(20%, -120%);
339
+ }
340
+ [data-fab][data-expand='radial'][data-position='bottom-left'][data-open='true']
341
+ [data-fab-item]:nth-child(2) {
342
+ transform: translate(85%, -85%);
343
+ }
344
+ [data-fab][data-expand='radial'][data-position='bottom-left'][data-open='true']
345
+ [data-fab-item]:nth-child(3) {
346
+ transform: translate(120%, -20%);
347
+ }
348
+ [data-fab][data-expand='radial'][data-position='bottom-left'][data-open='true']
349
+ [data-fab-item]:nth-child(4) {
350
+ transform: translate(-45%, -120%);
351
+ }
352
+ [data-fab][data-expand='radial'][data-position='bottom-left'][data-open='true']
353
+ [data-fab-item]:nth-child(5) {
354
+ transform: translate(120%, 45%);
355
+ }
356
+
357
+ /* =============================================================================
358
+ Backdrop
359
+ ============================================================================= */
360
+
361
+ [data-fab-backdrop] {
362
+ position: fixed;
363
+ inset: 0;
364
+ z-index: -1;
365
+ background: transparent;
366
+ }
367
+
368
+ /* =============================================================================
369
+ Custom Snippet Wrapper
370
+ ============================================================================= */
371
+
372
+ [data-fab-item-custom] {
373
+ display: contents;
374
+ }
375
+
376
+ [data-fab-item-custom] > button {
377
+ display: flex;
378
+ align-items: center;
379
+ gap: 0.5rem;
380
+ border-radius: 9999px;
381
+ border: none;
382
+ cursor: pointer;
383
+ white-space: nowrap;
384
+ transition:
385
+ transform 200ms ease,
386
+ opacity 200ms ease,
387
+ background-color 150ms ease;
388
+ }