@godxjp/ui 19.6.0 → 20.0.0

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 (137) hide show
  1. package/dist/components/data-display/card.d.ts +2 -2
  2. package/dist/components/data-display/collapsible.d.ts +23 -4
  3. package/dist/components/data-display/collapsible.js +119 -4
  4. package/dist/components/data-display/index.d.ts +3 -1
  5. package/dist/components/data-display/index.js +2 -0
  6. package/dist/components/data-display/legend.d.ts +15 -0
  7. package/dist/components/data-display/legend.js +11 -0
  8. package/dist/components/data-display/list-row.js +1 -1
  9. package/dist/components/data-display/popover.d.ts +58 -5
  10. package/dist/components/data-display/popover.js +206 -27
  11. package/dist/components/data-display/progress.d.ts +50 -2
  12. package/dist/components/data-display/progress.js +57 -9
  13. package/dist/components/data-entry/calendar.d.ts +1 -1
  14. package/dist/components/data-entry/calendar.js +67 -32
  15. package/dist/components/data-entry/checkbox.d.ts +19 -6
  16. package/dist/components/data-entry/checkbox.js +55 -16
  17. package/dist/components/data-entry/choice-option.d.ts +1 -1
  18. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  19. package/dist/components/data-entry/field.js +0 -1
  20. package/dist/components/data-entry/form.js +1 -1
  21. package/dist/components/data-entry/label.d.ts +3 -2
  22. package/dist/components/data-entry/label.js +23 -10
  23. package/dist/components/data-entry/month-picker.d.ts +1 -1
  24. package/dist/components/data-entry/month-range-picker.d.ts +1 -1
  25. package/dist/components/data-entry/transfer.js +16 -6
  26. package/dist/components/data-entry/tree-select-strategy.d.ts +1 -1
  27. package/dist/components/data-entry/tree-select.js +29 -12
  28. package/dist/components/data-entry/tree-utils.d.ts +1 -1
  29. package/dist/components/data-entry/upload.js +7 -2
  30. package/dist/components/feedback/dialog.d.ts +105 -38
  31. package/dist/components/feedback/dialog.js +272 -194
  32. package/dist/components/feedback/overlay-close-focus.d.ts +31 -0
  33. package/dist/components/feedback/overlay-close-focus.js +31 -0
  34. package/dist/components/feedback/overlay-header-tone.d.ts +1 -1
  35. package/dist/components/feedback/sheet.d.ts +53 -11
  36. package/dist/components/feedback/sheet.js +150 -81
  37. package/dist/components/feedback/tooltip.d.ts +51 -7
  38. package/dist/components/feedback/tooltip.js +107 -25
  39. package/dist/components/general/button.js +2 -2
  40. package/dist/components/general/logo.d.ts +17 -0
  41. package/dist/components/general/logo.js +22 -16
  42. package/dist/components/layout/app-shell.d.ts +1 -1
  43. package/dist/components/layout/app-shell.js +52 -8
  44. package/dist/components/layout/aspect-ratio.js +0 -1
  45. package/dist/components/layout/auth-divider.js +0 -1
  46. package/dist/components/layout/flex.d.ts +1 -1
  47. package/dist/components/layout/flex.js +19 -2
  48. package/dist/components/layout/nav-surface.d.ts +26 -0
  49. package/dist/components/layout/nav-surface.js +17 -0
  50. package/dist/components/layout/org-switcher.d.ts +5 -1
  51. package/dist/components/layout/org-switcher.js +5 -3
  52. package/dist/components/layout/separator.js +0 -1
  53. package/dist/components/layout/sidebar.js +4 -1
  54. package/dist/components/layout/split-pane.d.ts +14 -1
  55. package/dist/components/layout/split-pane.js +26 -13
  56. package/dist/components/layout/topbar-item.js +1 -2
  57. package/dist/components/navigation/app-setting-picker.js +21 -2
  58. package/dist/components/navigation/app-setting-toggle.d.ts +16 -0
  59. package/dist/components/navigation/app-setting-toggle.js +96 -0
  60. package/dist/components/navigation/dropdown-menu.d.ts +199 -18
  61. package/dist/components/navigation/dropdown-menu.js +344 -117
  62. package/dist/components/navigation/index.d.ts +2 -0
  63. package/dist/components/navigation/index.js +2 -0
  64. package/dist/components/navigation/pagination-utils.d.ts +2 -1
  65. package/dist/components/navigation/tabs.d.ts +47 -6
  66. package/dist/components/navigation/tabs.js +152 -90
  67. package/dist/components/ui/accordion.d.ts +50 -5
  68. package/dist/components/ui/accordion.js +239 -33
  69. package/dist/components/ui/aspect-ratio.d.ts +23 -2
  70. package/dist/components/ui/aspect-ratio.js +15 -13
  71. package/dist/components/ui/avatar.d.ts +29 -4
  72. package/dist/components/ui/avatar.js +111 -25
  73. package/dist/components/ui/hover-card.d.ts +42 -4
  74. package/dist/components/ui/hover-card.js +183 -27
  75. package/dist/components/ui/label.js +0 -1
  76. package/dist/components/ui/segmented.d.ts +3 -3
  77. package/dist/components/ui/separator.d.ts +8 -2
  78. package/dist/components/ui/separator.js +17 -9
  79. package/dist/components/ui/toggle-group.d.ts +50 -5
  80. package/dist/components/ui/toggle-group.js +79 -20
  81. package/dist/components/ui/toggle.d.ts +31 -5
  82. package/dist/components/ui/toggle.js +42 -3
  83. package/dist/i18n/messages/en.json +8 -0
  84. package/dist/i18n/messages/ja.json +8 -0
  85. package/dist/i18n/messages/vi.json +8 -0
  86. package/dist/lib/control-styles.d.ts +1 -1
  87. package/dist/lib/control-styles.js +1 -1
  88. package/dist/lib/slot.d.ts +32 -0
  89. package/dist/lib/slot.js +22 -0
  90. package/dist/lib/variants.d.ts +22 -3
  91. package/dist/lib/variants.js +56 -1
  92. package/dist/props/components/app.prop.d.ts +25 -1
  93. package/dist/props/components/data-display.prop.d.ts +17 -0
  94. package/dist/props/components/data-entry.prop.d.ts +32 -4
  95. package/dist/props/components/index.d.ts +1 -1
  96. package/dist/props/components/layout.prop.d.ts +118 -5
  97. package/dist/props/components/navigation.prop.d.ts +1 -1
  98. package/dist/props/registry.d.ts +22 -2
  99. package/dist/props/registry.js +33 -2
  100. package/dist/props/vocabulary/content.prop.d.ts +1 -1
  101. package/dist/props/vocabulary/index.d.ts +2 -2
  102. package/dist/props/vocabulary/interaction.prop.d.ts +17 -1
  103. package/dist/props/vocabulary/layout.prop.d.ts +57 -1
  104. package/dist/styles/control.css +142 -1
  105. package/dist/styles/core.css +5 -2
  106. package/dist/styles/data-display-layout.css +72 -0
  107. package/dist/styles/focus-ring.css +4 -0
  108. package/dist/styles/index.css +5 -2
  109. package/dist/styles/layout.css +106 -0
  110. package/dist/styles/shell-layout.css +140 -8
  111. package/dist/styles/text-layout.css +5 -4
  112. package/dist/tokens/base.css +1 -1
  113. package/dist/tokens/components/data-display.css +11 -0
  114. package/dist/tokens/components/shell.css +3 -1
  115. package/dist/tokens/foundation.css +2 -0
  116. package/docs/COMPONENTS.md +9 -3
  117. package/docs/DESIGN-AUTHORITY.md +96 -71
  118. package/docs/FRAME-COVERAGE-REPORT.md +5 -3
  119. package/docs/README.md +14 -14
  120. package/docs/WHAT-BELONGS-HERE.md +179 -0
  121. package/docs/data-display/legend.tsx +145 -0
  122. package/docs/data-display/progress.tsx +32 -0
  123. package/docs/data-entry/segmented.tsx +1 -1
  124. package/docs/data-entry/select.tsx +2 -2
  125. package/docs/feedback/sheet.tsx +1 -1
  126. package/docs/layout/app-shell-arrangements.tsx +225 -0
  127. package/docs/layout/aspect-ratio.tsx +1 -1
  128. package/docs/navigation/app-setting-picker.tsx +26 -1
  129. package/docs/navigation/app-setting-toggle.tsx +111 -0
  130. package/package.json +11 -8
  131. package/scripts/_agent-setup.mjs +165 -3
  132. package/scripts/consumer-rule.md +98 -0
  133. package/scripts/guinea-pig-skill.md +322 -0
  134. package/scripts/init-guinea-pig.mjs +62 -0
  135. package/scripts/postinstall.mjs +13 -2
  136. package/scripts/ui-audit.mjs +115 -14
  137. /package/dist/tokens/{antd.generated.css → derived.css} +0 -0
