@genesislcap/foundation-ui 14.456.1-alpha-0343578.0 → 14.456.2

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 (2) hide show
  1. package/dist/custom-elements.json +659 -659
  2. package/package.json +19 -19
@@ -1887,257 +1887,215 @@
1887
1887
  },
1888
1888
  {
1889
1889
  "kind": "javascript-module",
1890
- "path": "src/ai-criteria-search/ai-criteria-search.styles.ts",
1891
- "declarations": [
1892
- {
1893
- "kind": "variable",
1894
- "name": "foundationAiCriteriaSearchStyles",
1895
- "default": "css`\n :host {\n display: block;\n width: 800px;\n }\n\n .ai-criteria-search {\n display: flex;\n flex-direction: column;\n gap: calc(${designUnit} * 2px);\n }\n\n .ai-criteria-search-row {\n display: flex;\n flex-direction: row;\n gap: calc(${designUnit} * 2px);\n align-items: center;\n }\n\n .criteria-input {\n height: calc(((var(--base-height-multiplier) + var(--density)) * var(--design-unit) - 4) * 1px);\n flex: 1;\n min-width: 0;\n }\n\n .criteria-chips-inline {\n height: calc(((var(--base-height-multiplier) + var(--density)) * var(--design-unit) - 4) * 1px);\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: calc(${designUnit} * 1px);\n overflow-x: auto;\n padding: 0 calc(${designUnit} * 2px);\n background: var(--neutral-fill-input-rest);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n scrollbar-width: none;\n }\n\n .criteria-chips-inline::-webkit-scrollbar {\n display: none;\n }\n\n .mic-icon {\n color: var(--neutral-foreground-rest);\n fill: currentColor;\n }\n\n .criteria-toggle-button,\n .criteria-clear-button {\n flex-shrink: 0;\n }\n\n .criteria-chip {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n gap: calc(${designUnit} * 1px);\n padding: calc(${designUnit} * 0.5px) calc(${designUnit} * 2px);\n background: var(--neutral-fill-rest);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-rest);\n border-radius: calc(${designUnit} * 4px);\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-rest);\n white-space: nowrap;\n }\n\n .criteria-chip-field {\n font-weight: 600;\n }\n\n .criteria-chip-operator {\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-style: italic;\n }\n\n .criteria-chip-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n padding: 0;\n margin-left: calc(${designUnit} * 0.5px);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-size: 10px;\n border-radius: 50%;\n line-height: 1;\n }\n\n .criteria-chip-remove:hover {\n background: var(--neutral-fill-hover);\n color: var(--neutral-foreground-rest);\n }\n`"
1896
- }
1897
- ],
1898
- "exports": [
1899
- {
1900
- "kind": "js",
1901
- "name": "foundationAiCriteriaSearchStyles",
1902
- "declaration": {
1903
- "name": "foundationAiCriteriaSearchStyles",
1904
- "module": "src/ai-criteria-search/ai-criteria-search.styles.ts"
1905
- }
1906
- }
1907
- ]
1908
- },
1909
- {
1910
- "kind": "javascript-module",
1911
- "path": "src/ai-criteria-search/ai-criteria-search.template.ts",
1912
- "declarations": [
1913
- {
1914
- "kind": "variable",
1915
- "name": "foundationAiCriteriaSearchTemplate",
1916
- "type": {
1917
- "text": "ViewTemplate<AiCriteriaSearch>"
1918
- },
1919
- "default": "html`\n ${(x) => aiCriteriaSearchTemplate(getPrefix(x))}\n`"
1920
- }
1921
- ],
1922
- "exports": [
1923
- {
1924
- "kind": "js",
1925
- "name": "foundationAiCriteriaSearchTemplate",
1926
- "declaration": {
1927
- "name": "foundationAiCriteriaSearchTemplate",
1928
- "module": "src/ai-criteria-search/ai-criteria-search.template.ts"
1929
- }
1930
- }
1931
- ]
1932
- },
1933
- {
1934
- "kind": "javascript-module",
1935
- "path": "src/ai-criteria-search/ai-criteria-search.ts",
1890
+ "path": "src/_common/affix-mixin.ts",
1936
1891
  "declarations": [
1937
1892
  {
1938
- "kind": "class",
1939
- "description": "Natural-language criteria search input with AI interpretation.",
1940
- "name": "AiCriteriaSearch",
1893
+ "kind": "mixin",
1894
+ "description": "Mixin that adds prefix/suffix affix support with screen-reader handling to an input field component.\nShared between TextField and NumberField to keep the behaviour consistent and avoid duplication.",
1895
+ "name": "AffixMixin",
1941
1896
  "members": [
1942
1897
  {
1943
1898
  "kind": "field",
1944
- "name": "providerRegistry",
1945
- "type": {
1946
- "text": "AIProviderRegistry"
1947
- }
1948
- },
1949
- {
1950
- "kind": "field",
1951
- "name": "placeholder",
1899
+ "name": "prefix",
1952
1900
  "type": {
1953
1901
  "text": "string"
1954
1902
  },
1955
- "default": "'Describe your search criteria in natural language...'"
1956
- },
1957
- {
1958
- "kind": "field",
1959
- "name": "disabled",
1960
- "type": {
1961
- "text": "boolean"
1962
- }
1903
+ "description": "Optional non-editable label shown on the left inside the field, before the input."
1963
1904
  },
1964
1905
  {
1965
1906
  "kind": "field",
1966
- "name": "inputValue",
1907
+ "name": "suffix",
1967
1908
  "type": {
1968
1909
  "text": "string"
1969
1910
  },
1970
- "default": "''"
1911
+ "description": "Optional non-editable suffix (e.g. unit label) shown on the right inside the field."
1971
1912
  },
1972
1913
  {
1973
1914
  "kind": "field",
1974
- "name": "isInterpreting",
1915
+ "name": "hideAffixFromScreenReader",
1975
1916
  "type": {
1976
1917
  "text": "boolean"
1977
1918
  },
1978
- "default": "false"
1979
- },
1980
- {
1981
- "kind": "field",
1982
- "name": "lastValidCriteria",
1983
- "type": {
1984
- "text": "string | null"
1985
- },
1986
- "default": "null"
1987
- },
1919
+ "default": "false",
1920
+ "description": "When true, prefix/suffix are not exposed to assistive technology (`aria-hidden` on affixes,\nand their ids are omitted from the control's `aria-describedby`).\nUse only when the unit or symbol is redundant with the visible label or other text."
1921
+ }
1922
+ ],
1923
+ "parameters": [
1988
1924
  {
1989
- "kind": "field",
1990
- "name": "activeGroups",
1925
+ "name": "Base",
1991
1926
  "type": {
1992
- "text": "CriteriaGroup[]"
1993
- },
1994
- "default": "[]"
1995
- },
1927
+ "text": "TBase"
1928
+ }
1929
+ }
1930
+ ]
1931
+ }
1932
+ ],
1933
+ "exports": [
1934
+ {
1935
+ "kind": "js",
1936
+ "name": "AffixMixin",
1937
+ "declaration": {
1938
+ "name": "AffixMixin",
1939
+ "module": "src/_common/affix-mixin.ts"
1940
+ }
1941
+ }
1942
+ ]
1943
+ },
1944
+ {
1945
+ "kind": "javascript-module",
1946
+ "path": "src/_common/base-file-component.ts",
1947
+ "declarations": [
1948
+ {
1949
+ "kind": "class",
1950
+ "description": "Abstract base class for file handling components\nProvides common functionality for file selection, validation, and UI state management",
1951
+ "name": "BaseFileComponent",
1952
+ "members": [
1996
1953
  {
1997
1954
  "kind": "field",
1998
- "name": "showingChips",
1955
+ "name": "fileInput",
1999
1956
  "type": {
2000
- "text": "boolean"
1957
+ "text": "HTMLInputElement"
2001
1958
  },
2002
- "default": "false"
1959
+ "privacy": "public"
2003
1960
  },
2004
1961
  {
2005
1962
  "kind": "field",
2006
- "name": "fieldMetadata",
1963
+ "name": "selectedFile",
2007
1964
  "type": {
2008
- "text": "MetadataDetail[] | string[]"
1965
+ "text": "File | null"
2009
1966
  },
2010
- "default": "[]"
1967
+ "privacy": "protected",
1968
+ "default": "null"
2011
1969
  },
2012
1970
  {
2013
1971
  "kind": "field",
2014
- "name": "isRecording",
1972
+ "name": "label",
2015
1973
  "type": {
2016
- "text": "boolean"
2017
- },
2018
- "default": "false"
1974
+ "text": "string"
1975
+ }
2019
1976
  },
2020
1977
  {
2021
1978
  "kind": "field",
2022
- "name": "textAreaRef",
1979
+ "name": "accept",
2023
1980
  "type": {
2024
- "text": "HTMLTextAreaElement"
1981
+ "text": "string"
2025
1982
  },
2026
- "privacy": "public"
1983
+ "default": "''"
2027
1984
  },
2028
1985
  {
2029
1986
  "kind": "field",
2030
- "name": "stopRecording",
1987
+ "name": "fileSizeLimitBytes",
1988
+ "default": "10_485_760",
2031
1989
  "type": {
2032
- "text": "(() => void) | null"
2033
- },
2034
- "privacy": "private",
2035
- "default": "null"
1990
+ "text": "number"
1991
+ }
2036
1992
  },
2037
1993
  {
2038
1994
  "kind": "field",
2039
- "name": "speechApplyDebounceTimer",
1995
+ "name": "fileName",
2040
1996
  "type": {
2041
- "text": "ReturnType<typeof setTimeout> | null"
1997
+ "text": "string"
2042
1998
  },
2043
- "privacy": "private",
2044
- "default": "null"
1999
+ "default": "''"
2045
2000
  },
2046
2001
  {
2047
2002
  "kind": "field",
2048
- "name": "speechAvailable",
2003
+ "name": "isProcessing",
2049
2004
  "type": {
2050
2005
  "text": "boolean"
2051
2006
  },
2052
- "readonly": true
2007
+ "default": "false"
2053
2008
  },
2054
2009
  {
2055
- "kind": "field",
2056
- "name": "criteriaChips",
2057
- "type": {
2058
- "text": "CriteriaChip[]"
2059
- },
2060
- "readonly": true
2010
+ "kind": "method",
2011
+ "name": "handleClick",
2012
+ "privacy": "public",
2013
+ "description": "Opens the file picker dialog\nClears any previous file selection before opening"
2061
2014
  },
2062
2015
  {
2063
2016
  "kind": "method",
2064
- "name": "getFieldLabel",
2065
- "privacy": "private",
2066
- "return": {
2067
- "type": {
2068
- "text": "string"
2069
- }
2070
- },
2017
+ "name": "onInputChange",
2018
+ "privacy": "public",
2071
2019
  "parameters": [
2072
2020
  {
2073
- "name": "fieldName",
2021
+ "name": "e",
2074
2022
  "type": {
2075
- "text": "string"
2076
- }
2023
+ "text": "Event"
2024
+ },
2025
+ "description": "The change event from the file input"
2077
2026
  }
2078
- ]
2027
+ ],
2028
+ "description": "Handles file selection from the file input\nValidates file size and sets up for processing"
2079
2029
  },
