@siyahi/ui 0.1.9-next.2 → 0.1.9-next.21

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 (196) hide show
  1. package/DESIGN.md +30 -0
  2. package/README.md +82 -176
  3. package/THIRD_PARTY_NOTICES.md +11 -11
  4. package/agents/examples/accordion.tsx +39 -0
  5. package/agents/examples/alert.tsx +23 -0
  6. package/agents/examples/app-sidebar.tsx +38 -0
  7. package/agents/examples/avatar.tsx +14 -0
  8. package/agents/examples/badge.tsx +18 -0
  9. package/agents/examples/bar-list-labels.tsx +22 -0
  10. package/agents/examples/bar-list-sides.tsx +38 -0
  11. package/agents/examples/bar-list.tsx +24 -0
  12. package/agents/examples/breadcrumb.tsx +28 -0
  13. package/agents/examples/button-states.tsx +23 -0
  14. package/agents/examples/button.tsx +21 -0
  15. package/agents/examples/calendar.tsx +15 -0
  16. package/agents/examples/callout.tsx +33 -0
  17. package/agents/examples/card.tsx +34 -0
  18. package/agents/examples/change-bar.tsx +104 -0
  19. package/agents/examples/chart-area.tsx +39 -0
  20. package/agents/examples/chart-bar-flows.tsx +32 -0
  21. package/agents/examples/chart-bar-hourly.tsx +28 -0
  22. package/agents/examples/chart-bar-losses.tsx +29 -0
  23. package/agents/examples/chart-bar-sectors.tsx +72 -0
  24. package/agents/examples/chart-bar-years.tsx +40 -0
  25. package/agents/examples/chart-bar.tsx +56 -0
  26. package/agents/examples/chart-category-ticks.tsx +50 -0
  27. package/agents/examples/chart-line-events.tsx +47 -0
  28. package/agents/examples/chart-line-timeline.tsx +41 -0
  29. package/agents/examples/chart-line.tsx +57 -0
  30. package/agents/examples/code-block.tsx +38 -0
  31. package/agents/examples/collapsible.tsx +16 -0
  32. package/agents/examples/command.tsx +27 -0
  33. package/agents/examples/context-menu.tsx +15 -0
  34. package/agents/examples/copy-button.tsx +8 -0
  35. package/agents/examples/data-bar.tsx +121 -0
  36. package/agents/examples/data-table-compact.tsx +95 -0
  37. package/agents/examples/data-table-filters.tsx +103 -0
  38. package/agents/examples/data-table.tsx +98 -0
  39. package/agents/examples/delta.tsx +13 -0
  40. package/agents/examples/dialog.tsx +28 -0
  41. package/agents/examples/distribution-bar-budget.tsx +30 -0
  42. package/agents/examples/distribution-bar-tug.tsx +72 -0
  43. package/agents/examples/dropdown-menu.tsx +31 -0
  44. package/agents/examples/formatters.tsx +42 -0
  45. package/agents/examples/heatmap-calendar.tsx +60 -0
  46. package/agents/examples/heatmap-status.tsx +57 -0
  47. package/agents/examples/heatmap-weekday.tsx +75 -0
  48. package/agents/examples/input-states.tsx +33 -0
  49. package/agents/examples/input.tsx +17 -0
  50. package/agents/examples/local-time.tsx +14 -0
  51. package/agents/examples/metric-strip.tsx +46 -0
  52. package/agents/examples/overview-dashboard.tsx +18 -0
  53. package/agents/examples/page-hero.tsx +38 -0
  54. package/agents/examples/page-section.tsx +52 -0
  55. package/agents/examples/popover.tsx +23 -0
  56. package/agents/examples/price-chart.tsx +32 -0
  57. package/agents/examples/progress-tone.tsx +28 -0
  58. package/agents/examples/progress.tsx +10 -0
  59. package/agents/examples/range-position-table.tsx +101 -0
  60. package/agents/examples/range-position.tsx +53 -0
  61. package/agents/examples/scroll-area.tsx +20 -0
  62. package/agents/examples/section-cards-select.tsx +30 -0
  63. package/agents/examples/section-cards-trend.tsx +30 -0
  64. package/agents/examples/section-cards.tsx +48 -0
  65. package/agents/examples/select.tsx +27 -0
  66. package/agents/examples/separator.tsx +13 -0
  67. package/agents/examples/sheet.tsx +15 -0
  68. package/agents/examples/skeleton.tsx +11 -0
  69. package/agents/examples/slider.tsx +5 -0
  70. package/agents/examples/surfaces.tsx +116 -0
  71. package/agents/examples/table.tsx +50 -0
  72. package/agents/examples/tabs.tsx +16 -0
  73. package/agents/examples/target-rows.tsx +70 -0
  74. package/agents/examples/toggle-group.tsx +12 -0
  75. package/agents/examples/toggle.tsx +11 -0
  76. package/agents/examples/tooltip.tsx +13 -0
  77. package/agents/examples/treemap.tsx +88 -0
  78. package/agents/manifest.json +1081 -0
  79. package/agents/report-rules.json +7 -0
  80. package/dist/components/registry/charts/area-chart-card.js +25 -7
  81. package/dist/components/registry/charts/bar-chart-card.d.ts +0 -1
  82. package/dist/components/registry/charts/bar-chart-card.js +40 -26
  83. package/dist/components/registry/charts/line-chart-card.js +2 -2
  84. package/dist/components/registry/dashboard-01/section-cards.d.ts +2 -0
  85. package/dist/components/registry/dashboard-01/section-cards.js +42 -35
  86. package/dist/components/registry/dashboardcn/bar-list.js +18 -11
  87. package/dist/components/registry/dashboardcn/distribution-bar.js +1 -1
  88. package/dist/components/registry/dashboardcn/kpi-row-card.d.ts +29 -0
  89. package/dist/components/registry/dashboardcn/kpi-row-card.js +81 -0
  90. package/dist/components/registry/dashboardcn/sparkline.d.ts +22 -0
  91. package/dist/components/registry/dashboardcn/sparkline.js +117 -0
  92. package/dist/components/registry/heatmap/calendar-heatmap.d.ts +4 -2
  93. package/dist/components/registry/heatmap/calendar-heatmap.js +74 -33
  94. package/dist/components/registry/heatmap/status-heatmap.d.ts +5 -3
  95. package/dist/components/registry/heatmap/status-heatmap.js +37 -15
  96. package/dist/components/registry/heatmap/weekday-heatmap.d.ts +9 -3
  97. package/dist/components/registry/heatmap/weekday-heatmap.js +82 -47
  98. package/dist/components/registry/niko-table/core/data-table-context.d.ts +18 -1
  99. package/dist/components/registry/niko-table/core/data-table-context.js +7 -1
  100. package/dist/components/registry/niko-table/core/data-table-grouped-row.js +3 -1
  101. package/dist/components/registry/niko-table/core/data-table-root.js +39 -4
  102. package/dist/components/registry/niko-table/core/data-table-structure.js +17 -12
  103. package/dist/components/registry/niko-table/core/data-table.d.ts +2 -2
  104. package/dist/components/registry/niko-table/core/data-table.js +5 -1
  105. package/dist/components/registry/niko-table/filters/table-faceted-filter.js +4 -4
  106. package/dist/components/registry/niko-table/filters/table-search-filter.js +1 -1
  107. package/dist/components/registry/niko-table/lib/flex-columns.d.ts +1 -1
  108. package/dist/components/registry/niko-table/lib/flex-columns.js +3 -3
  109. package/dist/components/registry/niko-table/lib/styles.d.ts +1 -1
  110. package/dist/components/registry/niko-table/lib/styles.js +3 -3
  111. package/dist/components/registry/niko-table/types/index.d.ts +9 -0
  112. package/dist/components/registry/niko-table/ui/table.js +2 -2
  113. package/dist/components/registry/sidebar-07/app-sidebar.d.ts +1 -1
  114. package/dist/components/registry/sidebar-07/app-sidebar.js +3 -1
  115. package/dist/components/registry/sidebar-07/nav-main.d.ts +2 -1
  116. package/dist/components/registry/sidebar-07/nav-main.js +16 -3
  117. package/dist/components/siyahi/callout.d.ts +24 -0
  118. package/dist/components/siyahi/callout.js +40 -0
  119. package/dist/components/siyahi/change-bar.d.ts +21 -0
  120. package/dist/components/siyahi/change-bar.js +35 -0
  121. package/dist/components/siyahi/data-bar.d.ts +19 -0
  122. package/dist/components/siyahi/data-bar.js +29 -0
  123. package/dist/components/siyahi/data-table-compact-columns-toggle.d.ts +4 -0
  124. package/dist/components/siyahi/data-table-compact-columns-toggle.js +19 -0
  125. package/dist/components/siyahi/data-table-footnote.d.ts +12 -0
  126. package/dist/components/siyahi/data-table-footnote.js +35 -0
  127. package/dist/components/siyahi/default-sidebar-open.d.ts +8 -0
  128. package/dist/components/siyahi/default-sidebar-open.js +13 -0
  129. package/dist/components/siyahi/page-hero.d.ts +25 -0
  130. package/dist/components/siyahi/page-hero.js +41 -0
  131. package/dist/components/siyahi/page-section.d.ts +4 -1
  132. package/dist/components/siyahi/page-section.js +6 -3
  133. package/dist/components/siyahi/page-toc.d.ts +20 -0
  134. package/dist/components/siyahi/page-toc.js +76 -0
  135. package/dist/components/siyahi/panel-grid.d.ts +22 -0
  136. package/dist/components/siyahi/panel-grid.js +34 -0
  137. package/dist/components/siyahi/quote.d.ts +12 -0
  138. package/dist/components/siyahi/quote.js +23 -0
  139. package/dist/components/siyahi/range-position.d.ts +24 -0
  140. package/dist/components/siyahi/range-position.js +105 -0
  141. package/dist/components/siyahi/siyahi-provider.d.ts +13 -2
  142. package/dist/components/siyahi/siyahi-provider.js +17 -4
  143. package/dist/components/siyahi/target-rows.d.ts +34 -0
  144. package/dist/components/siyahi/target-rows.js +97 -0
  145. package/dist/components/siyahi/treemap.d.ts +4 -1
  146. package/dist/components/siyahi/treemap.js +78 -28
  147. package/dist/components/siyahi/warning-alert.d.ts +10 -0
  148. package/dist/components/siyahi/warning-alert.js +20 -0
  149. package/dist/components/ui/accordion.js +5 -5
  150. package/dist/components/ui/alert.js +2 -2
  151. package/dist/components/ui/badge.js +1 -1
  152. package/dist/components/ui/breadcrumb.js +2 -2
  153. package/dist/components/ui/button.js +10 -10
  154. package/dist/components/ui/calendar.js +1 -1
  155. package/dist/components/ui/card.js +4 -4
  156. package/dist/components/ui/chart.js +1 -1
  157. package/dist/components/ui/code-block.js +13 -12
  158. package/dist/components/ui/command.js +7 -6
  159. package/dist/components/ui/context-menu.js +7 -7
  160. package/dist/components/ui/dialog.js +5 -5
  161. package/dist/components/ui/dropdown-menu.js +8 -8
  162. package/dist/components/ui/input-group.js +11 -11
  163. package/dist/components/ui/input.js +1 -1
  164. package/dist/components/ui/popover.js +3 -3
  165. package/dist/components/ui/progress.js +1 -1
  166. package/dist/components/ui/select.js +6 -6
  167. package/dist/components/ui/sheet.js +5 -5
  168. package/dist/components/ui/sidebar.js +17 -18
  169. package/dist/components/ui/skeleton.js +1 -1
  170. package/dist/components/ui/slider.js +2 -2
  171. package/dist/components/ui/table.js +2 -2
  172. package/dist/components/ui/tabs.js +2 -2
  173. package/dist/components/ui/textarea.js +1 -1
  174. package/dist/components/ui/toggle-group.js +2 -2
  175. package/dist/components/ui/toggle.js +4 -4
  176. package/dist/components/ui/tooltip.js +2 -2
  177. package/dist/index.d.ts +21 -7
  178. package/dist/index.js +18 -4
  179. package/dist/lib/chart-frame.d.ts +25 -7
  180. package/dist/lib/chart-frame.js +251 -127
  181. package/dist/lib/chart-series.d.ts +12 -6
  182. package/dist/lib/compact-columns.d.ts +19 -0
  183. package/dist/lib/compact-columns.js +55 -0
  184. package/dist/lib/format.d.ts +7 -2
  185. package/dist/lib/format.js +54 -16
  186. package/dist/lib/heatmap-navigation.d.ts +8 -0
  187. package/dist/lib/heatmap-navigation.js +49 -0
  188. package/dist/lib/treemap.js +6 -1
  189. package/dist/lib/use-element-width.d.ts +5 -0
  190. package/dist/lib/use-element-width.js +15 -0
  191. package/package.json +4 -1
  192. package/registry.lock.json +16 -0
  193. package/report.css +33 -32
  194. package/styles/siyahi.css +221 -39
  195. package/dist/lib/recharts.d.ts +0 -2
  196. package/dist/lib/recharts.js +0 -1