@@ -1777,6 +1777,86 @@
1777
1777
  }
1778
1778
  }
1779
1779
 
1780
+ .ui-calendar[data-bordered="true"] .ui-calendar-day,
1781
+ .ui-calendar[data-bordered="true"] .ui-calendar-weekday {
1782
+ border-inline-start: 1px solid hsl(var(--border));
1783
+ border-block-start: 1px solid hsl(var(--border));
1784
+ }
1785
+
1786
+ .ui-calendar[data-bordered="true"] .ui-calendar-week,
1787
+ .ui-calendar[data-bordered="true"] .ui-calendar-weekdays {
1788
+ border-inline-end: 1px solid hsl(var(--border));
1789
+ }
1790
+
1791
+ .ui-calendar[data-bordered="true"] .ui-calendar-weekday {
1792
+ background-color: hsl(var(--muted));
1793
+
1794
+ border-radius: 0;
1795
+ }
1796
+
1797
+ .ui-calendar[data-bordered="true"] .ui-calendar-grid {
1798
+ border-block-end: 1px solid hsl(var(--border));
1799
+ }
1800
+
1801
+ .ui-calendar[data-bordered="true"] .ui-calendar-day.invisible {
1802
+ visibility: visible;
1803
+ }
1804
+
1805
+ .ui-calendar[data-bordered="true"] .ui-calendar-day.invisible > * {
1806
+ visibility: hidden;
1807
+ }
1808
+
1809
+ .ui-calendar[data-bordered="true"] .ui-calendar-day-disabled {
1810
+ opacity: 1;
1811
+ }
1812
+
1813
+ .ui-calendar[data-bordered="true"] .ui-calendar-day-disabled .ui-calendar-day-button {
1814
+ opacity: var(--disabled-opacity);
1815
+ }
1816
+
1817
+ .ui-calendar[data-bordered="true"] .ui-calendar-week-number,
1818
+ .ui-calendar[data-bordered="true"] .ui-calendar-week-number-header {
1819
+ border-inline-start: 1px solid hsl(var(--border));
1820
+ border-block-start: 1px solid hsl(var(--border));
1821
+ }
1822
+
1823
+ .ui-calendar[data-bordered="true"] .ui-calendar-day-button {
1824
+ --button-radius: 0;
1825
+ inline-size: 100%;
1826
+ }
1827
+
1828
+ .ui-calendar[data-bordered="true"] .ui-calendar-week {
1829
+ margin-block-start: 0;
1830
+ }
1831
+
1832
+ .ui-calendar[data-bordered="true"] .ui-calendar-grid {
1833
+ margin-block-start: var(--calendar-grid-space-block-start);
1834
+ }
1835
+
1836
+ .ui-calendar[data-width="full"] {
1837
+ inline-size: 100%;
1838
+ }
1839
+
1840
+ .ui-calendar[data-width="full"] .ui-calendar-months {
1841
+ flex-direction: column;
1842
+ }
1843
+
1844
+ .ui-calendar[data-width="full"] .ui-calendar-month {
1845
+ inline-size: 100%;
1846
+ }
1847
+
1848
+ .ui-calendar[data-width="full"] .ui-calendar-weekday,
1849
+ .ui-calendar[data-width="full"] .ui-calendar-day {
1850
+ inline-size: auto;
1851
+ flex: 1 1 0;
1852
+ }
1853
+
1854
+ .ui-calendar[data-width="full"] .ui-calendar-day-button {
1855
+ inline-size: 100%;
1856
+
1857
+ max-inline-size: none;
1858
+ }
1859
+
1780
1860
  .ui-calendar-month {
1781
1861
  position: relative;
1782
1862
  display: flex;
@@ -1802,6 +1882,7 @@
1802
1882
  position: absolute;
1803
1883
  inset-inline: 0;
1804
1884
  inset-block-start: var(--calendar-nav-space-block-start);
1885
+ block-size: var(--control-height);
1805
1886
  z-index: 10;
1806
1887
  display: flex;
1807
1888
  align-items: center;
@@ -1820,6 +1901,8 @@
1820
1901
  }