2080
2030
  {
2081
2031
  "kind": "method",
2082
- "name": "toggleCriteriaView",
2032
+ "name": "clearSelection",
2033
+ "privacy": "public",
2034
+ "description": "Clears all file selection and processing state\nResets the component to its initial state"
2035
+ },
2036
+ {
2037
+ "kind": "method",
2038
+ "name": "getSelectedFile",
2039
+ "privacy": "public",
2040
+ "description": "Gets the currently selected file object",
2083
2041
  "return": {
2084
2042
  "type": {
2085
- "text": "void"
2043
+ "text": ""
2086
2044
  }
2087
2045
  }
2088
2046
  },
2089
2047
  {
2090
2048
  "kind": "method",
2091
- "name": "removeChip",
2092
- "return": {
2093
- "type": {
2094
- "text": "void"
2095
- }
2096
- },
2049
+ "name": "showError",
2050
+ "privacy": "protected",
2097
2051
  "parameters": [
2098
2052
  {
2099
- "name": "groupIndex",
2053
+ "name": "title",
2100
2054
  "type": {
2101
- "text": "number"
2102
- }
2055
+ "text": "string"
2056
+ },
2057
+ "description": "The error title"
2103
2058
  },
2104
2059
  {
2105
- "name": "clauseIndex",
2060
+ "name": "message",
2106
2061
  "type": {
2107
- "text": "number"
2108
- }
2062
+ "text": "string"
2063
+ },
2064
+ "description": "The error message"
2109
2065
  }
2110
- ]
2066
+ ],
2067
+ "description": "Shows an error notification using the unified error handling system"
2111
2068
  },
2112
2069
  {
2113
2070
  "kind": "method",
2114
- "name": "clearChips",
2071
+ "name": "onFileSelected",
2072
+ "privacy": "protected",
2115
2073
  "return": {
2116
2074
  "type": {
2117
2075
  "text": "void"
2118
2076
  }
2119
- }
2120
- },
2121
- {
2122
- "kind": "method",
2123
- "name": "handleSubmit"
2077
+ },
2078
+ "parameters": [
2079
+ {
2080
+ "name": "files",
2081
+ "type": {
2082
+ "text": "File[]"
2083
+ },
2084
+ "description": "The selected file"
2085
+ }
2086
+ ],
2087
+ "description": "Abstract method called when a file is selected"
2124
2088
  },
2125
2089
  {
2126
2090
  "kind": "method",
2127
- "name": "handleBlur"
2128
- },
2129
- {
2130
- "kind": "method",
2131
- "name": "clear"
2132
- },
2133
- {
2134
- "kind": "method",
2135
- "name": "toggleSpeechInput"
2136
- },
2137
- {
2138
- "kind": "method",
2139
- "name": "clearSpeechApplyDebounce",
2140
- "privacy": "private"
2091
+ "name": "onFileCleared",
2092
+ "privacy": "protected",
2093
+ "return": {
2094
+ "type": {
2095
+ "text": "void"
2096
+ }
2097
+ },
2098
+ "description": "Abstract method called when file selection is cleared"
2141
2099
  },
2142
2100
  {
2143
2101
  "kind": "field",
@@ -2253,152 +2211,118 @@
2253
2211
  ],
2254
2212
  "events": [
2255
2213
  {
2256
- "description": "Fired when interpreted criteria is applied or cleared",
2257
- "name": "criteria-changed"
2214
+ "description": "Fired when file size validation fails",
2215
+ "name": "error"
2258
2216
  },
2259
2217
  {
2260
- "description": "Fired when interpreted criteria contains invalid clauses",
2261
- "name": "validation-errors"
2218
+ "description": "Fired when selection is cleared",
2219
+ "name": "clear"
2262
2220
  }
2263
2221
  ],
2264
2222
  "attributes": [
2265
2223
  {
2266
- "name": "placeholder",
2224
+ "name": "label",
2267
2225
  "type": {
2268
2226
  "text": "string"
2269
2227
  },
2270
- "default": "'Describe your search criteria in natural language...'",
2271
- "fieldName": "placeholder"
2228
+ "fieldName": "label"
2272
2229
  },
2273
2230
  {
2231
+ "name": "accept",
2274
2232
  "type": {
2275
- "text": "boolean"
2233
+ "text": "string"
2276
2234
  },
2277
- "fieldName": "disabled"
2235
+ "default": "''",
2236
+ "fieldName": "accept"
2237
+ },
2238
+ {
2239
+ "name": "file-size-limit-bytes",
2240
+ "default": "DEFAULT_FILE_SIZE_LIMIT",
2241
+ "resolveInitializer": {
2242
+ "module": "src/_common/base-file-component.ts"
2243
+ },
2244
+ "fieldName": "fileSizeLimitBytes"
2278
2245
  }
2279
2246
  ],
2280
2247
  "superclass": {
2281
2248
  "name": "FoundationElement",
2282
2249
  "package": "@microsoft/fast-foundation"
2283
- },
2284
- "tagName": "%%prefix%%-ai-criteria-search",
2285
- "customElement": true
2286
- },
2287
- {
2288
- "kind": "variable",
2289
- "name": "foundationAiCriteriaSearchShadowOptions",
2290
- "type": {
2291
- "text": "ShadowRootInit"
2292
- },
2293
- "default": "undefined"
2294
- },
2295
- {
2296
- "kind": "variable",
2297
- "name": "defaultAiCriteriaSearchConfig",
2298
- "type": {
2299
- "text": "object"
2300
- },
2301
- "default": "{}"
2302
- },
2303
- {
2304
- "kind": "variable",
2305
- "name": "foundationAiCriteriaSearch"
2250
+ }
2306
2251
  }
2307
2252
  ],
