@cratis/components 4.25.1 → 4.26.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 (112) hide show
  1. package/compat-manifest.json +11 -11
  2. package/dist/esm/Canvas/canvasZoomListeners.d.ts +30 -0
  3. package/dist/esm/Canvas/canvasZoomListeners.d.ts.map +1 -0
  4. package/dist/esm/Canvas/canvasZoomListeners.js +121 -0
  5. package/dist/esm/Canvas/canvasZoomListeners.js.map +1 -0
  6. package/dist/esm/Canvas/useCanvasWheelZoom.d.ts +2 -1
  7. package/dist/esm/Canvas/useCanvasWheelZoom.d.ts.map +1 -1
  8. package/dist/esm/Canvas/useCanvasWheelZoom.js +24 -132
  9. package/dist/esm/Canvas/useCanvasWheelZoom.js.map +1 -1
  10. package/dist/esm/SchemaEditor/NameCell.d.ts +5 -1
  11. package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -1
  12. package/dist/esm/SchemaEditor/NameCell.js +2 -2
  13. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  14. package/dist/esm/SchemaEditor/SchemaEditor.d.ts +63 -48
  15. package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -1
  16. package/dist/esm/SchemaEditor/SchemaEditor.js +83 -25
  17. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  18. package/dist/esm/SchemaEditor/SchemaEditorLabels.d.ts +98 -0
  19. package/dist/esm/SchemaEditor/SchemaEditorLabels.d.ts.map +1 -0
  20. package/dist/esm/SchemaEditor/SchemaEditorLabels.js +4 -0
  21. package/dist/esm/SchemaEditor/SchemaEditorLabels.js.map +1 -0
  22. package/dist/esm/SchemaEditor/SchemaEditorLayout.d.ts +6 -0
  23. package/dist/esm/SchemaEditor/SchemaEditorLayout.d.ts.map +1 -0
  24. package/dist/esm/SchemaEditor/SchemaEditorLayout.js +4 -0
  25. package/dist/esm/SchemaEditor/SchemaEditorLayout.js.map +1 -0
  26. package/dist/esm/SchemaEditor/Tree/Property.d.ts +30 -0
  27. package/dist/esm/SchemaEditor/Tree/Property.d.ts.map +1 -0
  28. package/dist/esm/SchemaEditor/Tree/Property.js +4 -0
  29. package/dist/esm/SchemaEditor/Tree/Property.js.map +1 -0
  30. package/dist/esm/SchemaEditor/Tree/PropertyConcept.d.ts +15 -0
  31. package/dist/esm/SchemaEditor/Tree/PropertyConcept.d.ts.map +1 -0
  32. package/dist/esm/SchemaEditor/Tree/PropertyConcept.js +4 -0
  33. package/dist/esm/SchemaEditor/Tree/PropertyConcept.js.map +1 -0
  34. package/dist/esm/SchemaEditor/Tree/PropertyConceptsContext.d.ts +22 -0
  35. package/dist/esm/SchemaEditor/Tree/PropertyConceptsContext.d.ts.map +1 -0
  36. package/dist/esm/SchemaEditor/Tree/PropertyConceptsContext.js +10 -0
  37. package/dist/esm/SchemaEditor/Tree/PropertyConceptsContext.js.map +1 -0
  38. package/dist/esm/SchemaEditor/Tree/PropertyType.d.ts +22 -0
  39. package/dist/esm/SchemaEditor/Tree/PropertyType.d.ts.map +1 -0
  40. package/dist/esm/SchemaEditor/Tree/PropertyType.js +15 -0
  41. package/dist/esm/SchemaEditor/Tree/PropertyType.js.map +1 -0
  42. package/dist/esm/SchemaEditor/Tree/PropertyTypeBadge.d.ts +20 -0
  43. package/dist/esm/SchemaEditor/Tree/PropertyTypeBadge.d.ts.map +1 -0
  44. package/dist/esm/SchemaEditor/Tree/PropertyTypeBadge.js +11 -0
  45. package/dist/esm/SchemaEditor/Tree/PropertyTypeBadge.js.map +1 -0
  46. package/dist/esm/SchemaEditor/Tree/PropertyTypeMenu.d.ts +28 -0
  47. package/dist/esm/SchemaEditor/Tree/PropertyTypeMenu.d.ts.map +1 -0
  48. package/dist/esm/SchemaEditor/Tree/PropertyTypeMenu.js +37 -0
  49. package/dist/esm/SchemaEditor/Tree/PropertyTypeMenu.js.map +1 -0
  50. package/dist/esm/SchemaEditor/Tree/SchemaEditorContext.d.ts +42 -0
  51. package/dist/esm/SchemaEditor/Tree/SchemaEditorContext.d.ts.map +1 -0
  52. package/dist/esm/SchemaEditor/Tree/SchemaEditorContext.js +12 -0
  53. package/dist/esm/SchemaEditor/Tree/SchemaEditorContext.js.map +1 -0
  54. package/dist/esm/SchemaEditor/Tree/SchemaEditorParts.d.ts +60 -0
  55. package/dist/esm/SchemaEditor/Tree/SchemaEditorParts.d.ts.map +1 -0
  56. package/dist/esm/SchemaEditor/Tree/SchemaEditorParts.js +4 -0
  57. package/dist/esm/SchemaEditor/Tree/SchemaEditorParts.js.map +1 -0
  58. package/dist/esm/SchemaEditor/Tree/SchemaPropertyContext.d.ts +13 -0
  59. package/dist/esm/SchemaEditor/Tree/SchemaPropertyContext.d.ts.map +1 -0
  60. package/dist/esm/SchemaEditor/Tree/SchemaPropertyContext.js +4 -0
  61. package/dist/esm/SchemaEditor/Tree/SchemaPropertyContext.js.map +1 -0
  62. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRow.d.ts +13 -0
  63. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRow.d.ts.map +1 -0
  64. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRow.js +107 -0
  65. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRow.js.map +1 -0
  66. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRowState.d.ts +16 -0
  67. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRowState.d.ts.map +1 -0
  68. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRowState.js +4 -0
  69. package/dist/esm/SchemaEditor/Tree/SchemaPropertyRowState.js.map +1 -0
  70. package/dist/esm/SchemaEditor/Tree/TreeSchemaEditor.d.ts +116 -0
  71. package/dist/esm/SchemaEditor/Tree/TreeSchemaEditor.d.ts.map +1 -0
  72. package/dist/esm/SchemaEditor/Tree/TreeSchemaEditor.js +96 -0
  73. package/dist/esm/SchemaEditor/Tree/TreeSchemaEditor.js.map +1 -0
  74. package/dist/esm/SchemaEditor/Tree/propertyNaming.d.ts +35 -0
  75. package/dist/esm/SchemaEditor/Tree/propertyNaming.d.ts.map +1 -0
  76. package/dist/esm/SchemaEditor/Tree/propertyNaming.js +34 -0
  77. package/dist/esm/SchemaEditor/Tree/propertyNaming.js.map +1 -0
  78. package/dist/esm/SchemaEditor/Tree/propertyTree.d.ts +30 -0
  79. package/dist/esm/SchemaEditor/Tree/propertyTree.d.ts.map +1 -0
  80. package/dist/esm/SchemaEditor/Tree/propertyTree.js +36 -0
  81. package/dist/esm/SchemaEditor/Tree/propertyTree.js.map +1 -0
  82. package/dist/esm/SchemaEditor/Tree/propertyTypeDisplay.d.ts +22 -0
  83. package/dist/esm/SchemaEditor/Tree/propertyTypeDisplay.d.ts.map +1 -0
  84. package/dist/esm/SchemaEditor/Tree/propertyTypeDisplay.js +45 -0
  85. package/dist/esm/SchemaEditor/Tree/propertyTypeDisplay.js.map +1 -0
  86. package/dist/esm/SchemaEditor/Tree/schemaConversion.d.ts +95 -0
  87. package/dist/esm/SchemaEditor/Tree/schemaConversion.d.ts.map +1 -0
  88. package/dist/esm/SchemaEditor/Tree/schemaConversion.js +171 -0
  89. package/dist/esm/SchemaEditor/Tree/schemaConversion.js.map +1 -0
  90. package/dist/esm/SchemaEditor/TypeCell.d.ts +3 -1
  91. package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -1
  92. package/dist/esm/SchemaEditor/TypeCell.js +2 -2
  93. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  94. package/dist/esm/SchemaEditor/defaultSchemaEditorLabels.d.ts +9 -0
  95. package/dist/esm/SchemaEditor/defaultSchemaEditorLabels.d.ts.map +1 -0
  96. package/dist/esm/SchemaEditor/defaultSchemaEditorLabels.js +51 -0
  97. package/dist/esm/SchemaEditor/defaultSchemaEditorLabels.js.map +1 -0
  98. package/dist/esm/SchemaEditor/index.d.ts +12 -0
  99. package/dist/esm/SchemaEditor/index.d.ts.map +1 -1
  100. package/dist/esm/SchemaEditor/index.js +7 -1
  101. package/dist/esm/SchemaEditor/index.js.map +1 -1
  102. package/dist/esm/SchemaEditor/resolveSchemaEditorLabels.d.ts +4 -0
  103. package/dist/esm/SchemaEditor/resolveSchemaEditorLabels.d.ts.map +1 -0
  104. package/dist/esm/SchemaEditor/resolveSchemaEditorLabels.js +13 -0
  105. package/dist/esm/SchemaEditor/resolveSchemaEditorLabels.js.map +1 -0
  106. package/dist/esm/styles.SchemaEditor.css +346 -0
  107. package/dist/esm/styles.css +346 -0
  108. package/dist/esm/types/parts.d.ts +25 -0
  109. package/dist/esm/types/parts.d.ts.map +1 -1
  110. package/dist/esm/types/parts.js +25 -0
  111. package/dist/esm/types/parts.js.map +1 -1
  112. package/package.json +2 -1