1821
1902
 
1822
1903
  .ui-calendar-chevron {
1904
+
1905
+ fill: none;
1823
1906
  inline-size: var(--calendar-chevron-size);
1824
1907
  block-size: var(--calendar-chevron-size);
1825
1908
  }
@@ -1857,6 +1940,8 @@
1857
1940
  }
1858
1941
 
1859
1942
  .ui-calendar .ui-calendar-day-button {
1943
+
1944
+ color: inherit;
1860
1945
  inline-size: var(--control-height);
1861
1946
  block-size: var(--control-height);
1862
1947
  padding: 0;
@@ -1868,11 +1953,67 @@
1868
1953
  opacity: 1;
1869
1954
  }
1870
1955
 
1871
- .ui-calendar-day-disabled {
1956
+ .ui-calendar .ui-calendar-day.day-selected .ui-calendar-day-button,
1957
+ .ui-calendar .ui-calendar-day.day-selected .ui-calendar-day-button:hover,
1958
+ .ui-calendar .ui-calendar-day.day-selected .ui-calendar-day-button:focus {
1959
+ background-color: hsl(var(--primary));
1960
+ color: hsl(var(--primary-foreground));
1961
+ }
1962
+
1963
+ .ui-calendar .ui-calendar-day.day-today:not(.day-selected) .ui-calendar-day-button {
1964
+ box-shadow: inset 0 0 0 1px hsl(var(--primary));
1965
+ color: hsl(var(--text-primary));
1966
+ font-weight: var(--font-weight-medium);
1967
+ }
1968
+
1969
+ .ui-calendar .ui-calendar-day.day-outside:not(.day-selected) .ui-calendar-day-button {
1872
1970
  color: hsl(var(--muted-foreground));
1971
+ }
1972
+
1973
+ .ui-calendar .ui-calendar-day.day-range-middle.day-selected .ui-calendar-day-button,
1974
+ .ui-calendar .ui-calendar-day.day-range-middle.day-selected .ui-calendar-day-button:hover,
1975
+ .ui-calendar .ui-calendar-day.day-range-middle.day-selected .ui-calendar-day-button:focus,
1976
+ .ui-calendar .ui-calendar-day.day-range-middle .ui-calendar-day-button {
1977
+ background-color: hsl(var(--accent));
1978
+ color: hsl(var(--accent-foreground));
1979
+ border-radius: 0;
1980
+ }
1981
+
1982
+ .ui-calendar .ui-calendar-day.day-range-start:not(.day-range-end) .ui-calendar-day-button {
1983
+ border-start-end-radius: 0;
1984
+ border-end-end-radius: 0;
1985
+ }
1986
+
1987
+ .ui-calendar .ui-calendar-day.day-range-end:not(.day-range-start) .ui-calendar-day-button {
1988
+ border-start-start-radius: 0;
1989
+ border-end-start-radius: 0;
1990
+ }
1991
+
1992
+ .ui-calendar .ui-calendar-day.day-today:not(:has(button)) {
1993
+ box-shadow: inset 0 0 0 1px hsl(var(--primary));
1994
+ color: hsl(var(--text-primary));
1995
+ font-weight: var(--font-weight-medium);
1996
+ border-radius: var(--calendar-day-radius);
1997
+ }
1998
+
1999
+ .ui-calendar .ui-calendar-day.day-outside:not(:has(button)) {
2000
+ color: hsl(var(--muted-foreground));
2001
+ }
2002
+
2003
+ .ui-calendar .ui-calendar-day.day-selected:not(:has(button)) {
2004
+ background-color: hsl(var(--primary));
2005
+ color: hsl(var(--primary-foreground));
2006
+ border-radius: var(--calendar-day-radius);
2007
+ }
2008
+
2009
+ .ui-calendar-day-disabled {
1873
2010
  opacity: var(--disabled-opacity);
1874
2011
  }
1875
2012
 
2013
+ .ui-calendar .ui-calendar-day-disabled .ui-calendar-day-button {
2014
+ color: hsl(var(--muted-foreground));
2015
+ }
2016
+
1876
2017
  .ui-calendar-footer {
1877
2018
  display: flex;
1878
2019
  align-items: center;
@@ -1,6 +1,9 @@
1
1
 
2
- @import "sonner/dist/styles.css";
3
- @import "react-day-picker/style.css";
2
+
3
+ @layer theme, base, vendor, components, utilities;
4
+
5
+ @import "sonner/dist/styles.css" layer(vendor);
6
+ @import "react-day-picker/style.css" layer(vendor);
4
7
  @import "./base.css";
5
8
  @import "./shell-layout.css";
6
9
  @import "./motion.css";
@@ -174,11 +174,83 @@
174
174
  );
175
175
  }