2308
2253
  "exports": [
2309
2254
  {
2310
2255
  "kind": "js",
2311
- "name": "AiCriteriaSearch",
2256
+ "name": "BaseFileComponent",
2312
2257
  "declaration": {
2313
- "name": "AiCriteriaSearch",
2314
- "module": "src/ai-criteria-search/ai-criteria-search.ts"
2258
+ "name": "BaseFileComponent",
2259
+ "module": "src/_common/base-file-component.ts"
2315
2260
  }
2316
- },
2261
+ }
2262
+ ]
2263
+ },
2264
+ {
2265
+ "kind": "javascript-module",
2266
+ "path": "src/_common/field-styles.ts",
2267
+ "declarations": [
2317
2268
  {
2318
- "kind": "js",
2319
- "name": "foundationAiCriteriaSearchShadowOptions",
2320
- "declaration": {
2321
- "name": "foundationAiCriteriaSearchShadowOptions",
2322
- "module": "src/ai-criteria-search/ai-criteria-search.ts"
2323
- }
2324
- },
2269
+ "kind": "variable",
2270
+ "name": "sharedFieldStyles",
2271
+ "default": "css`\n .label-hidden {\n margin: 0;\n }\n\n .control-field {\n display: flex;\n flex: 1 1 0%;\n min-width: 0;\n align-self: stretch;\n align-items: stretch;\n }\n\n .control-field .control {\n flex: 1 1 auto;\n min-width: 0;\n width: auto;\n }\n\n .prefix,\n .suffix {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n padding: 0 calc(var(--design-unit) * 2px);\n user-select: none;\n white-space: nowrap;\n background-color: var(--neutral-fill-rest);\n color: var(--neutral-foreground-hint);\n font-size: var(--type-ramp-base-font-size);\n font-family: inherit;\n line-height: 1;\n }\n\n .prefix {\n border-right: 1px solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px) 0 0\n calc(var(--control-corner-radius) * 1px);\n }\n\n .suffix {\n border-left: 1px solid var(--neutral-stroke-divider-rest);\n border-radius: 0 calc(var(--control-corner-radius) * 1px)\n calc(var(--control-corner-radius) * 1px) 0;\n }\n\n :host(.has-prefix:not(.has-suffix)) .control-field .control {\n border-radius: 0 calc(var(--control-corner-radius) * 1px)\n calc(var(--control-corner-radius) * 1px) 0;\n }\n\n :host(.has-suffix:not(.has-prefix)) .control-field .control {\n border-radius: calc(var(--control-corner-radius) * 1px) 0 0\n calc(var(--control-corner-radius) * 1px);\n }\n\n :host(.has-prefix.has-suffix) .control-field .control {\n border-radius: 0;\n }\n`"
2272
+ }
2273
+ ],
2274
+ "exports": [
2325
2275
  {
2326
2276
  "kind": "js",
2327
- "name": "defaultAiCriteriaSearchConfig",
2277
+ "name": "sharedFieldStyles",
2328
2278
  "declaration": {
2329
- "name": "defaultAiCriteriaSearchConfig",
2330
- "module": "src/ai-criteria-search/ai-criteria-search.ts"
2279
+ "name": "sharedFieldStyles",
2280
+ "module": "src/_common/field-styles.ts"
2331
2281
  }
2332
- },
2282
+ }
2283
+ ]
2284
+ },
2285
+ {
2286
+ "kind": "javascript-module",
2287
+ "path": "src/_common/icons.ts",
2288
+ "declarations": [
2289
+ {
2290
+ "kind": "function",
2291
+ "name": "closeIcon",
2292
+ "parameters": [
2293
+ {
2294
+ "name": "slot",
2295
+ "default": "'start'"
2296
+ },
2297
+ {
2298
+ "name": "fill",
2299
+ "default": "'#879ba6'"
2300
+ }
2301
+ ]
2302
+ }
2303
+ ],
2304
+ "exports": [
2333
2305
  {
2334
2306
  "kind": "js",
2335
- "name": "foundationAiCriteriaSearch",
2307
+ "name": "closeIcon",
2336
2308
  "declaration": {
2337
- "name": "foundationAiCriteriaSearch",
2338
- "module": "src/ai-criteria-search/ai-criteria-search.ts"
2309
+ "name": "closeIcon",
2310
+ "module": "src/_common/icons.ts"
2339
2311
  }
2340
2312
  }
2341
2313
  ]
2342
2314
  },
2343
2315
  {
2344
2316
  "kind": "javascript-module",
2345
- "path": "src/ai-criteria-search/index.ts",
2317
+ "path": "src/_common/index.ts",
2346
2318
  "declarations": [],
2347
2319
  "exports": [
2348
- {
2349
- "kind": "js",
2350
- "name": "AiCriteriaSearch",
2351
- "declaration": {
2352
- "name": "AiCriteriaSearch",
2353
- "module": "./ai-criteria-search"
2354
- }
2355
- },
2356
- {
2357
- "kind": "js",
2358
- "name": "defaultAiCriteriaSearchConfig",
2359
- "declaration": {
2360
- "name": "defaultAiCriteriaSearchConfig",
2361
- "module": "./ai-criteria-search"
2362
- }
2363
- },
2364
- {
2365
- "kind": "js",
2366
- "name": "foundationAiCriteriaSearch",
2367
- "declaration": {
2368
- "name": "foundationAiCriteriaSearch",
2369
- "module": "./ai-criteria-search"
2370
- }
2371
- },
2372
- {
2373
- "kind": "js",
2374
- "name": "foundationAiCriteriaSearchShadowOptions",
2375
- "declaration": {
2376
- "name": "foundationAiCriteriaSearchShadowOptions",
2377
- "module": "./ai-criteria-search"
2378
- }
2379
- },
2380
- {
2381
- "kind": "js",
2382
- "name": "foundationAiCriteriaSearchStyles",
2383
- "declaration": {
2384
- "name": "foundationAiCriteriaSearchStyles",
2385
- "module": "./ai-criteria-search.styles"
2386
- }
2387
- },
2388
- {
2389
- "kind": "js",
2390
- "name": "foundationAiCriteriaSearchTemplate",
2391
- "declaration": {
2392
- "name": "foundationAiCriteriaSearchTemplate",
2393
- "module": "./ai-criteria-search.template"
2394
- }
2395
- },
2396
2320
  {
2397
2321
  "kind": "js",
2398
2322
  "name": "*",
2399
2323
  "declaration": {
2400
2324
  "name": "*",
2401
- "package": "./validation/criteria-ir"
2325
+ "package": "./affix-mixin"
2402
2326
  }
2403
2327
  },
2404
2328
  {
@@ -2406,7 +2330,7 @@
2406
2330
  "name": "*",
2407
2331
  "declaration": {
2408
2332
  "name": "*",
2409
- "package": "./validation/operator-map"
2333
+ "package": "./base-file-component"
2410
2334
  }
2411
2335
  },
2412
2336
  {
@@ -2414,157 +2338,72 @@
2414
2338
  "name": "*",
2415
2339
  "declaration": {
2416
2340
  "name": "*",
2417
- "package": "./validation/schema-validator"
2418
- }
2419
- }
2420
- ]
2421
- },
2422
- {
2423
- "kind": "javascript-module",
2424
- "path": "src/ai-criteria-search/validation-error-notification.ts",
2425
- "declarations": [
2426
- {
2427
- "kind": "function",
2428
- "name": "formatValidationErrors",
2429
- "return": {
2430
- "type": {
2431
- "text": "string"
2432
- }
2433
- },
2434
- "parameters": [
2435
- {
2436
- "name": "errors",
2437
- "type": {
2438
- "text": "ValidationError[]"
2439
- }
2440
- }
2441
- ],
2442
- "description": "Formats validation errors into a user-friendly message."
2443
- },
2444
- {
2445
- "kind": "function",
2446
- "name": "showCriteriaError",
2447
- "return": {
2448
- "type": {
2449
- "text": "void"
2450
- }
2451
- },
2452
- "parameters": [
2453
- {
2454
- "name": "title",
2455
- "type": {
2456
- "text": "string"
2457
- },
2458
- "description": "Notification title (e.g. \"Criteria validation error\")"
2459
- },
2460
- {
2461
- "name": "body",
2462
- "type": {
2463
- "text": "string"
2464
- },
2465
- "description": "Error message to display"
2466
- },
2467
- {
2468
- "name": "tagName",
2469
- "type": {
2470
- "text": "string"
2471
- },
2472
- "description": "Design system prefix (e.g. \"rapid\", \"foundation\")"
2473
- }
2474
- ],
2475
- "description": "Shows a criteria error as a toast notification."
2476
- }
2477
- ],
2478
- "exports": [
2479
- {
2480
- "kind": "js",
2481
- "name": "formatValidationErrors",
2482
- "declaration": {
2483
- "name": "formatValidationErrors",
2484
- "module": "src/ai-criteria-search/validation-error-notification.ts"
2341
+ "package": "./field-styles"
2485
2342
  }
2486
2343
  },
2487
2344
  {
2488
2345
  "kind": "js",
2489
- "name": "showCriteriaError",
2346
+ "name": "*",
2490
2347
  "declaration": {
2491
- "name": "showCriteriaError",
2492
- "module": "src/ai-criteria-search/validation-error-notification.ts"
2493
- }
2494
- }
2495
- ]
2496
- },
2497
- {
2498
- "kind": "javascript-module",
2499
- "path": "src/ai-indicator/ai-indicator.styles.ts",
2500
- "declarations": [
2501
- {
2502
- "kind": "function",
2503
- "name": "foundationAiIndicatorStyles",
2504
- "return": {
2505
- "type": {
2506
- "text": "ElementStyles"
2507
- }
2508
- },
2509
- "parameters": [
2510
- {
2511
- "name": "context",
2512
- "type": {
2513
- "text": "ElementDefinitionContext"
2514
- }
2515
- },
2516
- {
2517
- "name": "definition",
2518
- "type": {
2519
- "text": "FoundationElementDefinition"
2520
- }
2521
- }
2522
- ]
2348
+ "name": "*",
2349
+ "package": "./icons"
2350
+ }
2351
+ }
2352
+ ]
2353
+ },
2354
+ {
2355
+ "kind": "javascript-module",
2356
+ "path": "src/ai-criteria-search/ai-criteria-search.styles.ts",
2357
+ "declarations": [
2358
+ {
2359
+ "kind": "variable",
2360
+ "name": "foundationAiCriteriaSearchStyles",
2361
+ "default": "css`\n :host {\n display: block;\n width: 800px;\n }\n\n .ai-criteria-search {\n display: flex;\n flex-direction: column;\n gap: calc(${designUnit} * 2px);\n }\n\n .ai-criteria-search-row {\n display: flex;\n flex-direction: row;\n gap: calc(${designUnit} * 2px);\n align-items: center;\n }\n\n .criteria-input {\n height: calc(((var(--base-height-multiplier) + var(--density)) * var(--design-unit) - 4) * 1px);\n flex: 1;\n min-width: 0;\n }\n\n .criteria-chips-inline {\n height: calc(((var(--base-height-multiplier) + var(--density)) * var(--design-unit) - 4) * 1px);\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: calc(${designUnit} * 1px);\n overflow-x: auto;\n padding: 0 calc(${designUnit} * 2px);\n background: var(--neutral-fill-input-rest);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n scrollbar-width: none;\n }\n\n .criteria-chips-inline::-webkit-scrollbar {\n display: none;\n }\n\n .mic-icon {\n color: var(--neutral-foreground-rest);\n fill: currentColor;\n }\n\n .criteria-toggle-button,\n .criteria-clear-button {\n flex-shrink: 0;\n }\n\n .criteria-chip {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n gap: calc(${designUnit} * 1px);\n padding: calc(${designUnit} * 0.5px) calc(${designUnit} * 2px);\n background: var(--neutral-fill-rest);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-rest);\n border-radius: calc(${designUnit} * 4px);\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-rest);\n white-space: nowrap;\n }\n\n .criteria-chip-field {\n font-weight: 600;\n }\n\n .criteria-chip-operator {\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-style: italic;\n }\n\n .criteria-chip-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n padding: 0;\n margin-left: calc(${designUnit} * 0.5px);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-size: 10px;\n border-radius: 50%;\n line-height: 1;\n }\n\n .criteria-chip-remove:hover {\n background: var(--neutral-fill-hover);\n color: var(--neutral-foreground-rest);\n }\n`"
2523
2362
  }
2524
2363
  ],
2525
2364
  "exports": [
2526
2365
  {
2527
2366
  "kind": "js",
2528
- "name": "foundationAiIndicatorStyles",
2367
+ "name": "foundationAiCriteriaSearchStyles",
2529
2368
  "declaration": {
2530
- "name": "foundationAiIndicatorStyles",
2531
- "module": "src/ai-indicator/ai-indicator.styles.ts"
2369
+ "name": "foundationAiCriteriaSearchStyles",
2370
+ "module": "src/ai-criteria-search/ai-criteria-search.styles.ts"
2532
2371
  }
2533
2372
  }
2534
2373
  ]
2535
2374
  },