package/styles/siyahi.css CHANGED
@@ -1,7 +1,10 @@
1
1
  /*
2
2
  * Siyahi theme: the only file in the package that holds colour values.
3
- * Stock shadcn/ui `neutral` for both schemes, plus four meaning colours and a
4
- * five-hue chart palette. `packages/tools/contrast.mjs` checks every value
3
+ * shadcn/ui `neutral` greys for both schemes, with ink indigo (hue 275)
4
+ * placed, not spread: links, focus rings, the selected sidebar item's text
5
+ * and the first chart series. Buttons, badges and toggles stay monochrome,
6
+ * where black and white read strongest. Plus three meaning
7
+ * colours and a five-hue chart palette. `packages/tools/contrast.mjs` checks every value
5
8
  * here in the build; when a check fails, change the value, never the bar.
6
9
  */
7
10
  @import "tailwindcss";
@@ -81,7 +84,7 @@
81
84
  :root {
82
85
  color-scheme: light dark;
83
86
  --radius: 0.625rem;
84
- --background: oklch(1 0 0);
87
+ --background: oklch(0.985 0 0);
85
88
  --foreground: oklch(0.145 0 0);
86
89
  --card: oklch(1 0 0);
87
90
  --card-foreground: oklch(0.145 0 0);
@@ -98,7 +101,7 @@
98
101
  --destructive: oklch(0.577 0.245 27.325);
99
102
  --border: oklch(0.922 0 0);
100
103
  --input: oklch(0.922 0 0);
101
- --ring: oklch(0.708 0 0);
104
+ --ring: oklch(0.62 0.16 275);
102
105
  /* Tailwind green-700, red-600, amber-700, blue-600. */
103
106
  --positive: oklch(0.527 0.154 150.069);
104
107
  --positive-foreground: oklch(0.985 0 0);
@@ -106,69 +109,81 @@
106
109
  --negative-foreground: oklch(0.985 0 0);
107
110
  --warning: oklch(0.555 0.163 48.998);
108
111
  --warning-foreground: oklch(0.985 0 0);
109
- --link: oklch(0.546 0.245 262.881);
112
+ --link: oklch(0.51 0.2 275);
110
113
  /*
111
- * Blue, emerald, amber, violet, rose. Each slot reaches 3:1 against the card
112
- * and against the slots next to it, which only lightness can give, so
113
- * emerald and violet are the deep members in both schemes. Slots two apart
114
+ * Indigo, amber, plum, sky, teal: no green or red, so no series reads as a
115
+ * gain or a loss. Each slot reaches 3:1 against the card and against the
116
+ * slots next to it, which only lightness can give, so indigo, plum and teal
117
+ * are the deep members and amber and sky the pale ones, in both schemes: a
118
+ * pale indigo in dark read as lavender and lost the accent. Slots two apart
114
119
  * share a lightness and are told apart by hue; series take slots in order.
115
120
  * Every chart value is inside sRGB, so the browser paints what the contrast
116
121
  * check scored.
117
122
  */
118
- --chart-1: oklch(0.65 0.17 259.8);
119
- --chart-2: oklch(0.35 0.07 163.2);
120
- --chart-3: oklch(0.66 0.15 60);
121
- --chart-4: oklch(0.36 0.17 293);
122
- --chart-5: oklch(0.65 0.21 16.4);
123
+ --chart-1: oklch(0.4 0.17 275);
124
+ --chart-2: oklch(0.66 0.13 70);
125
+ --chart-3: oklch(0.38 0.13 335);
126
+ --chart-4: oklch(0.66 0.11 235);
127
+ --chart-5: oklch(0.36 0.06 205);
123
128
  --sidebar: oklch(0.985 0 0);
124
129
  --sidebar-foreground: oklch(0.145 0 0);
125
130
  --sidebar-primary: oklch(0.205 0 0);
126
131
  --sidebar-primary-foreground: oklch(0.985 0 0);
127
132
  --sidebar-accent: oklch(0.97 0 0);
128
- --sidebar-accent-foreground: oklch(0.205 0 0);
133
+ --sidebar-accent-foreground: oklch(0.45 0.2 275);
129
134
  --sidebar-border: oklch(0.922 0 0);
130
- --sidebar-ring: oklch(0.708 0 0);
135
+ --sidebar-ring: oklch(0.62 0.16 275);
131
136
 
132
137
  @variant dark {
133
- --background: oklch(0.145 0 0);
134
- --foreground: oklch(0.985 0 0);
135
- --card: oklch(0.205 0 0);
136
- --card-foreground: oklch(0.985 0 0);
137
- --popover: oklch(0.205 0 0);
138
- --popover-foreground: oklch(0.985 0 0);
138
+ /*
139
+ * The canvas lifts just off black and text sits a step below white:
140
+ * near-white on near-black (19:1) blurs for many readers, and with the
141
+ * cards' grey gone on a ruled page the canvas is what text sits on.
142
+ * Claude Code (#181818, about #e8e8e8 text) and T3 Code (#0a0a0a, about
143
+ * #bebebe) both narrow that gap; this sits between them, at 14.9:1.
144
+ * Cards sit one step above the canvas, so data reads as raised, as the
145
+ * white card does on the light canvas; the sidebar is a shade darker.
146
+ */
147
+ --background: oklch(0.14 0 0);
148
+ --foreground: oklch(0.922 0 0);
149
+ --card: oklch(0.215 0 0);
150
+ --card-foreground: oklch(0.922 0 0);
151
+ --popover: oklch(0.215 0 0);
152
+ --popover-foreground: oklch(0.922 0 0);
139
153
  --primary: oklch(0.922 0 0);
140
154
  --primary-foreground: oklch(0.205 0 0);
141
155
  --secondary: oklch(0.269 0 0);
142
- --secondary-foreground: oklch(0.985 0 0);
156
+ --secondary-foreground: oklch(0.922 0 0);
143
157
  --muted: oklch(0.269 0 0);
144
- --muted-foreground: oklch(0.708 0 0);
158
+ /* A step above shadcn's 0.708: subtitles, footnotes and table labels at data density read too dim. */
159
+ --muted-foreground: oklch(0.74 0 0);
145
160
  --accent: oklch(0.269 0 0);
146
- --accent-foreground: oklch(0.985 0 0);
161
+ --accent-foreground: oklch(0.922 0 0);
147
162
  --destructive: oklch(0.704 0.191 22.216);
148
163
  --border: oklch(1 0 0 / 10%);
149
164
  --input: oklch(1 0 0 / 15%);
150
- --ring: oklch(0.556 0 0);
151
- /* Tailwind green-400, red-400, amber-400, blue-400. */
152
- --positive: oklch(0.792 0.209 151.711);
165
+ --ring: oklch(0.6 0.14 275);
166
+ /* Green toned down from Tailwind green-400 to the lightness and calm of red-400 beside it, so gains do not shout; amber-400. */
167
+ --positive: oklch(0.74 0.16 151.711);
153
168
  --positive-foreground: oklch(0.145 0 0);
154
169
  --negative: oklch(0.704 0.191 22.216);
155
170
  --negative-foreground: oklch(0.145 0 0);
156
171
  --warning: oklch(0.828 0.189 84.429);
157
172
  --warning-foreground: oklch(0.145 0 0);
158
- --link: oklch(0.707 0.165 254.624);
159
- --chart-1: oklch(0.84 0.08 255);
160
- --chart-2: oklch(0.52 0.11 163.2);
161
- --chart-3: oklch(0.86 0.13 80);
162
- --chart-4: oklch(0.55 0.25 293);
163
- --chart-5: oklch(0.84 0.085 12);
164
- --sidebar: oklch(0.205 0 0);
165
- --sidebar-foreground: oklch(0.985 0 0);
166
- --sidebar-primary: oklch(0.488 0.243 264.376);
167
- --sidebar-primary-foreground: oklch(0.985 0 0);
173
+ --link: oklch(0.75 0.13 275);
174
+ --chart-1: oklch(0.58 0.2 275);
175
+ --chart-2: oklch(0.88 0.08 75);
176
+ --chart-3: oklch(0.58 0.16 335);
177
+ --chart-4: oklch(0.88 0.05 235);
178
+ --chart-5: oklch(0.56 0.08 205);
179
+ --sidebar: oklch(0.145 0 0);
180
+ --sidebar-foreground: oklch(0.922 0 0);
181
+ --sidebar-primary: oklch(0.922 0 0);
182
+ --sidebar-primary-foreground: oklch(0.205 0 0);
168
183
  --sidebar-accent: oklch(0.269 0 0);
169
- --sidebar-accent-foreground: oklch(0.985 0 0);
184
+ --sidebar-accent-foreground: oklch(0.8 0.1 275);
170
185
  --sidebar-border: oklch(1 0 0 / 10%);
171
- --sidebar-ring: oklch(0.556 0 0);
186
+ --sidebar-ring: oklch(0.6 0.14 275);
172
187
  }
173
188
  }