176
176
 
177
+ .ui-progress[data-breakdown] .ui-progress-track {
178
+ display: flex;
179
+ height: var(--progress-breakdown-block-size);
180
+ border-radius: var(--progress-breakdown-radius);
181
+ }
182
+
183
+ .ui-progress-segment {
184
+ height: 100%;
185
+ }
186
+
187
+ .ui-progress-segment[data-tone="success"] {
188
+ background: hsl(var(--success));
189
+ }
190
+
191
+ .ui-progress-segment[data-tone="warning"] {
192
+ background: hsl(var(--warning));
193
+ }
194
+
195
+ .ui-progress-segment[data-tone="destructive"] {
196
+ background: hsl(var(--destructive));
197
+ }
198
+
177
199
  .ui-progress-label {
178
200
  color: hsl(var(--muted-foreground));
179
201
  font-size: var(--progress-label-font-size);
180
202
  }
181
203
 
204
+ .ui-legend {
205
+ display: flex;
206
+ flex-wrap: wrap;
207
+ align-items: center;
208
+ gap: var(--legend-gap);
209
+ color: var(--legend-color, hsl(var(--muted-foreground)));
210
+ font-size: var(--legend-font-size);
211
+ list-style: none;
212
+ margin: 0;
213
+ padding: 0;
214
+ }
215
+
216
+ .ui-legend-item {
217
+ display: inline-flex;
218
+ align-items: center;
219
+ gap: var(--legend-item-gap);
220
+ }
221
+
222
+ .ui-legend-swatch {
223
+ flex: none;
224
+ inline-size: var(--legend-swatch-size);
225
+ block-size: var(--legend-swatch-size);
226
+ border-radius: var(--legend-swatch-radius);
227
+ }
228
+
229
+ .ui-legend-swatch[data-tone="default"] {
230
+ background: hsl(var(--primary));
231
+ }
232
+
233
+ .ui-legend-swatch[data-tone="success"] {
234
+ background: hsl(var(--success));
235
+ }
236
+
237
+ .ui-legend-swatch[data-tone="warning"] {
238
+ background: hsl(var(--warning));
239
+ }
240
+
241
+ .ui-legend-swatch[data-tone="destructive"] {
242
+ background: hsl(var(--destructive));
243
+ }
244
+
245
+ .ui-legend-swatch[data-tone="info"] {
246
+ background: hsl(var(--info));
247
+ }
248
+
249
+ .ui-legend-swatch[data-tone="muted"],
250
+ .ui-legend-swatch[data-tone="neutral"] {
251
+ background: hsl(var(--muted-foreground));
252
+ }
253
+
182
254
  .ui-tree-list {
183
255
  display: flex;
184
256
  flex-direction: column;
@@ -28,6 +28,8 @@
28
28
  .sb-user,
29
29
  .tb-icon-btn
30
30
  ):focus-visible,