2536
2375
  {
2537
2376
  "kind": "javascript-module",
2538
- "path": "src/ai-indicator/ai-indicator.template.ts",
2377
+ "path": "src/ai-criteria-search/ai-criteria-search.template.ts",
2539
2378
  "declarations": [
2540
2379
  {
2541
2380
  "kind": "variable",
2542
- "name": "foundationAiIndicatorTemplate",
2381
+ "name": "foundationAiCriteriaSearchTemplate",
2543
2382
  "type": {
2544
- "text": "ViewTemplate<AiIndicator>"
2383
+ "text": "ViewTemplate<AiCriteriaSearch>"
2545
2384
  },
2546
- "default": "html`\n ${(x) => aiIndicatorTemplate(getPrefix(x))}\n`"
2385
+ "default": "html`\n ${(x) => aiCriteriaSearchTemplate(getPrefix(x))}\n`"
2547
2386
  }
2548
2387
  ],
2549
2388
  "exports": [
2550
2389
  {
2551
2390
  "kind": "js",
2552
- "name": "foundationAiIndicatorTemplate",
2391
+ "name": "foundationAiCriteriaSearchTemplate",
2553
2392
  "declaration": {
2554
- "name": "foundationAiIndicatorTemplate",
2555
- "module": "src/ai-indicator/ai-indicator.template.ts"
2393
+ "name": "foundationAiCriteriaSearchTemplate",
2394
+ "module": "src/ai-criteria-search/ai-criteria-search.template.ts"
2556
2395
  }
2557
2396
  }
2558
2397
  ]
2559
2398
  },
