nitro_kit 2.0.0.alpha.2 → 2.0.0.alpha.3

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -1
  3. data/README.md +23 -4
  4. data/STYLE_GUIDE.md +37 -5
  5. data/app/assets/stylesheets/nitro_kit.css +1714 -1358
  6. data/app/components/nitro_kit/accordion.rb +1 -7
  7. data/app/components/nitro_kit/app_navigation.rb +1 -2
  8. data/app/components/nitro_kit/app_shell.rb +1 -7
  9. data/app/components/nitro_kit/appearance_picker.rb +1 -11
  10. data/app/components/nitro_kit/avatar.rb +6 -1
  11. data/app/components/nitro_kit/avatar_stack.rb +3 -0
  12. data/app/components/nitro_kit/button_group.rb +2 -2
  13. data/app/components/nitro_kit/checkbox.rb +7 -4
  14. data/app/components/nitro_kit/checkbox_group.rb +0 -25
  15. data/app/components/nitro_kit/combobox.rb +3 -16
  16. data/app/components/nitro_kit/command_palette.rb +41 -59
  17. data/app/components/nitro_kit/component.rb +57 -5
  18. data/app/components/nitro_kit/danger_zone.rb +5 -1
  19. data/app/components/nitro_kit/data_section.rb +28 -4
  20. data/app/components/nitro_kit/details_table.rb +19 -8
  21. data/app/components/nitro_kit/dialog.rb +23 -19
  22. data/app/components/nitro_kit/dropdown.rb +1 -6
  23. data/app/components/nitro_kit/dropzone.rb +3 -14
  24. data/app/components/nitro_kit/empty_state.rb +21 -2
  25. data/app/components/nitro_kit/field.rb +35 -11
  26. data/app/components/nitro_kit/form_builder.rb +0 -1
  27. data/app/components/nitro_kit/progressive_image.rb +2 -2
  28. data/app/components/nitro_kit/radio_button.rb +7 -4
  29. data/app/components/nitro_kit/radio_button_group.rb +0 -25
  30. data/app/components/nitro_kit/select.rb +3 -3
  31. data/app/components/nitro_kit/settings_layout.rb +17 -4
  32. data/app/components/nitro_kit/{form_section.rb → settings_section.rb} +18 -11
  33. data/app/components/nitro_kit/sheet.rb +29 -20
  34. data/app/components/nitro_kit/stat_grid.rb +18 -2
  35. data/app/components/nitro_kit/table.rb +22 -3
  36. data/app/components/nitro_kit/tabs.rb +1 -13
  37. data/app/components/nitro_kit/toast.rb +4 -2
  38. data/app/components/nitro_kit/toolbar.rb +2 -0
  39. data/app/components/nitro_kit/tooltip.rb +7 -10
  40. data/app/javascript/controllers/nk/app_shell_controller.js +3 -3
  41. data/app/javascript/controllers/nk/appearance_controller.js +6 -0
  42. data/app/javascript/controllers/nk/combobox_controller.js +51 -1
  43. data/app/javascript/controllers/nk/command_palette_controller.js +21 -11
  44. data/app/javascript/controllers/nk/dialog_controller.js +54 -0
  45. data/app/javascript/controllers/nk/dropdown_controller.js +45 -0
  46. data/app/javascript/controllers/nk/dropzone_controller.js +2 -2
  47. data/app/javascript/controllers/nk/progressive_image_controller.js +11 -7
  48. data/app/javascript/controllers/nk/tabs_controller.js +8 -1
  49. data/app/javascript/controllers/nk/tooltip_controller.js +9 -0
  50. data/config/locales/en.yml +4 -1
  51. data/docs/agent_guide.md +31 -16
  52. data/docs/agent_native_spec.md +27 -10
  53. data/docs/browser_support.md +193 -0
  54. data/docs/component_contracts.md +88 -82
  55. data/docs/customization.md +27 -15
  56. data/docs/hotwire.md +15 -3
  57. data/docs/initialization_prompt.md +31 -6
  58. data/docs/migration_1_to_2.md +61 -19
  59. data/docs/patterns/application_foundation.md +6 -4
  60. data/docs/patterns/crud_resource.md +6 -3
  61. data/docs/patterns/destructive_action.md +25 -0
  62. data/docs/patterns/resource_form.md +1 -1
  63. data/docs/rails_conventions.md +4 -1
  64. data/docs/rails_integration.md +39 -11
  65. data/lib/generators/nitro_kit/upgrade_smoke_tests_generator.rb +12 -0
  66. data/lib/nitro_kit/installation.rb +9 -4
  67. data/lib/nitro_kit/migration_inventory.rb +268 -8
  68. data/lib/nitro_kit/upgrade_smoke_test.rb +10 -12
  69. data/lib/nitro_kit/version.rb +1 -1
  70. data/lib/rails/commands/nitro_kit/nitro_kit_command.rb +10 -3
  71. data/plugins/nitro-kit/skills/nitro-kit-hotwire/SKILL.md +4 -0
  72. data/plugins/nitro-kit/skills/nitro-kit-rails/SKILL.md +6 -1
  73. data/plugins/nitro-kit/skills/nitro-kit-ui/SKILL.md +18 -8
  74. data/src/stylesheets/nitro_kit/components/accordion.css +40 -40
  75. data/src/stylesheets/nitro_kit/components/alert.css +9 -9
  76. data/src/stylesheets/nitro_kit/components/app_navigation.css +19 -19
  77. data/src/stylesheets/nitro_kit/components/app_shell.css +196 -193
  78. data/src/stylesheets/nitro_kit/components/appearance_picker.css +41 -31
  79. data/src/stylesheets/nitro_kit/components/avatar.css +3 -3
  80. data/src/stylesheets/nitro_kit/components/avatar_stack.css +36 -19
  81. data/src/stylesheets/nitro_kit/components/button.css +83 -58
  82. data/src/stylesheets/nitro_kit/components/button_group.css +19 -14
  83. data/src/stylesheets/nitro_kit/components/card.css +11 -5
  84. data/src/stylesheets/nitro_kit/components/checkbox.css +40 -36
  85. data/src/stylesheets/nitro_kit/components/checkbox_group.css +13 -13
  86. data/src/stylesheets/nitro_kit/components/combobox.css +33 -23
  87. data/src/stylesheets/nitro_kit/components/command_palette.css +48 -47
  88. data/src/stylesheets/nitro_kit/components/control_group.css +52 -58
  89. data/src/stylesheets/nitro_kit/components/danger_zone.css +3 -3
  90. data/src/stylesheets/nitro_kit/components/data_section.css +1 -1
  91. data/src/stylesheets/nitro_kit/components/details_table.css +13 -13
  92. data/src/stylesheets/nitro_kit/components/dialog.css +6 -3
  93. data/src/stylesheets/nitro_kit/components/dropdown.css +29 -23
  94. data/src/stylesheets/nitro_kit/components/dropzone.css +71 -28
  95. data/src/stylesheets/nitro_kit/components/empty_state.css +6 -6
  96. data/src/stylesheets/nitro_kit/components/field.css +30 -26
  97. data/src/stylesheets/nitro_kit/components/field_group.css +13 -0
  98. data/src/stylesheets/nitro_kit/components/fieldset.css +6 -0
  99. data/src/stylesheets/nitro_kit/components/input.css +9 -2
  100. data/src/stylesheets/nitro_kit/components/layout.css +165 -165
  101. data/src/stylesheets/nitro_kit/components/page_header.css +3 -3
  102. data/src/stylesheets/nitro_kit/components/pagination.css +55 -46
  103. data/src/stylesheets/nitro_kit/components/pagination_bar.css +7 -7
  104. data/src/stylesheets/nitro_kit/components/palette.css +20 -20
  105. data/src/stylesheets/nitro_kit/components/progressive_image.css +44 -54
  106. data/src/stylesheets/nitro_kit/components/radio_button.css +36 -29
  107. data/src/stylesheets/nitro_kit/components/radio_button_group.css +43 -43
  108. data/src/stylesheets/nitro_kit/components/rich_text_area.css +15 -0
  109. data/src/stylesheets/nitro_kit/components/select.css +2 -9
  110. data/src/stylesheets/nitro_kit/components/settings_layout.css +21 -18
  111. data/src/stylesheets/nitro_kit/components/settings_section.css +84 -0
  112. data/src/stylesheets/nitro_kit/components/sheet.css +23 -3
  113. data/src/stylesheets/nitro_kit/components/stat_grid.css +10 -9
  114. data/src/stylesheets/nitro_kit/components/switch.css +37 -33
  115. data/src/stylesheets/nitro_kit/components/table.css +35 -31
  116. data/src/stylesheets/nitro_kit/components/tabs.css +43 -39
  117. data/src/stylesheets/nitro_kit/components/toast.css +20 -9
  118. data/src/stylesheets/nitro_kit/components/toolbar.css +14 -39
  119. data/src/stylesheets/nitro_kit/components/tooltip.css +34 -29
  120. data/src/stylesheets/nitro_kit/components/typeset.css +147 -1
  121. data/src/stylesheets/nitro_kit/reset.css +9 -9
  122. data/src/stylesheets/nitro_kit/tokens.css +8 -9
  123. metadata +4 -3
  124. data/src/stylesheets/nitro_kit/components/form_section.css +0 -71