31
+
32
+ .ui-checkbox[data-focus-visible],
31
33
  .ui-control-trigger[data-state="open"],
32
34
  .ui-tag-input:focus-within,
33
35
  .ui-control-composite-field:focus-within,
@@ -71,6 +73,8 @@
71
73
  .sb-user,
72
74
  .tb-icon-btn
73
75
  ):focus-visible,
76
+
77
+ :root[data-focus-outline="on"] .ui-checkbox[data-focus-visible],
74
78
  :root[data-focus-outline="on"] .ui-control-trigger[data-state="open"],
75
79
  :root[data-focus-outline="on"] .ui-tag-input:focus-within,
76
80
  :root[data-focus-outline="on"] .ui-control-composite-field:focus-within,
@@ -1,6 +1,9 @@
1
1
 
2
- @import "sonner/dist/styles.css";
3
- @import "react-day-picker/style.css";
2
+
3
+ @layer theme, base, vendor, components, utilities;
4
+
5
+ @import "sonner/dist/styles.css" layer(vendor);
6
+ @import "react-day-picker/style.css" layer(vendor);
4
7
  @import "./base.css";
5
8
 
6
9
  @import "./fonts.css";
@@ -115,6 +115,15 @@
115
115
  flex-wrap: wrap;
116
116
  }
117
117
 
118
+ .ui-flex[data-fill] {
119
+ flex: 1 1 0;
120
+ min-inline-size: 0;
121
+ }
122
+
123
+ .ui-flex[data-width-raw] {
124
+ flex: none;
125
+ }
126
+
118
127
  .ui-flex[data-align="start"] {
119
128
  align-items: flex-start;
120
129
  }
@@ -163,6 +172,50 @@
163
172
  gap: 0;
164
173
  }
165
174
 
