@cratis/scene.blueprint.default 4.31.0 → 4.33.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 (226) hide show
  1. package/ComponentName.ts +24 -0
  2. package/defaultBlueprint.ts +2 -1
  3. package/defaultBlueprintComponentMetadata.ts +2 -0
  4. package/defaultBlueprintComponents.ts +9 -0
  5. package/dist/cjs/ComponentName.js +8 -0
  6. package/dist/cjs/ComponentName.js.map +1 -1
  7. package/dist/cjs/defaultBlueprint.js +9 -5
  8. package/dist/cjs/defaultBlueprint.js.map +1 -1
  9. package/dist/cjs/defaultBlueprintComponentMetadata.js +8 -0
  10. package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
  11. package/dist/cjs/defaultBlueprintComponents.js +21 -1
  12. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  13. package/dist/cjs/foundation/ActionButton.js +33 -0
  14. package/dist/cjs/foundation/ActionButton.js.map +1 -0
  15. package/dist/cjs/foundation/ChartWrapper.js +520 -0
  16. package/dist/cjs/foundation/ChartWrapper.js.map +1 -0
  17. package/dist/cjs/foundation/ColumnChooser.js +156 -0
  18. package/dist/cjs/foundation/ColumnChooser.js.map +1 -0
  19. package/dist/cjs/foundation/ComponentState.js +42 -0
  20. package/dist/cjs/foundation/ComponentState.js.map +1 -0
  21. package/dist/cjs/foundation/EmptyState.js +31 -0
  22. package/dist/cjs/foundation/EmptyState.js.map +1 -0
  23. package/dist/cjs/foundation/FilterBuilder.js +307 -0
  24. package/dist/cjs/foundation/FilterBuilder.js.map +1 -0
  25. package/dist/cjs/foundation/FoundationIcon.js +58 -0
  26. package/dist/cjs/foundation/FoundationIcon.js.map +1 -0
  27. package/dist/cjs/foundation/FoundationStates.js +62 -0
  28. package/dist/cjs/foundation/FoundationStates.js.map +1 -0
  29. package/dist/cjs/foundation/PermissionRule.js +22 -0
  30. package/dist/cjs/foundation/PermissionRule.js.map +1 -0
  31. package/dist/cjs/foundation/SavedViewsMenu.js +199 -0
  32. package/dist/cjs/foundation/SavedViewsMenu.js.map +1 -0
  33. package/dist/cjs/foundation/StatCard.js +61 -0
  34. package/dist/cjs/foundation/StatCard.js.map +1 -0
  35. package/dist/cjs/foundation/StateFrame.js +200 -0
  36. package/dist/cjs/foundation/StateFrame.js.map +1 -0
  37. package/dist/cjs/foundation/StatusChip.js +64 -0
  38. package/dist/cjs/foundation/StatusChip.js.map +1 -0
  39. package/dist/cjs/foundation/TrendChip.js +93 -0
  40. package/dist/cjs/foundation/TrendChip.js.map +1 -0
  41. package/dist/cjs/foundation/chartGeometry.js +101 -0
  42. package/dist/cjs/foundation/chartGeometry.js.map +1 -0
  43. package/dist/cjs/foundation/columnModel.js +43 -0
  44. package/dist/cjs/foundation/columnModel.js.map +1 -0
  45. package/dist/cjs/foundation/filterModel.js +123 -0
  46. package/dist/cjs/foundation/filterModel.js.map +1 -0
  47. package/dist/cjs/foundation/formatting.js +85 -0
  48. package/dist/cjs/foundation/formatting.js.map +1 -0
  49. package/dist/cjs/foundation/foundationComponentMetadata.js +69 -0
  50. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -0
  51. package/dist/cjs/foundation/foundationDescriptors.js +385 -0
  52. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -0
  53. package/dist/cjs/foundation/foundationSamples.js +201 -0
  54. package/dist/cjs/foundation/foundationSamples.js.map +1 -0
  55. package/dist/cjs/foundation/foundationStrings.js +130 -0
  56. package/dist/cjs/foundation/foundationStrings.js.map +1 -0
  57. package/dist/cjs/foundation/useElementWidth.js +31 -0
  58. package/dist/cjs/foundation/useElementWidth.js.map +1 -0
  59. package/dist/cjs/foundation/viewModel.js +24 -0
  60. package/dist/cjs/foundation/viewModel.js.map +1 -0
  61. package/dist/cjs/index.js +90 -0
  62. package/dist/cjs/index.js.map +1 -1
  63. package/dist/cjs/themes/dark.js +9 -1
  64. package/dist/cjs/themes/dark.js.map +1 -1
  65. package/dist/cjs/themes/light.js +10 -2
  66. package/dist/cjs/themes/light.js.map +1 -1
  67. package/dist/esm/ComponentName.d.ts +9 -1
  68. package/dist/esm/ComponentName.d.ts.map +1 -1
  69. package/dist/esm/ComponentName.js +8 -0
  70. package/dist/esm/ComponentName.js.map +1 -1
  71. package/dist/esm/defaultBlueprint.d.ts.map +1 -1
  72. package/dist/esm/defaultBlueprint.js +9 -5
  73. package/dist/esm/defaultBlueprint.js.map +1 -1
  74. package/dist/esm/defaultBlueprintComponentMetadata.d.ts.map +1 -1
  75. package/dist/esm/defaultBlueprintComponentMetadata.js +8 -0
  76. package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
  77. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  78. package/dist/esm/defaultBlueprintComponents.js +21 -1
  79. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  80. package/dist/esm/foundation/ActionButton.d.ts +13 -0
  81. package/dist/esm/foundation/ActionButton.d.ts.map +1 -0
  82. package/dist/esm/foundation/ActionButton.js +31 -0
  83. package/dist/esm/foundation/ActionButton.js.map +1 -0
  84. package/dist/esm/foundation/ChartWrapper.d.ts +5 -0
  85. package/dist/esm/foundation/ChartWrapper.d.ts.map +1 -0
  86. package/dist/esm/foundation/ChartWrapper.js +517 -0
  87. package/dist/esm/foundation/ChartWrapper.js.map +1 -0
  88. package/dist/esm/foundation/ColumnChooser.d.ts +3 -0
  89. package/dist/esm/foundation/ColumnChooser.d.ts.map +1 -0
  90. package/dist/esm/foundation/ColumnChooser.js +154 -0
  91. package/dist/esm/foundation/ColumnChooser.js.map +1 -0
  92. package/dist/esm/foundation/ComponentState.d.ts +12 -0
  93. package/dist/esm/foundation/ComponentState.d.ts.map +1 -0
  94. package/dist/esm/foundation/ComponentState.js +38 -0
  95. package/dist/esm/foundation/ComponentState.js.map +1 -0
  96. package/dist/esm/foundation/EmptyState.d.ts +3 -0
  97. package/dist/esm/foundation/EmptyState.d.ts.map +1 -0
  98. package/dist/esm/foundation/EmptyState.js +29 -0
  99. package/dist/esm/foundation/EmptyState.js.map +1 -0
  100. package/dist/esm/foundation/FilterBuilder.d.ts +3 -0
  101. package/dist/esm/foundation/FilterBuilder.d.ts.map +1 -0
  102. package/dist/esm/foundation/FilterBuilder.js +305 -0
  103. package/dist/esm/foundation/FilterBuilder.js.map +1 -0
  104. package/dist/esm/foundation/Foundation.stories.d.ts +37 -0
  105. package/dist/esm/foundation/Foundation.stories.d.ts.map +1 -0
  106. package/dist/esm/foundation/Foundation.stories.js +34 -0
  107. package/dist/esm/foundation/Foundation.stories.js.map +1 -0
  108. package/dist/esm/foundation/FoundationIcon.d.ts +7 -0
  109. package/dist/esm/foundation/FoundationIcon.d.ts.map +1 -0
  110. package/dist/esm/foundation/FoundationIcon.js +55 -0
  111. package/dist/esm/foundation/FoundationIcon.js.map +1 -0
  112. package/dist/esm/foundation/FoundationStates.d.ts +8 -0
  113. package/dist/esm/foundation/FoundationStates.d.ts.map +1 -0
  114. package/dist/esm/foundation/FoundationStates.js +60 -0
  115. package/dist/esm/foundation/FoundationStates.js.map +1 -0
  116. package/dist/esm/foundation/PermissionRule.d.ts +8 -0
  117. package/dist/esm/foundation/PermissionRule.d.ts.map +1 -0
  118. package/dist/esm/foundation/PermissionRule.js +19 -0
  119. package/dist/esm/foundation/PermissionRule.js.map +1 -0
  120. package/dist/esm/foundation/SavedViewsMenu.d.ts +4 -0
  121. package/dist/esm/foundation/SavedViewsMenu.d.ts.map +1 -0
  122. package/dist/esm/foundation/SavedViewsMenu.js +196 -0
  123. package/dist/esm/foundation/SavedViewsMenu.js.map +1 -0
  124. package/dist/esm/foundation/StatCard.d.ts +3 -0
  125. package/dist/esm/foundation/StatCard.d.ts.map +1 -0
  126. package/dist/esm/foundation/StatCard.js +59 -0
  127. package/dist/esm/foundation/StatCard.js.map +1 -0
  128. package/dist/esm/foundation/StateFrame.d.ts +15 -0
  129. package/dist/esm/foundation/StateFrame.d.ts.map +1 -0
  130. package/dist/esm/foundation/StateFrame.js +197 -0
  131. package/dist/esm/foundation/StateFrame.js.map +1 -0
  132. package/dist/esm/foundation/StatusChip.d.ts +13 -0
  133. package/dist/esm/foundation/StatusChip.d.ts.map +1 -0
  134. package/dist/esm/foundation/StatusChip.js +59 -0
  135. package/dist/esm/foundation/StatusChip.js.map +1 -0
  136. package/dist/esm/foundation/TrendChip.d.ts +18 -0
  137. package/dist/esm/foundation/TrendChip.d.ts.map +1 -0
  138. package/dist/esm/foundation/TrendChip.js +88 -0
  139. package/dist/esm/foundation/TrendChip.js.map +1 -0
  140. package/dist/esm/foundation/chartGeometry.d.ts +34 -0
  141. package/dist/esm/foundation/chartGeometry.d.ts.map +1 -0
  142. package/dist/esm/foundation/chartGeometry.js +93 -0
  143. package/dist/esm/foundation/chartGeometry.js.map +1 -0
  144. package/dist/esm/foundation/columnModel.d.ts +11 -0
  145. package/dist/esm/foundation/columnModel.d.ts.map +1 -0
  146. package/dist/esm/foundation/columnModel.js +38 -0
  147. package/dist/esm/foundation/columnModel.js.map +1 -0
  148. package/dist/esm/foundation/filterModel.d.ts +33 -0
  149. package/dist/esm/foundation/filterModel.d.ts.map +1 -0
  150. package/dist/esm/foundation/filterModel.js +112 -0
  151. package/dist/esm/foundation/filterModel.js.map +1 -0
  152. package/dist/esm/foundation/formatting.d.ts +13 -0
  153. package/dist/esm/foundation/formatting.d.ts.map +1 -0
  154. package/dist/esm/foundation/formatting.js +78 -0
  155. package/dist/esm/foundation/formatting.js.map +1 -0
  156. package/dist/esm/foundation/foundationComponentMetadata.d.ts +3 -0
  157. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -0
  158. package/dist/esm/foundation/foundationComponentMetadata.js +67 -0
  159. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -0
  160. package/dist/esm/foundation/foundationDescriptors.d.ts +6 -0
  161. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -0
  162. package/dist/esm/foundation/foundationDescriptors.js +380 -0
  163. package/dist/esm/foundation/foundationDescriptors.js.map +1 -0
  164. package/dist/esm/foundation/foundationSamples.d.ts +10 -0
  165. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -0
  166. package/dist/esm/foundation/foundationSamples.js +198 -0
  167. package/dist/esm/foundation/foundationSamples.js.map +1 -0
  168. package/dist/esm/foundation/foundationStrings.d.ts +103 -0
  169. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -0
  170. package/dist/esm/foundation/foundationStrings.js +126 -0
  171. package/dist/esm/foundation/foundationStrings.js.map +1 -0
  172. package/dist/esm/foundation/index.d.ts +25 -0
  173. package/dist/esm/foundation/index.d.ts.map +1 -0
  174. package/dist/esm/foundation/index.js +25 -0
  175. package/dist/esm/foundation/index.js.map +1 -0
  176. package/dist/esm/foundation/useElementWidth.d.ts +3 -0
  177. package/dist/esm/foundation/useElementWidth.d.ts.map +1 -0
  178. package/dist/esm/foundation/useElementWidth.js +29 -0
  179. package/dist/esm/foundation/useElementWidth.js.map +1 -0
  180. package/dist/esm/foundation/viewModel.d.ts +7 -0
  181. package/dist/esm/foundation/viewModel.d.ts.map +1 -0
  182. package/dist/esm/foundation/viewModel.js +22 -0
  183. package/dist/esm/foundation/viewModel.js.map +1 -0
  184. package/dist/esm/gallery/widgets.js +1 -1
  185. package/dist/esm/index.d.ts +1 -0
  186. package/dist/esm/index.d.ts.map +1 -1
  187. package/dist/esm/index.js +24 -0
  188. package/dist/esm/index.js.map +1 -1
  189. package/dist/esm/themes/dark.d.ts.map +1 -1
  190. package/dist/esm/themes/dark.js +9 -1
  191. package/dist/esm/themes/dark.js.map +1 -1
  192. package/dist/esm/themes/light.d.ts.map +1 -1
  193. package/dist/esm/themes/light.js +10 -2
  194. package/dist/esm/themes/light.js.map +1 -1
  195. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  196. package/foundation/ActionButton.tsx +39 -0
  197. package/foundation/ChartWrapper.tsx +252 -0
  198. package/foundation/ColumnChooser.tsx +73 -0
  199. package/foundation/ComponentState.ts +53 -0
  200. package/foundation/EmptyState.tsx +22 -0
  201. package/foundation/FilterBuilder.tsx +144 -0
  202. package/foundation/Foundation.stories.tsx +46 -0
  203. package/foundation/FoundationIcon.tsx +49 -0
  204. package/foundation/FoundationStates.tsx +46 -0
  205. package/foundation/PermissionRule.ts +26 -0
  206. package/foundation/SavedViewsMenu.tsx +94 -0
  207. package/foundation/StatCard.tsx +44 -0
  208. package/foundation/StateFrame.tsx +126 -0
  209. package/foundation/StatusChip.tsx +51 -0
  210. package/foundation/TrendChip.tsx +78 -0
  211. package/foundation/chartGeometry.ts +108 -0
  212. package/foundation/columnModel.ts +39 -0
  213. package/foundation/filterModel.ts +111 -0
  214. package/foundation/formatting.ts +69 -0
  215. package/foundation/foundationComponentMetadata.ts +21 -0
  216. package/foundation/foundationDescriptors.ts +204 -0
  217. package/foundation/foundationSamples.ts +63 -0
  218. package/foundation/foundationStrings.ts +137 -0
  219. package/foundation/index.ts +27 -0
  220. package/foundation/useElementWidth.ts +31 -0
  221. package/foundation/viewModel.ts +21 -0
  222. package/index.ts +1 -0
  223. package/package.json +9 -8
  224. package/shell/layout.css +526 -0
  225. package/themes/dark.ts +8 -0
  226. package/themes/light.ts +9 -1