@@ -3,6 +3,8 @@
3
3
  inline-size: 100%;
4
4
  overflow-x: auto;
5
5
  color: var(--nk-color-foreground);
6
+ scrollbar-width: thin;
7
+ scrollbar-color: var(--nk-color-border) transparent;
6
8
  -webkit-overflow-scrolling: touch;
7
9
  }
8
10
 
@@ -22,12 +24,14 @@
22
24
  border-block-end: var(--nk-border-width) solid var(--nk-color-border);
23
25
  }
24
26
 
27
+ /* min-block-size is undefined on table cells, so the 40px minimum comes
28
+ from padding around a single line box instead. */
25
29
  :where(
26
- [data-nk="table"] [data-slot="table-header"],
27
- [data-nk="table"] [data-slot="table-cell"]
28
- ) {
29
- min-block-size: var(--nk-control-height-md);
30
- padding: calc(var(--nk-space) * 2);
30
+ [data-nk="table"] [data-slot="table-header"],
31
+ [data-nk="table"] [data-slot="table-cell"]
32
+ ) {
33
+ padding-block: calc((var(--nk-control-height-md) - 1lh) / 2);
34
+ padding-inline: calc(var(--nk-space) * 2);
31
35
  text-align: start;
32
36
  vertical-align: middle;
33
37
  }
