@optiaxiom/proteus 0.2.13 → 0.2.14

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 (19) hide show
  1. package/dist/esm/assets/src/proteus-chart/{ProteusChart.css.ts.vanilla-B_WDPh7C.css → ProteusChart.css.ts.vanilla-CfYErTvq.css} +2 -2
  2. package/dist/esm/assets/src/proteus-chart/{ProteusChartTooltipContent.css.ts.vanilla-UZNvVvUU.css → ProteusChartTooltipContent.css.ts.vanilla-CFiMPH60.css} +2 -2
  3. package/dist/esm/assets/src/proteus-document/{ProteusDocumentShell.css.ts.vanilla-N08uRH65.css → ProteusDocumentShell.css.ts.vanilla-C6b32Qx3.css} +2 -2
  4. package/dist/esm/assets/src/proteus-image-carousel/{ProteusImageCarousel.css.ts.vanilla-DPgPnDmb.css → ProteusImageCarousel.css.ts.vanilla-Dvvb8Qx5.css} +2 -2
  5. package/dist/esm/assets/src/proteus-question/{ProteusQuestion.css.ts.vanilla-BAhvFxEB.css → ProteusQuestion.css.ts.vanilla-BTVHkw1E.css} +2 -2
  6. package/dist/esm/proteus-card-link/ProteusCardLink.js +41 -0
  7. package/dist/esm/proteus-chart/ProteusChart-css.js +1 -1
  8. package/dist/esm/proteus-chart/ProteusChartTooltipContent-css.js +1 -1
  9. package/dist/esm/proteus-document/ProteusDocumentShell-css.js +1 -1
  10. package/dist/esm/proteus-document/ProteusDocumentShell.js +9 -5
  11. package/dist/esm/proteus-element/ProteusElement.js +6 -2
  12. package/dist/esm/proteus-file-icon/ProteusFileIcon.js +46 -0
  13. package/dist/esm/proteus-image-carousel/ProteusImageCarousel-css.js +1 -1
  14. package/dist/esm/proteus-question/ProteusQuestion-css.js +1 -1
  15. package/dist/esm/schema/public-schema.json.js +240 -0
  16. package/dist/esm/schema/runtime-schema.json.js +238 -0
  17. package/dist/index.d.ts +9 -1
  18. package/dist/spec.d.ts +2768 -2409
  19. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