package/shell/layout.css CHANGED
@@ -1059,3 +1059,529 @@
1059
1059
  align-items: center;
1060
1060
  gap: 0.5rem;
1061
1061
  }
1062
+
1063
+ /*
1064
+ * FOUNDATION COMPONENTS
1065
+ * ---------------------
1066
+ * The stat card, chips, empty state and the other composites of the foundation set (spec Part B 4). They may be placed
1067
+ * anywhere - inside the shell, in a dialog, on a page with no shell at all - so they alias the Scene tokens themselves instead of
1068
+ * relying on the `--layout-*` block above, which only exists under the shell. Colors and radii come from tokens only; the
1069
+ * spacing is one scale (`--foundation-space-*`). Direction-sensitive rules use logical properties so right-to-left needs no
1070
+ * second stylesheet.
1071
+ */
1072
+ .foundation {
1073
+ --foundation-text: var(--scene-text-color, #1f2430);
1074
+ --foundation-muted: var(--scene-text-muted-color, #5b6472);
1075
+ --foundation-surface: var(--scene-surface-card, #ffffff);
1076
+ --foundation-background: var(--scene-surface-background, #f4f5f7);
1077
+ --foundation-border: var(--scene-surface-border, #d5d9df);
1078
+ --foundation-hover: var(--scene-surface-hover, #eceef1);
1079
+ --foundation-primary: var(--scene-primary-color, #4f46e5);
1080
+ --foundation-primary-contrast: var(--scene-primary-contrast-color, #ffffff);
1081
+ --foundation-highlight: var(--scene-highlight-background, #eef2ff);
1082
+ --foundation-highlight-text: var(--scene-highlight-color, #3730a3);
1083
+ --foundation-radius: var(--scene-content-border-radius, 0.5rem);
1084
+ --foundation-focus: var(--scene-focus-ring, 0 0 0 2px rgb(79 70 229 / 0.55));
1085
+ --foundation-success: var(--scene-status-success-color, #166534);
1086
+ --foundation-success-background: var(--scene-status-success-background, #dcfce7);
1087
+ --foundation-warning: var(--scene-status-warning-color, #854d0e);
1088
+ --foundation-warning-background: var(--scene-status-warning-background, #fef3c7);
1089
+ --foundation-danger: var(--scene-status-danger-color, #991b1b);
1090
+ --foundation-danger-background: var(--scene-status-danger-background, #fee2e2);
1091
+ --foundation-info: var(--scene-status-info-color, #1e40af);
1092
+ --foundation-info-background: var(--scene-status-info-background, #dbeafe);
1093
+ --foundation-space-1: 0.25rem;
1094
+ --foundation-space-2: 0.5rem;
1095
+ --foundation-space-3: 0.75rem;
1096
+ --foundation-space-4: 1rem;
1097
+ --foundation-space-6: 1.5rem;
1098
+ --foundation-row-height: 2.75rem;
1099
+
1100
+ box-sizing: border-box;
1101
+ color: var(--foundation-text);
1102
+ font-family: inherit;
1103
+ }
1104
+
1105
+ .foundation[data-density='compact'] {
1106
+ --foundation-row-height: 2rem;
1107
+ --foundation-space-3: 0.5rem;
1108
+ }
1109
+
1110
+ .foundation *,
1111
+ .foundation *::before,
1112
+ .foundation *::after {
1113
+ box-sizing: border-box;
1114
+ }
1115
+
1116
+ .foundation-visually-hidden {
1117
+ position: absolute;
1118
+ inline-size: 1px;
1119
+ block-size: 1px;
1120
+ margin: -1px;
1121
+ padding: 0;
1122
+ overflow: hidden;
1123
+ clip-path: inset(50%);
1124
+ white-space: nowrap;
1125
+ border: 0;
1126
+ }
1127
+
1128
+ .foundation-icon {
1129
+ flex: none;
1130
+ inline-size: 1em;
1131
+ block-size: 1em;
1132
+ }
1133
+
1134
+ .foundation :focus-visible {
1135
+ outline: 2px solid var(--foundation-primary);
1136
+ outline-offset: 2px;
1137
+ box-shadow: var(--foundation-focus);
1138
+ }
1139
+
1140
+ .foundation-button {
1141
+ display: inline-flex;
1142
+ align-items: center;
1143
+ justify-content: center;
1144
+ gap: var(--foundation-space-2);
1145
+ min-block-size: 2.25rem;
1146
+ padding-inline: var(--foundation-space-4);
1147
+ border: 1px solid var(--foundation-primary);
1148
+ border-radius: var(--foundation-radius);
1149
+ background: var(--foundation-primary);
1150
+ color: var(--foundation-primary-contrast);
1151
+ font: inherit;
1152
+ font-weight: 600;
1153
+ cursor: pointer;
1154
+ }
1155
+
1156
+ .foundation-button[data-emphasis='secondary'] {
1157
+ background: var(--foundation-surface);
1158
+ color: var(--foundation-primary);
1159
+ }
1160
+
1161
+ .foundation-button[data-emphasis='quiet'] {
1162
+ border-color: transparent;
1163
+ background: transparent;
1164
+ color: var(--foundation-primary);
1165
+ }
1166
+
1167
+ .foundation-button:hover:not([aria-disabled='true']) {
1168
+ filter: brightness(0.95);
1169
+ }
1170
+
1171
+ .foundation-button[aria-disabled='true'] {
1172
+ opacity: 0.6;
1173
+ cursor: not-allowed;
1174
+ }
1175
+
1176
+ /* Standard states: skeleton, empty, message (error / no permission / partial). */
1177
+ .foundation-skeleton {
1178
+ display: flex;
1179
+ flex-direction: column;
1180
+ gap: var(--foundation-space-3);
1181
+ padding: var(--foundation-space-4);
1182
+ }
1183
+
1184
+ .foundation-skeleton-block {
1185
+ display: block;
1186
+ block-size: 0.875rem;
1187
+ border-radius: var(--foundation-radius);
1188
+ background: linear-gradient(90deg, var(--foundation-hover) 25%, var(--foundation-border) 50%, var(--foundation-hover) 75%);
1189
+ background-size: 200% 100%;
1190
+ animation: foundation-shimmer 1.4s linear infinite;
1191
+ }
1192
+
1193
+ @keyframes foundation-shimmer {
1194
+ from { background-position: 200% 0; }
1195
+ to { background-position: -200% 0; }
1196
+ }
1197
+
1198
+ @media (prefers-reduced-motion: reduce) {
1199
+ .foundation-skeleton-block { animation: none; }
1200
+ }
1201
+
1202
+ .foundation-empty {
1203
+ display: flex;
1204
+ flex-direction: column;
1205
+ align-items: center;
1206
+ gap: var(--foundation-space-2);
1207
+ padding: var(--foundation-space-6);
1208
+ text-align: center;
1209
+ }
1210
+
1211
+ .foundation-empty-icon {
1212
+ display: inline-flex;
1213
+ padding: var(--foundation-space-3);
1214
+ border-radius: 50%;
1215
+ background: var(--foundation-highlight);
1216
+ color: var(--foundation-highlight-text);
1217
+ font-size: 1.5rem;
1218
+ }
1219
+
1220
+ .foundation-empty-hint {
1221
+ color: var(--foundation-muted);
1222
+ max-inline-size: 36ch;
1223
+ }
1224
+
1225
+ .foundation-message {
1226
+ display: flex;
1227
+ align-items: flex-start;
1228
+ gap: var(--foundation-space-3);
1229
+ padding: var(--foundation-space-3) var(--foundation-space-4);
1230
+ border: 1px solid var(--foundation-border);
1231
+ border-radius: var(--foundation-radius);
1232
+ background: var(--foundation-surface);
1233
+ }
1234
+
1235
+ .foundation-message[data-tone='danger'] { border-color: var(--foundation-danger); color: var(--foundation-danger); background: var(--foundation-danger-background); }
1236
+ .foundation-message[data-tone='warning'] { border-color: var(--foundation-warning); color: var(--foundation-warning); background: var(--foundation-warning-background); }
1237
+
1238
+ .foundation-message-text {
1239
+ display: flex;
1240
+ flex: 1;
1241
+ flex-direction: column;
1242
+ gap: var(--foundation-space-1);
1243
+ }
1244
+
1245
+ /* Chips: status and trend. Tone is color plus icon plus text, never color alone. */
1246
+ .foundation-chip {
1247
+ display: inline-flex;
1248
+ align-items: center;
1249
+ gap: var(--foundation-space-1);
1250
+ padding: var(--foundation-space-1) var(--foundation-space-2);
1251
+ border: 1px solid currentColor;
1252
+ border-radius: 999px;
1253
+ font-size: 0.875rem;
1254
+ font-weight: 600;
1255
+ line-height: 1.5;
1256
+ white-space: nowrap;
1257
+ }
1258
+
1259
+ .foundation-chip[data-tone='success'] { color: var(--foundation-success); background: var(--foundation-success-background); }
1260
+ .foundation-chip[data-tone='warning'] { color: var(--foundation-warning); background: var(--foundation-warning-background); }
1261
+ .foundation-chip[data-tone='danger'] { color: var(--foundation-danger); background: var(--foundation-danger-background); }
1262
+ .foundation-chip[data-tone='info'] { color: var(--foundation-info); background: var(--foundation-info-background); }
1263
+ .foundation-chip[data-tone='neutral'] { color: var(--foundation-muted); background: var(--foundation-hover); }
1264
+
1265
+ .foundation-trend-comparison {
1266
+ font-weight: 400;
1267
+ }
1268
+
1269
+ .foundation-trend-chip { display: inline-flex; }
1270
+
1271
+ /* Stat card. */
1272
+ .foundation-stat-card {
1273
+ display: flex;
1274
+ flex-direction: column;
1275
+ gap: var(--foundation-space-2);
1276
+ min-inline-size: 10rem;
1277
+ padding: var(--foundation-space-4);
1278
+ border: 1px solid var(--foundation-border);
1279
+ border-radius: var(--foundation-radius);
1280
+ background: var(--foundation-surface);
1281
+ }
1282
+
1283
+ .foundation-stat-label {
1284
+ margin: 0;
1285
+ color: var(--foundation-muted);
1286
+ font-size: 0.875rem;
1287
+ font-weight: 600;
1288
+ }
1289
+
1290
+ .foundation-stat-value {
1291
+ margin: 0;
1292
+ font-size: 2rem;
1293
+ font-weight: 700;
1294
+ line-height: 1.2;
1295
+ font-variant-numeric: tabular-nums;
1296
+ }
1297
+
1298
+ .foundation-empty-state {
1299
+ border: 1px dashed var(--foundation-border);
1300
+ border-radius: var(--foundation-radius);
1301
+ background: var(--foundation-surface);
1302
+ }
1303
+
1304
+ /* Chart wrapper. */
1305
+ .foundation-chart {
1306
+ padding: var(--foundation-space-4);
1307
+ border: 1px solid var(--foundation-border);
1308
+ border-radius: var(--foundation-radius);
1309
+ background: var(--foundation-surface);
1310
+ }
1311
+
1312
+ .foundation-chart-figure {
1313
+ display: flex;
1314
+ flex-direction: column;
1315
+ gap: var(--foundation-space-3);
1316
+ margin: 0;
1317
+ }
1318
+
1319
+ .foundation-chart-title {
1320
+ font-weight: 600;
1321
+ }
1322
+
1323
+ .foundation-chart-canvas {
1324
+ inline-size: 100%;
1325
+ min-inline-size: 0;
1326
+ }
1327
+
1328
+ .foundation-chart-plot {
1329
+ display: block;
1330
+ max-inline-size: 100%;
1331
+ margin-inline: auto;
1332
+ }
1333
+
1334
+ .foundation-chart-grid {
1335
+ stroke: var(--foundation-border);
1336
+ stroke-width: 1;
1337
+ }
1338
+
1339
+ .foundation-chart-tick {
1340
+ fill: var(--foundation-muted);
1341
+ font-size: 0.75rem;
1342
+ }
1343
+
1344
+ .foundation-chart-stage {
1345
+ fill: var(--foundation-text);
1346
+ font-size: 0.8125rem;
1347
+ font-weight: 600;
1348
+ paint-order: stroke;
1349
+ stroke: var(--foundation-surface);
1350
+ stroke-width: 3px;
1351
+ }
1352
+
1353
+ .foundation-chart-legend {
1354
+ display: flex;
1355
+ flex-wrap: wrap;
1356
+ gap: var(--foundation-space-2) var(--foundation-space-4);
1357
+ margin: 0;
1358
+ padding: 0;
1359
+ list-style: none;
1360
+ }
1361
+
1362
+ .foundation-chart-legend li {
1363
+ display: inline-flex;
1364
+ align-items: center;
1365
+ gap: var(--foundation-space-2);
1366
+ font-size: 0.875rem;
1367
+ }
1368
+
1369
+ .foundation-chart-data summary {
1370
+ cursor: pointer;
1371
+ color: var(--foundation-primary);
1372
+ font-size: 0.875rem;
1373
+ font-weight: 600;
1374
+ }
1375
+
1376
+ .foundation-chart-data table {
1377
+ inline-size: 100%;
1378
+ margin-block-start: var(--foundation-space-2);
1379
+ border-collapse: collapse;
1380
+ font-size: 0.875rem;
1381
+ font-variant-numeric: tabular-nums;
1382
+ }
1383
+
1384
+ .foundation-chart-data th,
1385
+ .foundation-chart-data td {
1386
+ padding: var(--foundation-space-1) var(--foundation-space-2);
1387
+ border-block-end: 1px solid var(--foundation-border);
1388
+ text-align: start;
1389
+ }
1390
+
1391
+ /* Shared form controls, links, popovers and lists. */
1392
+ .foundation select,
1393
+ .foundation input[type='text'],
1394
+ .foundation input[type='number'],
1395
+ .foundation input[type='date'] {
1396
+ min-block-size: 2.25rem;
1397
+ padding-inline: var(--foundation-space-2);
1398
+ border: 1px solid var(--foundation-border);
1399
+ border-radius: var(--foundation-radius);
1400
+ background: var(--foundation-surface);
1401
+ color: var(--foundation-text);
1402
+ font: inherit;
1403
+ }
1404
+
1405
+ .foundation-link {
1406
+ padding: var(--foundation-space-1) var(--foundation-space-2);
1407
+ border: 0;
1408
+ background: transparent;
1409
+ color: var(--foundation-primary);
1410
+ font: inherit;
1411
+ font-weight: 600;
1412
+ text-decoration: underline;
1413
+ cursor: pointer;
1414
+ }
1415
+
1416
+ .foundation-icon-button {
1417
+ display: inline-flex;
1418
+ align-items: center;
1419
+ justify-content: center;
1420
+ min-inline-size: 2.25rem;
1421
+ min-block-size: 2.25rem;
1422
+ padding: 0;
1423
+ border: 1px solid transparent;
1424
+ border-radius: var(--foundation-radius);
1425
+ background: transparent;
1426
+ color: var(--foundation-text);
1427
+ font: inherit;
1428
+ cursor: pointer;
1429
+ }
1430
+
1431
+ .foundation-icon-button:hover:not(:disabled) {
1432
+ background: var(--foundation-hover);
1433
+ }
1434
+
1435
+ .foundation-icon-button:disabled {
1436
+ opacity: 0.4;
1437
+ cursor: not-allowed;
1438
+ }
1439
+
1440
+ .foundation-count {
1441
+ color: var(--foundation-muted);
1442
+ font-size: 0.875rem;
1443
+ font-weight: 400;
1444
+ }
1445
+
1446
+ .foundation-popover-host {
1447
+ position: relative;
1448
+ display: inline-block;
1449
+ }
1450
+
1451
+ .foundation-popover {
1452
+ position: absolute;
1453
+ inset-block-start: 100%;
1454
+ inset-inline-start: 0;
1455
+ z-index: 10;
1456
+ display: flex;
1457
+ flex-direction: column;
1458
+ gap: var(--foundation-space-1);
1459
+ min-inline-size: 16rem;
1460
+ margin-block-start: var(--foundation-space-1);
1461
+ padding: var(--foundation-space-2);
1462
+ border: 1px solid var(--foundation-border);
1463
+ border-radius: var(--foundation-radius);
1464
+ background: var(--scene-surface-overlay, var(--foundation-surface));
1465
+ }
1466
+
1467
+ .foundation-popover[hidden] {
1468
+ display: none;
1469
+ }
1470
+
1471
+ .foundation-list {
1472
+ display: flex;
1473
+ flex-direction: column;
1474
+ margin: 0;
1475
+ padding: 0;
1476
+ list-style: none;
1477
+ }
1478
+
1479
+ .foundation-list-row {
1480
+ display: flex;
1481
+ align-items: center;
1482
+ gap: var(--foundation-space-1);
1483
+ }
1484
+
1485
+ .foundation-check {
1486
+ display: inline-flex;
1487
+ flex: 1;
1488
+ align-items: center;
1489
+ gap: var(--foundation-space-2);
1490
+ min-block-size: var(--foundation-row-height);
1491
+ }
1492
+
1493
+ .foundation-menu-item {
1494
+ display: flex;
1495
+ align-items: center;
1496
+ gap: var(--foundation-space-2);
1497
+ min-block-size: var(--foundation-row-height);
1498
+ padding-inline: var(--foundation-space-2);
1499
+ border: 0;
1500
+ border-radius: var(--foundation-radius);
1501
+ background: transparent;
1502
+ color: var(--foundation-text);
1503
+ font: inherit;
1504
+ text-align: start;
1505
+ cursor: pointer;
1506
+ }
1507
+
1508
+ .foundation-menu-item:hover,
1509
+ .foundation-menu-item:focus-visible {
1510
+ background: var(--foundation-hover);
1511
+ }
1512
+
1513
+ .foundation-menu-item[aria-disabled='true'] {
1514
+ opacity: 0.6;
1515
+ cursor: not-allowed;
1516
+ }
1517
+
1518
+ .foundation-menu-check {
1519
+ display: inline-flex;
1520
+ inline-size: 1em;
1521
+ }
1522
+
1523
+ .foundation-separator {
1524
+ inline-size: 100%;
1525
+ margin-block: var(--foundation-space-1);
1526
+ border: 0;
1527
+ border-block-start: 1px solid var(--foundation-border);
1528
+ }
1529
+
1530
+ /* Filter builder. */
1531
+ .foundation-filter-builder {
1532
+ padding: var(--foundation-space-3);
1533
+ border: 1px solid var(--foundation-border);
1534
+ border-radius: var(--foundation-radius);
1535
+ background: var(--foundation-surface);
1536
+ }
1537
+
1538
+ .foundation-filter-group {
1539
+ display: flex;
1540
+ flex-direction: column;
1541
+ gap: var(--foundation-space-2);
1542
+ }
1543
+
1544
+ .foundation-filter-group .foundation-filter-group {
1545
+ padding: var(--foundation-space-3);
1546
+ border: 1px dashed var(--foundation-border);
1547
+ border-radius: var(--foundation-radius);
1548
+ }
1549
+
1550
+ .foundation-filter-match,
1551
+ .foundation-filter-actions,
1552
+ .foundation-filter-footer {
1553
+ display: flex;
1554
+ flex-wrap: wrap;
1555
+ align-items: center;
1556
+ gap: var(--foundation-space-2);
1557
+ }
1558
+
1559
+ .foundation-filter-footer {
1560
+ justify-content: space-between;
1561
+ margin-block-start: var(--foundation-space-2);
1562
+ color: var(--foundation-muted);
1563
+ font-size: 0.875rem;
1564
+ }
1565
+
1566
+ .foundation-filter-row {
1567
+ display: grid;
1568
+ grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
1569
+ gap: var(--foundation-space-2);
1570
+ align-items: center;
1571
+ }
1572
+
1573
+ @media (max-width: 40rem) {
1574
+ .foundation-filter-row {
1575
+ grid-template-columns: minmax(0, 1fr) auto;
1576
+ }
1577
+
1578
+ .foundation-filter-row > select,
1579
+ .foundation-filter-row > input {
1580
+ grid-column: 1;
1581
+ }
1582
+
1583
+ .foundation-filter-row > button {
1584
+ grid-column: 2;
1585
+ grid-row: 1;
1586
+ }
1587
+ }
package/themes/dark.ts CHANGED
@@ -34,5 +34,13 @@ export const darkTheme: Theme = {
34
34
  'highlight.color': '#c7ccff',
35
35
  'content.borderRadius': '0.5rem',
36
36
  'focus.ring': '0 0 0 2px rgb(129 140 248 / 0.45)',
37
+ 'status.successColor': '#86efac',
38
+ 'status.successBackground': '#14301f',
39
+ 'status.warningColor': '#fcd34d',
40
+ 'status.warningBackground': '#33290f',
41
+ 'status.dangerColor': '#fca5a5',
42
+ 'status.dangerBackground': '#3a1616',
43
+ 'status.infoColor': '#93c5fd',
44
+ 'status.infoBackground': '#162a4a',
37
45
  },
38
46
  };
package/themes/light.ts CHANGED
@@ -32,10 +32,18 @@ export const lightTheme: Theme = {
32
32
  'surface.hover': '#eceef1',
33
33
  'surface.overlay': '#ffffff',
34
34
  'text.color': '#1f2430',
35
- 'text.mutedColor': '#6b7280',
35
+ 'text.mutedColor': '#5b6472',
36
36
  'highlight.background': '#eef2ff',
37
37
  'highlight.color': '#3730a3',
38
38
  'content.borderRadius': '0.5rem',
39
39
  'focus.ring': '0 0 0 2px rgb(79 70 229 / 0.4)',
40
+ 'status.successColor': '#166534',
41
+ 'status.successBackground': '#dcfce7',
42
+ 'status.warningColor': '#854d0e',
43
+ 'status.warningBackground': '#fef3c7',
44
+ 'status.dangerColor': '#991b1b',
45
+ 'status.dangerBackground': '#fee2e2',
46
+ 'status.infoColor': '#1e40af',
47
+ 'status.infoBackground': '#dbeafe',
40
48
  },
41
49
  };