@@ -42,8 +46,8 @@
42
46
  align-items: center;
43
47
  min-block-size: var(--nk-control-height-md);
44
48
  gap: calc(var(--nk-space) * 1.5);
45
- margin-block: calc(var(--nk-space) * -2);
46
- padding-block: calc(var(--nk-space) * 2);
49
+ margin-block: calc((var(--nk-control-height-md) - 1lh) / -2);
50
+ padding-block: calc((var(--nk-control-height-md) - 1lh) / 2);
47
51
  color: inherit;
48
52
  text-decoration: none;
49
53
  }
@@ -56,25 +60,25 @@
56
60
 
57
61
  @layer nitro-kit.state {
58
62
  :where(
59
- [data-nk="table"]
60
- [data-slot="table-header"]:is(
61
- [aria-sort="ascending"],
62
- [aria-sort="descending"]
63
- )
64
- [data-slot="table-sort"]
65
- ) {
63
+ [data-nk="table"]
64
+ [data-slot="table-header"]:is(
65
+ [aria-sort="ascending"],
66
+ [aria-sort="descending"]
67
+ )
68
+ [data-slot="table-sort"]
69
+ ) {
66
70
  color: var(--nk-color-foreground);
67
71
  font-weight: var(--nk-font-weight-semibold);
68
72
  }
69
73
 
70
74
  :where(
71
- [data-nk="table"]
72
- [data-slot="table-header"]:is(
73
- [aria-sort="ascending"],
74
- [aria-sort="descending"]
75
- )
76
- [data-slot="table-sort-indicator"]
77
- ) {
75
+ [data-nk="table"]
76
+ [data-slot="table-header"]:is(
77
+ [aria-sort="ascending"],
78
+ [aria-sort="descending"]
79
+ )
80
+ [data-slot="table-sort-indicator"]
81
+ ) {
78
82
  color: var(--nk-color-primary);
79
83
  opacity: 1;
80
84
  }
@@ -85,10 +89,10 @@
85
89
  }