2560
2399
  {
2561
2400
  "kind": "javascript-module",
2562
- "path": "src/ai-indicator/ai-indicator.ts",
2401
+ "path": "src/ai-criteria-search/ai-criteria-search.ts",
2563
2402
  "declarations": [
2564
2403
  {
2565
2404
  "kind": "class",
2566
- "description": "",
2567
- "name": "AiIndicator",
2405
+ "description": "Natural-language criteria search input with AI interpretation.",
2406
+ "name": "AiCriteriaSearch",
2568
2407
  "members": [
2569
2408
  {
2570
2409
  "kind": "field",
@@ -2575,25 +2414,54 @@
2575
2414
  },
2576
2415
  {
2577
2416
  "kind": "field",
2578
- "name": "aiProvider",
2417
+ "name": "placeholder",
2579
2418
  "type": {
2580
- "text": "AIProvider | undefined"
2419
+ "text": "string"
2581
2420
  },
2582
- "privacy": "private",
2583
- "description": "The indicator reflects status for the registry's default provider only —\nper-agent provider overrides live with the assistant component, not this\ntop-level chrome.",
2584
- "readonly": true
2421
+ "default": "'Describe your search criteria in natural language...'"
2585
2422
  },
2586
2423
  {
2587
2424
  "kind": "field",
2588
- "name": "status",
2425
+ "name": "disabled",
2589
2426
  "type": {
2590
- "text": "AIStatus | null"
2427
+ "text": "boolean"
2428
+ }
2429
+ },
2430
+ {
2431
+ "kind": "field",
2432
+ "name": "inputValue",
2433
+ "type": {
2434
+ "text": "string"
2435
+ },
2436
+ "default": "''"
2437
+ },
2438
+ {
2439
+ "kind": "field",
2440
+ "name": "isInterpreting",
2441
+ "type": {
2442
+ "text": "boolean"
2443
+ },
2444
+ "default": "false"
2445
+ },
2446
+ {
2447
+ "kind": "field",
2448
+ "name": "lastValidCriteria",
2449
+ "type": {
2450
+ "text": "string | null"
2591
2451
  },
2592
2452
  "default": "null"
2593
2453
  },
2594
2454
  {
2595
2455
  "kind": "field",
2596
- "name": "open",
2456
+ "name": "activeGroups",
2457
+ "type": {
2458
+ "text": "CriteriaGroup[]"
2459
+ },
2460
+ "default": "[]"
2461
+ },
2462
+ {
2463
+ "kind": "field",
2464
+ "name": "showingChips",
2597
2465
  "type": {
2598
2466
  "text": "boolean"
2599
2467
  },
@@ -2601,15 +2469,15 @@
2601
2469
  },
2602
2470
  {
2603
2471
  "kind": "field",
2604
- "name": "state",
2472
+ "name": "fieldMetadata",
2605
2473
  "type": {
2606
- "text": "AIIndicatorState"
2474
+ "text": "MetadataDetail[] | string[]"
2607
2475
  },
2608
- "default": "'none'"
2476
+ "default": "[]"
2609
2477
  },
2610
2478
  {
2611
2479
  "kind": "field",
2612
- "name": "isInstalling",
2480
+ "name": "isRecording",
2613
2481
  "type": {
2614
2482
  "text": "boolean"
2615
2483
  },
@@ -2617,29 +2485,33 @@
2617
2485
  },
2618
2486
  {
2619
2487
  "kind": "field",
2620
- "name": "pollTimer",
2488
+ "name": "textAreaRef",
2621
2489
  "type": {
2622
- "text": "ReturnType<typeof setInterval> | null"
2490
+ "text": "HTMLTextAreaElement"
2623
2491
  },
2624
- "privacy": "private",
2625
- "default": "null"
2492
+ "privacy": "public"
2626
2493
  },
2627
2494
  {
2628
2495
  "kind": "field",
2629
- "name": "clickOutside",
2630
- "privacy": "private"
2496
+ "name": "stopRecording",
2497
+ "type": {
2498
+ "text": "(() => void) | null"
2499
+ },
2500
+ "privacy": "private",
2501
+ "default": "null"
2631
2502
  },
2632
2503
  {
2633
2504
  "kind": "field",
2634
- "name": "chromeStatusLabel",
2505
+ "name": "speechApplyDebounceTimer",
2635
2506
  "type": {
2636
- "text": "string | null"
2507
+ "text": "ReturnType<typeof setTimeout> | null"
2637
2508
  },
2638
- "readonly": true
2509
+ "privacy": "private",
2510
+ "default": "null"
2639
2511
  },
2640
2512
  {
2641
2513
  "kind": "field",
2642
- "name": "canInstall",
2514
+ "name": "speechAvailable",
2643
2515
  "type": {
2644
2516
  "text": "boolean"
2645
2517
  },
@@ -2647,69 +2519,65 @@
2647
2519
  },
2648
2520
  {
2649
2521
  "kind": "field",
2650
- "name": "isDownloading",
2522
+ "name": "criteriaChips",
2651
2523
  "type": {
2652
- "text": "boolean"
2524
+ "text": "CriteriaChip[]"
2653
2525
  },
2654
2526
  "readonly": true
2655
2527
  },
2656
2528
  {
2657
2529
  "kind": "method",
2658
- "name": "openChanged",
2530
+ "name": "getFieldLabel",
2531
+ "privacy": "private",
2659
2532
  "return": {
2660
2533
  "type": {
2661
- "text": "void"
2534
+ "text": "string"
2662
2535
  }
2663
- }
2664
- },
2665
- {
2666
- "kind": "method",
2667
- "name": "handleClickOutside",
2668
- "privacy": "private",
2536
+ },
2669
2537
  "parameters": [
2670
2538
  {
2671
- "name": "event",
2539
+ "name": "fieldName",
2672
2540
  "type": {
2673
- "text": "MouseEvent"
2541
+ "text": "string"
2674
2542
  }
2675
2543
  }
2676
2544
  ]
2677
2545
  },
2678
2546
  {
2679
2547
  "kind": "method",
2680
- "name": "toggleDropdown"
2681
- },
2682
- {
2683
- "kind": "method",
2684
- "name": "refreshStatus",
2548
+ "name": "toggleCriteriaView",
2685
2549
  "return": {
2686
2550
  "type": {
2687
- "text": "Promise<void>"
2551
+ "text": "void"
2688
2552
  }
2689
2553
  }
2690
2554
  },
2691
2555
  {
2692
2556
  "kind": "method",
2693
- "name": "deriveState",
2694
- "privacy": "private",
2557
+ "name": "removeChip",
2695
2558
  "return": {
2696
2559
  "type": {
2697
- "text": "AIIndicatorState"
2560
+ "text": "void"
2698
2561
  }
2699
2562
  },
2700
2563
  "parameters": [
2701
2564
  {
2702
- "name": "s",
2565
+ "name": "groupIndex",
2703
2566
  "type": {
2704
- "text": "AIStatus | null"
2567
+ "text": "number"
2568
+ }
2569
+ },
2570
+ {
2571
+ "name": "clauseIndex",
2572
+ "type": {
2573
+ "text": "number"
2705
2574
  }
2706
2575
  }
2707
2576
  ]
2708
2577
  },
2709
2578
  {
2710
2579
  "kind": "method",
2711
- "name": "maybeStartPolling",
2712
- "privacy": "private",
2580
+ "name": "clearChips",
2713
2581
  "return": {
2714
2582
  "type": {
2715
2583
  "text": "void"
@@ -2718,32 +2586,24 @@
2718
2586
  },
2719
2587
  {
2720
2588
  "kind": "method",
2721
- "name": "startPolling",
2722
- "privacy": "private",
2723
- "return": {
2724
- "type": {
2725
- "text": "void"
2726
- }
2727
- }
2589
+ "name": "handleSubmit"
2728
2590
  },
2729
2591
  {
2730
2592
  "kind": "method",
2731
- "name": "stopPolling",
2732
- "privacy": "private",
2733
- "return": {
2734
- "type": {
2735
- "text": "void"
2736
- }
2737
- }
2593
+ "name": "handleBlur"
2738
2594
  },
2739
2595
  {
2740
2596
  "kind": "method",
2741
- "name": "onInstall",
2742
- "return": {
2743
- "type": {
2744
- "text": "Promise<void>"
2745
- }
2746
- }
2597
+ "name": "clear"
2598
+ },
2599
+ {
2600
+ "kind": "method",
2601
+ "name": "toggleSpeechInput"
2602
+ },
2603
+ {
2604
+ "kind": "method",
2605
+ "name": "clearSpeechApplyDebounce",
2606
+ "privacy": "private"
2747
2607
  },
2748
2608
  {
2749
2609
  "kind": "field",
@@ -2857,132 +2717,272 @@
2857
2717
  }
2858
2718
  }
2859
2719
  ],
2720
+ "events": [
2721
+ {
2722
+ "description": "Fired when interpreted criteria is applied or cleared",
2723
+ "name": "criteria-changed"
2724
+ },
2725
+ {
2726
+ "description": "Fired when interpreted criteria contains invalid clauses",
2727
+ "name": "validation-errors"
2728
+ }
2729
+ ],
2730
+ "attributes": [
2731
+ {
2732
+ "name": "placeholder",
2733
+ "type": {
2734
+ "text": "string"
2735
+ },
2736
+ "default": "'Describe your search criteria in natural language...'",
2737
+ "fieldName": "placeholder"
2738
+ },
2739
+ {
2740
+ "type": {
2741
+ "text": "boolean"
2742
+ },
2743
+ "fieldName": "disabled"
2744
+ }
2745
+ ],
2860
2746
  "superclass": {
2861
2747
  "name": "FoundationElement",
2862
2748
  "package": "@microsoft/fast-foundation"
2863
2749
  },
2864
- "tagName": "%%prefix%%-ai-indicator",
2750
+ "tagName": "%%prefix%%-ai-criteria-search",
2865
2751
  "customElement": true
2866
2752
  },
2867
2753
  {
2868
2754
  "kind": "variable",
2869
- "name": "foundationAiIndicator"
2755
+ "name": "foundationAiCriteriaSearchShadowOptions",
2756
+ "type": {
2757
+ "text": "ShadowRootInit"
2758
+ },
2759
+ "default": "undefined"
2760
+ },
2761
+ {
2762
+ "kind": "variable",
2763
+ "name": "defaultAiCriteriaSearchConfig",
2764
+ "type": {
2765
+ "text": "object"
2766
+ },
2767
+ "default": "{}"
2768
+ },
2769
+ {
2770
+ "kind": "variable",
2771
+ "name": "foundationAiCriteriaSearch"
2870
2772
  }
2871
2773
  ],
2872
2774
  "exports": [
2873
2775
  {
2874
2776
  "kind": "js",
2875
- "name": "AiIndicator",
2777
+ "name": "AiCriteriaSearch",
2778
+ "declaration": {
2779
+ "name": "AiCriteriaSearch",
2780
+ "module": "src/ai-criteria-search/ai-criteria-search.ts"
2781
+ }
2782
+ },
2783
+ {
2784
+ "kind": "js",
2785
+ "name": "foundationAiCriteriaSearchShadowOptions",
2786
+ "declaration": {
2787
+ "name": "foundationAiCriteriaSearchShadowOptions",
2788
+ "module": "src/ai-criteria-search/ai-criteria-search.ts"
2789
+ }
2790
+ },
2791
+ {
2792
+ "kind": "js",
2793
+ "name": "defaultAiCriteriaSearchConfig",
2876
2794
  "declaration": {
2877
- "name": "AiIndicator",
2878
- "module": "src/ai-indicator/ai-indicator.ts"
2795
+ "name": "defaultAiCriteriaSearchConfig",
2796
+ "module": "src/ai-criteria-search/ai-criteria-search.ts"
2879
2797
  }
2880
2798
  },
2881
2799
  {
2882
2800
  "kind": "js",
2883
- "name": "foundationAiIndicator",
2801
+ "name": "foundationAiCriteriaSearch",
2884
2802
  "declaration": {
2885
- "name": "foundationAiIndicator",
2886
- "module": "src/ai-indicator/ai-indicator.ts"
2803
+ "name": "foundationAiCriteriaSearch",
2804
+ "module": "src/ai-criteria-search/ai-criteria-search.ts"
2887
2805
  }
2888
2806
  }
2889
2807
  ]
2890
2808
  },
