@gardenerim/react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +50 -0
  4. package/dist/adapter-target.d.ts +5 -0
  5. package/dist/adapter-target.d.ts.map +1 -0
  6. package/dist/adapter-target.js +7 -0
  7. package/dist/adapter-target.js.map +1 -0
  8. package/dist/adapters.d.ts +5 -0
  9. package/dist/adapters.d.ts.map +1 -0
  10. package/dist/adapters.js +3 -0
  11. package/dist/adapters.js.map +1 -0
  12. package/dist/ai.css +1 -0
  13. package/dist/catalog.json +9022 -0
  14. package/dist/component-css/ai-compositions.css +1 -0
  15. package/dist/component-css/ai-extended.css +1 -0
  16. package/dist/component-css/ai.css +1 -0
  17. package/dist/component-css/auth-compositions.css +1 -0
  18. package/dist/component-css/basic.css +1 -0
  19. package/dist/component-css/catalog.css +1 -0
  20. package/dist/component-css/commerce-compositions.css +1 -0
  21. package/dist/component-css/content-compositions.css +1 -0
  22. package/dist/component-css/data-compositions.css +1 -0
  23. package/dist/component-css/data.css +1 -0
  24. package/dist/component-css/desktop-compositions.css +1 -0
  25. package/dist/component-css/desktop.css +1 -0
  26. package/dist/component-css/extended.css +1 -0
  27. package/dist/component-css/feedback.css +1 -0
  28. package/dist/component-css/form-compositions.css +1 -0
  29. package/dist/component-css/forms.css +1 -0
  30. package/dist/component-css/grid.css +1 -0
  31. package/dist/component-css/help.css +1 -0
  32. package/dist/component-css/layouts.css +1 -0
  33. package/dist/component-css/mobile-compositions.css +1 -0
  34. package/dist/component-css/navigation-compositions.css +1 -0
  35. package/dist/component-css/navigation.css +1 -0
  36. package/dist/component-css/page.css +1 -0
  37. package/dist/component-css/primitives.css +1 -0
  38. package/dist/component-css/recipes.css +1 -0
  39. package/dist/component-css/regions.css +1 -0
  40. package/dist/component-css/selection-compositions.css +1 -0
  41. package/dist/component-css/solution-compositions.css +1 -0
  42. package/dist/component.d.ts +16 -0
  43. package/dist/component.d.ts.map +1 -0
  44. package/dist/component.js +105 -0
  45. package/dist/component.js.map +1 -0
  46. package/dist/components.css +1 -0
  47. package/dist/core.css +1 -0
  48. package/dist/electron.d.ts +10 -0
  49. package/dist/electron.d.ts.map +1 -0
  50. package/dist/electron.js +23 -0
  51. package/dist/electron.js.map +1 -0
  52. package/dist/gardener-react.min.js +2 -0
  53. package/dist/gardener-react.min.js.map +7 -0
  54. package/dist/gardener-react.performance.json +12 -0
  55. package/dist/generated/catalog.d.ts +6 -0
  56. package/dist/generated/catalog.d.ts.map +1 -0
  57. package/dist/generated/catalog.js +11217 -0
  58. package/dist/generated/catalog.js.map +1 -0
  59. package/dist/generated/components.d.ts +511 -0
  60. package/dist/generated/components.d.ts.map +1 -0
  61. package/dist/generated/components.js +1017 -0
  62. package/dist/generated/components.js.map +1 -0
  63. package/dist/hooks.d.ts +23 -0
  64. package/dist/hooks.d.ts.map +1 -0
  65. package/dist/hooks.js +92 -0
  66. package/dist/hooks.js.map +1 -0
  67. package/dist/index.d.ts +10 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +8 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/platform/desktop.css +1 -0
  72. package/dist/platform/electron.css +1 -0
  73. package/dist/platform/mobile.css +1 -0
  74. package/dist/platform/tauri.css +1 -0
  75. package/dist/platform/web.css +1 -0
  76. package/dist/provider.d.ts +14 -0
  77. package/dist/provider.d.ts.map +1 -0
  78. package/dist/provider.js +29 -0
  79. package/dist/provider.js.map +1 -0
  80. package/dist/style.css +1 -0
  81. package/dist/tauri.d.ts +10 -0
  82. package/dist/tauri.d.ts.map +1 -0
  83. package/dist/tauri.js +23 -0
  84. package/dist/tauri.js.map +1 -0
  85. package/dist/themes.css +1 -0
  86. package/dist/types.d.ts +65 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +2 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/utilities.css +1 -0
  91. package/docs/API.md +80 -0
  92. package/docs/components.md +512 -0
  93. package/metadata/compatibility.json +1730 -0
  94. package/metadata/compatibility.schema.json +33 -0
  95. package/metadata/performance.schema.json +18 -0
  96. package/metadata/public-api.json +1152 -0
  97. package/metadata/public-api.schema.json +26 -0
  98. package/package.json +99 -0
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/ai-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/ai-extended.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/ai.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/auth-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/basic.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/catalog.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/commerce-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/content-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/data-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/data.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/desktop-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/desktop.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/extended.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/feedback.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/form-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/forms.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/grid.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/help.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/layouts.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/mobile-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/navigation-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/navigation.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/page.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/primitives.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/recipes.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/regions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/selection-compositions.css";
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/component/solution-compositions.css";
@@ -0,0 +1,16 @@
1
+ import { type ElementType } from "react";
2
+ import type { GardenerComponentDefinition, GardenerComponentHandle, GardenerComponentProps, GardenerConfigValue, GardenerGeneratedComponent } from "./types.js";
3
+ export declare const configAttributes: (config: Readonly<Record<string, GardenerConfigValue>> | undefined) => Record<string, string>;
4
+ export declare const behaviorAttributes: (behaviors: readonly string[]) => Record<string, string>;
5
+ export declare const createGardenerComponent: (definition: GardenerComponentDefinition) => GardenerGeneratedComponent;
6
+ export interface GardenerComponentDynamicProps extends GardenerComponentProps {
7
+ definition: GardenerComponentDefinition;
8
+ }
9
+ export declare const GardenerComponent: import("react").ForwardRefExoticComponent<GardenerComponentDynamicProps & import("react").RefAttributes<GardenerComponentHandle>>;
10
+ export interface GardenerPartProps extends Omit<React.HTMLAttributes<HTMLElement>, "children"> {
11
+ name: string;
12
+ as?: ElementType;
13
+ children?: React.ReactNode;
14
+ }
15
+ export declare const GardenerPart: import("react").ForwardRefExoticComponent<GardenerPartProps & import("react").RefAttributes<HTMLElement>>;
16
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8E,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAErH,OAAO,KAAK,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAKhK,eAAO,MAAM,gBAAgB,WAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAOzH,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAAe,SAAS,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CACV,CAAC;AAI9E,eAAO,MAAM,uBAAuB,eAAgB,2BAA2B,KAAG,0BAsFjF,CAAC;AAEF,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,UAAU,EAAE,2BAA2B,CAAC;CACzC;AAED,eAAO,MAAM,iBAAiB,mIAG5B,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,2GAEvB,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { createElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from "react";
2
+ import { destroy, getInstance, init } from "@gardenerim/css/runtime";
3
+ const list = (value) => value == null ? [] : Array.isArray(value) ? [...value] : [value];
4
+ const kebab = (value) => value.replace(/^data-g-/, "").replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
5
+ export const configAttributes = (config) => {
6
+ const attributes = {};
7
+ for (const [name, value] of Object.entries(config ?? {})) {
8
+ if (value === false || value == null)
9
+ continue;
10
+ attributes[`data-g-${kebab(name)}`] = value === true ? "" : String(value);
11
+ }
12
+ return attributes;
13
+ };
14
+ export const behaviorAttributes = (behaviors) => Object.fromEntries(behaviors.map((behavior) => [`data-g-${behavior}`, ""]));
15
+ const classes = (...values) => values.flat(Infinity).filter(Boolean).join(" ");
16
+ export const createGardenerComponent = (definition) => {
17
+ const Component = forwardRef(function GardenerGeneratedComponent(props, forwardedRef) {
18
+ const { as, variant, state, config, initialize = true, value, defaultValue, valueEvent = "change", valueKey = "value", onValueChange, children, className, ...nativeProps } = props;
19
+ const elementRef = useRef(null);
20
+ const handledNativeEvents = useRef(new WeakSet());
21
+ const configKey = useMemo(() => JSON.stringify(config ?? {}), [config]);
22
+ const refresh = () => { if (initialize && elementRef.current)
23
+ init(elementRef.current); };
24
+ useImperativeHandle(forwardedRef, () => ({
25
+ get element() { return elementRef.current; },
26
+ getInstance: (behavior) => elementRef.current ? behavior ? getInstance(elementRef.current, behavior) : getInstance(elementRef.current) : null,
27
+ refresh,
28
+ }), [initialize]);
29
+ useEffect(() => {
30
+ const element = elementRef.current;
31
+ if (!element)
32
+ return;
33
+ if (initialize)
34
+ init(element);
35
+ else
36
+ destroy(element);
37
+ return () => destroy(element);
38
+ }, [initialize, configKey]);
39
+ useEffect(() => {
40
+ const element = elementRef.current;
41
+ if (!element || !valueEvent || !onValueChange)
42
+ return;
43
+ const eventName = valueEvent.startsWith("gardener:") ? valueEvent : `gardener:${valueEvent}`;
44
+ const listener = (event) => {
45
+ const detail = event.detail ?? {};
46
+ onValueChange(detail[valueKey] ?? detail.value ?? detail.values ?? detail.selected, event);
47
+ };
48
+ element.addEventListener(eventName, listener);
49
+ return () => element.removeEventListener(eventName, listener);
50
+ }, [onValueChange, valueEvent, valueKey]);
51
+ const variants = list(variant).map((item) => definition.className ? `${definition.className}-${item}` : item);
52
+ const states = list(state).map((item) => item.startsWith("is-") ? item : `is-${item}`);
53
+ const tag = definition.tag;
54
+ const As = (as ?? tag);
55
+ const isNativeControl = ["input", "textarea", "select"].includes(tag);
56
+ const originalInput = nativeProps.onInput;
57
+ const originalChange = nativeProps.onChange;
58
+ const updateFromNative = (event) => {
59
+ const nativeEvent = (event.nativeEvent ?? event);
60
+ if (handledNativeEvents.current.has(nativeEvent))
61
+ return;
62
+ handledNativeEvents.current.add(nativeEvent);
63
+ const target = event.target;
64
+ const next = target instanceof HTMLInputElement && target.type === "checkbox" ? target.checked : target?.value;
65
+ onValueChange?.(next, nativeEvent);
66
+ };
67
+ const attributes = {
68
+ ...behaviorAttributes(definition.behaviors),
69
+ ...configAttributes(config),
70
+ ...nativeProps,
71
+ ref: elementRef,
72
+ className: classes(definition.className, variants, states, className),
73
+ };
74
+ if (tag === "button" && attributes.type == null)
75
+ attributes.type = "button";
76
+ if (isNativeControl) {
77
+ const type = String(attributes.type ?? "");
78
+ if (value !== undefined) {
79
+ if (tag === "input" && type === "checkbox" && typeof value === "boolean")
80
+ attributes.checked = value;
81
+ else
82
+ attributes.value = value;
83
+ }
84
+ else if (defaultValue !== undefined) {
85
+ if (tag === "input" && type === "checkbox" && typeof defaultValue === "boolean")
86
+ attributes.defaultChecked = defaultValue;
87
+ else
88
+ attributes.defaultValue = defaultValue;
89
+ }
90
+ attributes.onInput = (event) => { originalInput?.(event); updateFromNative(event); };
91
+ attributes.onChange = (event) => { originalChange?.(event); updateFromNative(event); };
92
+ }
93
+ return createElement(As, attributes, tag === "input" ? undefined : children);
94
+ });
95
+ Component.displayName = definition.exportName;
96
+ return Component;
97
+ };
98
+ export const GardenerComponent = forwardRef(function GardenerComponent({ definition, ...props }, ref) {
99
+ const Implementation = useMemo(() => createGardenerComponent(definition), [definition]);
100
+ return createElement(Implementation, { ...props, ref });
101
+ });
102
+ export const GardenerPart = forwardRef(function GardenerPart({ name, as: As = "div", className, ...props }, ref) {
103
+ return createElement(As, { ...props, ref, className: classes(name.startsWith("g-") ? name : `g-${name}`, className) });
104
+ });
105
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/components.css";
package/dist/core.css ADDED
@@ -0,0 +1 @@
1
+ @import "@gardenerim/css/core.css";
@@ -0,0 +1,10 @@
1
+ import { type RefObject } from "react";
2
+ import { bindElectronWindowControls, type GardenerElectronBinding, type GardenerElectronBridge } from "@gardenerim/css/electron";
3
+ import { type GardenerAdapterTarget } from "./adapter-target.js";
4
+ export declare const useElectronWindowControls: (root?: RefObject<GardenerAdapterTarget>, bridge?: GardenerElectronBridge | null) => {
5
+ readonly binding: GardenerElectronBinding | null;
6
+ readonly bind: () => GardenerElectronBinding | null;
7
+ };
8
+ export { bindElectronWindowControls };
9
+ export type { GardenerElectronBinding, GardenerElectronBridge };
10
+ //# sourceMappingURL=electron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.d.ts","sourceRoot":"","sources":["../src/electron.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,KAAK,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACjI,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,eAAO,MAAM,yBAAyB,UAAW,SAAS,CAAC,qBAAqB,CAAC,WAAW,sBAAsB,GAAG,IAAI;;;CAmBxH,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ import { bindElectronWindowControls } from "@gardenerim/css/electron";
3
+ import { adapterRootValue } from "./adapter-target.js";
4
+ export const useElectronWindowControls = (root, bridge) => {
5
+ const rootRef = useRef(root);
6
+ const bridgeRef = useRef(bridge);
7
+ const [binding, setBinding] = useState(null);
8
+ const bindingRef = useRef(null);
9
+ rootRef.current = root;
10
+ bridgeRef.current = bridge;
11
+ const bind = useCallback(() => {
12
+ bindingRef.current?.destroy();
13
+ const target = adapterRootValue(rootRef.current);
14
+ const next = target ? bindElectronWindowControls(target, bridgeRef.current) : null;
15
+ bindingRef.current = next;
16
+ setBinding(next);
17
+ return next;
18
+ }, []);
19
+ useEffect(() => { bind(); return () => { bindingRef.current?.destroy(); bindingRef.current = null; }; }, [bind]);
20
+ return { binding, bind };
21
+ };
22
+ export { bindElectronWindowControls };
23
+ //# sourceMappingURL=electron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.js","sourceRoot":"","sources":["../src/electron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAA6D,MAAM,0BAA0B,CAAC;AACjI,OAAO,EAAE,gBAAgB,EAA8B,MAAM,qBAAqB,CAAC;AAEnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAuC,EAAE,MAAsC,EAAE,EAAE;IAC3H,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiC,IAAI,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,MAAM,CAAiC,IAAI,CAAC,CAAC;IAEhE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAE3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACjH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAW,CAAC;AACpC,CAAC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}