86
90
 
87
91
  :where(
88
- [data-nk="table"]
89
- [data-slot="table-sort"]:hover
90
- [data-slot="table-sort-indicator"]
91
- ) {
92
+ [data-nk="table"]
93
+ [data-slot="table-sort"]:hover
94
+ [data-slot="table-sort-indicator"]
95
+ ) {
92
96
  opacity: 1;
93
97
  }
94
98
  }
@@ -101,15 +105,15 @@
101
105
 
102
106
  @layer nitro-kit.compound {
103
107
  :where(
104
- [data-nk="table"] [data-slot="table-header"][data-align="center"],
105
- [data-nk="table"] [data-slot="table-cell"][data-align="center"]
106
- ) {
108
+ [data-nk="table"] [data-slot="table-header"][data-align="center"],
109
+ [data-nk="table"] [data-slot="table-cell"][data-align="center"]
110
+ ) {
107
111
  text-align: center;
108
112
  }
109
113
  :where(
110
- [data-nk="table"] [data-slot="table-header"][data-align="right"],
111
- [data-nk="table"] [data-slot="table-cell"][data-align="right"]
112
- ) {
114
+ [data-nk="table"] [data-slot="table-header"][data-align="right"],
115
+ [data-nk="table"] [data-slot="table-cell"][data-align="right"]
116
+ ) {
113
117
  font-variant-numeric: tabular-nums;
114
118
  text-align: right;
115
119
  }
@@ -1,26 +1,29 @@
1
1
  @layer nitro-kit.base {
2
2
  :where([data-nk="tabs"]) {
3
- width: 100%;
3
+ inline-size: 100%;
4
4
  color: var(--nk-color-foreground);
5
5
  }
6
6
 
7
7
  :where([data-nk="tabs"] > [data-slot="tabs-list"]) {
8
8
  display: flex;
9
- max-width: 100%;
9
+ max-inline-size: 100%;
10
10
  overflow-x: auto;
11
11
  border-block-end: var(--nk-border-width) solid var(--nk-color-border);
12
12
  }
13
13
 
14
14
  :where([data-nk="tabs"] > [data-slot="tabs-list"] > [data-slot="tabs-tab"]) {
15
- display: flex;
16
- min-height: 2.5rem;
17
- align-items: center;
18
- justify-content: center;
15
+ display: block;
16
+ min-inline-size: 0;
17
+ min-block-size: var(--nk-control-height-md);
18
+ align-content: center;
19
19
  padding: calc(var(--nk-space) * 2) calc(var(--nk-space) * 3);
20
20
  font: inherit;
21
21
  font-weight: var(--nk-font-weight-medium);
22
22
  color: var(--nk-color-muted-foreground);
23
+ text-align: center;
23
24
  white-space: nowrap;
25
+ overflow: hidden;
26
+ text-overflow: ellipsis;
24
27
  cursor: pointer;
25
28
  background: transparent;
26
29
  border: 0;
@@ -44,8 +47,8 @@
44
47
  }
45
48
 
46
49
  :where(
47
- [data-nk="tabs"][data-orientation="vertical"] > [data-slot="tabs-list"]
48
- ) {
50
+ [data-nk="tabs"][data-orientation="vertical"] > [data-slot="tabs-list"]
51
+ ) {
49
52
  flex-direction: column;
50
53
  grid-column: 1;
51
54
  grid-row: 1;
@@ -56,27 +59,26 @@
56
59
  }
57
60
 
58
61
  :where(
59
- [data-nk="tabs"][data-orientation="vertical"]
60
- > [data-slot="tabs-list"]
61
- > [data-slot="tabs-tab"]
62
- ) {
63
- justify-content: flex-start;
62
+ [data-nk="tabs"][data-orientation="vertical"]
63
+ > [data-slot="tabs-list"]
64
+ > [data-slot="tabs-tab"]
65
+ ) {
64
66
  text-align: start;
65
67
  border-block-end: 0;
66
68
  border-inline-end: var(--nk-focus-width) solid transparent;
67
69
  }
68
70
 
69
71
  :where(
70
- [data-nk="tabs"][data-orientation="vertical"]
71
- > [data-slot="tabs-list"]
72
- > [data-slot="tabs-tab"][aria-selected="true"]
73
- ) {
72
+ [data-nk="tabs"][data-orientation="vertical"]
73
+ > [data-slot="tabs-list"]
74
+ > [data-slot="tabs-tab"][aria-selected="true"]
75
+ ) {
74
76
  border-inline-end-color: var(--nk-color-primary);
75
77
  }
76
78
 
77
79
  :where(
78
- [data-nk="tabs"][data-orientation="vertical"] > [data-slot="tabs-panel"]
79
- ) {
80
+ [data-nk="tabs"][data-orientation="vertical"] > [data-slot="tabs-panel"]
81
+ ) {
80
82
  grid-column: 2;
81
83
  grid-row: 1;
82
84
  padding-block-start: calc(var(--nk-space) * 2);
@@ -86,43 +88,45 @@
86
88
  @layer nitro-kit.state {
87
89
  @media (hover: hover) {
88
90
  :where(
89
- [data-nk="tabs"]
90
- > [data-slot="tabs-list"]
91
- > [data-slot="tabs-tab"]:hover:not(:disabled)
92
- ) {
91
+ [data-nk="tabs"]
92
+ > [data-slot="tabs-list"]
93
+ > [data-slot="tabs-tab"]:hover:not(:disabled)
94
+ ) {
93
95
  color: var(--nk-color-foreground);
94
96
  }
95
97
  }
96
98
 
97
99
  :where(
98
- [data-nk="tabs"]
99
- > [data-slot="tabs-list"]
100
- > [data-slot="tabs-tab"][aria-selected="true"]
101
- ) {
100
+ [data-nk="tabs"]
101
+ > [data-slot="tabs-list"]
102
+ > [data-slot="tabs-tab"][aria-selected="true"]
103
+ ) {
102
104
  color: var(--nk-color-foreground);
103
105
  border-block-end-color: var(--nk-color-primary);
104
106
  }
105
107
 
106
108
  :where(
107
- [data-nk="tabs"][data-orientation="vertical"]
108
- > [data-slot="tabs-list"]
109
- > [data-slot="tabs-tab"][aria-selected="true"]
110
- ) {
109
+ [data-nk="tabs"][data-orientation="vertical"]
110
+ > [data-slot="tabs-list"]
111
+ > [data-slot="tabs-tab"][aria-selected="true"]
112
+ ) {
111
113
  border-block-end-color: transparent;
112
114
  }
113
115
 
114
116
  :where(
115
- [data-nk="tabs"]
116
- > [data-slot="tabs-list"]
117
- > [data-slot="tabs-tab"]:focus-visible
118
- ) {
117
+ [data-nk="tabs"]
118
+ > [data-slot="tabs-list"]
119
+ > [data-slot="tabs-tab"]:focus-visible
120
+ ) {
119
121
  outline: var(--nk-focus-width) solid var(--nk-color-focus);
120
122
  outline-offset: calc(var(--nk-focus-offset) * -1);
121
123
  }
122
124
 
123
125
  :where(
124
- [data-nk="tabs"] > [data-slot="tabs-list"] > [data-slot="tabs-tab"]:disabled
125
- ) {
126
+ [data-nk="tabs"]
127
+ > [data-slot="tabs-list"]
128
+ > [data-slot="tabs-tab"]:disabled
129
+ ) {
126
130
  color: var(--nk-color-muted-foreground);
127
131
  cursor: not-allowed;
128
132
  opacity: 0.55;
@@ -130,8 +134,8 @@
130
134
 
131
135
  @media (prefers-reduced-motion: reduce) {
132
136
  :where(
133
- [data-nk="tabs"] > [data-slot="tabs-list"] > [data-slot="tabs-tab"]
134
- ) {
137
+ [data-nk="tabs"] > [data-slot="tabs-list"] > [data-slot="tabs-tab"]
138
+ ) {
135
139
  transition-duration: 0.01ms;
136
140
  }
137
141
  }
@@ -73,7 +73,11 @@
73
73
  var(--nk-color-surface)
74
74
  );
75
75
  --_nk-toast-foreground: var(--nk-color-info-content);
76
- --_nk-toast-border: var(--nk-color-info);
76
+ --_nk-toast-border: color-mix(
77
+ in oklab,
78
+ var(--nk-color-info) 45%,
79
+ transparent
80
+ );
77
81
  }
78
82
 
79
83
  :where([data-nk="toast-item"][data-variant="success"]) {
@@ -83,7 +87,11 @@
83
87
  var(--nk-color-surface)
84
88
  );
85
89
  --_nk-toast-foreground: var(--nk-color-success-content);
86
- --_nk-toast-border: var(--nk-color-success);
90
+ --_nk-toast-border: color-mix(
91
+ in oklab,
92
+ var(--nk-color-success) 45%,
93
+ transparent
94
+ );
87
95
  }
88
96
 
89
97
  :where([data-nk="toast-item"][data-variant="warning"]) {
@@ -93,7 +101,11 @@
93
101
  var(--nk-color-surface)
94
102
  );
95
103
  --_nk-toast-foreground: var(--nk-color-warning-content);
96
- --_nk-toast-border: var(--nk-color-warning);
104
+ --_nk-toast-border: color-mix(
105
+ in oklab,
106
+ var(--nk-color-warning) 45%,
107
+ transparent
108
+ );
97
109
  }
98
110
 
99
111
  :where([data-nk="toast-item"][data-variant="error"]) {
@@ -103,7 +115,11 @@
103
115
  var(--nk-color-surface)
104
116
  );
105
117
  --_nk-toast-foreground: var(--nk-color-danger-content);
106
- --_nk-toast-border: var(--nk-color-danger);
118
+ --_nk-toast-border: color-mix(
119
+ in oklab,
120
+ var(--nk-color-danger) 45%,
121
+ transparent
122
+ );
107
123
  }
