xmlui 0.7.29 → 0.7.30

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 (34) hide show
  1. package/dist/{apiInterceptorWorker-BXh2BMZL.mjs → apiInterceptorWorker-DqMta6YM.mjs} +1 -1
  2. package/dist/{grammar.tmLanguage-JAlHWPqw.mjs → grammar.tmLanguage-CiYpNgdH.mjs} +3 -17
  3. package/dist/{index-B3eDGXIR.mjs → index-_MjjtXKH.mjs} +8888 -9449
  4. package/dist/index.css +1 -1
  5. package/dist/scripts/bin/start.js +1 -0
  6. package/dist/scripts/src/components/ComponentProvider.js +1 -16
  7. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +1 -1
  8. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +444 -315
  9. package/dist/scripts/src/components/IconProvider.js +2 -4
  10. package/dist/scripts/src/components/List/List.js +6 -0
  11. package/dist/scripts/src/components/List/ListNative.js +7 -6
  12. package/dist/scripts/src/components/Markdown/MarkdownNative.js +84 -85
  13. package/dist/scripts/src/components/{ThemeChanger → ToneChangerButton}/ToneChangerButton.js +0 -1
  14. package/dist/scripts/src/components-core/ComponentDecorator.js +45 -67
  15. package/dist/scripts/src/components-core/InspectorContext.js +15 -5
  16. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +1 -1
  17. package/dist/scripts/src/components-core/utils/extractParam.js +66 -0
  18. package/dist/scripts/src/syntax/grammar.tmLanguage.json +4 -17
  19. package/dist/style.css +1 -1
  20. package/dist/xmlui-metadata.mjs +4120 -4273
  21. package/dist/xmlui-metadata.umd.js +11 -88
  22. package/dist/xmlui-standalone.umd.js +155 -232
  23. package/dist/xmlui.d.ts +1 -1
  24. package/dist/xmlui.mjs +1 -1
  25. package/package.json +1 -1
  26. package/dist/scripts/src/components/Icon/MoonIcon.js +0 -10
  27. package/dist/scripts/src/components/Icon/SunIcon.js +0 -10
  28. package/dist/scripts/src/components/IconInfoCard/IconInfoCard.js +0 -40
  29. package/dist/scripts/src/components/PageHeader/PageHeader.js +0 -36
  30. package/dist/scripts/src/components/TableHeader/TableHeader.js +0 -34
  31. package/dist/scripts/src/components/ThemeChanger/ThemeChanger.js +0 -115
  32. package/dist/scripts/src/components/Toolbar/Toolbar.js +0 -32
  33. package/dist/scripts/src/components/ToolbarButton/ToolbarButton.js +0 -38
  34. package/dist/scripts/src/components/TrendLabel/TrendLabel.js +0 -37
package/dist/xmlui.d.ts CHANGED
@@ -443,7 +443,7 @@ export declare const Button: default_2.ForwardRefExoticComponent<{
443
443
  gap?: string | number;
444
444
  accessibilityProps?: any;
445
445
  autoFocus?: boolean;
446
- } & Pick<default_2.HTMLAttributes<HTMLButtonElement>, "className" | "onClick" | "tabIndex" | "aria-controls" | "aria-disabled" | "aria-expanded" | "aria-label" | "onFocus" | "onBlur" | "onMouseEnter" | "onMouseLeave"> & default_2.RefAttributes<HTMLButtonElement>>;
446
+ } & Pick<default_2.HTMLAttributes<HTMLButtonElement>, "className" | "onClick" | "aria-disabled" | "aria-label" | "aria-controls" | "aria-expanded" | "onFocus" | "onBlur" | "tabIndex" | "onMouseEnter" | "onMouseLeave"> & default_2.RefAttributes<HTMLButtonElement>>;
447
447
 
448
448
  declare type ButtonThemeColor = (typeof buttonThemeValues)[number];
449
449
 