2891
2809
  {
2892
2810
  "kind": "javascript-module",
2893
- "path": "src/ai-indicator/index.ts",
2811
+ "path": "src/ai-criteria-search/index.ts",
2894
2812
  "declarations": [],
2895
2813
  "exports": [
2896
2814
  {
2897
2815
  "kind": "js",
2898
- "name": "AiIndicator",
2816
+ "name": "AiCriteriaSearch",
2899
2817
  "declaration": {
2900
- "name": "AiIndicator",
2901
- "module": "./ai-indicator"
2818
+ "name": "AiCriteriaSearch",
2819
+ "module": "./ai-criteria-search"
2902
2820
  }
2903
2821
  },
2904
2822
  {
2905
2823
  "kind": "js",
2906
- "name": "foundationAiIndicator",
2824
+ "name": "defaultAiCriteriaSearchConfig",
2907
2825
  "declaration": {
2908
- "name": "foundationAiIndicator",
2909
- "module": "./ai-indicator"
2826
+ "name": "defaultAiCriteriaSearchConfig",
2827
+ "module": "./ai-criteria-search"
2910
2828
  }
2911
2829
  },
2912
2830
  {
2913
2831
  "kind": "js",
2914
- "name": "type",
2832
+ "name": "foundationAiCriteriaSearch",
2915
2833
  "declaration": {
2916
- "name": "type",
2917
- "module": "./ai-indicator"
2834
+ "name": "foundationAiCriteriaSearch",
2835
+ "module": "./ai-criteria-search"
2918
2836
  }
2919
2837
  },
2920
2838
  {
2921
2839
  "kind": "js",
2922
- "name": "AIIndicatorState",
2840
+ "name": "foundationAiCriteriaSearchShadowOptions",
2923
2841
  "declaration": {
2924
- "name": "AIIndicatorState",
2925
- "module": "./ai-indicator"
2842
+ "name": "foundationAiCriteriaSearchShadowOptions",
2843
+ "module": "./ai-criteria-search"
2926
2844
  }
2927
2845
  },
2928
2846
  {
2929
2847
  "kind": "js",
2930
- "name": "foundationAiIndicatorTemplate",
2848
+ "name": "foundationAiCriteriaSearchStyles",
2931
2849
  "declaration": {
2932
- "name": "foundationAiIndicatorTemplate",
2933
- "module": "./ai-indicator.template"
2850
+ "name": "foundationAiCriteriaSearchStyles",
2851
+ "module": "./ai-criteria-search.styles"
2934
2852
  }
2935
2853
  },
2936
2854
  {
2937
2855
  "kind": "js",
2938
- "name": "foundationAiIndicatorStyles",
2856
+ "name": "foundationAiCriteriaSearchTemplate",
2939
2857
  "declaration": {
2940
- "name": "foundationAiIndicatorStyles",
2941
- "module": "./ai-indicator.styles"
2858
+ "name": "foundationAiCriteriaSearchTemplate",
2859
+ "module": "./ai-criteria-search.template"
2860
+ }
2861
+ },
2862
+ {
2863
+ "kind": "js",
2864
+ "name": "*",
2865
+ "declaration": {
2866
+ "name": "*",
2867
+ "package": "./validation/criteria-ir"
2868
+ }
2869
+ },
2870
+ {
2871
+ "kind": "js",
2872
+ "name": "*",
2873
+ "declaration": {
2874
+ "name": "*",
2875
+ "package": "./validation/operator-map"
2876
+ }
2877
+ },
2878
+ {
2879
+ "kind": "js",
2880
+ "name": "*",
2881
+ "declaration": {
2882
+ "name": "*",
2883
+ "package": "./validation/schema-validator"
2942
2884
  }
2943
2885
  }
2944
2886
  ]
2945
2887
  },
