@optiaxiom/proteus 0.2.13 → 0.2.15

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 (20) 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 +11 -5
  11. package/dist/esm/proteus-element/ProteusElement.js +6 -2
  12. package/dist/esm/proteus-file-icon/ProteusFileIcon.js +47 -0
  13. package/dist/esm/proteus-file-upload/ProteusFileUpload.js +17 -5
  14. package/dist/esm/proteus-image-carousel/ProteusImageCarousel-css.js +1 -1
  15. package/dist/esm/proteus-question/ProteusQuestion-css.js +1 -1
  16. package/dist/esm/schema/public-schema.json.js +254 -0
  17. package/dist/esm/schema/runtime-schema.json.js +252 -0
  18. package/dist/index.d.ts +11 -1
  19. package/dist/spec.d.ts +2915 -2543
  20. package/package.json +2 -2
@@ -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']}}});
@@ -9,6 +9,7 @@ import { useEffectEvent } from '../hooks/useEffectEvent.js';
9
9
  import { downloadFile } from '../proteus-image/downloadFile.js';
10
10
  import { ProteusDocumentProvider } from './ProteusDocumentContext.js';
11
11
  import { scrollIndicator, body } from './ProteusDocumentShell-css.js';
12
+ import { resolveProteusValue } from './resolveProteusValue.js';
12
13
 
