@rokkit/themes 1.0.0-next.145 → 1.0.0-next.146

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 (91) hide show
  1. package/build.mjs +3 -2
  2. package/dist/base.css +349 -1
  3. package/dist/glass.css +276 -17
  4. package/dist/grada-ui.css +1681 -0
  5. package/dist/index.css +3596 -245
  6. package/dist/material.css +377 -61
  7. package/dist/minimal.css +522 -102
  8. package/dist/rokkit.css +327 -1
  9. package/package.json +5 -2
  10. package/src/base/alert-list.css +91 -0
  11. package/src/base/dropdown.css +166 -0
  12. package/src/base/index.css +4 -0
  13. package/src/base/message.css +62 -0
  14. package/src/base/status-list.css +19 -0
  15. package/src/base/toc.css +3 -1
  16. package/src/base/toolbar.css +4 -0
  17. package/src/glass/card.css +37 -0
  18. package/src/glass/dropdown.css +50 -0
  19. package/src/glass/index.css +4 -0
  20. package/src/glass/list.css +11 -11
  21. package/src/glass/menu.css +6 -6
  22. package/src/glass/message.css +36 -0
  23. package/src/glass/status-list.css +66 -0
  24. package/src/grada-ui/button.css +197 -0
  25. package/src/grada-ui/card.css +92 -0
  26. package/src/grada-ui/dropdown.css +53 -0
  27. package/src/grada-ui/floating-action.css +58 -0
  28. package/src/grada-ui/floating-navigation.css +64 -0
  29. package/src/grada-ui/index.css +54 -0
  30. package/src/grada-ui/input.css +155 -0
  31. package/src/grada-ui/list.css +109 -0
  32. package/src/grada-ui/menu.css +81 -0
  33. package/src/grada-ui/message.css +48 -0
  34. package/src/grada-ui/range.css +54 -0
  35. package/src/grada-ui/search-filter.css +42 -0
  36. package/src/grada-ui/select.css +168 -0
  37. package/src/grada-ui/status-list.css +61 -0
  38. package/src/grada-ui/switch.css +31 -0
  39. package/src/grada-ui/table.css +81 -0
  40. package/src/grada-ui/tabs.css +57 -0
  41. package/src/grada-ui/timeline.css +36 -0
  42. package/src/grada-ui/toc.css +24 -0
  43. package/src/grada-ui/toggle.css +42 -0
  44. package/src/grada-ui/toolbar.css +81 -0
  45. package/src/grada-ui/tree.css +93 -0
  46. package/src/material/button.css +4 -4
  47. package/src/material/card.css +38 -1
  48. package/src/material/dropdown.css +50 -0
  49. package/src/material/floating-action.css +9 -5
  50. package/src/material/floating-navigation.css +4 -4
  51. package/src/material/index.css +4 -0
  52. package/src/material/list.css +11 -11
  53. package/src/material/menu.css +6 -6
  54. package/src/material/message.css +36 -0
  55. package/src/material/range.css +1 -1
  56. package/src/material/search-filter.css +1 -1
  57. package/src/material/select.css +16 -11
  58. package/src/material/status-list.css +66 -0
  59. package/src/material/switch.css +2 -2
  60. package/src/material/table.css +3 -3
  61. package/src/material/tabs.css +23 -0
  62. package/src/material/toggle.css +3 -3
  63. package/src/material/toolbar.css +7 -7
  64. package/src/material/tree.css +24 -3
  65. package/src/minimal/button.css +6 -6
  66. package/src/minimal/card.css +38 -1
  67. package/src/minimal/dropdown.css +50 -0
  68. package/src/minimal/floating-action.css +9 -5
  69. package/src/minimal/floating-navigation.css +4 -4
  70. package/src/minimal/index.css +4 -0
  71. package/src/minimal/input.css +66 -15
  72. package/src/minimal/list.css +8 -8
  73. package/src/minimal/menu.css +6 -6
  74. package/src/minimal/message.css +36 -0
  75. package/src/minimal/range.css +1 -1
  76. package/src/minimal/search-filter.css +1 -1
  77. package/src/minimal/select.css +11 -11
  78. package/src/minimal/status-list.css +66 -0
  79. package/src/minimal/switch.css +2 -2
  80. package/src/minimal/table.css +3 -3
  81. package/src/minimal/tabs.css +91 -10
  82. package/src/minimal/toggle.css +3 -3
  83. package/src/minimal/toolbar.css +7 -7
  84. package/src/minimal/tree.css +24 -3
  85. package/src/rokkit/card.css +37 -0
  86. package/src/rokkit/dropdown.css +70 -0
  87. package/src/rokkit/index.css +4 -0
  88. package/src/rokkit/message.css +44 -0
  89. package/src/rokkit/status-list.css +68 -0
  90. package/src/rokkit/tabs.css +25 -1
  91. package/src/rokkit/toolbar.css +6 -0