175
+ .ui-flex-gap-1 {
176
+ gap: var(--space-1);
177
+ }
178
+ .ui-flex-gap-2 {
179
+ gap: var(--space-2);
180
+ }
181
+ .ui-flex-gap-3 {
182
+ gap: var(--space-3);
183
+ }
184
+ .ui-flex-gap-4 {
185
+ gap: var(--space-4);
186
+ }
187
+ .ui-flex-gap-5 {
188
+ gap: var(--space-5);
189
+ }
190
+ .ui-flex-gap-6 {
191
+ gap: var(--space-6);
192
+ }
193
+ .ui-flex-gap-8 {
194
+ gap: var(--space-8);
195
+ }
196
+ .ui-flex-gap-10 {
197
+ gap: var(--space-10);
198
+ }
199
+ .ui-flex-gap-12 {
200
+ gap: var(--space-12);
201
+ }
202
+
203
+ .ui-flex[data-direction="row"].ui-flex-gap-xs {
204
+ gap: var(--space-inline-xs);
205
+ }
206
+ .ui-flex[data-direction="row"].ui-flex-gap-sm {
207
+ gap: var(--space-inline-sm);
208
+ }
209
+ .ui-flex[data-direction="row"].ui-flex-gap-md {
210
+ gap: var(--space-inline-md);
211
+ }
212
+ .ui-flex[data-direction="row"].ui-flex-gap-lg {
213
+ gap: var(--space-inline-lg);
214
+ }
215
+ .ui-flex[data-direction="row"].ui-flex-gap-xl {
216
+ gap: var(--space-inline-xl);
217
+ }
218
+
166
219
  .ui-flex-gap-xs {
167
220
  gap: var(--space-stack-xs);
168
221
  }
@@ -262,6 +315,37 @@
262
315
  gap: var(--space-stack-xl);
263
316
  }
264
317
 
318
+ .ui-responsive-grid[data-gap="0"] {
319
+ gap: 0;
320
+ }
321
+ .ui-responsive-grid[data-gap="1"] {
322
+ gap: var(--space-1);
323
+ }
324
+ .ui-responsive-grid[data-gap="2"] {
325
+ gap: var(--space-2);
326
+ }
327
+ .ui-responsive-grid[data-gap="3"] {
328
+ gap: var(--space-3);
329
+ }
330
+ .ui-responsive-grid[data-gap="4"] {
331
+ gap: var(--space-4);
332
+ }
333
+ .ui-responsive-grid[data-gap="5"] {
334
+ gap: var(--space-5);
335
+ }
336
+ .ui-responsive-grid[data-gap="6"] {
337
+ gap: var(--space-6);
338
+ }
339
+ .ui-responsive-grid[data-gap="8"] {
340
+ gap: var(--space-8);
341
+ }
342
+ .ui-responsive-grid[data-gap="10"] {
343
+ gap: var(--space-10);
344
+ }
345
+ .ui-responsive-grid[data-gap="12"] {
346
+ gap: var(--space-12);
347
+ }
348
+
265
349
  .ui-responsive-grid > * {
266
350
  min-width: 0;
267
351
  }
@@ -390,6 +474,23 @@
390
474
  gap: 0;
391
475
  }
392
476
 
477
+ .ui-split-pane-scope[data-fill="true"] {
478
+ display: grid;
479
+ grid-template-rows: minmax(0, 1fr);
480
+ block-size: 100%;
481
+ min-block-size: 0;
482
+ }
483
+
484
+ .ui-split-pane[data-fill="true"] {
485
+ grid-template-rows: minmax(0, 1fr);
486
+ min-block-size: 0;
487
+ }
488
+
489
+ .ui-split-pane[data-fill="true"] > .ui-split-pane-main,
490
+ .ui-split-pane[data-fill="true"] > .ui-split-pane-aside {
491
+ min-block-size: 0;
492
+ }
493
+
393
494
  .ui-resizable-panel-group {
394
495
  display: flex;
395
496
  min-height: 0;
@@ -817,6 +918,11 @@
817
918
  padding: var(--empty-state-space-y) var(--empty-state-space-x);
818
919
  }
819
920
 