@@ -1907,5 +1907,351 @@
1907
1907
  .cratis-schema-editor-bottom-border {
1908
1908
  border-bottom: 1px solid var(--cratis-surface-border);
1909
1909
  }
1910
+ /* Tree layout (`layout='tree'`). */
1911
+
1912
+ .cratis-schema-editor {
1913
+ display: flex;
1914
+ flex-direction: column;
1915
+ gap: 0.5rem;
1916
+ min-width: 0;
1917
+ color: var(--cratis-text-color);
1918
+ font-size: 0.875rem;
1919
+ }
1920
+
1921
+ .cratis-schema-editor__header {
1922
+ min-width: 0;
1923
+ }
1924
+
1925
+ .cratis-schema-editor__list {
1926
+ display: flex;
1927
+ flex-direction: column;
1928
+ gap: 0.25rem;
1929
+ margin: 0;
1930
+ padding: 0;
1931
+ list-style: none;
1932
+ }
1933
+
1934
+ .cratis-schema-editor__list--nested {
1935
+ margin-inline-start: 1.25rem;
1936
+ padding-inline-start: 0.5rem;
1937
+ border-inline-start: 1px solid var(--cratis-surface-border);
1938
+ }
1939
+
1940
+ .cratis-schema-editor__property {
1941
+ display: flex;
1942
+ flex-direction: column;
1943
+ gap: 0.25rem;
1944
+ min-width: 0;
1945
+ }
1946
+
1947
+ .cratis-schema-editor__empty {
1948
+ margin: 0;
1949
+ padding: 0.5rem;
1950
+ color: var(--cratis-text-color-secondary);
1951
+ }
1952
+
1953
+ .cratis-schema-editor__row {
1954
+ display: flex;
1955
+ flex-wrap: wrap;
1956
+ align-items: center;
1957
+ gap: 0.375rem;
1958
+ min-height: 2rem;
1959
+ padding: 0.25rem 0.5rem;
1960
+ border: 1px solid var(--cratis-surface-border);
1961
+ border-radius: var(--cratis-border-radius);
1962
+ background: var(--cratis-surface-card);
1963
+ }
1964
+
1965
+ .cratis-schema-editor__row:hover {
1966
+ background: var(--cratis-surface-hover);
1967
+ }
1968
+
1969
+ .cratis-schema-editor__row[data-selected] {
1970
+ border-color: var(--cratis-primary-color);
1971
+ box-shadow: inset 0 0 0 1px var(--cratis-primary-color);
1972
+ }
1973
+
1974
+ .cratis-schema-editor__details {
1975
+ min-width: 0;
1976
+ margin-inline-start: 1.25rem;
1977
+ }
1978
+
1979
+ .cratis-schema-editor__leading,
1980
+ .cratis-schema-editor__accessory {
1981
+ display: inline-flex;
1982
+ align-items: center;
1983
+ gap: 0.25rem;
1984
+ }
1985
+
1986
+ .cratis-schema-editor__accessory {
1987
+ margin-inline-start: auto;
1988
+ }
1989
+
1990
+ .cratis-schema-editor__name {
1991
+ flex: 1 1 6rem;
1992
+ min-width: 0;
1993
+ min-height: 1.5rem;
1994
+ padding: 0 0.25rem;
1995
+ border: 0;
1996
+ border-radius: calc(var(--cratis-border-radius) * 0.5);
1997
+ background: transparent;
1998
+ color: inherit;
1999
+ font: inherit;
2000
+ font-weight: 500;
2001
+ text-align: start;
2002
+ overflow-wrap: anywhere;
2003
+ cursor: default;
2004
+ }
2005
+
2006
+ .cratis-schema-editor__name--static {
2007
+ display: inline-flex;
2008
+ align-items: center;
2009
+ }
2010
+
2011
+ .cratis-schema-editor__name:focus-visible {
2012
+ outline: none;
2013
+ box-shadow: var(--cratis-focus-ring);
2014
+ }
2015
+
2016
+ .cratis-schema-editor__name-edit {
2017
+ display: flex;
2018
+ flex: 1 1 8rem;
2019
+ flex-direction: column;
2020
+ gap: 0.125rem;
2021
+ min-width: 0;
2022
+ }
2023
+
2024
+ .cratis-schema-editor__name-input {
2025
+ box-sizing: border-box;
2026
+ width: 100%;
2027
+ min-height: 1.75rem;
2028
+ padding: 0.125rem 0.5rem;
2029
+ border: 1px solid var(--cratis-control-border);
2030
+ border-radius: var(--cratis-border-radius);
2031
+ background: var(--cratis-control-background);
2032
+ color: inherit;
2033
+ font: inherit;
2034
+ }
2035
+
2036
+ .cratis-schema-editor__name-input:focus-visible {
2037
+ outline: none;
2038
+ box-shadow: var(--cratis-focus-ring);
2039
+ }
2040
+
2041
+ .cratis-schema-editor__name-input[data-invalid] {
2042
+ border-color: var(--cratis-red-500);
2043
+ border-style: dashed;
2044
+ }
2045
+
2046
+ .cratis-schema-editor__message {
2047
+ margin: 0;
2048
+ color: var(--cratis-red-500);
2049
+ font-size: 0.75rem;
2050
+ }
2051
+
2052
+ .cratis-schema-editor__badge {
2053
+ display: inline-flex;
2054
+ align-items: center;
2055
+ gap: 0.25rem;
2056
+ min-height: 1.25rem;
2057
+ padding: 0 0.375rem;
2058
+ border: 1px solid var(--cratis-surface-border);
2059
+ border-radius: 999px;
2060
+ background: var(--cratis-surface-100);
2061
+ color: var(--cratis-text-color);
2062
+ font-size: 0.75rem;
2063
+ white-space: nowrap;
2064
+ }
2065
+
2066
+ .cratis-schema-editor__badge-glyph {
2067
+ color: var(--cratis-text-color);
2068
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
2069
+ font-size: 0.6875rem;
2070
+ }
2071
+
2072
+ .cratis-schema-editor__type-button,
2073
+ .cratis-schema-editor__key,
2074
+ .cratis-schema-editor__remove,
2075
+ .cratis-schema-editor__add {
2076
+ display: inline-flex;
2077
+ align-items: center;
2078
+ justify-content: center;
2079
+ gap: 0.375rem;
2080
+ min-width: 1.5rem;
2081
+ min-height: 1.5rem;
2082
+ padding: 0 0.25rem;
2083
+ border: 1px solid transparent;
2084
+ border-radius: var(--cratis-border-radius);
2085
+ background: transparent;
2086
+ color: inherit;
2087
+ font: inherit;
2088
+ cursor: pointer;
2089
+ }
2090
+
2091
+ .cratis-schema-editor__type-button:hover,
2092
+ .cratis-schema-editor__key:hover,
2093
+ .cratis-schema-editor__remove:hover,
2094
+ .cratis-schema-editor__add:hover {
2095
+ background: var(--cratis-surface-hover);
2096
+ }
2097
+
2098
+ .cratis-schema-editor__type-button:focus-visible,
2099
+ .cratis-schema-editor__key:focus-visible,
2100
+ .cratis-schema-editor__remove:focus-visible,
2101
+ .cratis-schema-editor__add:focus-visible {
2102
+ outline: none;
2103
+ box-shadow: var(--cratis-focus-ring);
2104
+ }
2105
+
2106
+ .cratis-schema-editor__type-button[data-pressed] {
2107
+ background: var(--cratis-surface-hover);
2108
+ }
2109
+
2110
+ .cratis-schema-editor__remove {
2111
+ color: var(--cratis-text-color-secondary);
2112
+ }
2113
+
2114
+ .cratis-schema-editor__remove:hover {
2115
+ color: var(--cratis-red-500);
2116
+ }
2117
+
2118
+ .cratis-schema-editor__key {
2119
+ color: var(--cratis-text-color-secondary);
2120
+ }
2121
+
2122
+ .cratis-schema-editor__key[data-pressed] {
2123
+ border-color: var(--cratis-primary-color);
2124
+ background: var(--cratis-highlight-bg);
2125
+ color: var(--cratis-highlight-text-color);
2126
+ }
2127
+
2128
+ .cratis-schema-editor__required {
2129
+ display: inline-flex;
2130
+ align-items: center;
2131
+ gap: 0.25rem;
2132
+ min-height: 1.5rem;
2133
+ color: var(--cratis-text-color-secondary);
2134
+ font-size: 0.75rem;
2135
+ cursor: pointer;
2136
+ }
2137
+
2138
+ .cratis-schema-editor__required input {
2139
+ width: 1rem;
2140
+ height: 1rem;
2141
+ margin: 0;
2142
+ accent-color: var(--cratis-primary-color);
2143
+ }
2144
+
2145
+ .cratis-schema-editor__required input:focus-visible {
2146
+ outline: none;
2147
+ box-shadow: var(--cratis-focus-ring);
2148
+ }
2149
+
2150
+ .cratis-schema-editor__protected {
2151
+ display: inline-flex;
2152
+ align-items: center;
2153
+ padding: 0 0.25rem;
2154
+ color: var(--cratis-text-color-secondary);
2155
+ }
2156
+
2157
+ .cratis-schema-editor__actions {
2158
+ display: flex;
2159
+ flex-wrap: wrap;
2160
+ align-items: center;
2161
+ gap: 0.5rem;
2162
+ }
2163
+
2164
+ .cratis-schema-editor__add {
2165
+ align-self: flex-start;
2166
+ border: 1px dashed var(--cratis-surface-border);
2167
+ color: var(--cratis-text-color-secondary);
2168
+ }
2169
+
2170
+ .cratis-schema-editor__footer {
2171
+ display: inline-flex;
2172
+ flex-wrap: wrap;
2173
+ align-items: center;
2174
+ gap: 0.5rem;
2175
+ }
2176
+
2177
+ .cratis-schema-editor__menu {
2178
+ z-index: var(--cratis-z-index-overlay);
2179
+ min-width: 12rem;
2180
+ max-height: min(24rem, var(--available-height));
2181
+ overflow: auto;
2182
+ border: 1px solid var(--cratis-surface-border);
2183
+ border-radius: var(--cratis-border-radius);
2184
+ background: var(--cratis-surface-overlay);
2185
+ color: var(--cratis-text-color);
2186
+ box-shadow: var(--cratis-shadow-overlay);
2187
+ }
2188
+
2189
+ .cratis-schema-editor__menu-list {
2190
+ padding: 0.25rem;
2191
+ outline: none;
2192
+ }
2193
+
2194
+ .cratis-schema-editor__menu-item {
2195
+ display: flex;
2196
+ align-items: center;
2197
+ gap: 0.5rem;
2198
+ min-height: 1.75rem;
2199
+ padding: 0.25rem 0.5rem;
2200
+ border-radius: calc(var(--cratis-border-radius) * 0.75);
2201
+ outline: none;
2202
+ cursor: default;
2203
+ }
2204
+
2205
+ .cratis-schema-editor__menu-item[data-focused] {
2206
+ background: var(--cratis-surface-hover);
2207
+ }
2208
+
2209
+ .cratis-schema-editor__menu-item[data-focus-visible] {
2210
+ box-shadow: inset var(--cratis-focus-ring);
2211
+ }
2212
+
2213
+ .cratis-schema-editor__menu-heading {
2214
+ padding: 0.25rem 0.5rem;
2215
+ color: var(--cratis-text-color-secondary);
2216
+ font-size: 0.6875rem;
2217
+ font-weight: 700;
2218
+ letter-spacing: 0.05em;
2219
+ text-transform: uppercase;
2220
+ }
2221
+
2222
+ .cratis-schema-editor__menu-hint {
2223
+ color: var(--cratis-text-color-secondary);
2224
+ font-style: italic;
2225
+ cursor: default;
2226
+ }
2227
+
2228
+ .cratis-schema-editor__visually-hidden {
2229
+ position: absolute;
2230
+ width: 1px;
2231
+ height: 1px;
2232
+ overflow: hidden;
2233
+ clip-path: inset(50%);
2234
+ white-space: nowrap;
2235
+ }
2236
+
2237
+ .cratis-schema-editor__menu-separator {
2238
+ height: 1px;
2239
+ margin: 0.25rem 0;
2240
+ background: var(--cratis-surface-border);
2241
+ }
2242
+
2243
+ @media (forced-colors: active) {
2244
+ .cratis-schema-editor__row,
2245
+ .cratis-schema-editor__badge,
2246
+ .cratis-schema-editor__menu {
2247
+ border-color: CanvasText;
2248
+ }
2249
+
2250
+ .cratis-schema-editor__row[data-selected],
2251
+ .cratis-schema-editor__key[data-pressed],
2252
+ .cratis-schema-editor__menu-item[data-focused] {
2253
+ outline: 2px solid Highlight;
2254
+ }
2255
+ }
1910
2256
 