174
189
 
@@ -195,6 +210,91 @@
195
210
  }
196
211
  }
197
212
 
213
+ /*
214
+ * Every selected toggle, a view switch or a filter chip alike, fills with the
215
+ * foreground, black on white and white on black, so the reader sees at once
216
+ * what is on; stock shadcn marks it with a faint grey. Unlayered, to outrank
217
+ * the stock aria-pressed:bg-muted.
218
+ */
219
+ :is([data-slot="toggle"], [data-slot="toggle-group-item"]):is([aria-pressed="true"], [data-pressed]) {
220
+ background-color: var(--foreground);
221
+ color: var(--background);
222
+ border-color: var(--foreground);
223
+ }
224
+
225
+ /*
226
+ * A number column (meta.variant "number") right-aligns its head and cells, so
227
+ * figures line up by their units down the column, as a ledger reads.
228
+ */
229
+ :is([data-slot="table-head"], [data-slot="table-cell"])[data-numeric] {
230
+ text-align: right;
231
+ }
232
+ [data-slot="table-head"][data-numeric] > *,
233
+ [data-slot="table-cell"][data-numeric] > :is(div, span)[class*="flex"] {
234
+ justify-content: flex-end;
235
+ margin-inline-start: auto;
236
+ }
237
+
238
+ /*
239
+ * A card on the card surface lifts off the tinted canvas with a faint shadow
240
+ * under its 1px ring (Tailwind composes --tw-shadow with the ring), and a data
241
+ * table inside it drops its own border, so there is one frame, not two.
242
+ */
243
+ @scope (:root, [data-surface="card"]) to ([data-surface="ruled"], [data-surface="open"]) {
244
+ [data-slot="card"] {
245
+ --tw-shadow: 0 1px 2px 0 oklch(0 0 0 / 0.06), 0 1px 3px 0 oklch(0 0 0 / 0.04);
246
+ }
247
+ [data-slot="card"] [data-slot="table-container"] {
248
+ border-color: transparent;
249
+ }
250
+ }
251
+
252
+ /*
253
+ * Chart gridlines take the full border colour: stock shadcn draws them at half
254
+ * of it, which all but vanishes on a dark card (5% white).
255
+ */
256
+ [data-slot="chart"] .recharts-cartesian-grid line {
257
+ stroke: var(--border);
258
+ }
259
+
260
+ /*
261
+ * The selected sub-page marks its stretch of the sidebar's rail in the accent,
262
+ * so the current place reads at a glance in a long list, as a docs index does.
263
+ */
264
+ [data-slot="sidebar-menu-sub-item"]:has(> [data-active])::before {
265
+ content: "";
266
+ position: absolute;
267
+ inset-block: 2px;
268
+ left: -11px;
269
+ width: 2px;
270
+ border-radius: 1px;
271
+ background: var(--sidebar-accent-foreground);
272
+ }
273
+
274
+ /* Touch targets follow input capability, including touch laptops. */
275
+ @media (pointer: coarse) {
276
+ :is(
277
+ [class~="group/button"],
278
+ [data-slot="toggle"],
279
+ [data-slot="toggle-group-item"],
280
+ [data-slot="select-trigger"],
281
+ [data-slot="tabs-trigger"],
282
+ [data-slot="input-group-button"]
283
+ ) {
284
+ min-height: --spacing(11);
285
+ min-width: --spacing(11);
286
+ }
287
+ :is([data-slot="input"], [data-slot="textarea"], [data-slot="input-group"], [data-slot="input-group-control"]) {
288
+ min-height: --spacing(11);
289
+ }
290
+ :is([data-slot="input"], [data-slot="textarea"], [data-slot="input-group-control"], [data-slot="command-input"]) {
291
+ font-size: 1rem;
292
+ }
293
+ [role="search"] > [data-slot="input"] {
294
+ padding-right: --spacing(14);
295
+ }
296
+ }
297
+
198
298
  /*
199
299
  * On a narrow card a header action (a toggle, a button) drops under the title
200
300
  * and description, left-aligned. Stock CardHeader keeps the action in its own
@@ -215,3 +315,85 @@
215
315
  }
216
316
  }
217
317
  }
318
+
319
+ /*
320
+ * Surfaces, from SiyahiProvider's surface prop. Card, the default, is
321
+ * shadcn's own card on the tinted canvas. Ruled and open take the box off
322
+ * every core Card: no fill, no corner, no ring, and no tinted footer band;
323
+ * PanelGrid draws the hairlines between ruled blocks. Open also drops the
324
+ * card's padding, so a block's content sits level with the page's text. Each
325
+ * scope stops at a provider that says otherwise. Unlayered, like the rule above, to
326
+ * outrank the core components' utility classes; a picked SectionCards tile
327
+ * keeps its ring, which is important.
328
+ */
329
+ @scope ([data-surface="ruled"], [data-surface="open"]) to ([data-surface="card"]) {
330
+ [data-slot="card"] {
331
+ background: none;
332
+ border-radius: 0;
333
+ --tw-ring-color: transparent;
334
+ }
335
+ [data-slot="card-footer"] {
336
+ background: none;
337
+ border-top-width: 0;
338
+ /* The band's own top padding stacked on the card's gap, and with no band it read as a hole under the figure. */
339
+ padding-top: 0;
340
+ }
341
+ }
342
+
343
+ @scope ([data-surface="open"]) to ([data-surface="ruled"], [data-surface="card"]) {
344
+ [data-slot="card"] {
345
+ --card-spacing: 0px;
346
+ gap: calc(var(--spacing) * 4);
347
+ }
348
+ }
349
+
350
+ /*
351
+ * A table, or a page's section strip, that scrolls sideways fades at the edge
352
+ * with more behind it,
353
+ * so a phone reader sees there is more without a visible scrollbar. The fade
354
+ * follows the scroll position; a table that fits has no timeline and no fade.
355
+ */
356
+ @property --table-fade-start {
357
+ syntax: "<length>";
358
+ inherits: false;
359
+ initial-value: 0px;
360
+ }
361
+ @property --table-fade-end {
362
+ syntax: "<length>";
363
+ inherits: false;
364
+ initial-value: 0px;
365
+ }
366
+ @keyframes table-edge-fade {
367
+ 0% {
368
+ --table-fade-start: 0px;
369
+ --table-fade-end: 2rem;
370
+ }
371
+ 8%,
372
+ 92% {
373
+ --table-fade-start: 2rem;
374
+ --table-fade-end: 2rem;
375
+ }
376
+ 100% {
377
+ --table-fade-start: 2rem;
378
+ --table-fade-end: 0px;
379
+ }
380
+ }
381
+ @layer base {
382
+ :is([data-slot="table-container"], [data-slot="page-toc"] > div) {
383
+ mask-image: linear-gradient(
384
+ to right,
385
+ rgb(0 0 0 / 0.2),
386
+ #000 var(--table-fade-start),
387
+ #000 calc(100% - var(--table-fade-end)),
388
+ rgb(0 0 0 / 0.2)
389
+ );
390
+ animation: table-edge-fade linear both;
391
+ animation-timeline: scroll(self inline);
392
+ }
393
+ /* Scroll position, not motion: the reduced-motion reset above must not collapse it. */
394
+ @media (prefers-reduced-motion: reduce) {
395
+ :is([data-slot="table-container"], [data-slot="page-toc"] > div) {
396
+ animation-duration: auto !important;
397
+ }
398
+ }
399
+ }
@@ -1,2 +0,0 @@
1
- import { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, ReferenceLine, XAxis, YAxis } from "recharts";
2
- export { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, ReferenceLine, XAxis, YAxis };
@@ -1 +0,0 @@
1
- export { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, ReferenceLine, XAxis, YAxis } from "recharts";