921
+ .ui-empty-state[data-variant="page"] {
922
+ min-block-size: 100%;
923
+ justify-content: center;
924
+ }
925
+
820
926
  .ui-empty-state-title {
821
927
  font-size: var(--font-size-base);
822
928
  font-weight: var(--font-weight-medium);
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  .app-root[data-collapsed="true"] {
20
- grid-template-columns: var(--app-shell-rail-width) minmax(0, 1fr);
20
+ grid-template-columns: var(--app-shell-sidebar-collapsed-width) minmax(0, 1fr);
21
21
  }
22
22
 
23
23
  .app-root[data-topbar-span="full"] {
@@ -27,6 +27,31 @@
27
27
  "sidebar footer";
28
28
  }
29
29
 
30
+ .app-root[data-nav-rail] {
31
+ grid-template-areas:
32
+ "navrail sidebar topbar"
33
+ "navrail sidebar main"
34
+ "navrail sidebar footer";
35
+ grid-template-columns:
36
+ var(--app-shell-nav-rail-width)
37
+ var(--app-shell-sidebar-width)
38
+ minmax(0, 1fr);
39
+ }
40
+
41
+ .app-root[data-nav-rail][data-collapsed="true"] {
42
+ grid-template-columns:
43
+ var(--app-shell-nav-rail-width)
44
+ var(--app-shell-sidebar-collapsed-width)
45
+ minmax(0, 1fr);
46
+ }
47
+
48
+ .app-root[data-nav-rail][data-topbar-span="full"] {
49
+ grid-template-areas:
50
+ "topbar topbar topbar"
51
+ "navrail sidebar main"
52
+ "navrail sidebar footer";
53
+ }
54
+
30
55
  .app-root[data-topbar="none"] {
31
56
  grid-template-rows: auto minmax(0, 1fr) auto;
32
57
  }
@@ -53,6 +78,21 @@
53
78
  color: hsl(var(--foreground));
54
79
  }
55
80
 
81
+ .app-nav-rail {
82
+ grid-area: navrail;
83
+ display: flex;
84
+ height: 100%;
85
+ min-width: 0;
86
+ min-height: 0;
87
+ flex-direction: column;
88
+ align-items: center;
89
+ overflow: clip;
90
+ overflow-clip-margin: var(--focus-ring-clip-margin);
91
+ border-inline-end: 1px solid hsl(var(--border));
92
+ background: hsl(var(--muted));
93
+ color: hsl(var(--foreground));
94
+ }
95
+
56
96
  .app-topbar {
57
97
  grid-area: topbar;
58
98
  display: flex;
@@ -477,11 +517,39 @@
477
517
  }
478
518
  }
479
519
 
520
+ .app-sidebar-logo {
521
+ display: flex;
522
+ block-size: var(--app-shell-bar-height);
523
+ min-inline-size: 0;
524
+ align-items: center;
525
+ border-block-end: 1px solid hsl(var(--border));
526
+ padding-inline: var(--space-3);
527
+ }
528
+
529
+ .app-root[data-collapsed="true"] .app-sidebar-logo {
530
+ justify-content: center;
531
+ padding-inline: 0;
532
+ }
533
+
534
+ .app-root[data-collapsed="true"] .app-sidebar-logo [data-slot="logo-wordmark"] {
535
+ display: none;
536
+ }
537
+
480
538
  .app-topbar-rail {
481
539
  display: flex;
482
540
  min-width: 0;
483
541
  flex: 1;
484
542
  align-items: center;
543
+ align-self: stretch;
544
+ gap: var(--space-3);
545
+ }
546
+
547
+ .app-topbar-custom {
548
+ display: flex;
549
+ min-width: 0;
550
+ flex: 1;
551
+ align-items: center;
552
+ align-self: stretch;
485
553
  gap: var(--space-3);
486
554
  }
487
555
 
@@ -490,6 +558,7 @@
490
558
  display: flex;
491
559
  min-width: 0;
492
560
  align-items: center;
561
+ align-self: stretch;
493
562
  gap: var(--space-2);
494
563
  }
495
564
 
@@ -524,20 +593,52 @@
524
593
  overscroll-behavior: contain;
525
594
  }
526
595
 
596
+ .app-mobile-nav-columns {
597
+ display: flex;
598
+ min-height: 0;
599
+ flex: 1;
600
+ gap: var(--space-2);
601
+ }
602
+
603
+ .app-mobile-nav-rail {
604
+ display: flex;
605
+ min-height: 0;
606
+ flex: 0 0 auto;
607
+ flex-direction: column;
608
+ border-inline-end: 1px solid hsl(var(--border));
609
+ inline-size: var(--app-shell-nav-rail-width);
610
+ overflow-y: auto;
611
+ overscroll-behavior: contain;
612
+ }
613
+
614
+ .app-mobile-nav-sections {
615
+ display: flex;
616
+ min-width: 0;
617
+ min-height: 0;
618
+ flex: 1;
619
+ flex-direction: column;
620
+ overflow-y: auto;
621
+ overscroll-behavior: contain;
622
+ }
623
+
527
624
  .app-topbar-spacer {
528
625
  flex: 1;
529
626
  }
530
627
 
531
628
  .app-breadcrumb {
532
629
  border-bottom: 1px solid hsl(var(--border));
533
- padding: var(--space-2) var(--space-4);
630
+
631
+ padding: var(--space-2) var(--space-page-active-x);
534
632
  color: hsl(var(--muted-foreground));
535
633
  font-size: var(--font-size-base);
536
634
  }