2946
2888
  {
2947
2889
  "kind": "javascript-module",
2948
- "path": "src/_common/affix-mixin.ts",
2890
+ "path": "src/ai-criteria-search/validation-error-notification.ts",
2949
2891
  "declarations": [
2950
2892
  {
2951
- "kind": "mixin",
2952
- "description": "Mixin that adds prefix/suffix affix support with screen-reader handling to an input field component.\nShared between TextField and NumberField to keep the behaviour consistent and avoid duplication.",
2953
- "name": "AffixMixin",
2954
- "members": [
2893
+ "kind": "function",
2894
+ "name": "formatValidationErrors",
2895
+ "return": {
2896
+ "type": {
2897
+ "text": "string"
2898
+ }
2899
+ },
2900
+ "parameters": [
2955
2901
  {
2956
- "kind": "field",
2957
- "name": "prefix",
2902
+ "name": "errors",
2903
+ "type": {
2904
+ "text": "ValidationError[]"
2905
+ }
2906
+ }
2907
+ ],
2908
+ "description": "Formats validation errors into a user-friendly message."
2909
+ },
2910
+ {
2911
+ "kind": "function",
2912
+ "name": "showCriteriaError",
2913
+ "return": {
2914
+ "type": {
2915
+ "text": "void"
2916
+ }
2917
+ },
2918
+ "parameters": [
2919
+ {
2920
+ "name": "title",
2958
2921
  "type": {
2959
2922
  "text": "string"
2960
2923
  },
2961
- "description": "Optional non-editable label shown on the left inside the field, before the input."
2924
+ "description": "Notification title (e.g. \"Criteria validation error\")"
2962
2925
  },
2963
2926
  {
2964
- "kind": "field",
2965
- "name": "suffix",
2927
+ "name": "body",
2966
2928
  "type": {
2967
2929
  "text": "string"
2968
2930
  },
2969
- "description": "Optional non-editable suffix (e.g. unit label) shown on the right inside the field."
2931
+ "description": "Error message to display"
2970
2932
  },
2971
2933
  {
2972
- "kind": "field",
2973
- "name": "hideAffixFromScreenReader",
2934
+ "name": "tagName",
2974
2935
  "type": {
2975
- "text": "boolean"
2936
+ "text": "string"
2976
2937
  },
2977
- "default": "false",
2978
- "description": "When true, prefix/suffix are not exposed to assistive technology (`aria-hidden` on affixes,\nand their ids are omitted from the control's `aria-describedby`).\nUse only when the unit or symbol is redundant with the visible label or other text."
2938
+ "description": "Design system prefix (e.g. \"rapid\", \"foundation\")"
2979
2939
  }
2980
2940
  ],
2941
+ "description": "Shows a criteria error as a toast notification."
2942
+ }
2943
+ ],
2944
+ "exports": [
2945
+ {
2946
+ "kind": "js",
2947
+ "name": "formatValidationErrors",
2948
+ "declaration": {
2949
+ "name": "formatValidationErrors",
2950
+ "module": "src/ai-criteria-search/validation-error-notification.ts"
2951
+ }
2952
+ },
2953
+ {
2954
+ "kind": "js",
2955
+ "name": "showCriteriaError",
2956
+ "declaration": {
2957
+ "name": "showCriteriaError",
2958
+ "module": "src/ai-criteria-search/validation-error-notification.ts"
2959
+ }
2960
+ }
2961
+ ]
2962
+ },
2963
+ {
2964
+ "kind": "javascript-module",
2965
+ "path": "src/ai-indicator/ai-indicator.styles.ts",
2966
+ "declarations": [
2967
+ {
2968
+ "kind": "function",
2969
+ "name": "foundationAiIndicatorStyles",
2970
+ "return": {
2971
+ "type": {
2972
+ "text": "ElementStyles"
2973
+ }
2974
+ },
2981
2975
  "parameters": [
2982
2976
  {
2983
- "name": "Base",
2977
+ "name": "context",
2984
2978
  "type": {
2985
- "text": "TBase"
2979
+ "text": "ElementDefinitionContext"
2980
+ }
2981
+ },
2982
+ {
2983
+ "name": "definition",
2984
+ "type": {
2985
+ "text": "FoundationElementDefinition"
2986
2986
  }
2987
2987
  }
2988
2988
  ]
@@ -2991,169 +2991,225 @@
2991
2991
  "exports": [
2992
2992
  {
2993
2993
  "kind": "js",
2994
- "name": "AffixMixin",
2994
+ "name": "foundationAiIndicatorStyles",
2995
2995
  "declaration": {
2996
- "name": "AffixMixin",
2997
- "module": "src/_common/affix-mixin.ts"
2996
+ "name": "foundationAiIndicatorStyles",
2997
+ "module": "src/ai-indicator/ai-indicator.styles.ts"
2998
2998
  }
2999
2999
  }
3000
3000
  ]
3001
3001
  },
3002
3002
  {
3003
3003
  "kind": "javascript-module",
3004
- "path": "src/_common/base-file-component.ts",
3004
+ "path": "src/ai-indicator/ai-indicator.template.ts",
3005
+ "declarations": [
3006
+ {
3007
+ "kind": "variable",
3008
+ "name": "foundationAiIndicatorTemplate",
3009
+ "type": {
3010
+ "text": "ViewTemplate<AiIndicator>"
3011
+ },
3012
+ "default": "html`\n ${(x) => aiIndicatorTemplate(getPrefix(x))}\n`"
3013
+ }
3014
+ ],
3015
+ "exports": [
3016
+ {
3017
+ "kind": "js",
3018
+ "name": "foundationAiIndicatorTemplate",
3019
+ "declaration": {
3020
+ "name": "foundationAiIndicatorTemplate",
3021
+ "module": "src/ai-indicator/ai-indicator.template.ts"
3022
+ }
3023
+ }
3024
+ ]
3025
+ },
3026
+ {
3027
+ "kind": "javascript-module",
3028
+ "path": "src/ai-indicator/ai-indicator.ts",
3005
3029
  "declarations": [
3006
3030
  {
3007
3031
  "kind": "class",
3008
- "description": "Abstract base class for file handling components\nProvides common functionality for file selection, validation, and UI state management",
3009
- "name": "BaseFileComponent",
3032
+ "description": "",
3033
+ "name": "AiIndicator",
3010
3034
  "members": [
3011
3035
  {
3012
3036
  "kind": "field",
3013
- "name": "fileInput",
3037
+ "name": "providerRegistry",
3014
3038
  "type": {
3015
- "text": "HTMLInputElement"
3039
+ "text": "AIProviderRegistry"
3040
+ }
3041
+ },
3042
+ {
3043
+ "kind": "field",
3044
+ "name": "aiProvider",
3045
+ "type": {
3046
+ "text": "AIProvider | undefined"
3016
3047
  },
3017
- "privacy": "public"
3048
+ "privacy": "private",
3049
+ "description": "The indicator reflects status for the registry's default provider only —\nper-agent provider overrides live with the assistant component, not this\ntop-level chrome.",
3050
+ "readonly": true
3018
3051
  },
3019
3052
  {
3020
3053
  "kind": "field",
3021
- "name": "selectedFile",
3054
+ "name": "status",
3022
3055
  "type": {
3023
- "text": "File | null"
3056
+ "text": "AIStatus | null"
3024
3057
  },
3025
- "privacy": "protected",
3026
3058
  "default": "null"
3027
3059
  },
3028
3060
  {
3029
3061
  "kind": "field",
3030
- "name": "label",
3062
+ "name": "open",
3031
3063
  "type": {
3032
- "text": "string"
3033
- }
3064
+ "text": "boolean"
3065
+ },
3066
+ "default": "false"
3034
3067
  },
3035
3068
  {
3036
3069
  "kind": "field",
3037
- "name": "accept",
3070
+ "name": "state",
3038
3071
  "type": {
3039
- "text": "string"
3072
+ "text": "AIIndicatorState"
3040
3073
  },
3041
- "default": "''"
3074
+ "default": "'none'"
3075
+ },
3076
+ {
3077
+ "kind": "field",
3078
+ "name": "isInstalling",
3079
+ "type": {
3080
+ "text": "boolean"
3081
+ },
3082
+ "default": "false"
3083
+ },
3084
+ {
3085
+ "kind": "field",
3086
+ "name": "pollTimer",
3087
+ "type": {
3088
+ "text": "ReturnType<typeof setInterval> | null"
3089
+ },
3090
+ "privacy": "private",
3091
+ "default": "null"
3092
+ },
3093
+ {
3094
+ "kind": "field",
3095
+ "name": "clickOutside",
3096
+ "privacy": "private"
3042
3097
  },
3043
3098
  {
3044
3099
  "kind": "field",
3045
- "name": "fileSizeLimitBytes",
3046
- "default": "10_485_760",
3100
+ "name": "chromeStatusLabel",
3047
3101
  "type": {
3048
- "text": "number"
3049
- }
3102
+ "text": "string | null"
3103
+ },
3104
+ "readonly": true
3050
3105
  },
3051
3106
  {
3052
3107
  "kind": "field",
3053
- "name": "fileName",
3108
+ "name": "canInstall",
3054
3109
  "type": {
3055
- "text": "string"
3110
+ "text": "boolean"
3056
3111
  },
3057
- "default": "''"
3112
+ "readonly": true
3058
3113
  },
3059
3114
  {
3060
3115
  "kind": "field",
3061
- "name": "isProcessing",
3116
+ "name": "isDownloading",
3062
3117
  "type": {
3063
3118
  "text": "boolean"
3064
3119
  },
3065
- "default": "false"
3120
+ "readonly": true
3066
3121
  },
3067
3122
  {
3068
3123
  "kind": "method",
3069
- "name": "handleClick",
3070
- "privacy": "public",
3071
- "description": "Opens the file picker dialog\nClears any previous file selection before opening"
3124
+ "name": "openChanged",
3125
+ "return": {
3126
+ "type": {
3127
+ "text": "void"
3128
+ }
3129
+ }
3072
3130
  },
3073
3131
  {
3074
3132
  "kind": "method",
3075
- "name": "onInputChange",
3076
- "privacy": "public",
3133
+ "name": "handleClickOutside",
3134
+ "privacy": "private",
3077
3135
  "parameters": [
3078
3136
  {
3079
- "name": "e",
3137
+ "name": "event",
3080
3138
  "type": {
3081
- "text": "Event"
3082
- },
3083
- "description": "The change event from the file input"
3139
+ "text": "MouseEvent"
3140
+ }
3084
3141
  }
3085
- ],
3086
- "description": "Handles file selection from the file input\nValidates file size and sets up for processing"
3142
+ ]
3087
3143
  },
3088
3144
  {
3089
3145
  "kind": "method",
3090
- "name": "clearSelection",
3091
- "privacy": "public",
3092
- "description": "Clears all file selection and processing state\nResets the component to its initial state"
3146
+ "name": "toggleDropdown"
3093
3147
  },
3094
3148
  {
3095
3149
  "kind": "method",
3096
- "name": "getSelectedFile",
3097
- "privacy": "public",
3098
- "description": "Gets the currently selected file object",
3150
+ "name": "refreshStatus",
3099
3151
  "return": {
3100
3152
  "type": {
3101
- "text": ""
3153
+ "text": "Promise<void>"
3102
3154
  }
3103
3155
  }
3104
3156
  },
3105
3157
  {
3106
3158
  "kind": "method",
3107
- "name": "showError",
3108
- "privacy": "protected",
3159
+ "name": "deriveState",
3160
+ "privacy": "private",
3161
+ "return": {
3162
+ "type": {
3163
+ "text": "AIIndicatorState"
3164
+ }
3165
+ },
3109
3166
  "parameters": [
3110
3167
  {
3111
- "name": "title",
3112
- "type": {
3113
- "text": "string"
3114
- },
3115
- "description": "The error title"
3116
- },
3117
- {
3118
- "name": "message",
3168
+ "name": "s",
3119
3169
  "type": {
3120
- "text": "string"
3121
- },
3122
- "description": "The error message"
3170
+ "text": "AIStatus | null"
3171
+ }
3123
3172
  }
3124
- ],
3125
- "description": "Shows an error notification using the unified error handling system"
3173
+ ]
3126
3174
  },
3127
3175
  {
3128
3176
  "kind": "method",
3129
- "name": "onFileSelected",
3130
- "privacy": "protected",
3177
+ "name": "maybeStartPolling",
3178
+ "privacy": "private",
3131
3179
  "return": {
3132
3180
  "type": {
3133
3181
  "text": "void"
3134
3182
  }
3135
- },
3136
- "parameters": [
3137
- {
3138
- "name": "files",
3139
- "type": {
3140
- "text": "File[]"
3141
- },
3142
- "description": "The selected file"
3183
+ }
3184
+ },
3185
+ {
3186
+ "kind": "method",
3187
+ "name": "startPolling",
3188
+ "privacy": "private",
3189
+ "return": {
3190
+ "type": {
3191
+ "text": "void"
3143
3192
  }
3144
- ],
3145
- "description": "Abstract method called when a file is selected"
3193
+ }
3146
3194
  },
3147
3195
  {
3148
3196
  "kind": "method",
3149
- "name": "onFileCleared",
3150
- "privacy": "protected",
3197
+ "name": "stopPolling",
3198
+ "privacy": "private",
3151
3199
  "return": {
3152
3200
  "type": {
3153
3201
  "text": "void"
3154
3202
  }
3155
- },
3156
- "description": "Abstract method called when file selection is cleared"
3203
+ }
3204
+ },
3205
+ {
3206
+ "kind": "method",
3207
+ "name": "onInstall",
3208
+ "return": {
3209
+ "type": {
3210
+ "text": "Promise<void>"
3211
+ }
3212
+ }
3157
3213
  },