1911
2257
  }
@@ -7478,6 +7478,352 @@
7478
7478
  .cratis-schema-editor-bottom-border {
7479
7479
  border-bottom: 1px solid var(--cratis-surface-border);
7480
7480
  }
7481
+ /* Tree layout (`layout='tree'`). */
7482
+
7483
+ .cratis-schema-editor {
7484
+ display: flex;
7485
+ flex-direction: column;
7486
+ gap: 0.5rem;
7487
+ min-width: 0;
7488
+ color: var(--cratis-text-color);
7489
+ font-size: 0.875rem;
7490
+ }
7491
+
7492
+ .cratis-schema-editor__header {
7493
+ min-width: 0;
7494
+ }
7495
+
7496
+ .cratis-schema-editor__list {
7497
+ display: flex;
7498
+ flex-direction: column;
7499
+ gap: 0.25rem;
7500
+ margin: 0;
7501
+ padding: 0;
7502
+ list-style: none;
7503
+ }
7504
+
7505
+ .cratis-schema-editor__list--nested {
7506
+ margin-inline-start: 1.25rem;
7507
+ padding-inline-start: 0.5rem;
7508
+ border-inline-start: 1px solid var(--cratis-surface-border);
7509
+ }
7510
+
7511
+ .cratis-schema-editor__property {
7512
+ display: flex;
7513
+ flex-direction: column;
7514
+ gap: 0.25rem;
7515
+ min-width: 0;
7516
+ }
7517
+
7518
+ .cratis-schema-editor__empty {
7519
+ margin: 0;
7520
+ padding: 0.5rem;
7521
+ color: var(--cratis-text-color-secondary);
7522
+ }
7523
+
7524
+ .cratis-schema-editor__row {
7525
+ display: flex;
7526
+ flex-wrap: wrap;
7527
+ align-items: center;
7528
+ gap: 0.375rem;
7529
+ min-height: 2rem;
7530
+ padding: 0.25rem 0.5rem;
7531
+ border: 1px solid var(--cratis-surface-border);
7532
+ border-radius: var(--cratis-border-radius);
7533
+ background: var(--cratis-surface-card);
7534
+ }
7535
+
7536
+ .cratis-schema-editor__row:hover {
7537
+ background: var(--cratis-surface-hover);
7538
+ }
7539
+
7540
+ .cratis-schema-editor__row[data-selected] {
7541
+ border-color: var(--cratis-primary-color);
7542
+ box-shadow: inset 0 0 0 1px var(--cratis-primary-color);
7543
+ }
7544
+
7545
+ .cratis-schema-editor__details {
7546
+ min-width: 0;
7547
+ margin-inline-start: 1.25rem;
7548
+ }
7549
+
7550
+ .cratis-schema-editor__leading,
7551
+ .cratis-schema-editor__accessory {
7552
+ display: inline-flex;
7553
+ align-items: center;
7554
+ gap: 0.25rem;
7555
+ }
7556
+
7557
+ .cratis-schema-editor__accessory {
7558
+ margin-inline-start: auto;
7559
+ }
7560
+
7561
+ .cratis-schema-editor__name {
7562
+ flex: 1 1 6rem;
7563
+ min-width: 0;
7564
+ min-height: 1.5rem;
7565
+ padding: 0 0.25rem;
7566
+ border: 0;
7567
+ border-radius: calc(var(--cratis-border-radius) * 0.5);
7568
+ background: transparent;
7569
+ color: inherit;
7570
+ font: inherit;
7571
+ font-weight: 500;
7572
+ text-align: start;
7573
+ overflow-wrap: anywhere;
7574
+ cursor: default;
7575
+ }
7576
+
7577
+ .cratis-schema-editor__name--static {
7578
+ display: inline-flex;
7579
+ align-items: center;
7580
+ }
7581
+
7582
+ .cratis-schema-editor__name:focus-visible {
7583
+ outline: none;
7584
+ box-shadow: var(--cratis-focus-ring);
7585
+ }
7586
+
7587
+ .cratis-schema-editor__name-edit {
7588
+ display: flex;
7589
+ flex: 1 1 8rem;
7590
+ flex-direction: column;
7591
+ gap: 0.125rem;
7592
+ min-width: 0;
7593
+ }
7594
+
7595
+ .cratis-schema-editor__name-input {
7596
+ box-sizing: border-box;
7597
+ width: 100%;
7598
+ min-height: 1.75rem;
7599
+ padding: 0.125rem 0.5rem;
7600
+ border: 1px solid var(--cratis-control-border);
7601
+ border-radius: var(--cratis-border-radius);
7602
+ background: var(--cratis-control-background);
7603
+ color: inherit;
7604
+ font: inherit;
7605
+ }
7606
+
7607
+ .cratis-schema-editor__name-input:focus-visible {
7608
+ outline: none;
7609
+ box-shadow: var(--cratis-focus-ring);
7610
+ }
7611
+
7612
+ .cratis-schema-editor__name-input[data-invalid] {
7613
+ border-color: var(--cratis-red-500);
7614
+ border-style: dashed;
7615
+ }
7616
+
7617
+ .cratis-schema-editor__message {
7618
+ margin: 0;
7619
+ color: var(--cratis-red-500);
7620
+ font-size: 0.75rem;
7621
+ }
7622
+
7623
+ .cratis-schema-editor__badge {
7624
+ display: inline-flex;
7625
+ align-items: center;
7626
+ gap: 0.25rem;
7627
+ min-height: 1.25rem;
7628
+ padding: 0 0.375rem;
7629
+ border: 1px solid var(--cratis-surface-border);
7630
+ border-radius: 999px;
7631
+ background: var(--cratis-surface-100);
7632
+ color: var(--cratis-text-color);
7633
+ font-size: 0.75rem;
7634
+ white-space: nowrap;
7635
+ }
7636
+
7637
+ .cratis-schema-editor__badge-glyph {
7638
+ color: var(--cratis-text-color);
7639
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
7640
+ font-size: 0.6875rem;
7641
+ }
7642
+
7643
+ .cratis-schema-editor__type-button,
7644
+ .cratis-schema-editor__key,
7645
+ .cratis-schema-editor__remove,
7646
+ .cratis-schema-editor__add {
7647
+ display: inline-flex;
7648
+ align-items: center;
7649
+ justify-content: center;
7650
+ gap: 0.375rem;
7651
+ min-width: 1.5rem;
7652
+ min-height: 1.5rem;
7653
+ padding: 0 0.25rem;
7654
+ border: 1px solid transparent;
7655
+ border-radius: var(--cratis-border-radius);
7656
+ background: transparent;
7657
+ color: inherit;
7658
+ font: inherit;
7659
+ cursor: pointer;
7660
+ }
7661
+
7662
+ .cratis-schema-editor__type-button:hover,
7663
+ .cratis-schema-editor__key:hover,
7664
+ .cratis-schema-editor__remove:hover,
7665
+ .cratis-schema-editor__add:hover {
7666
+ background: var(--cratis-surface-hover);
7667
+ }
7668
+
7669
+ .cratis-schema-editor__type-button:focus-visible,
7670
+ .cratis-schema-editor__key:focus-visible,
7671
+ .cratis-schema-editor__remove:focus-visible,
7672
+ .cratis-schema-editor__add:focus-visible {
7673
+ outline: none;
7674
+ box-shadow: var(--cratis-focus-ring);
7675
+ }
7676
+
7677
+ .cratis-schema-editor__type-button[data-pressed] {
7678
+ background: var(--cratis-surface-hover);
7679
+ }
7680
+
7681
+ .cratis-schema-editor__remove {
7682
+ color: var(--cratis-text-color-secondary);
7683
+ }
7684
+
7685
+ .cratis-schema-editor__remove:hover {
7686
+ color: var(--cratis-red-500);
7687
+ }
7688
+
7689
+ .cratis-schema-editor__key {
7690
+ color: var(--cratis-text-color-secondary);
7691
+ }
7692
+
7693
+ .cratis-schema-editor__key[data-pressed] {
7694
+ border-color: var(--cratis-primary-color);
7695
+ background: var(--cratis-highlight-bg);
7696
+ color: var(--cratis-highlight-text-color);
7697
+ }
7698
+
7699
+ .cratis-schema-editor__required {
7700
+ display: inline-flex;
7701
+ align-items: center;
7702
+ gap: 0.25rem;
7703
+ min-height: 1.5rem;
7704
+ color: var(--cratis-text-color-secondary);
7705
+ font-size: 0.75rem;
7706
+ cursor: pointer;
7707
+ }
7708
+
7709
+ .cratis-schema-editor__required input {
7710
+ width: 1rem;
7711
+ height: 1rem;
7712
+ margin: 0;
7713
+ accent-color: var(--cratis-primary-color);
7714
+ }
7715
+
7716
+ .cratis-schema-editor__required input:focus-visible {
7717
+ outline: none;
7718
+ box-shadow: var(--cratis-focus-ring);
7719
+ }
7720
+
7721
+ .cratis-schema-editor__protected {
7722
+ display: inline-flex;
7723
+ align-items: center;
7724
+ padding: 0 0.25rem;
7725
+ color: var(--cratis-text-color-secondary);
7726
+ }
7727
+
7728
+ .cratis-schema-editor__actions {
7729
+ display: flex;
7730
+ flex-wrap: wrap;
7731
+ align-items: center;
7732
+ gap: 0.5rem;
7733
+ }
7734
+
7735
+ .cratis-schema-editor__add {
7736
+ align-self: flex-start;
7737
+ border: 1px dashed var(--cratis-surface-border);
7738
+ color: var(--cratis-text-color-secondary);
7739
+ }
7740
+
7741
+ .cratis-schema-editor__footer {
7742
+ display: inline-flex;
7743
+ flex-wrap: wrap;
7744
+ align-items: center;
7745
+ gap: 0.5rem;
7746
+ }
7747
+
7748
+ .cratis-schema-editor__menu {
7749
+ z-index: var(--cratis-z-index-overlay);
7750
+ min-width: 12rem;
7751
+ max-height: min(24rem, var(--available-height));
7752
+ overflow: auto;
7753
+ border: 1px solid var(--cratis-surface-border);
7754
+ border-radius: var(--cratis-border-radius);
7755
+ background: var(--cratis-surface-overlay);
7756
+ color: var(--cratis-text-color);
7757
+ box-shadow: var(--cratis-shadow-overlay);
7758
+ }
7759
+
7760
+ .cratis-schema-editor__menu-list {
7761
+ padding: 0.25rem;
7762
+ outline: none;
7763
+ }
7764
+
7765
+ .cratis-schema-editor__menu-item {
7766
+ display: flex;
7767
+ align-items: center;
7768
+ gap: 0.5rem;
7769
+ min-height: 1.75rem;
7770
+ padding: 0.25rem 0.5rem;
7771
+ border-radius: calc(var(--cratis-border-radius) * 0.75);
7772
+ outline: none;
7773
+ cursor: default;
7774
+ }
7775
+
7776
+ .cratis-schema-editor__menu-item[data-focused] {
7777
+ background: var(--cratis-surface-hover);
7778
+ }
7779
+
7780
+ .cratis-schema-editor__menu-item[data-focus-visible] {
7781
+ box-shadow: inset var(--cratis-focus-ring);
7782
+ }
7783
+
7784
+ .cratis-schema-editor__menu-heading {
7785
+ padding: 0.25rem 0.5rem;
7786
+ color: var(--cratis-text-color-secondary);
7787
+ font-size: 0.6875rem;
7788
+ font-weight: 700;
7789
+ letter-spacing: 0.05em;
7790
+ text-transform: uppercase;
7791
+ }
7792
+
7793
+ .cratis-schema-editor__menu-hint {
7794
+ color: var(--cratis-text-color-secondary);
7795
+ font-style: italic;
7796
+ cursor: default;
7797
+ }
7798
+
7799
+ .cratis-schema-editor__visually-hidden {
7800
+ position: absolute;
7801
+ width: 1px;
7802
+ height: 1px;
7803
+ overflow: hidden;
7804
+ clip-path: inset(50%);
7805
+ white-space: nowrap;
7806
+ }
7807
+
7808
+ .cratis-schema-editor__menu-separator {
7809
+ height: 1px;
7810
+ margin: 0.25rem 0;
7811
+ background: var(--cratis-surface-border);
7812
+ }
7813
+
7814
+ @media (forced-colors: active) {
7815
+ .cratis-schema-editor__row,
7816
+ .cratis-schema-editor__badge,
7817
+ .cratis-schema-editor__menu {
7818
+ border-color: CanvasText;
7819
+ }
7820
+
7821
+ .cratis-schema-editor__row[data-selected],
7822
+ .cratis-schema-editor__key[data-pressed],
7823
+ .cratis-schema-editor__menu-item[data-focused] {
7824
+ outline: 2px solid Highlight;
7825
+ }
7826
+ }
7481
7827
 
7482
7828
  /* ── ./TimeMachine/EventsView.css ─────────────────────────────────────── */
7483
7829
  /* Events View Container */