13
14
  function ProteusDocumentShell({
14
15
  collapsible: collapsibleProp,
@@ -20,6 +21,7 @@ function ProteusDocumentShell({
20
21
  onInteraction,
21
22
  onMessage,
22
23
  onOpenChange,
24
+ onPreview,
23
25
  onTrack,
24
26
  onUpload,
25
27
  open: openProp,
@@ -61,6 +63,8 @@ function ProteusDocumentShell({
61
63
  }, []);
62
64
  const collapsible = collapsibleProp && element.appName;
63
65
  const Trigger = collapsible ? DisclosureTrigger : Box;
66
+ const appearance = resolveProteusValue(element.appearance, data, "", []);
67
+ const inline = appearance === "inline";
64
68
  return /* @__PURE__ */ jsx(
65
69
  ProteusDocumentProvider,
66
70
  {
@@ -98,6 +102,8 @@ function ProteusDocumentShell({
98
102
  if (typeof event.url === "string") {
99
103
  window.open(event.url, "_blank", "noopener,noreferrer");
100
104
  }
105
+ } else if (event.action === "preview") {
106
+ await onPreview?.(event.file);
101
107
  }
102
108
  return;
103
109
  }),
@@ -114,13 +120,13 @@ function ProteusDocumentShell({
114
120
  children: /* @__PURE__ */ jsxs(
115
121
  Disclosure,
116
122
  {
117
- bg: "bg.default",
118
- border: "1",
119
- borderColor: "border.tertiary",
123
+ bg: inline ? void 0 : "bg.default",
124
+ border: inline ? void 0 : "1",
125
+ borderColor: inline ? void 0 : "border.tertiary",
120
126
  onOpenChange: setOpen,
121
127
  open,
122
- p: "20",
123
- rounded: "xl",
128
+ p: inline ? void 0 : "20",
129
+ rounded: inline ? void 0 : "xl",
124
130
  children: [
125
131
  element.appName && /* @__PURE__ */ jsx(Trigger, { py: "0", ...collapsible ? { chevronPosition: "end" } : {}, children: /* @__PURE__ */ jsxs(Group, { fontSize: "sm", gap: "8", children: [
126
132
  /* @__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,47 @@
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|tab-separated-values|tsv|parquet/, IconTableLayout],
12
+ [/zip|tar|compress|archive|x-7z|x-rar/, IconFileZipper],
13
+ [/pdf|wordprocessing|opendocument\.text/, IconFileLines],
14
+ [
15
+ /json|xml|yaml|javascript|typescript|html|css|x-sh|x-python|code|script/,
16
+ IconCode
17
+ ],
18
+ [/^text\/|word|rtf/, IconFileLines]
19
+ ];
20
+ function ProteusFileIcon({ mimeType, ...props }) {
21
+ const Icon = getIconForMimeType(mimeType);
22
+ return /* @__PURE__ */ jsx(
23
+ Box,
24
+ {
25
+ asChild: true,
26
+ bg: "bg.secondary",
27
+ color: "fg.tertiary",
28
+ p: "8",
29
+ rounded: "md",
30
+ ...props,
31
+ children: /* @__PURE__ */ jsx(Icon, {})
32
+ }
33
+ );
34
+ }
35
+ function getIconForMimeType(mimeType) {
36
+ if (mimeType) {
37
+ for (const [pattern, Icon] of mimeIconMap) {
38
+ if (pattern.test(mimeType)) {
39
+ return Icon;
40
+ }
41
+ }
42
+ }
43
+ return IconFile;
44
+ }
45
+ ProteusFileIcon.displayName = "@optiaxiom/proteus/ProteusFileIcon";
46
+
47
+ export { ProteusFileIcon };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { IconPlus } from '@optiaxiom/icons';
4
- import { Flex } from '@optiaxiom/react';
4
+ import { toaster, Flex } from '@optiaxiom/react';
5
5
  import { FileUpload, VisuallyHidden, FileUploadTrigger, FileUploadList, FileUploadDropzone } from '@optiaxiom/react/unstable';
6
6
  import { useRef, useState, useCallback } from 'react';
7
7
  import { useObserveValue } from '../hooks/useObserveValue.js';
@@ -40,10 +40,22 @@ function ProteusFileUpload({
40
40
  }, [forceValueChange, name, onDataChange, parentPath]);
41
41
  const handleFilesDrop = useCallback(
42
42
  async (incoming) => {
43
- if (multiple) {
44
- incoming = maxFiles !== void 0 ? incoming.slice(0, Math.max(0, maxFiles - itemsRef.current.length)) : incoming;
45
- } else {
46
- incoming = incoming.slice(0, 1);
43
+ let skipped = 0;
44
+ if (maxFiles !== void 0) {
45
+ const existing = multiple ? itemsRef.current.length : 0;
46
+ const remaining = Math.max(0, maxFiles - existing);
47
+ if (incoming.length > remaining) {
48
+ skipped = incoming.length - remaining;
49
+ incoming = incoming.slice(0, remaining);
50
+ }
51
+ }
52
+ if (skipped > 0) {
53
+ const accepted = incoming.length;
54
+ const skippedWord = skipped === 1 ? "was" : "were";
55
+ toaster.create(
56
+ accepted > 0 ? `Added ${accepted} file${accepted === 1 ? "" : "s"}. ${skipped} ${skippedWord} skipped because the limit is ${maxFiles}.` : `${skipped} file${skipped === 1 ? "" : "s"} ${skippedWord} skipped because the limit is ${maxFiles}.`,
57
+ { type: "warning" }
58
+ );
47
59
  }
48
60
  if (!onUpload || readOnly || incoming.length === 0) {
49
61
  return;
@@ -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'}}}});
@@ -2657,6 +2657,20 @@ var definitions = {
2657
2657
  $ref: "#/definitions/ProteusNode",
2658
2658
  description: "Actions available for this document"
2659
2659
  },
2660
+ appearance: {
2661
+ anyOf: [
2662
+ {
2663
+ "const": "default"
2664
+ },
2665
+ {
2666
+ "const": "inline"
2667
+ },
2668
+ {
2669
+ $ref: "#/definitions/ProteusExpression"
2670
+ }
2671
+ ],
2672
+ description: "Visual treatment of the document shell. 'default' renders the document as a card with background, border, and padding. 'inline' strips the surrounding chrome so the document blends into its host container."
2673
+ },
2660
2674
  appIcon: {
2661
2675
  description: "URL or data URI for the application icon (e.g., 'https://example.com/icon.png' or 'data:image/svg+xml,...'). Rendered as an <img> element.",
2662
2676
  type: "string"
@@ -2746,6 +2760,9 @@ var definitions = {
2746
2760
  {
2747
2761
  $ref: "#/definitions/ProteusField"
2748
2762
  },
2763
+ {
2764
+ $ref: "#/definitions/ProteusFileIcon"
2765
+ },
2749
2766
  {
2750
2767
  $ref: "#/definitions/ProteusFileUpload"
2751
2768
  },
@@ -2914,6 +2931,36 @@ var definitions = {
2914
2931
  "url"
2915
2932
  ],
2916
2933
  type: "object"
2934
+ },
2935
+ {
2936
+ additionalProperties: false,
2937
+ description: "Client-side component action - for previewing a file inline",
2938
+ properties: {
2939
+ action: {
2940
+ "const": "preview",
2941
+ description: "The action type",
2942
+ type: "string"
2943
+ },
2944
+ file: {
2945
+ anyOf: [
2946
+ {
2947
+ $ref: "#/definitions/ProteusExpression"
2948
+ },
2949
+ {
2950
+ type: "object"
2951
+ },
2952
+ {
2953
+ type: "string"
2954
+ }
2955
+ ],
2956
+ description: "The file object to preview"
2957
+ }
2958
+ },
2959
+ required: [
2960
+ "action",
2961
+ "file"
2962
+ ],
2963
+ type: "object"
2917
2964
  }
2918
2965
  ],
2919
2966
  description: "Handler for user interactions - a server-side interaction call, client-side message, or client-side component action"
@@ -4668,6 +4715,10 @@ var definitions = {
4668
4715
  objectFit: {
4669
4716
  $ref: "#/definitions/SprinkleProp_objectFit"
4670
4717
  },
4718
+ onClick: {
4719
+ $ref: "#/definitions/ProteusEventHandler",
4720
+ description: "Action triggered when link is clicked"
4721
+ },
4671
4722
  overflow: {
4672
4723
  $ref: "#/definitions/SprinkleProp_overflow"
4673
4724
  },
@@ -5226,6 +5277,209 @@ var definitions = {
5226
5277
  ],
5227
5278
  type: "object"
5228
5279
  },
5280
+ ProteusFileIcon: {
5281
+ additionalProperties: false,
5282
+ examples: [
5283
+ {
5284
+ $type: "FileIcon",
5285
+ mimeType: "application/pdf"
5286
+ }
5287
+ ],
5288
+ properties: {
5289
+ $type: {
5290
+ "const": "FileIcon"
5291
+ },
5292
+ alignItems: {
5293
+ $ref: "#/definitions/SprinkleProp_alignItems"
5294
+ },
5295
+ alignSelf: {
5296
+ $ref: "#/definitions/SprinkleProp_alignSelf"
5297
+ },
5298
+ animation: {
5299
+ $ref: "#/definitions/SprinkleProp_animation"
5300
+ },
5301
+ backgroundImage: {
5302
+ $ref: "#/definitions/SprinkleProp_backgroundImage"
5303
+ },
5304
+ bg: {
5305
+ $ref: "#/definitions/SprinkleProp_bg"
5306
+ },
5307
+ border: {
5308
+ $ref: "#/definitions/SprinkleProp_border"
5309
+ },
5310
+ borderB: {
5311
+ $ref: "#/definitions/SprinkleProp_borderB"
5312
+ },
5313
+ borderColor: {
5314
+ $ref: "#/definitions/SprinkleProp_borderColor"
5315
+ },
5316
+ borderL: {
5317
+ $ref: "#/definitions/SprinkleProp_borderL"
5318
+ },
5319
+ borderR: {
5320
+ $ref: "#/definitions/SprinkleProp_borderR"
5321
+ },
5322
+ borderT: {
5323
+ $ref: "#/definitions/SprinkleProp_borderT"
5324
+ },
5325
+ color: {
5326
+ $ref: "#/definitions/SprinkleProp_color"
5327
+ },
5328
+ cursor: {
5329
+ $ref: "#/definitions/SprinkleProp_cursor"
5330
+ },
5331
+ display: {
5332
+ $ref: "#/definitions/SprinkleProp_display"
5333
+ },
5334
+ flex: {
5335
+ $ref: "#/definitions/SprinkleProp_flex"
5336
+ },
5337
+ flexDirection: {
5338
+ $ref: "#/definitions/SprinkleProp_flexDirection"
5339
+ },
5340
+ flexWrap: {
5341
+ $ref: "#/definitions/SprinkleProp_flexWrap"
5342
+ },
5343
+ fontFamily: {
5344
+ $ref: "#/definitions/SprinkleProp_fontFamily"
5345
+ },
5346
+ fontSize: {
5347
+ $ref: "#/definitions/SprinkleProp_fontSize"
5348
+ },
5349
+ fontWeight: {
5350
+ $ref: "#/definitions/SprinkleProp_fontWeight"
5351
+ },
5352
+ gap: {
5353
+ $ref: "#/definitions/SprinkleProp_gap"
5354
+ },
5355
+ gridAutoRows: {
5356
+ $ref: "#/definitions/SprinkleProp_gridAutoRows"
5357
+ },
5358
+ gridColumn: {
5359
+ $ref: "#/definitions/SprinkleProp_gridColumn"
5360
+ },
5361
+ gridTemplateColumns: {
5362
+ $ref: "#/definitions/SprinkleProp_gridTemplateColumns"
5363
+ },
5364
+ h: {
5365
+ $ref: "#/definitions/SprinkleProp_h"
5366
+ },
5367
+ justifyContent: {
5368
+ $ref: "#/definitions/SprinkleProp_justifyContent"
5369
+ },
5370
+ justifyItems: {
5371
+ $ref: "#/definitions/SprinkleProp_justifyItems"
5372
+ },
5373
+ m: {
5374
+ $ref: "#/definitions/SprinkleProp_m"
5375
+ },
5376
+ maxH: {
5377
+ $ref: "#/definitions/SprinkleProp_maxH"
5378
+ },
5379
+ maxW: {
5380
+ $ref: "#/definitions/SprinkleProp_maxW"
5381
+ },
5382
+ mb: {
5383
+ $ref: "#/definitions/SprinkleProp_mb"
5384
+ },
5385
+ ml: {
5386
+ $ref: "#/definitions/SprinkleProp_ml"
5387
+ },
5388
+ mr: {
5389
+ $ref: "#/definitions/SprinkleProp_mr"
5390
+ },
5391
+ mt: {
5392
+ $ref: "#/definitions/SprinkleProp_mt"
5393
+ },
5394
+ mx: {
5395
+ $ref: "#/definitions/SprinkleProp_mx"
5396
+ },
5397
+ my: {
5398
+ $ref: "#/definitions/SprinkleProp_my"
5399
+ },
5400
+ objectFit: {
5401
+ $ref: "#/definitions/SprinkleProp_objectFit"
5402
+ },
5403
+ overflow: {
5404
+ $ref: "#/definitions/SprinkleProp_overflow"
5405
+ },
5406
+ overflowX: {
5407
+ $ref: "#/definitions/SprinkleProp_overflowX"
5408
+ },
5409
+ overflowY: {
5410
+ $ref: "#/definitions/SprinkleProp_overflowY"
5411
+ },
5412
+ p: {
5413
+ $ref: "#/definitions/SprinkleProp_p"
5414
+ },
5415
+ pb: {
5416
+ $ref: "#/definitions/SprinkleProp_pb"
5417
+ },
5418
+ pl: {
5419
+ $ref: "#/definitions/SprinkleProp_pl"
5420
+ },
5421
+ placeItems: {
5422
+ $ref: "#/definitions/SprinkleProp_placeItems"
5423
+ },
5424
+ pointerEvents: {
5425
+ $ref: "#/definitions/SprinkleProp_pointerEvents"
5426
+ },
5427
+ pr: {
5428
+ $ref: "#/definitions/SprinkleProp_pr"
5429
+ },
5430
+ pt: {
5431
+ $ref: "#/definitions/SprinkleProp_pt"
5432
+ },
5433
+ px: {
5434
+ $ref: "#/definitions/SprinkleProp_px"
5435
+ },
5436
+ py: {
5437
+ $ref: "#/definitions/SprinkleProp_py"
5438
+ },
5439
+ rounded: {
5440
+ $ref: "#/definitions/SprinkleProp_rounded"
5441
+ },
5442
+ shadow: {
5443
+ $ref: "#/definitions/SprinkleProp_shadow"
5444
+ },
5445
+ size: {
5446
+ $ref: "#/definitions/SprinkleProp_size"
5447
+ },
5448
+ textAlign: {
5449
+ $ref: "#/definitions/SprinkleProp_textAlign"
5450
+ },
5451
+ textTransform: {
5452
+ $ref: "#/definitions/SprinkleProp_textTransform"
5453
+ },
5454
+ transition: {
5455
+ $ref: "#/definitions/SprinkleProp_transition"
5456
+ },
5457
+ w: {
5458
+ $ref: "#/definitions/SprinkleProp_w"
5459
+ },
5460
+ whiteSpace: {
5461
+ $ref: "#/definitions/SprinkleProp_whiteSpace"
5462
+ },
5463
+ z: {
5464
+ $ref: "#/definitions/SprinkleProp_z"
5465
+ },
5466
+ mimeType: {
5467
+ anyOf: [
5468
+ {
5469
+ type: "string"
5470
+ },
5471
+ {
5472
+ $ref: "#/definitions/ProteusExpression"
5473
+ }
5474
+ ],
5475
+ description: "MIME type of the file to determine which icon to display"
5476
+ }
5477
+ },
5478
+ required: [
5479
+ "$type"
5480
+ ],
5481
+ type: "object"
5482
+ },
5229
5483
  ProteusFileUpload: {
5230
5484
  additionalProperties: false,
5231
5485
  examples: [