3158
3214
  {
3159
3215
  "kind": "field",
@@ -3267,144 +3323,88 @@
3267
3323
  }
3268
3324
  }
3269
3325
  ],
3270
- "events": [
3271
- {
3272
- "description": "Fired when file size validation fails",
3273
- "name": "error"
3274
- },
3275
- {
3276
- "description": "Fired when selection is cleared",
3277
- "name": "clear"
3278
- }
3279
- ],
3280
- "attributes": [
3281
- {
3282
- "name": "label",
3283
- "type": {
3284
- "text": "string"
3285
- },
3286
- "fieldName": "label"
3287
- },
3288
- {
3289
- "name": "accept",
3290
- "type": {
3291
- "text": "string"
3292
- },
3293
- "default": "''",
3294
- "fieldName": "accept"
3295
- },
3296
- {
3297
- "name": "file-size-limit-bytes",
3298
- "default": "DEFAULT_FILE_SIZE_LIMIT",
3299
- "resolveInitializer": {
3300
- "module": "src/_common/base-file-component.ts"
3301
- },
3302
- "fieldName": "fileSizeLimitBytes"
3303
- }
3304
- ],
3305
3326
  "superclass": {
3306
3327
  "name": "FoundationElement",
3307
3328
  "package": "@microsoft/fast-foundation"
3308
- }
3329
+ },
3330
+ "tagName": "%%prefix%%-ai-indicator",
3331
+ "customElement": true
3332
+ },
3333
+ {
3334
+ "kind": "variable",
3335
+ "name": "foundationAiIndicator"
3309
3336
  }
3310
3337
  ],
3311
3338
  "exports": [
3312
3339
  {
3313
3340
  "kind": "js",
3314
- "name": "BaseFileComponent",
3341
+ "name": "AiIndicator",
3315
3342
  "declaration": {
3316
- "name": "BaseFileComponent",
3317
- "module": "src/_common/base-file-component.ts"
3343
+ "name": "AiIndicator",
3344
+ "module": "src/ai-indicator/ai-indicator.ts"
3318
3345
  }
3319
- }
3320
- ]
3321
- },
3322
- {
3323
- "kind": "javascript-module",
3324
- "path": "src/_common/field-styles.ts",
3325
- "declarations": [
3326
- {
3327
- "kind": "variable",
3328
- "name": "sharedFieldStyles",
3329
- "default": "css`\n .label-hidden {\n margin: 0;\n }\n\n .control-field {\n display: flex;\n flex: 1 1 0%;\n min-width: 0;\n align-self: stretch;\n align-items: stretch;\n }\n\n .control-field .control {\n flex: 1 1 auto;\n min-width: 0;\n width: auto;\n }\n\n .prefix,\n .suffix {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n padding: 0 calc(var(--design-unit) * 2px);\n user-select: none;\n white-space: nowrap;\n background-color: var(--neutral-fill-rest);\n color: var(--neutral-foreground-hint);\n font-size: var(--type-ramp-base-font-size);\n font-family: inherit;\n line-height: 1;\n }\n\n .prefix {\n border-right: 1px solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px) 0 0\n calc(var(--control-corner-radius) * 1px);\n }\n\n .suffix {\n border-left: 1px solid var(--neutral-stroke-divider-rest);\n border-radius: 0 calc(var(--control-corner-radius) * 1px)\n calc(var(--control-corner-radius) * 1px) 0;\n }\n\n :host(.has-prefix:not(.has-suffix)) .control-field .control {\n border-radius: 0 calc(var(--control-corner-radius) * 1px)\n calc(var(--control-corner-radius) * 1px) 0;\n }\n\n :host(.has-suffix:not(.has-prefix)) .control-field .control {\n border-radius: calc(var(--control-corner-radius) * 1px) 0 0\n calc(var(--control-corner-radius) * 1px);\n }\n\n :host(.has-prefix.has-suffix) .control-field .control {\n border-radius: 0;\n }\n`"
3330
- }
3331
- ],
3332
- "exports": [
3346
+ },
3333
3347
  {
3334
3348
  "kind": "js",
3335
- "name": "sharedFieldStyles",
3349
+ "name": "foundationAiIndicator",
3336
3350
  "declaration": {
3337
- "name": "sharedFieldStyles",
3338
- "module": "src/_common/field-styles.ts"
3351
+ "name": "foundationAiIndicator",
3352
+ "module": "src/ai-indicator/ai-indicator.ts"
3339
3353
  }
3340
3354
  }
3341
3355
  ]
3342
3356
  },
3343
3357
  {
3344
3358
  "kind": "javascript-module",
3345
- "path": "src/_common/icons.ts",
3346
- "declarations": [
3347
- {
3348
- "kind": "function",
3349
- "name": "closeIcon",
3350
- "parameters": [
3351
- {
3352
- "name": "slot",
3353
- "default": "'start'"
3354
- },
3355
- {
3356
- "name": "fill",
3357
- "default": "'#879ba6'"
3358
- }
3359
- ]
3360
- }
3361
- ],
3359
+ "path": "src/ai-indicator/index.ts",
3360
+ "declarations": [],
3362
3361
  "exports": [
3363
3362
  {
3364
3363
  "kind": "js",
3365
- "name": "closeIcon",
3364
+ "name": "AiIndicator",
3366
3365
  "declaration": {
3367
- "name": "closeIcon",
3368
- "module": "src/_common/icons.ts"
3366
+ "name": "AiIndicator",
3367
+ "module": "./ai-indicator"
3369
3368
  }
3370
- }
3371
- ]
3372
- },
3373
- {
3374
- "kind": "javascript-module",
3375
- "path": "src/_common/index.ts",
3376
- "declarations": [],
3377
- "exports": [
3369
+ },
3378
3370
  {
3379
3371
  "kind": "js",
3380
- "name": "*",
3372
+ "name": "foundationAiIndicator",
3381
3373
  "declaration": {
3382
- "name": "*",
3383
- "package": "./affix-mixin"
3374
+ "name": "foundationAiIndicator",
3375
+ "module": "./ai-indicator"
3384
3376
  }
3385
3377
  },
3386
3378
  {
3387
3379
  "kind": "js",
3388
- "name": "*",
3380
+ "name": "type",
3389
3381
  "declaration": {
3390
- "name": "*",
3391
- "package": "./base-file-component"
3382
+ "name": "type",
3383
+ "module": "./ai-indicator"
3392
3384
  }
3393
3385
  },
3394
3386
  {
3395
3387
  "kind": "js",
3396
- "name": "*",
3388
+ "name": "AIIndicatorState",
3397
3389
  "declaration": {
3398
- "name": "*",
3399
- "package": "./field-styles"
3390
+ "name": "AIIndicatorState",
3391
+ "module": "./ai-indicator"
3400
3392
  }
3401
3393
  },
3402
3394
  {
3403
3395
  "kind": "js",
3404
- "name": "*",
3396
+ "name": "foundationAiIndicatorTemplate",
3405
3397
  "declaration": {
3406
- "name": "*",
3407
- "package": "./icons"
3398
+ "name": "foundationAiIndicatorTemplate",
3399
+ "module": "./ai-indicator.template"
3400
+ }
3401
+ },
3402
+ {
3403
+ "kind": "js",
3404
+ "name": "foundationAiIndicatorStyles",
3405
+ "declaration": {
3406
+ "name": "foundationAiIndicatorStyles",
3407
+ "module": "./ai-indicator.styles"
3408
3408
  }
3409
3409
  }
3410
3410
  ]