package/build.mjs CHANGED
@@ -215,13 +215,14 @@ async function build() {
215
215
  ['rokkit', 'gradients + glowing borders'],
216
216
  ['minimal', 'clean + subtle'],
217
217
  ['material', 'elevation + shadows'],
218
- ['glass', 'blur + transparency']
218
+ ['glass', 'blur + transparency'],
219
+ ['grada-ui', 'coral/purple gradient identity']
219
220
  ]) {
220
221
  await buildFile(join(srcDir, name, 'index.css'), `${name}.css`, label)
221
222
  }
222
223
 
223
224
  // Full bundle: base + all themes
224
- const allThemes = ['base', 'rokkit', 'minimal', 'material', 'glass']
225
+ const allThemes = ['base', 'rokkit', 'minimal', 'material', 'glass', 'grada-ui']
225
226
  const bundleParts = allThemes.map((name) => readFileSync(join(distDir, `${name}.css`), 'utf-8'))
226
227
  writeFileSync(join(distDir, 'index.css'), bundleParts.join('\n'), 'utf-8')
227
228
  console.log('✓ dist/index.css (full bundle)')
package/dist/base.css CHANGED
@@ -622,6 +622,173 @@
622
622
  border: none;
623
623
  }
624
624
 
625
+ /**
626
+ * Dropdown - Base Structural Styles
627
+ *
628
+ * A trigger button that displays the selected value, opening a panel of options.
629
+ * No colors, shadows, or visual theming — those belong in theme styles.
630
+ */
631
+
632
+ /* =============================================================================
633
+ Root Container
634
+ ============================================================================= */
635
+
636
+ [data-dropdown] {
637
+ position: relative;
638
+ display: inline-block;
639
+ }
640
+
641
+ [data-dropdown][data-disabled='true'] {
642
+ pointer-events: none;
643
+ opacity: 0.5;
644
+ }
645
+
646
+ /* =============================================================================
647
+ Trigger Button
648
+ ============================================================================= */
649
+
650
+ [data-dropdown-trigger] {
651
+ display: inline-flex;
652
+ align-items: center;
653
+ gap: 0.375rem;
654
+ white-space: nowrap;
655
+ cursor: pointer;
656
+ user-select: none;
657
+ border: 1px solid transparent;
658
+ border-radius: 0.375rem;
659
+ font-weight: 500;
660
+ transition: all 150ms ease;
661
+ }
662
+
663
+ [data-dropdown-trigger]:disabled {
664
+ cursor: not-allowed;
665
+ }
666
+
667
+ [data-dropdown-trigger]:focus-visible {
668
+ outline: 2px solid currentColor;
669
+ outline-offset: 2px;
670
+ }
671
+
672
+ /* Size variants */
673
+ [data-dropdown][data-size='sm'] [data-dropdown-trigger] {
674
+ height: 1.5rem;
675
+ padding-inline: 0.5rem;
676
+ font-size: 0.75rem;
677
+ }
678
+
679
+ [data-dropdown][data-size='md'] [data-dropdown-trigger],
680
+ [data-dropdown]:not([data-size]) [data-dropdown-trigger] {
681
+ height: 2rem;
682
+ padding-inline: 0.625rem;
683
+ font-size: 0.875rem;
684
+ }
685
+
686
+ [data-dropdown][data-size='lg'] [data-dropdown-trigger] {
687
+ height: 2.5rem;
688
+ padding-inline: 0.75rem;
689
+ font-size: 1rem;
690
+ }
691
+
692
+ /* =============================================================================
693
+ Trigger Elements
694
+ ============================================================================= */
695
+
696
+ [data-dropdown-trigger] > [data-dropdown-icon] {
697
+ flex-shrink: 0;
698
+ font-size: 1em;
699
+ }
700
+
701
+ [data-dropdown-trigger] > [data-dropdown-label] {
702
+ overflow: hidden;
703
+ text-overflow: ellipsis;
704
+ text-transform: capitalize;
705
+ }
706
+
707
+ [data-dropdown-trigger] > [data-dropdown-arrow] {
708
+ flex-shrink: 0;
709
+ font-size: 0.75em;
710
+ transition: transform 150ms ease;
711
+ }
712
+
713
+ [data-dropdown][data-open='true'] [data-dropdown-trigger] > [data-dropdown-arrow] {
714
+ transform: rotate(180deg);
715
+ }
716
+
717
+ /* =============================================================================
718
+ Panel
719
+ ============================================================================= */
720
+
721
+ [data-dropdown-panel] {
722
+ position: absolute;
723
+ z-index: 50;
724
+ min-width: 100%;
725
+ overflow: hidden;
726
+ border-radius: 0.5rem;
727
+ margin-top: 0.375rem;
728
+ }
729
+
730
+ [data-dropdown][data-align='end'] [data-dropdown-panel] {
731
+ right: 0;
732
+ left: auto;
733
+ }
734
+
735
+ [data-dropdown][data-align='start'] [data-dropdown-panel] {
736
+ left: 0;
737
+ right: auto;
738
+ }
739
+
740
+ [data-dropdown][data-direction='up'] [data-dropdown-panel] {
741
+ bottom: 100%;
742
+ top: auto;
743
+ margin-top: 0;
744
+ margin-bottom: 0.375rem;
745
+ }
746
+
747
+ /* =============================================================================
748
+ Options
749
+ ============================================================================= */
750
+
751
+ [data-dropdown-option] {
752
+ display: flex;
753
+ align-items: center;
754
+ width: 100%;
755
+ padding-block: 0.375rem;
756
+ padding-inline: 0.75rem;
757
+ font-size: 0.875rem;
758
+ text-align: left;
759
+ cursor: pointer;
760
+ border: none;
761
+ background: transparent;
762
+ transition: all 100ms ease;
763
+ white-space: nowrap;
764
+ }
765
+
766
+ [data-dropdown][data-size='sm'] [data-dropdown-option] {
767
+ padding-block: 0.25rem;
768
+ padding-inline: 0.625rem;
769
+ font-size: 0.75rem;
770
+ }
771
+
772
+ [data-dropdown-option]:disabled,
773
+ [data-dropdown-option][data-disabled='true'] {
774
+ pointer-events: none;
775
+ opacity: 0.5;
776
+ }
777
+
778
+ [data-dropdown-option-label] {
779
+ flex: 1;
780
+ }
781
+
782
+ /* =============================================================================
783
+ Separator
784
+ ============================================================================= */
785
+
786
+ [data-dropdown-separator] {
787
+ height: 1px;
788
+ border: none;
789
+ margin-block: 0.25rem;
790
+ }
791
+
625
792
  /**
626
793
  * Select - Base Structural Styles
627
794
  *
@@ -1056,6 +1223,10 @@
1056
1223
  opacity: 0.5;
1057
1224
  }
1058
1225
 
1226
+ [data-toolbar][data-toolbar-width='fit'] {
1227
+ width: fit-content;
1228
+ }
1229
+
1059
1230
  /* Position variants - horizontal */