537
635
 
538
636
  @media (width <= 56.25rem) {
539
637
  .app-root,
540
- .app-root[data-collapsed="true"] {
638
+ .app-root[data-collapsed="true"],
639
+ .app-root[data-nav-rail],
640
+ .app-root[data-nav-rail][data-collapsed="true"],
641
+ .app-root[data-nav-rail][data-topbar-span="full"] {
541
642
  grid-template-areas:
542
643
  "topbar"
543
644
  "main"
@@ -545,7 +646,8 @@
545
646
  grid-template-columns: minmax(0, 1fr);
546
647
  }
547
648
 
548
- .app-sidebar {
649
+ .app-sidebar,
650
+ .app-nav-rail {
549
651
  display: none;
550
652
  }
551
653
 
@@ -570,7 +672,7 @@
570
672
  }
571
673
 
572
674
  .app-root[data-responsive-navigation="docked"][data-collapsed="true"] {
573
- grid-template-columns: var(--app-shell-rail-width) minmax(0, 1fr);
675
+ grid-template-columns: var(--app-shell-sidebar-collapsed-width) minmax(0, 1fr);
574
676
  }
575
677
 
576
678
  .app-root[data-responsive-navigation="docked"][data-topbar-span="full"] {
@@ -580,7 +682,33 @@
580
682
  "sidebar footer";
581
683
  }
582
684
 
583
- .app-root[data-responsive-navigation="docked"] > .app-sidebar {
685
+ .app-root[data-responsive-navigation="docked"][data-nav-rail] {
686
+ grid-template-areas:
687
+ "navrail sidebar topbar"
688
+ "navrail sidebar main"
689
+ "navrail sidebar footer";
690
+ grid-template-columns:
691
+ var(--app-shell-nav-rail-width)
692
+ var(--app-shell-sidebar-width)
693
+ minmax(0, 1fr);
694
+ }
695
+
696
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-collapsed="true"] {
697
+ grid-template-columns:
698
+ var(--app-shell-nav-rail-width)
699
+ var(--app-shell-sidebar-collapsed-width)
700
+ minmax(0, 1fr);
701
+ }
702
+
703
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-topbar-span="full"] {
704
+ grid-template-areas:
705
+ "topbar topbar topbar"
706
+ "navrail sidebar main"
707
+ "navrail sidebar footer";
708
+ }
709
+
710
+ .app-root[data-responsive-navigation="docked"] > .app-sidebar,
711
+ .app-root[data-responsive-navigation="docked"] > .app-nav-rail {
584
712
  display: flex;
585
713
  }
586
714
 
@@ -685,8 +813,11 @@
685
813
  }
686
814
 
687
815
  .ui-org-switcher-popover {
688
- width: min(var(--org-switcher-menu-width), calc(100vw - var(--space-4)));
689
- padding: 0;
816
+ --popover-surface-inline-size: min(
817
+ var(--org-switcher-menu-width),
818
+ calc(100vw - var(--space-4))
819
+ );
820
+ --popover-space-inset: 0;
690
821
  }
691
822
 
692
823
  .ui-org-switcher-sheet {
@@ -1170,6 +1301,7 @@
1170
1301
 
1171
1302
  @supports not (overflow-clip-margin: 1px) {
1172
1303
  .app-sidebar,
1304
+ .app-nav-rail,
1173
1305
  .app-topbar,
1174
1306
  .ui-topbar,
1175
1307
  .ui-topbar-start,
@@ -62,21 +62,22 @@
62
62
  [data-slot="heading"][data-tone="primary"] {
63
63
  color: hsl(var(--primary));
64
64
  }
65
+
65
66
  [data-slot="text"][data-tone="success"],
66
67
  [data-slot="heading"][data-tone="success"] {
67
- color: hsl(var(--success));
68
+ color: hsl(var(--text-success));
68
69
  }
69
70
  [data-slot="text"][data-tone="warning"],
70
71
  [data-slot="heading"][data-tone="warning"] {
71
- color: hsl(var(--warning));
72
+ color: hsl(var(--text-warning));
72
73
  }
73
74
  [data-slot="text"][data-tone="destructive"],
74
75
  [data-slot="heading"][data-tone="destructive"] {
75
- color: hsl(var(--destructive));
76
+ color: hsl(var(--text-error));
76
77
  }
77
78
  [data-slot="text"][data-tone="info"],
78
79
  [data-slot="heading"][data-tone="info"] {
79
- color: hsl(var(--info));
80
+ color: hsl(var(--text-info));
80
81
  }
81
82
 
82
83
  [data-slot="text"][data-align="start"],