package/dist/xmlui.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as e, B as t, E as r, I as o, h as p, f as n, S as c, c as d, b as u, e as S, i as l, p as A, s as C, t as m, j as B, u as f } from "./index-B3eDGXIR.mjs";
1
+ import { A as e, B as t, E as r, I as o, h as p, f as n, S as c, c as d, b as u, e as S, i as l, p as A, s as C, t as m, j as B, u as f } from "./index-_MjjtXKH.mjs";
2
2
  export {
3
3
  e as AppRoot,
4
4
  t as Button,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xmlui",
3
- "version": "0.7.29",
3
+ "version": "0.7.30",
4
4
  "sideEffects": false,
5
5
  "scripts": {
6
6
  "start-test-bed": "cd src/testing/infrastructure && xmlui start",
@@ -1,10 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MoonIcon = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const moon_svg_react_1 = __importDefault(require("./svg/moon.svg?react"));
9
- const MoonIcon = (props) => ((0, jsx_runtime_1.jsx)(moon_svg_react_1.default, Object.assign({}, props)));
10
- exports.MoonIcon = MoonIcon;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SunIcon = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const sun_svg_react_1 = __importDefault(require("./svg/sun.svg?react"));
9
- const SunIcon = (props) => ((0, jsx_runtime_1.jsx)(sun_svg_react_1.default, Object.assign({}, props)));
10
- exports.SunIcon = SunIcon;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.iconInfoCardRenderer = exports.IconInfoCardMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- // import componentSource from "./IconInfoCard.xmlui?raw";
8
- const COMP = "IconInfoCard";
9
- exports.IconInfoCardMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: "This component displays an icon and some content in a card.",
12
- props: {
13
- height: (0, ComponentDefs_1.d)("The height of the card."),
14
- iconBackgroundColor: (0, ComponentDefs_1.d)("The background color of the icon."),
15
- iconName: (0, ComponentDefs_1.d)("The name of the icon to display."),
16
- },
17
- });
18
- const componentSource = `
19
- <Component name="IconInfoCard">
20
- <Card height="{$props.height}" width="{$props.width}">
21
- <HStack verticalAlignment="center">
22
- <CHStack
23
- backgroundColor="{$props.iconBackgroundColor}"
24
- color="white"
25
- width="$space-10"
26
- height="$space-10"
27
- radius="$radius">
28
- <Icon name="{$props.iconName}" size="$space-6" />
29
- </CHStack>
30
- <VStack gap="0">
31
- <Slot />
32
- </VStack>
33
- </HStack>
34
- </Card>
35
- </Component>
36
- `;
37
- exports.iconInfoCardRenderer = {
38
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
39
- metadata: exports.IconInfoCardMd,
40
- };
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pageHeaderRenderer = exports.PageHeaderMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- // import componentSource from "./PageHeader.xmlui?raw";
8
- const COMP = "PageHeader";
9
- exports.PageHeaderMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: `The \`${COMP}\` component is a component that displays a title and an ` +
12
- `optional pre-title. The pre-title is displayed above the title.`,
13
- props: {
14
- preTitle: (0, ComponentDefs_1.d)("The pre-title to display above the title."),
15
- title: (0, ComponentDefs_1.d)("The title to display."),
16
- },
17
- defaultThemeVars: {
18
- "gap-PageHeader": "$space-2",
19
- },
20
- });
21
- const componentSource = `
22
- <Component name="PageHeader">
23
- <HStack gap="$gap-PageHeader" verticalAlignment="center">
24
- <VStack gap="$space-tight">
25
- <Text when="{$props.preTitle !== undefined}" variant="subheading" value="{$props.preTitle}" />
26
- <H2 value="{$props.title}" />
27
- </VStack>
28
- <SpaceFiller />
29
- <Slot />
30
- </HStack>
31
- </Component>
32
- `;
33
- exports.pageHeaderRenderer = {
34
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
35
- metadata: exports.PageHeaderMd,
36
- };
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tableHeaderRenderer = exports.TableHeaderMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- //import componentSource from "./TableHeader.xmlui?raw";
8
- const COMP = "TableHeader";
9
- exports.TableHeaderMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: `The \`${COMP}\` component can be used within a \`Table\` to define a particular table ` +
12
- `column's visual properties and data bindings.`,
13
- props: {
14
- title: (0, ComponentDefs_1.d)("The title of the table header."),
15
- },
16
- defaultThemeVars: {
17
- [`padding-vertical-${COMP}`]: "$space-4",
18
- [`padding-horizontal-${COMP}`]: "$space-5",
19
- },
20
- });
21
- const componentSource = `
22
- <Component name="TableHeader">
23
- <VStack
24
- verticalAlignment="center"
25
- verticalPadding="$padding-vertical-TableHeader"
26
- horizontalPadding="$padding-horizontal-TableHeader">
27
- <Text variant="strong" value="{$props.title}"/>
28
- </VStack>
29
- </Component>
30
- `;
31
- exports.tableHeaderRenderer = {
32
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
33
- metadata: exports.TableHeaderMd,
34
- };
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.themeChangerButtonComponentRenderer = exports.ThemeChangerButtonMd = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
7
- const ThemeContext_1 = require("../../components-core/theming/ThemeContext");
8
- const renderers_1 = require("../../components-core/renderers");
9
- const DropdownMenuNative_1 = require("../DropdownMenu/DropdownMenuNative");
10
- const ButtonNative_1 = require("../Button/ButtonNative");
11
- const ContentSeparatorNative_1 = require("../ContentSeparator/ContentSeparatorNative");
12
- const ModalDialogNative_1 = require("../ModalDialog/ModalDialogNative");
13
- const RadioGroupNative_1 = require("../RadioGroup/RadioGroupNative");
14
- const StackNative_1 = require("../Stack/StackNative");
15
- const TextNative_1 = require("../Text/TextNative");
16
- const IconNative_1 = require("../Icon/IconNative");
17
- const COMP = "ThemeChangerButton";
18
- exports.ThemeChangerButtonMd = (0, ComponentDefs_1.createMetadata)({
19
- status: "experimental",
20
- docFolder: "ThemeChanger",
21
- description: `The \`${COMP}\` component is a component that allows the user to change the theme of the app.`,
22
- props: {
23
- showSettings: (0, ComponentDefs_1.d)("This property indicates if the Settings function of this component is displayed.", null, "boolean", true),
24
- },
25
- });
26
- /**
27
- * Define the renderer for the Button component
28
- */
29
- exports.themeChangerButtonComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP, exports.ThemeChangerButtonMd, ({ renderChild, node, extractValue }) => {
30
- const [isThemeSettingsOpen, setThemeSettingsOpen] = (0, react_1.useState)(false);
31
- const { activeThemeId, activeThemeTone, setActiveThemeId, setActiveThemeTone, availableThemeIds, } = (0, ThemeContext_1.useThemes)();
32
- const renderPreview = (id) => {
33
- return renderChild({
34
- type: "Theme",
35
- props: {
36
- themeId: id,
37
- width: "100%",
38
- isRoot: "true",
39
- tone: "{activeThemeTone}",
40
- },
41
- children: [
42
- {
43
- type: "Card",
44
- props: {
45
- width: "100%",
46
- },
47
- children: [
48
- {
49
- type: "App",
50
- props: {
51
- width: "100%",
52
- height: "10rem",
53
- layout: "horizontal",
54
- },
55
- children: [
56
- {
57
- type: "NavPanel",
58
- props: {},
59
- children: [
60
- {
61
- type: "NavLink",
62
- props: {
63
- active: "true",
64
- url: "/",
65
- label: "Home",
66
- },
67
- },
68
- {
69
- type: "NavLink",
70
- props: {
71
- url: "/about",
72
- label: "About",
73
- },
74
- },
75
- {
76
- type: "NavLink",
77
- props: {
78
- url: "/contact",
79
- label: "Contact",
80
- },
81
- },
82
- ],
83
- },
84
- {
85
- type: "Pages",
86
- props: {
87
- defaultRoute: "/",
88
- },
89
- children: [
90
- {
91
- type: "CVStack",
92
- props: {
93
- height: "100%",
94
- },
95
- children: [
96
- {
97
- type: "Text",
98
- props: {
99
- value: "Hello",
100
- },
101
- },
102
- ],
103
- },
104
- ],
105
- },
106
- ],
107
- },
108
- ],
109
- },
110
- ],
111
- });
112
- };
113
- const showSettings = extractValue.asOptionalBoolean(node.props.showSettings, true);
114
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(DropdownMenuNative_1.DropdownMenu, { triggerTemplate: (0, jsx_runtime_1.jsx)(ButtonNative_1.Button, { variant: "ghost", icon: (0, jsx_runtime_1.jsx)(IconNative_1.Icon, { name: "palette" }) }), children: [(0, jsx_runtime_1.jsx)(DropdownMenuNative_1.MenuItem, { iconPosition: "end", icon: activeThemeTone === "light" ? (0, jsx_runtime_1.jsx)(IconNative_1.Icon, { name: "checkmark" }) : "", label: "Light", onClick: () => setActiveThemeTone("light") }), (0, jsx_runtime_1.jsx)(DropdownMenuNative_1.MenuItem, { iconPosition: "end", icon: activeThemeTone === "dark" ? (0, jsx_runtime_1.jsx)(IconNative_1.Icon, { name: "checkmark" }) : "", label: "Dark", onClick: () => setActiveThemeTone("dark") }), showSettings && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ContentSeparatorNative_1.ContentSeparator, {}), (0, jsx_runtime_1.jsx)(DropdownMenuNative_1.MenuItem, { label: "Theme Settings", onClick: () => setThemeSettingsOpen(true) })] }))] }), isThemeSettingsOpen && ((0, jsx_runtime_1.jsx)(ModalDialogNative_1.ModalDialog, { isInitiallyOpen: true, onClose: () => setThemeSettingsOpen(false), children: (0, jsx_runtime_1.jsxs)(StackNative_1.Stack, { orientation: "vertical", children: [(0, jsx_runtime_1.jsx)(TextNative_1.Text, { variant: "strong", layout: { marginBottom: "1rem" }, children: "Set theme" }), (0, jsx_runtime_1.jsx)(StackNative_1.Stack, { orientation: "vertical", style: { width: "100%", overflow: "scroll" }, children: (0, jsx_runtime_1.jsx)(StackNative_1.Stack, { orientation: "horizontal", verticalAlignment: "center", style: { gap: ".5rem", flexWrap: "wrap" }, children: availableThemeIds.map((themeUid) => ((0, jsx_runtime_1.jsx)(ButtonNative_1.Button, { style: { padding: 0, width: "calc(50% - 0.5rem)" }, variant: activeThemeId === themeUid ? "solid" : "ghost", themeColor: "primary", onClick: () => setActiveThemeId(themeUid), children: (0, jsx_runtime_1.jsxs)(StackNative_1.Stack, { style: { width: "100%" }, children: [renderPreview(themeUid), (0, jsx_runtime_1.jsx)(TextNative_1.Text, { children: themeUid })] }) }, themeUid))) }) }), (0, jsx_runtime_1.jsxs)(StackNative_1.Stack, { orientation: "vertical", style: { minHeight: "fit-content" }, children: [(0, jsx_runtime_1.jsx)(TextNative_1.Text, { variant: "strong", layout: { marginBottom: "1rem" }, children: "Set tone" }), (0, jsx_runtime_1.jsx)(RadioGroupNative_1.RadioGroup, { id: "toneSelector", value: activeThemeTone, onDidChange: (value) => setActiveThemeTone(value), children: (0, jsx_runtime_1.jsxs)(StackNative_1.Stack, { style: { gap: "1rem" }, orientation: "horizontal", children: [(0, jsx_runtime_1.jsx)(RadioGroupNative_1.RadioGroupOption, { label: "Light", value: "light" }), (0, jsx_runtime_1.jsx)(RadioGroupNative_1.RadioGroupOption, { label: "Dark", value: "dark" })] }) })] })] }) }))] }));
115
- });
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toolbarRenderer = exports.ToolbarMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- // import componentSource from "./Toolbar.xmlui?raw";
8
- const COMP = "Toolbar";
9
- exports.ToolbarMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: "This component is a container for a toolbar.",
12
- props: {
13
- alignment: (0, ComponentDefs_1.d)("The alignment of the toolbar."),
14
- },
15
- defaultThemeVars: {
16
- "gap-Toolbar": "$space-2",
17
- },
18
- });
19
- const componentSource = `
20
- <Component name="Toolbar">
21
- <HStack
22
- gap="$gap-Toolbar"
23
- verticalAlignment="center"
24
- horizontalAlignment="{$props.alignment ?? 'end' }">
25
- <Slot />
26
- </HStack>
27
- </Component>
28
- `;
29
- exports.toolbarRenderer = {
30
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
31
- metadata: exports.ToolbarMd,
32
- };
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toolbarButtonRenderer = exports.ToolbarButtonMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- // import componentSource from "./ToolbarButton.xmlui?raw";
8
- const COMP = "ToolbarButton";
9
- exports.ToolbarButtonMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: "This component is a button that is used in a toolbar.",
12
- props: {
13
- label: (0, ComponentDefs_1.d)("The label to display on the button."),
14
- icon: (0, ComponentDefs_1.d)("The icon to display on the button."),
15
- },
16
- defaultThemeVars: {
17
- "padding-horizontal-ToolbarButton": "$space-1",
18
- "padding-vertical-ToolbarButton": "$space-1",
19
- },
20
- });
21
- const componentSource = `
22
- <Component name="ToolbarButton">
23
- <Button
24
- variant="ghost"
25
- themeColor="secondary"
26
- horizontalPadding="$padding-horizontal-ToolbarButton"
27
- verticalPadding="$padding-vertical-ToolbarButton"
28
- icon="{$props.icon}"
29
- label="{$props.label}"
30
- onClick="e => emitEvent('click', e)">
31
- <Slot />
32
- </Button>
33
- </Component>
34
- `;
35
- exports.toolbarButtonRenderer = {
36
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
37
- metadata: exports.ToolbarButtonMd,
38
- };
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.trendLabelRenderer = exports.TrendLabelMd = void 0;
4
- const ComponentDefs_1 = require("../../abstractions/ComponentDefs");
5
- const compound_utils_1 = require("../../components-core/utils/compound-utils");
6
- // --- We cannot use this with nextra
7
- //import componentSource from "./TrendLabel.xmlui?raw";
8
- const COMP = "TrendLabel";
9
- exports.TrendLabelMd = (0, ComponentDefs_1.createMetadata)({
10
- status: "experimental",
11
- description: "This component displays a trend label.",
12
- props: {
13
- change: (0, ComponentDefs_1.d)("The change percentage."),
14
- },
15
- });
16
- const componentSource = `
17
- <Component name="TrendLabel">
18
- <Fragment>
19
- <Text when="{$props.change > 0}" marginLeft="$space-tight" color="$color-valid">
20
- {Math.floor($props.change * 100)}%
21
- <Icon name="trending-up" />
22
- </Text>
23
- <Text when="{$props.change === 0}" marginLeft="$space-tight" color="$color-warning">
24
- {Math.floor($props.change * 100)}%
25
- <Icon name="trending-level" />
26
- </Text>
27
- <Text when="{$props.change < 0}" marginLeft="$space-tight" color="$color-error">
28
- {Math.floor($props.change * 100)}%
29
- <Icon name="trending-down" />
30
- </Text>
31
- </Fragment>
32
- </Component>
33
- `;
34
- exports.trendLabelRenderer = {
35
- compoundComponentDef: (0, compound_utils_1.compoundComponentDefFromSource)(COMP, componentSource),
36
- metadata: exports.TrendLabelMd,
37
- };