1060
1231
  [data-toolbar][data-toolbar-position='top'],
1061
1232
  [data-toolbar][data-toolbar-position='bottom'],
@@ -4976,7 +5147,9 @@ a[data-card] {
4976
5147
  white-space: nowrap;
4977
5148
  overflow: hidden;
4978
5149
  text-overflow: ellipsis;
4979
- transition: color 150ms ease, border-color 150ms ease;
5150
+ transition:
5151
+ color 150ms ease,
5152
+ border-color 150ms ease;
4980
5153
  }
4981
5154
 
4982
5155
  /* h3 items indented */
@@ -4985,3 +5158,178 @@ a[data-card] {
4985
5158
  font-size: 0.75rem;
4986
5159
  }
4987
5160
 
5161
+ /* StatusList — base structural styles */
5162
+
5163
+ [data-status-list] {
5164
+ display: flex;
5165
+ flex-direction: column;
5166
+ gap: 0.375rem;
5167
+ }
5168
+
5169
+ [data-status-item] {
5170
+ display: flex;
5171
+ align-items: center;
5172
+ gap: 0.5rem;
5173
+ font-size: 0.875rem;
5174
+ line-height: 1.25rem;
5175
+ }
5176
+
5177
+ [data-status-item] p {
5178
+ margin: 0;
5179
+ }
5180
+
5181
+ /* Message — base structural styles */
5182
+
5183
+ [data-message-root] {
5184
+ display: flex;
5185
+ align-items: flex-start;
5186
+ gap: 0.5rem;
5187
+ padding: 0.75rem 1rem;
5188
+ border-radius: 0.375rem;
5189
+ font-size: 0.875rem;
5190
+ line-height: 1.5;
5191
+ border-width: 1px;
5192
+ border-style: solid;
5193
+ cursor: default;
5194
+ user-select: none;
5195
+ }
5196
+
5197
+ [data-message-icon] {
5198
+ flex-shrink: 0;
5199
+ width: 1rem;
5200
+ height: 1rem;
5201
+ display: flex;
5202
+ align-items: center;
5203
+ justify-content: center;
5204
+ font-size: 0.75rem;
5205
+ font-weight: 700;
5206
+ margin-top: 0.125rem;
5207
+ }
5208
+
5209
+ [data-message-text] {
5210
+ flex: 1;
5211
+ min-width: 0;
5212
+ }
5213
+
5214
+ [data-message-actions] {
5215
+ display: flex;
5216
+ align-items: center;
5217
+ gap: 0.5rem;
5218
+ flex-shrink: 0;
5219
+ margin-top: -0.125rem;
5220
+ }
5221
+
5222
+ [data-message-dismiss] {
5223
+ flex-shrink: 0;
5224
+ display: flex;
5225
+ align-items: center;
5226
+ justify-content: center;
5227
+ width: 1.25rem;
5228
+ height: 1.25rem;
5229
+ margin-top: -0.125rem;
5230
+ border: none;
5231
+ background: transparent;
5232
+ cursor: pointer;
5233
+ font-size: 1rem;
5234
+ line-height: 1;
5235
+ padding: 0;
5236
+ opacity: 0.5;
5237
+ border-radius: 0.25rem;
5238
+ }
5239
+
5240
+ [data-message-dismiss]:hover {
5241
+ opacity: 1;
5242
+ }
5243
+
5244
+ /* AlertList — base structural styles for the fixed toast container */
5245
+
5246
+ [data-alert-list] {
5247
+ position: fixed;
5248
+ z-index: 9999;
5249
+ display: flex;
5250
+ flex-direction: column;
5251
+ max-width: 24rem;
5252
+ width: calc(100% - 2rem);
5253
+ padding: 1rem;
5254
+ pointer-events: none;
5255
+ }
5256
+
5257
+ /* Each toast wrapper: handles enter animation, spacing, and dismiss collapse */
5258
+ [data-alert-list] > * {
5259
+ pointer-events: auto;
5260
+ overflow: hidden;
5261
+ max-height: 12rem;
5262
+ margin-bottom: 0.5rem;
5263
+ transition:
5264
+ max-height 0.25s ease-out,
5265
+ margin-bottom 0.25s ease-out;
5266
+ }
5267
+
5268
+ /* Collapse height + spacing when dismissing — CSS drives the animation */
5269
+ [data-alert-list] > *[data-dismissing] {
5270
+ max-height: 0;
5271
+ margin-bottom: 0;
5272
+ }
5273
+
5274
+ /* Message enter animation */
5275
+ @keyframes toast-enter {
5276
+ from {
5277
+ opacity: 0;
5278
+ transform: translateX(2rem);
5279
+ }
5280
+ to {
5281
+ opacity: 1;
5282
+ transform: translateX(0);
5283
+ }
5284
+ }
5285
+
5286
+ /* Message exit transition */
5287
+ [data-alert-list] > * > [data-message-root] {
5288
+ animation: toast-enter 0.2s ease-out;
5289
+ transition:
5290
+ opacity 0.2s ease-out,
5291
+ transform 0.2s ease-out;
5292
+ }
5293
+
5294
+ [data-alert-list] > *[data-dismissing] > [data-message-root] {
5295
+ opacity: 0;
5296
+ transform: translateX(2rem);
5297
+ }
5298
+
5299
+ /* Top positions */
5300
+ [data-alert-list][data-position='top-right'] {
5301
+ top: 0;
5302
+ right: 0;
5303
+ }
5304
+
5305
+ [data-alert-list][data-position='top-center'] {
5306
+ top: 0;
5307
+ left: 50%;
5308
+ transform: translateX(-50%);
5309
+ }
5310
+
5311
+ [data-alert-list][data-position='top-left'] {
5312
+ top: 0;
5313
+ left: 0;
5314
+ }
5315
+
5316
+ /* Bottom positions — reverse stack so newest appears at bottom edge */
5317
+ [data-alert-list][data-position='bottom-right'] {
5318
+ bottom: 0;
5319
+ right: 0;
5320
+ flex-direction: column-reverse;
5321
+ }
5322
+
5323
+ [data-alert-list][data-position='bottom-center'] {
5324
+ bottom: 0;
5325
+ left: 50%;
5326
+ transform: translateX(-50%);
5327
+ flex-direction: column-reverse;
5328
+ }
5329
+
5330
+ [data-alert-list][data-position='bottom-left'] {
5331
+ bottom: 0;
5332
+ left: 0;
5333
+ flex-direction: column-reverse;
5334
+ }
5335
+