- @layer optiaxiom._2eth5s;
2
- @layer optiaxiom._2eth5s {
1
+ @layer optiaxiom.yvqquz;
2
+ @layer optiaxiom.yvqquz {
3
3
  .ProteusChart__jmlqij1 {
4
4
  border-radius: 16px;
5
5
  }
@@ -1,5 +1,5 @@
1
- @layer optiaxiom._2eth5s;
2
- @layer optiaxiom._2eth5s {
1
+ @layer optiaxiom.yvqquz;
2
+ @layer optiaxiom.yvqquz {
3
3
  .ProteusChartTooltipContent__1gsvq810 {
4
4
  min-width: 128px;
5
5
  position: absolute;
@@ -1,5 +1,5 @@
1
- @layer optiaxiom._2eth5s;
2
- @layer optiaxiom._2eth5s {
1
+ @layer optiaxiom.yvqquz;
2
+ @layer optiaxiom.yvqquz {
3
3
  .ProteusDocumentShell__vpuvfj1 {
4
4
  margin: -4px;
5
5
  }
@@ -1,5 +1,5 @@
1
- @layer optiaxiom._2eth5s;
2
- @layer optiaxiom._2eth5s {
1
+ @layer optiaxiom.yvqquz;
2
+ @layer optiaxiom.yvqquz {
3
3
  .ProteusImageCarousel__1t6qej70 {
4
4
  outline: none;
5
5
  user-select: none;
@@ -1,5 +1,5 @@
1
- @layer optiaxiom._2eth5s;
2
- @layer optiaxiom._2eth5s {
1
+ @layer optiaxiom.yvqquz;
2
+ @layer optiaxiom.yvqquz {
3
3
  .ProteusQuestion__8f590p0 {
4
4
  outline: none;
5
5
  }
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { CardLink } from '@optiaxiom/react';
4
+ import { useState } from 'react';
5
+ import { useProteusDocumentContext } from '../proteus-document/ProteusDocumentContext.js';
6
+ import { useResolveProteusValues } from '../proteus-document/useResolveProteusValues.js';
7
+
8
+ function ProteusCardLink({
9
+ children,
10
+ onClick,
11
+ ...props
12
+ }) {
13
+ const { onEvent } = useProteusDocumentContext(
14
+ "@optiaxiom/proteus/ProteusCardLink"
15
+ );
16
+ const resolvedOnClick = useResolveProteusValues(
17
+ onClick ?? {}
18
+ );
19
+ const [loading, setLoading] = useState(false);
20
+ return /* @__PURE__ */ jsx(
21
+ CardLink,
22
+ {
23
+ "aria-busy": loading || void 0,
24
+ onClick: onClick ? async (event) => {
25
+ event.preventDefault();
26
+ if (loading) {
27
+ return;
28
+ }
29
+ setLoading(true);
30
+ await onEvent(resolvedOnClick);
31
+ setLoading(false);
32
+ } : void 0,
33
+ target: "_blank",
34
+ ...props,
35
+ children
36
+ }
37
+ );
38
+ }
39
+ ProteusCardLink.displayName = "@optiaxiom/proteus/ProteusCardLink";
40
+
41
+ export { ProteusCardLink };
@@ -1,4 +1,4 @@
1
- import './../assets/src/proteus-chart/ProteusChart.css.ts.vanilla-B_WDPh7C.css';
1
+ import './../assets/src/proteus-chart/ProteusChart.css.ts.vanilla-CfYErTvq.css';
2
2
  import { recipe } from '@optiaxiom/react/css-runtime';
3
3
 
4
4
  var chart = recipe({base:[{border:'1',borderColor:'border.tertiary',fontSize:'sm',p:'16'},'ProteusChart__jmlqij1','ProteusChart__jmlqij0']});
@@ -1,4 +1,4 @@
1
- import './../assets/src/proteus-chart/ProteusChartTooltipContent.css.ts.vanilla-UZNvVvUU.css';
1
+ import './../assets/src/proteus-chart/ProteusChartTooltipContent.css.ts.vanilla-CFiMPH60.css';
2
2
  import { recipe } from '@optiaxiom/react/css-runtime';
3
3
 
4
4
  var tooltip = recipe({base:[{bg:'bg.default',border:'1',borderColor:'border.secondary',display:'grid',fontSize:'sm',gap:'6',pointerEvents:'none',px:'8',py:'10',rounded:'lg',shadow:'lg',transition:'all',z:'popover'},'ProteusChartTooltipContent__1gsvq810']});
@@ -1,4 +1,4 @@
1
- import './../assets/src/proteus-document/ProteusDocumentShell.css.ts.vanilla-N08uRH65.css';
1
+ import './../assets/src/proteus-document/ProteusDocumentShell.css.ts.vanilla-C6b32Qx3.css';
2
2
  import { recipe } from '@optiaxiom/react/css-runtime';
3
3
 
4
4
  var body = recipe({base:[{flexDirection:'column',gap:'16'},'ProteusDocumentShell__vpuvfj0'],variants:{truncate:{false:{},true:[{maxH:'sm',overflow:'auto',p:'4'},'ProteusDocumentShell__vpuvfj1']}}});
@@ -20,6 +20,7 @@ function ProteusDocumentShell({
20
20
  onInteraction,
21
21
  onMessage,
22
22
  onOpenChange,
23
+ onPreview,
23
24
  onTrack,
24
25
  onUpload,
25
26
  open: openProp,
@@ -61,6 +62,7 @@ function ProteusDocumentShell({
61
62
  }, []);
62
63
  const collapsible = collapsibleProp && element.appName;
63
64
  const Trigger = collapsible ? DisclosureTrigger : Box;
65
+ const inline = !element.title && !element.appName && !element.blocking;
64
66
  return /* @__PURE__ */ jsx(
65
67
  ProteusDocumentProvider,
66
68
  {
@@ -98,6 +100,8 @@ function ProteusDocumentShell({
98
100
  if (typeof event.url === "string") {
99
101
  window.open(event.url, "_blank", "noopener,noreferrer");
100
102
  }
103
+ } else if (event.action === "preview") {
104
+ await onPreview?.(event.file);
101
105
  }
102
106
  return;
103
107
  }),
@@ -114,13 +118,13 @@ function ProteusDocumentShell({
114
118
  children: /* @__PURE__ */ jsxs(
115
119
  Disclosure,
116
120
  {
117
- bg: "bg.default",
118
- border: "1",
119
- borderColor: "border.tertiary",
121
+ bg: inline ? void 0 : "bg.default",
122
+ border: inline ? void 0 : "1",
123
+ borderColor: inline ? void 0 : "border.tertiary",
120
124
  onOpenChange: setOpen,
121
125
  open,
122
- p: "20",
123
- rounded: "xl",
126
+ p: inline ? void 0 : "20",
127
+ rounded: inline ? void 0 : "xl",
124
128
  children: [
125
129
  element.appName && /* @__PURE__ */ jsx(Trigger, { py: "0", ...collapsible ? { chevronPosition: "end" } : {}, children: /* @__PURE__ */ jsxs(Group, { fontSize: "sm", gap: "8", children: [
126
130
  /* @__PURE__ */ jsx(
@@ -1,17 +1,19 @@
1
1
  "use client";
2
2
  import { jsx, Fragment } from 'react/jsx-runtime';
3
- import { Text, Separator, SelectTrigger, SelectContent, Link, Box, Heading, Group, Field, CardLink, CardHeader, Card, Badge, Avatar } from '@optiaxiom/react';
3
+ import { Text, Separator, SelectTrigger, SelectContent, Link, Box, Heading, Group, Field, CardHeader, Card, Badge, Avatar } from '@optiaxiom/react';
4
4
  import { Time, Range } from '@optiaxiom/react/unstable';
5
5
  import { lazy, Suspense } from 'react';
6
6
  import { IconCalendar } from '../icons/IconCalendar.js';
7
7
  import { ProteusAction } from '../proteus-action/ProteusAction.js';
8
8
  import { ProteusBridge } from '../proteus-bridge/ProteusBridge.js';
9
+ import { ProteusCardLink } from '../proteus-card-link/ProteusCardLink.js';
9
10
  import { ProteusDataTable } from '../proteus-data-table/ProteusDataTable.js';
10
11
  import { useProteusDocumentContext } from '../proteus-document/ProteusDocumentContext.js';
11
12
  import { useProteusDocumentPathContext } from '../proteus-document/ProteusDocumentPathContext.js';
12
13
  import { resolveProteusProp } from '../proteus-document/resolveProteusProp.js';
13
14
  import { safeParseElement } from '../proteus-document/schemas.js';
14
15
  import { ProteusFederated } from '../proteus-federated/ProteusFederated.js';
16
+ import { ProteusFileIcon } from '../proteus-file-icon/ProteusFileIcon.js';
15
17
  import { ProteusFileUpload } from '../proteus-file-upload/ProteusFileUpload.js';
16
18
  import { ProteusImageCarousel } from '../proteus-image-carousel/ProteusImageCarousel.js';
17
19
  import { ProteusImage } from '../proteus-image/ProteusImage.js';
@@ -82,7 +84,7 @@ const ProteusElement = ({
82
84
  case "CardHeader":
83
85
  return /* @__PURE__ */ jsx(CardHeader, { ...resolve(element) });
84
86
  case "CardLink":
85
- return /* @__PURE__ */ jsx(CardLink, { target: "_blank", ...resolve(element) });
87
+ return /* @__PURE__ */ jsx(ProteusCardLink, { ...resolve(element) });
86
88
  case "Chart":
87
89
  return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
88
90
  ProteusChart,
@@ -106,6 +108,8 @@ const ProteusElement = ({
106
108
  );
107
109
  case "Field":
108
110
  return /* @__PURE__ */ jsx(Field, { ...resolve(element) });
111
+ case "FileIcon":
112
+ return /* @__PURE__ */ jsx(ProteusFileIcon, { ...resolve(element) });
109
113
  case "FileUpload":
110
114
  return /* @__PURE__ */ jsx(ProteusFileUpload, { ...resolve(element) });
111
115
  case "Group":
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { IconFileImage, IconFileVideo, IconMusic, IconPresentationScreen, IconTableLayout, IconFileZipper, IconFileLines, IconCode, IconFile } from '@optiaxiom/icons';
4
+ import { Box } from '@optiaxiom/react';
5
+
6
+ const mimeIconMap = [
7
+ [/^image\//, IconFileImage],
8
+ [/^video\//, IconFileVideo],
9
+ [/^audio\//, IconMusic],
10
+ [/presentation|powerpoint|keynote|slides/, IconPresentationScreen],
11
+ [/spreadsheet|excel|csv|tsv|parquet/, IconTableLayout],
12
+ [/zip|tar|compress|archive|x-7z|x-rar/, IconFileZipper],
13
+ [/pdf|word|wordprocessing|opendocument\.text|^text\//, IconFileLines],
14
+ [
15
+ /json|xml|yaml|javascript|typescript|html|css|x-sh|x-python|code|script/,
16
+ IconCode
17
+ ]
18
+ ];
19
+ function ProteusFileIcon({ mimeType, ...props }) {
20
+ const Icon = getIconForMimeType(mimeType);
21
+ return /* @__PURE__ */ jsx(
22
+ Box,
23
+ {
24
+ asChild: true,
25
+ bg: "bg.secondary",
26
+ color: "fg.tertiary",
27
+ p: "8",
28
+ rounded: "md",
29
+ ...props,
30
+ children: /* @__PURE__ */ jsx(Icon, {})
31
+ }
32
+ );
33
+ }
34
+ function getIconForMimeType(mimeType) {
35
+ if (mimeType) {
36
+ for (const [pattern, Icon] of mimeIconMap) {
37
+ if (pattern.test(mimeType)) {
38
+ return Icon;
39
+ }
40
+ }
41
+ }
42
+ return IconFile;
43
+ }
44
+ ProteusFileIcon.displayName = "@optiaxiom/proteus/ProteusFileIcon";
45
+
46
+ export { ProteusFileIcon };
@@ -1,4 +1,4 @@
1
- import './../assets/src/proteus-image-carousel/ProteusImageCarousel.css.ts.vanilla-DPgPnDmb.css';
1
+ import './../assets/src/proteus-image-carousel/ProteusImageCarousel.css.ts.vanilla-Dvvb8Qx5.css';
2
2
  import { recipe } from '@optiaxiom/react/css-runtime';
3
3
 
4
4
  var carousel = recipe({base:[{flexDirection:'column',gap:'12'},'ProteusImageCarousel__1t6qej70']});
@@ -1,4 +1,4 @@
1
- import './../assets/src/proteus-question/ProteusQuestion.css.ts.vanilla-BAhvFxEB.css';
1
+ import './../assets/src/proteus-question/ProteusQuestion.css.ts.vanilla-BTVHkw1E.css';
2
2
  import { recipe } from '@optiaxiom/react/css-runtime';
3
3
 
4
4
  var addon = recipe({base:[{display:'grid',fontWeight:'500',placeItems:'center',rounded:'lg',size:'md',transition:'colors'},'ProteusQuestion__8f590p3'],variants:{cursor:{pointer:{cursor:'pointer'}}}});
@@ -2746,6 +2746,9 @@ var definitions = {
2746
2746
  {
2747
2747
  $ref: "#/definitions/ProteusField"
2748
2748
  },
2749
+ {
2750
+ $ref: "#/definitions/ProteusFileIcon"
2751
+ },
2749
2752
  {
2750
2753
  $ref: "#/definitions/ProteusFileUpload"
2751
2754
  },
@@ -2914,6 +2917,36 @@ var definitions = {
2914
2917
  "url"
2915
2918
  ],
2916
2919
  type: "object"
2920
+ },
2921
+ {
2922
+ additionalProperties: false,
2923
+ description: "Client-side component action - for previewing a file inline",
2924
+ properties: {
2925
+ action: {
2926
+ "const": "preview",
2927
+ description: "The action type",
2928
+ type: "string"
2929
+ },
2930
+ file: {
2931
+ anyOf: [
2932
+ {
2933
+ $ref: "#/definitions/ProteusExpression"
2934
+ },
2935
+ {
2936
+ type: "object"
2937
+ },
2938
+ {
2939
+ type: "string"
2940
+ }
2941
+ ],
2942
+ description: "The file object to preview"
2943
+ }
2944
+ },
2945
+ required: [
2946
+ "action",
2947
+ "file"
2948
+ ],
2949
+ type: "object"
2917
2950
  }
2918
2951
  ],
2919
2952
  description: "Handler for user interactions - a server-side interaction call, client-side message, or client-side component action"
@@ -4668,6 +4701,10 @@ var definitions = {
4668
4701
  objectFit: {
4669
4702
  $ref: "#/definitions/SprinkleProp_objectFit"
4670
4703
  },
4704
+ onClick: {
4705
+ $ref: "#/definitions/ProteusEventHandler",
4706
+ description: "Action triggered when link is clicked"
4707
+ },
4671
4708
  overflow: {
4672
4709
  $ref: "#/definitions/SprinkleProp_overflow"
4673
4710
  },
@@ -5226,6 +5263,209 @@ var definitions = {
5226
5263
  ],
5227
5264
  type: "object"
5228
5265
  },
5266
+ ProteusFileIcon: {
5267
+ additionalProperties: false,
5268
+ examples: [
5269
+ {
5270
+ $type: "FileIcon",
5271
+ mimeType: "application/pdf"
5272
+ }
5273
+ ],
5274
+ properties: {
5275
+ $type: {
5276
+ "const": "FileIcon"
5277
+ },
5278
+ alignItems: {
5279
+ $ref: "#/definitions/SprinkleProp_alignItems"
5280
+ },
5281
+ alignSelf: {
5282
+ $ref: "#/definitions/SprinkleProp_alignSelf"
5283
+ },
5284
+ animation: {
5285
+ $ref: "#/definitions/SprinkleProp_animation"
5286
+ },
5287
+ backgroundImage: {
5288
+ $ref: "#/definitions/SprinkleProp_backgroundImage"
5289
+ },
5290
+ bg: {
5291
+ $ref: "#/definitions/SprinkleProp_bg"
5292
+ },
5293
+ border: {
5294
+ $ref: "#/definitions/SprinkleProp_border"
5295
+ },
5296
+ borderB: {
5297
+ $ref: "#/definitions/SprinkleProp_borderB"
5298
+ },
5299
+ borderColor: {
5300
+ $ref: "#/definitions/SprinkleProp_borderColor"
5301
+ },
5302
+ borderL: {
5303
+ $ref: "#/definitions/SprinkleProp_borderL"
5304
+ },
5305
+ borderR: {
5306
+ $ref: "#/definitions/SprinkleProp_borderR"
5307
+ },
5308
+ borderT: {
5309
+ $ref: "#/definitions/SprinkleProp_borderT"
5310
+ },
5311
+ color: {
5312
+ $ref: "#/definitions/SprinkleProp_color"
5313
+ },
5314
+ cursor: {
5315
+ $ref: "#/definitions/SprinkleProp_cursor"
5316
+ },
5317
+ display: {
5318
+ $ref: "#/definitions/SprinkleProp_display"
5319
+ },
5320
+ flex: {
5321
+ $ref: "#/definitions/SprinkleProp_flex"
5322
+ },
5323
+ flexDirection: {
5324
+ $ref: "#/definitions/SprinkleProp_flexDirection"
5325
+ },
5326
+ flexWrap: {
5327
+ $ref: "#/definitions/SprinkleProp_flexWrap"
5328
+ },
5329
+ fontFamily: {
5330
+ $ref: "#/definitions/SprinkleProp_fontFamily"
5331
+ },
5332
+ fontSize: {
5333
+ $ref: "#/definitions/SprinkleProp_fontSize"
5334
+ },
5335
+ fontWeight: {
5336
+ $ref: "#/definitions/SprinkleProp_fontWeight"
5337
+ },
5338
+ gap: {
5339
+ $ref: "#/definitions/SprinkleProp_gap"
5340
+ },
5341
+ gridAutoRows: {
5342
+ $ref: "#/definitions/SprinkleProp_gridAutoRows"
5343
+ },
5344
+ gridColumn: {
5345
+ $ref: "#/definitions/SprinkleProp_gridColumn"
5346
+ },
5347
+ gridTemplateColumns: {
5348
+ $ref: "#/definitions/SprinkleProp_gridTemplateColumns"
5349
+ },
5350
+ h: {
5351
+ $ref: "#/definitions/SprinkleProp_h"
5352
+ },
5353
+ justifyContent: {
5354
+ $ref: "#/definitions/SprinkleProp_justifyContent"
5355
+ },
5356
+ justifyItems: {
5357
+ $ref: "#/definitions/SprinkleProp_justifyItems"
5358
+ },
5359
+ m: {
5360
+ $ref: "#/definitions/SprinkleProp_m"
5361
+ },
5362
+ maxH: {
5363
+ $ref: "#/definitions/SprinkleProp_maxH"
5364
+ },
5365
+ maxW: {
5366
+ $ref: "#/definitions/SprinkleProp_maxW"
5367
+ },
5368
+ mb: {
5369
+ $ref: "#/definitions/SprinkleProp_mb"
5370
+ },
5371
+ ml: {
5372
+ $ref: "#/definitions/SprinkleProp_ml"
5373
+ },
5374
+ mr: {
5375
+ $ref: "#/definitions/SprinkleProp_mr"
5376
+ },
5377
+ mt: {
5378
+ $ref: "#/definitions/SprinkleProp_mt"
5379
+ },
5380
+ mx: {
5381
+ $ref: "#/definitions/SprinkleProp_mx"
5382
+ },
5383
+ my: {
5384
+ $ref: "#/definitions/SprinkleProp_my"
5385
+ },
5386
+ objectFit: {
5387
+ $ref: "#/definitions/SprinkleProp_objectFit"
5388
+ },
5389
+ overflow: {
5390
+ $ref: "#/definitions/SprinkleProp_overflow"
5391
+ },
5392
+ overflowX: {
5393
+ $ref: "#/definitions/SprinkleProp_overflowX"
5394
+ },
5395
+ overflowY: {
5396
+ $ref: "#/definitions/SprinkleProp_overflowY"
5397
+ },
5398
+ p: {
5399
+ $ref: "#/definitions/SprinkleProp_p"
5400
+ },
5401
+ pb: {
5402
+ $ref: "#/definitions/SprinkleProp_pb"
5403
+ },
5404
+ pl: {
5405
+ $ref: "#/definitions/SprinkleProp_pl"
5406
+ },
5407
+ placeItems: {
5408
+ $ref: "#/definitions/SprinkleProp_placeItems"
5409
+ },
5410
+ pointerEvents: {
5411
+ $ref: "#/definitions/SprinkleProp_pointerEvents"
5412
+ },
5413
+ pr: {
5414
+ $ref: "#/definitions/SprinkleProp_pr"
5415
+ },
5416
+ pt: {
5417
+ $ref: "#/definitions/SprinkleProp_pt"
5418
+ },
5419
+ px: {
5420
+ $ref: "#/definitions/SprinkleProp_px"
5421
+ },
5422
+ py: {
5423
+ $ref: "#/definitions/SprinkleProp_py"
5424
+ },
5425
+ rounded: {
5426
+ $ref: "#/definitions/SprinkleProp_rounded"
5427
+ },
5428
+ shadow: {
5429
+ $ref: "#/definitions/SprinkleProp_shadow"
5430
+ },
5431
+ size: {
5432
+ $ref: "#/definitions/SprinkleProp_size"
5433
+ },
5434
+ textAlign: {
5435
+ $ref: "#/definitions/SprinkleProp_textAlign"
5436
+ },
5437
+ textTransform: {
5438
+ $ref: "#/definitions/SprinkleProp_textTransform"
5439
+ },
5440
+ transition: {
5441
+ $ref: "#/definitions/SprinkleProp_transition"
5442
+ },
5443
+ w: {
5444
+ $ref: "#/definitions/SprinkleProp_w"
5445
+ },
5446
+ whiteSpace: {
5447
+ $ref: "#/definitions/SprinkleProp_whiteSpace"
5448
+ },
5449
+ z: {
5450
+ $ref: "#/definitions/SprinkleProp_z"
5451
+ },
5452
+ mimeType: {
5453
+ anyOf: [
5454
+ {
5455
+ type: "string"
5456
+ },
5457
+ {
5458
+ $ref: "#/definitions/ProteusExpression"
5459
+ }
5460
+ ],
5461
+ description: "MIME type of the file to determine which icon to display"
5462
+ }
5463
+ },
5464
+ required: [
5465
+ "$type"
5466
+ ],
5467
+ type: "object"
5468
+ },
5229
5469
  ProteusFileUpload: {
5230
5470
  additionalProperties: false,
5231
5471
  examples: [