108
124
  }
109
125
 
@@ -118,11 +134,6 @@
118
134
  transform: translateY(calc(var(--nk-space) * 3));
119
135
  }
120
136
 
121
- :where([data-nk="toast-item"]:focus-visible) {
122
- outline: var(--nk-focus-width) solid var(--nk-color-focus);
123
- outline-offset: var(--nk-focus-offset);
124
- }
125
-
126
137
  @media (prefers-reduced-motion: reduce) {
127
138
  :where([data-nk="toast-item"]) {
128
139
  transition-duration: 0.01ms;
@@ -9,9 +9,9 @@
9
9
  }
10
10
 
11
11
  :where(
12
- [data-nk="toolbar"] > [data-slot="toolbar-leading"],
13
- [data-nk="toolbar"] > [data-slot="toolbar-trailing"]
14
- ) {
12
+ [data-nk="toolbar"] > [data-slot="toolbar-leading"],
13
+ [data-nk="toolbar"] > [data-slot="toolbar-trailing"]
14
+ ) {
15
15
  display: flex;
16
16
  min-width: 0;
17
17
  /* Regions never exceed the toolbar, so nested content such as a
@@ -26,10 +26,20 @@
26
26
  justify-content: flex-end;
27
27
  margin-inline-start: auto;
28
28
  }
29
+
30
+ /* Nested scroll regions such as a clipped ButtonGroup keep a visible
31
+ scrollbar so cropped actions read as scrollable. */
32
+ :where(
33
+ [data-nk="toolbar"] > [data-slot="toolbar-leading"] > *,
34
+ [data-nk="toolbar"] > [data-slot="toolbar-trailing"] > *
35
+ ) {
36
+ scrollbar-width: thin;
37
+ scrollbar-color: var(--nk-color-border) transparent;
38
+ }
29
39
  }
30
40
 
31
41
  @layer nitro-kit.state {
32
- @media (max-width: 48rem) {
42
+ @media (width < 48rem) {
33
43
  :where([data-nk="toolbar"]) {
34
44
  flex-direction: column;
35
45
  align-items: stretch;
@@ -39,40 +49,5 @@
39
49
  justify-content: flex-start;
40
50
  margin-inline-start: 0;
41
51
  }
42
-
43
- :where(
44
- [data-nk="app-shell"]
45
- > [data-slot="app-shell-header"]
46
- > [data-slot="app-shell-topbar"]
47
- > [data-nk="toolbar"]
48
- ) {
49
- flex-direction: row;
50
- flex-wrap: nowrap;
51
- align-items: center;
52
- }
53
-
54
- :where(
55
- [data-nk="app-shell"]
56
- > [data-slot="app-shell-header"]
57
- > [data-slot="app-shell-topbar"]
58
- > [data-nk="toolbar"]
59
- > [data-slot="toolbar-leading"]
60
- ) {
61
- flex: 1 1 auto;
62
- flex-wrap: nowrap;
63
- overflow: hidden;
64
- }
65
-
66
- :where(
67
- [data-nk="app-shell"]
68
- > [data-slot="app-shell-header"]
69
- > [data-slot="app-shell-topbar"]
70
- > [data-nk="toolbar"]
71
- > [data-slot="toolbar-trailing"]
72
- ) {
73
- flex: 0 0 auto;
74
- justify-content: flex-end;
75
- margin-inline-start: auto;
76
- }
77
52
  }
78
53
  }
@@ -10,17 +10,20 @@
10
10
  inline-size: max-content;
11
11
  max-inline-size: min(20rem, calc(100vw - (var(--nk-space) * 8)));
12
12
  padding: calc(var(--nk-space) * 1.5) calc(var(--nk-space) * 2.5);
13
- color: var(--nk-color-primary-foreground);
13
+ color: var(--nk-color-foreground);
14
14
  font-size: var(--nk-text-xs);
15
15
  line-height: var(--nk-leading-normal);
16
16
  text-wrap: pretty;
17
17
  pointer-events: auto;
18
18
  visibility: hidden;
19
- background: var(--nk-color-primary);
19
+ background: var(--nk-color-elevated);
20
+ border: var(--nk-border-width) solid var(--nk-color-border);
20
21
  border-radius: var(--nk-radius-md);
21
22
  box-shadow: var(--nk-shadow-sm);
22
23
  opacity: 0;
23
- transition: opacity var(--nk-duration-fast) var(--nk-ease);
24
+ transition:
25
+ opacity var(--nk-duration-fast) var(--nk-ease),
26
+ visibility var(--nk-duration-fast) var(--nk-ease) allow-discrete;
24
27
  }
25
28
 
26
29
  :where([data-nk="tooltip"] > [data-slot="tooltip-content"]::before) {
@@ -29,68 +32,70 @@
29
32
  }
30
33
 
31
34
  :where(
32
- [data-nk="tooltip"][data-placement="top"] > [data-slot="tooltip-content"]
33
- ) {
35
+ [data-nk="tooltip"][data-placement="top"] > [data-slot="tooltip-content"]
36
+ ) {
34
37
  inset-block-end: calc(100% + (var(--nk-space) * 2));
35
38
  inset-inline-start: 50%;
36
39
  transform: translateX(-50%);
37
40
  }
38
41
 
39
42
  :where(
40
- [data-nk="tooltip"][data-placement="top"]
41
- > [data-slot="tooltip-content"]::before
42
- ) {
43
+ [data-nk="tooltip"][data-placement="top"]
44
+ > [data-slot="tooltip-content"]::before
45
+ ) {
43
46
  inset-block-start: 100%;
44
47
  inset-inline: 0;
45
48
  block-size: calc(var(--nk-space) * 2);
46
49
  }
47
50
 
48
51
  :where(
49
- [data-nk="tooltip"][data-placement="right"] > [data-slot="tooltip-content"]
50
- ) {
52
+ [data-nk="tooltip"][data-placement="right"]
53
+ > [data-slot="tooltip-content"]
54
+ ) {
51
55
  inset-block-start: 50%;
52
56
  inset-inline-start: calc(100% + (var(--nk-space) * 2));
53
57
  transform: translateY(-50%);
54
58
  }
55
59
 
56
60
  :where(
57
- [data-nk="tooltip"][data-placement="right"]
58
- > [data-slot="tooltip-content"]::before
59
- ) {
61
+ [data-nk="tooltip"][data-placement="right"]
62
+ > [data-slot="tooltip-content"]::before
63
+ ) {
60
64
  inset-block: 0;
61
65
  inset-inline-end: 100%;
62
66
  inline-size: calc(var(--nk-space) * 2);
63
67
  }
64
68
 
65
69
  :where(
66
- [data-nk="tooltip"][data-placement="bottom"] > [data-slot="tooltip-content"]
67
- ) {
70
+ [data-nk="tooltip"][data-placement="bottom"]
71
+ > [data-slot="tooltip-content"]
72
+ ) {
68
73
  inset-block-start: calc(100% + (var(--nk-space) * 2));
69
74
  inset-inline-start: 50%;
70
75
  transform: translateX(-50%);
71
76
  }
72
77
 
73
78
  :where(
74
- [data-nk="tooltip"][data-placement="bottom"]
75
- > [data-slot="tooltip-content"]::before
76
- ) {
79
+ [data-nk="tooltip"][data-placement="bottom"]
80
+ > [data-slot="tooltip-content"]::before
81
+ ) {
77
82
  inset-block-end: 100%;
78
83
  inset-inline: 0;
79
84
  block-size: calc(var(--nk-space) * 2);
80
85
  }
81
86
 
82
87
  :where(
83
- [data-nk="tooltip"][data-placement="left"] > [data-slot="tooltip-content"]
84
- ) {
88
+ [data-nk="tooltip"][data-placement="left"] > [data-slot="tooltip-content"]
89
+ ) {
85
90
  inset-block-start: 50%;
86
91
  inset-inline-end: calc(100% + (var(--nk-space) * 2));
87
92
  transform: translateY(-50%);
88
93
  }
89
94
 
90
95
  :where(
91
- [data-nk="tooltip"][data-placement="left"]
92
- > [data-slot="tooltip-content"]::before
93
- ) {
96
+ [data-nk="tooltip"][data-placement="left"]
97
+ > [data-slot="tooltip-content"]::before
98
+ ) {
94
99
  inset-block: 0;
95
100
  inset-inline-start: 100%;
96
101
  inline-size: calc(var(--nk-space) * 2);
@@ -99,18 +104,18 @@
99
104
 
100
105
  @layer nitro-kit.state {
101
106
  :where(
102
- [data-nk="tooltip"]:not([data-dismissed]):focus-within
103
- > [data-slot="tooltip-content"]
104
- ) {
107
+ [data-nk="tooltip"]:not([data-dismissed]):focus-within
108
+ > [data-slot="tooltip-content"]
109
+ ) {
105
110
  visibility: visible;
106
111
  opacity: 1;
107
112
  }
108
113
 
109
114
  @media (hover: hover) {
110
115
  :where(
111
- [data-nk="tooltip"]:not([data-dismissed]):hover
112
- > [data-slot="tooltip-content"]
113
- ) {
116
+ [data-nk="tooltip"]:not([data-dismissed]):hover
117
+ > [data-slot="tooltip-content"]
118
+ ) {
114
119
  visibility: visible;
115
120
  opacity: 1;
116
121
  }