@walkeros/explorer 1.0.1 → 2.0.1
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.
- package/LICENSE +2 -2
- package/dist/{chunk-VWWAIDNX.mjs → chunk-YKT4D7MG.mjs} +201 -53
- package/dist/chunk-YKT4D7MG.mjs.map +1 -0
- package/dist/components/atoms/alert.d.ts +29 -0
- package/dist/components/atoms/alert.d.ts.map +1 -0
- package/dist/components/atoms/alert.js +19 -0
- package/dist/components/atoms/alert.js.map +1 -0
- package/dist/components/atoms/alert.stories.d.ts +7 -0
- package/dist/components/atoms/alert.stories.d.ts.map +1 -0
- package/dist/components/atoms/alert.stories.js +14 -0
- package/dist/components/atoms/alert.stories.js.map +1 -0
- package/dist/components/atoms/button.stories.d.ts +14 -0
- package/dist/components/atoms/button.stories.d.ts.map +1 -0
- package/dist/components/atoms/button.stories.js +25 -0
- package/dist/components/atoms/button.stories.js.map +1 -0
- package/dist/components/atoms/code.d.ts.map +1 -1
- package/dist/components/atoms/code.js +14 -2
- package/dist/components/atoms/code.js.map +1 -1
- package/dist/components/atoms/footer.stories.d.ts +14 -0
- package/dist/components/atoms/footer.stories.d.ts.map +1 -0
- package/dist/components/atoms/footer.stories.js +29 -0
- package/dist/components/atoms/footer.stories.js.map +1 -0
- package/dist/components/atoms/form-field.d.ts +28 -0
- package/dist/components/atoms/form-field.d.ts.map +1 -0
- package/dist/components/atoms/form-field.js +16 -0
- package/dist/components/atoms/form-field.js.map +1 -0
- package/dist/components/atoms/form-field.stories.d.ts +7 -0
- package/dist/components/atoms/form-field.stories.d.ts.map +1 -0
- package/dist/components/atoms/form-field.stories.js +16 -0
- package/dist/components/atoms/form-field.stories.js.map +1 -0
- package/dist/components/atoms/form-input.d.ts +43 -0
- package/dist/components/atoms/form-input.d.ts.map +1 -0
- package/dist/components/atoms/form-input.js +26 -0
- package/dist/components/atoms/form-input.js.map +1 -0
- package/dist/components/atoms/form-input.stories.d.ts +7 -0
- package/dist/components/atoms/form-input.stories.d.ts.map +1 -0
- package/dist/components/atoms/form-input.stories.js +17 -0
- package/dist/components/atoms/form-input.stories.js.map +1 -0
- package/dist/components/atoms/form-textarea.d.ts +41 -0
- package/dist/components/atoms/form-textarea.d.ts.map +1 -0
- package/dist/components/atoms/form-textarea.js +26 -0
- package/dist/components/atoms/form-textarea.js.map +1 -0
- package/dist/components/atoms/form-textarea.stories.d.ts +7 -0
- package/dist/components/atoms/form-textarea.stories.d.ts.map +1 -0
- package/dist/components/atoms/form-textarea.stories.js +17 -0
- package/dist/components/atoms/form-textarea.stories.js.map +1 -0
- package/dist/components/atoms/grid.stories.d.ts +18 -0
- package/dist/components/atoms/grid.stories.d.ts.map +1 -0
- package/dist/components/atoms/grid.stories.js +60 -0
- package/dist/components/atoms/grid.stories.js.map +1 -0
- package/dist/components/atoms/header.stories.d.ts +15 -0
- package/dist/components/atoms/header.stories.d.ts.map +1 -0
- package/dist/components/atoms/header.stories.js +37 -0
- package/dist/components/atoms/header.stories.js.map +1 -0
- package/dist/components/atoms/icons/icon.stories.d.ts +18 -0
- package/dist/components/atoms/icons/icon.stories.d.ts.map +1 -0
- package/dist/components/atoms/icons/icon.stories.js +37 -0
- package/dist/components/atoms/icons/icon.stories.js.map +1 -0
- package/dist/components/atoms/panel-hints.stories.d.ts +14 -0
- package/dist/components/atoms/panel-hints.stories.d.ts.map +1 -0
- package/dist/components/atoms/panel-hints.stories.js +35 -0
- package/dist/components/atoms/panel-hints.stories.js.map +1 -0
- package/dist/components/atoms/spinner.d.ts +17 -0
- package/dist/components/atoms/spinner.d.ts.map +1 -0
- package/dist/components/atoms/spinner.js +14 -0
- package/dist/components/atoms/spinner.js.map +1 -0
- package/dist/components/atoms/spinner.stories.d.ts +7 -0
- package/dist/components/atoms/spinner.stories.d.ts.map +1 -0
- package/dist/components/atoms/spinner.stories.js +9 -0
- package/dist/components/atoms/spinner.stories.js.map +1 -0
- package/dist/components/atoms/submit-button.d.ts +34 -0
- package/dist/components/atoms/submit-button.d.ts.map +1 -0
- package/dist/components/atoms/submit-button.js +18 -0
- package/dist/components/atoms/submit-button.js.map +1 -0
- package/dist/components/atoms/submit-button.stories.d.ts +7 -0
- package/dist/components/atoms/submit-button.stories.d.ts.map +1 -0
- package/dist/components/atoms/submit-button.stories.js +13 -0
- package/dist/components/atoms/submit-button.stories.js.map +1 -0
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js +1 -1
- package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js.map +1 -1
- package/dist/components/molecules/code-box.stories.d.ts +8 -0
- package/dist/components/molecules/code-box.stories.d.ts.map +1 -1
- package/dist/components/molecules/code-box.stories.js +36 -0
- package/dist/components/molecules/code-box.stories.js.map +1 -1
- package/dist/components/molecules/config-form-card.d.ts +50 -0
- package/dist/components/molecules/config-form-card.d.ts.map +1 -0
- package/dist/components/molecules/config-form-card.js +30 -0
- package/dist/components/molecules/config-form-card.js.map +1 -0
- package/dist/components/molecules/config-form-card.stories.d.ts +7 -0
- package/dist/components/molecules/config-form-card.stories.d.ts.map +1 -0
- package/dist/components/molecules/config-form-card.stories.js +21 -0
- package/dist/components/molecules/config-form-card.stories.js.map +1 -0
- package/dist/components/molecules/dropdown.d.ts +68 -0
- package/dist/components/molecules/dropdown.d.ts.map +1 -0
- package/dist/components/molecules/dropdown.js +47 -0
- package/dist/components/molecules/dropdown.js.map +1 -0
- package/dist/components/molecules/dropdown.stories.d.ts +7 -0
- package/dist/components/molecules/dropdown.stories.d.ts.map +1 -0
- package/dist/components/molecules/dropdown.stories.js +18 -0
- package/dist/components/molecules/dropdown.stories.js.map +1 -0
- package/dist/components/molecules/flow-deploy-panel.d.ts +31 -0
- package/dist/components/molecules/flow-deploy-panel.d.ts.map +1 -0
- package/dist/components/molecules/flow-deploy-panel.js +72 -0
- package/dist/components/molecules/flow-deploy-panel.js.map +1 -0
- package/dist/components/molecules/flow-deploy-panel.stories.d.ts +40 -0
- package/dist/components/molecules/flow-deploy-panel.stories.d.ts.map +1 -0
- package/dist/components/molecules/flow-deploy-panel.stories.js +145 -0
- package/dist/components/molecules/flow-deploy-panel.stories.js.map +1 -0
- package/dist/components/molecules/flow-map/FlowMap.stories.d.ts.map +1 -1
- package/dist/components/molecules/flow-map/FlowMap.stories.js +7 -1
- package/dist/components/molecules/flow-map/FlowMap.stories.js.map +1 -1
- package/dist/components/molecules/flow-selector.d.ts +19 -0
- package/dist/components/molecules/flow-selector.d.ts.map +1 -0
- package/dist/components/molecules/flow-selector.js +26 -0
- package/dist/components/molecules/flow-selector.js.map +1 -0
- package/dist/components/molecules/flow-selector.stories.d.ts +28 -0
- package/dist/components/molecules/flow-selector.stories.d.ts.map +1 -0
- package/dist/components/molecules/flow-selector.stories.js +66 -0
- package/dist/components/molecules/flow-selector.stories.js.map +1 -0
- package/dist/components/molecules/form-card.d.ts +28 -0
- package/dist/components/molecules/form-card.d.ts.map +1 -0
- package/dist/components/molecules/form-card.js +16 -0
- package/dist/components/molecules/form-card.js.map +1 -0
- package/dist/components/molecules/form-card.stories.d.ts +7 -0
- package/dist/components/molecules/form-card.stories.d.ts.map +1 -0
- package/dist/components/molecules/form-card.stories.js +16 -0
- package/dist/components/molecules/form-card.stories.js.map +1 -0
- package/dist/components/molecules/preview.d.ts.map +1 -1
- package/dist/components/molecules/preview.js +0 -1
- package/dist/components/molecules/preview.js.map +1 -1
- package/dist/components/molecules/split-button.d.ts +25 -0
- package/dist/components/molecules/split-button.d.ts.map +1 -0
- package/dist/components/molecules/split-button.js +37 -0
- package/dist/components/molecules/split-button.js.map +1 -0
- package/dist/components/molecules/split-button.stories.d.ts +32 -0
- package/dist/components/molecules/split-button.stories.d.ts.map +1 -0
- package/dist/components/molecules/split-button.stories.js +88 -0
- package/dist/components/molecules/split-button.stories.js.map +1 -0
- package/dist/hooks/useDropdown.d.ts +34 -0
- package/dist/hooks/useDropdown.d.ts.map +1 -0
- package/dist/hooks/useDropdown.js +66 -0
- package/dist/hooks/useDropdown.js.map +1 -0
- package/dist/index.d.cts +441 -2
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +663 -28
- package/dist/index.mjs.map +1 -1
- package/dist/{monaco-types-4FIH5OVX.mjs → monaco-types-OLSF6MIE.mjs} +2 -2
- package/dist/styles.css +579 -0
- package/package.json +5 -14
- package/dist/chunk-VWWAIDNX.mjs.map +0 -1
- /package/dist/{monaco-types-4FIH5OVX.mjs.map → monaco-types-OLSF6MIE.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/footer.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,IAAI,GAAwB;IAChC,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,QAAQ,EAAE,CACR,KAAC,WAAW,IACV,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACpC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;aAC/C,EACD,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,GACvB,CACH;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,QAAQ,EAAE,uDAAsC;KACjD;CACF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FormFieldProps {
|
|
3
|
+
/** Form field content (input, textarea, etc.) */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Field label */
|
|
6
|
+
label?: string;
|
|
7
|
+
/** HTML id for the input (links label to input) */
|
|
8
|
+
htmlFor?: string;
|
|
9
|
+
/** Error message to display */
|
|
10
|
+
error?: string;
|
|
11
|
+
/** Whether the field is required */
|
|
12
|
+
required?: boolean;
|
|
13
|
+
/** Additional CSS class */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* FormField - Label + input + error wrapper
|
|
18
|
+
*
|
|
19
|
+
* Pure UI component for consistent form field layout.
|
|
20
|
+
* Wraps input elements with label and error message.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* <FormField label="Email" htmlFor="email" error={errors.email}>
|
|
24
|
+
* <input id="email" type="email" />
|
|
25
|
+
* </FormField>
|
|
26
|
+
*/
|
|
27
|
+
export declare function FormField({ children, label, htmlFor, error, required, className, }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=form-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAc,GACf,EAAE,cAAc,2CAuBhB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* FormField - Label + input + error wrapper
|
|
4
|
+
*
|
|
5
|
+
* Pure UI component for consistent form field layout.
|
|
6
|
+
* Wraps input elements with label and error message.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <FormField label="Email" htmlFor="email" error={errors.email}>
|
|
10
|
+
* <input id="email" type="email" />
|
|
11
|
+
* </FormField>
|
|
12
|
+
*/
|
|
13
|
+
export function FormField({ children, label, htmlFor, error, required, className = '', }) {
|
|
14
|
+
return (_jsxs("div", { className: `elb-form-field ${error ? 'elb-form-field--error' : ''} ${className}`.trim(), children: [label && (_jsxs("label", { htmlFor: htmlFor, className: "elb-form-field__label", children: [label, required && (_jsx("span", { className: "elb-form-field__required", "aria-hidden": "true", children: "*" }))] })), _jsx("div", { className: "elb-form-field__input", children: children }), error && (_jsx("div", { className: "elb-form-field__error", role: "alert", children: error }))] }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=form-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../../src/components/atoms/form-field.tsx"],"names":[],"mappings":";AAiBA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,EAAE,GACC;IACf,OAAO,CACL,eACE,SAAS,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,aAEtF,KAAK,IAAI,CACR,iBAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,uBAAuB,aACvD,KAAK,EACL,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,kBAEtD,CACR,IACK,CACT,EACD,cAAK,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAO,EACtD,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,uBAAuB,EAAC,IAAI,EAAC,OAAO,YAChD,KAAK,GACF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { FormField } from './form-field';
|
|
3
|
+
declare const meta: Meta<typeof FormField>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof FormField>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
//# sourceMappingURL=form-field.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-field.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAIhC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FormField } from './form-field';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Atoms/FormField',
|
|
5
|
+
component: FormField,
|
|
6
|
+
tags: ['autodocs'],
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
export const Default = {
|
|
10
|
+
args: {
|
|
11
|
+
label: 'Email address',
|
|
12
|
+
htmlFor: 'email',
|
|
13
|
+
children: _jsx("input", { id: "email", type: "email", placeholder: "you@example.com" }),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=form-field.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-field.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/form-field.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAA2B;IACnC,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,gBAAO,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,iBAAiB,GAAG;KAC1E;CACF,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface FormInputProps {
|
|
2
|
+
/** Current value (controlled) */
|
|
3
|
+
value: string;
|
|
4
|
+
/** Change handler */
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
/** Field label */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Input type */
|
|
9
|
+
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';
|
|
10
|
+
/** Placeholder text */
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
/** Disabled state */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Autofocus on mount */
|
|
15
|
+
autoFocus?: boolean;
|
|
16
|
+
/** Autocomplete attribute */
|
|
17
|
+
autoComplete?: string;
|
|
18
|
+
/** Required field */
|
|
19
|
+
required?: boolean;
|
|
20
|
+
/** Error state (boolean shows error style, string shows error message) */
|
|
21
|
+
error?: boolean | string;
|
|
22
|
+
/** HTML id (auto-generated if not provided) */
|
|
23
|
+
id?: string;
|
|
24
|
+
/** Additional CSS class */
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* FormInput - Text input with label and error support
|
|
29
|
+
*
|
|
30
|
+
* Pure UI component for single-line text inputs.
|
|
31
|
+
* Fully controlled - all state managed by parent.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* <FormInput
|
|
35
|
+
* label="Email"
|
|
36
|
+
* type="email"
|
|
37
|
+
* value={email}
|
|
38
|
+
* onChange={setEmail}
|
|
39
|
+
* error={emailError}
|
|
40
|
+
* />
|
|
41
|
+
*/
|
|
42
|
+
export declare function FormInput({ value, onChange, label, type, placeholder, disabled, autoFocus, autoComplete, required, error, id, className, }: FormInputProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=form-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-input.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IAChE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,+CAA+C;IAC/C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAa,EACb,WAAW,EACX,QAAgB,EAChB,SAAiB,EACjB,YAAY,EACZ,QAAgB,EAChB,KAAK,EACL,EAAE,EACF,SAAc,GACf,EAAE,cAAc,2CA6BhB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { FormField } from './form-field';
|
|
4
|
+
/**
|
|
5
|
+
* FormInput - Text input with label and error support
|
|
6
|
+
*
|
|
7
|
+
* Pure UI component for single-line text inputs.
|
|
8
|
+
* Fully controlled - all state managed by parent.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <FormInput
|
|
12
|
+
* label="Email"
|
|
13
|
+
* type="email"
|
|
14
|
+
* value={email}
|
|
15
|
+
* onChange={setEmail}
|
|
16
|
+
* error={emailError}
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
export function FormInput({ value, onChange, label, type = 'text', placeholder, disabled = false, autoFocus = false, autoComplete, required = false, error, id, className = '', }) {
|
|
20
|
+
const generatedId = useId();
|
|
21
|
+
const inputId = id ?? generatedId;
|
|
22
|
+
const hasError = Boolean(error);
|
|
23
|
+
const errorMessage = typeof error === 'string' ? error : undefined;
|
|
24
|
+
return (_jsx(FormField, { label: label, htmlFor: inputId, error: errorMessage, required: required, className: className, children: _jsx("input", { id: inputId, type: type, value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, disabled: disabled, autoFocus: autoFocus, autoComplete: autoComplete, required: required, className: `elb-form-input ${hasError ? 'elb-form-input--error' : ''}`, "aria-invalid": hasError }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=form-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input.js","sourceRoot":"","sources":["../../../src/components/atoms/form-input.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA6BzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,GAAG,MAAM,EACb,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,EAAE,EACF,SAAS,GAAG,EAAE,GACC;IACf,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,IAAI,WAAW,CAAC;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEpB,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,kBAAkB,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,kBACxD,QAAQ,GACtB,GACQ,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { FormInput } from './form-input';
|
|
3
|
+
declare const meta: Meta<typeof FormInput>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof FormInput>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
//# sourceMappingURL=form-input.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-input.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAIhC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FormInput } from './form-input';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Atoms/FormInput',
|
|
4
|
+
component: FormInput,
|
|
5
|
+
tags: ['autodocs'],
|
|
6
|
+
};
|
|
7
|
+
export default meta;
|
|
8
|
+
export const Default = {
|
|
9
|
+
args: {
|
|
10
|
+
label: 'Email address',
|
|
11
|
+
type: 'email',
|
|
12
|
+
value: '',
|
|
13
|
+
onChange: () => { },
|
|
14
|
+
placeholder: 'you@example.com',
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=form-input.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/form-input.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAA2B;IACnC,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface FormTextareaProps {
|
|
2
|
+
/** Current value (controlled) */
|
|
3
|
+
value: string;
|
|
4
|
+
/** Change handler */
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
/** Field label */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Number of visible rows */
|
|
9
|
+
rows?: number;
|
|
10
|
+
/** Placeholder text */
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
/** Disabled state */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Spellcheck enabled */
|
|
15
|
+
spellCheck?: boolean;
|
|
16
|
+
/** Required field */
|
|
17
|
+
required?: boolean;
|
|
18
|
+
/** Error state (boolean shows error style, string shows error message) */
|
|
19
|
+
error?: boolean | string;
|
|
20
|
+
/** HTML id (auto-generated if not provided) */
|
|
21
|
+
id?: string;
|
|
22
|
+
/** Additional CSS class */
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* FormTextarea - Multi-line text input with label and error support
|
|
27
|
+
*
|
|
28
|
+
* Pure UI component for multi-line text inputs.
|
|
29
|
+
* Fully controlled - all state managed by parent.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* <FormTextarea
|
|
33
|
+
* label="Configuration"
|
|
34
|
+
* value={config}
|
|
35
|
+
* onChange={setConfig}
|
|
36
|
+
* rows={15}
|
|
37
|
+
* spellCheck={false}
|
|
38
|
+
* />
|
|
39
|
+
*/
|
|
40
|
+
export declare function FormTextarea({ value, onChange, label, rows, placeholder, disabled, spellCheck, required, error, id, className, }: FormTextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
//# sourceMappingURL=form-textarea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-textarea.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-textarea.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,+CAA+C;IAC/C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAQ,EACR,WAAW,EACX,QAAgB,EAChB,UAAiB,EACjB,QAAgB,EAChB,KAAK,EACL,EAAE,EACF,SAAc,GACf,EAAE,iBAAiB,2CA4BnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { FormField } from './form-field';
|
|
4
|
+
/**
|
|
5
|
+
* FormTextarea - Multi-line text input with label and error support
|
|
6
|
+
*
|
|
7
|
+
* Pure UI component for multi-line text inputs.
|
|
8
|
+
* Fully controlled - all state managed by parent.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <FormTextarea
|
|
12
|
+
* label="Configuration"
|
|
13
|
+
* value={config}
|
|
14
|
+
* onChange={setConfig}
|
|
15
|
+
* rows={15}
|
|
16
|
+
* spellCheck={false}
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
export function FormTextarea({ value, onChange, label, rows = 5, placeholder, disabled = false, spellCheck = true, required = false, error, id, className = '', }) {
|
|
20
|
+
const generatedId = useId();
|
|
21
|
+
const textareaId = id ?? generatedId;
|
|
22
|
+
const hasError = Boolean(error);
|
|
23
|
+
const errorMessage = typeof error === 'string' ? error : undefined;
|
|
24
|
+
return (_jsx(FormField, { label: label, htmlFor: textareaId, error: errorMessage, required: required, className: className, children: _jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, disabled: disabled, spellCheck: spellCheck, required: required, className: `elb-form-textarea ${hasError ? 'elb-form-textarea--error' : ''}`, "aria-invalid": hasError }) }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=form-textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-textarea.js","sourceRoot":"","sources":["../../../src/components/atoms/form-textarea.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA2BzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,GAAG,CAAC,EACR,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,EAAE,EACF,SAAS,GAAG,EAAE,GACI;IAClB,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,EAAE,IAAI,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEpB,mBACE,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,qBAAqB,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,kBAC9D,QAAQ,GACtB,GACQ,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { FormTextarea } from './form-textarea';
|
|
3
|
+
declare const meta: Meta<typeof FormTextarea>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof FormTextarea>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
//# sourceMappingURL=form-textarea.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-textarea.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/form-textarea.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAInC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FormTextarea } from './form-textarea';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Atoms/FormTextarea',
|
|
4
|
+
component: FormTextarea,
|
|
5
|
+
tags: ['autodocs'],
|
|
6
|
+
};
|
|
7
|
+
export default meta;
|
|
8
|
+
export const Default = {
|
|
9
|
+
args: {
|
|
10
|
+
label: 'Configuration',
|
|
11
|
+
value: '',
|
|
12
|
+
onChange: () => { },
|
|
13
|
+
rows: 5,
|
|
14
|
+
placeholder: 'Enter your configuration...',
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=form-textarea.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-textarea.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/form-textarea.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,IAAI,GAA8B;IACtC,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,WAAW,EAAE,6BAA6B;KAC3C;CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Grid } from './grid';
|
|
3
|
+
/**
|
|
4
|
+
* Grid - Horizontal scrolling layout component
|
|
5
|
+
*
|
|
6
|
+
* Arranges Box components in a horizontal grid with optional scroll buttons.
|
|
7
|
+
* Supports various row height modes: auto, equal, synced, or fixed pixel value.
|
|
8
|
+
*/
|
|
9
|
+
declare const meta: Meta<typeof Grid>;
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof Grid>;
|
|
12
|
+
export declare const Default: Story;
|
|
13
|
+
export declare const AutoHeight: Story;
|
|
14
|
+
export declare const EqualHeight: Story;
|
|
15
|
+
export declare const FixedHeight: Story;
|
|
16
|
+
export declare const CustomGap: Story;
|
|
17
|
+
export declare const NoScrollButtons: Story;
|
|
18
|
+
//# sourceMappingURL=grid.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/grid.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B;;;;;GAKG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAW3B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAWrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAgBzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAYvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAW7B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Grid } from './grid';
|
|
3
|
+
import { Box } from './box';
|
|
4
|
+
/**
|
|
5
|
+
* Grid - Horizontal scrolling layout component
|
|
6
|
+
*
|
|
7
|
+
* Arranges Box components in a horizontal grid with optional scroll buttons.
|
|
8
|
+
* Supports various row height modes: auto, equal, synced, or fixed pixel value.
|
|
9
|
+
*/
|
|
10
|
+
const meta = {
|
|
11
|
+
title: 'Atoms/Grid',
|
|
12
|
+
component: Grid,
|
|
13
|
+
tags: ['autodocs'],
|
|
14
|
+
decorators: [
|
|
15
|
+
(Story) => (_jsx("div", { style: { width: '100%', maxWidth: '1200px' }, children: _jsx(Story, {}) })),
|
|
16
|
+
],
|
|
17
|
+
};
|
|
18
|
+
export default meta;
|
|
19
|
+
export const Default = {
|
|
20
|
+
args: {
|
|
21
|
+
columns: 3,
|
|
22
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "Box 1", children: "Content for box 1" }), _jsx(Box, { header: "Box 2", children: "Content for box 2" }), _jsx(Box, { header: "Box 3", children: "Content for box 3" })] })),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const AutoHeight = {
|
|
26
|
+
args: {
|
|
27
|
+
columns: 2,
|
|
28
|
+
rowHeight: 'auto',
|
|
29
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "Short", children: "Short content" }), _jsxs(Box, { header: "Tall", children: [_jsx("div", { children: "Line 1" }), _jsx("div", { children: "Line 2" }), _jsx("div", { children: "Line 3" }), _jsx("div", { children: "Line 4" })] })] })),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export const EqualHeight = {
|
|
33
|
+
args: {
|
|
34
|
+
columns: 3,
|
|
35
|
+
rowHeight: 'equal',
|
|
36
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "Box A", children: "Short" }), _jsxs(Box, { header: "Box B", children: [_jsx("div", { children: "Tall content" }), _jsx("div", { children: "More lines" }), _jsx("div", { children: "Even more" })] }), _jsx(Box, { header: "Box C", children: "Medium" })] })),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const FixedHeight = {
|
|
40
|
+
args: {
|
|
41
|
+
columns: 2,
|
|
42
|
+
rowHeight: 200,
|
|
43
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "Fixed 200px", children: "Content fits in 200px height" }), _jsx(Box, { header: "Also 200px", children: "Same height regardless of content" })] })),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const CustomGap = {
|
|
47
|
+
args: {
|
|
48
|
+
columns: 3,
|
|
49
|
+
gap: 32,
|
|
50
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "Wide Gap", children: "32px gap between boxes" }), _jsx(Box, { header: "Box 2", children: "Content" }), _jsx(Box, { header: "Box 3", children: "Content" })] })),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
export const NoScrollButtons = {
|
|
54
|
+
args: {
|
|
55
|
+
columns: 2,
|
|
56
|
+
showScrollButtons: false,
|
|
57
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Box, { header: "No Buttons", children: "Scroll buttons hidden" }), _jsx(Box, { header: "Box 2", children: "Content" })] })),
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=grid.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/grid.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,IAAI,GAAsB;IAC9B,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAC/C,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,kCAAwB,EAC3C,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,kCAAwB,EAC3C,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,kCAAwB,IAC1C,CACJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,8BAAoB,EACvC,MAAC,GAAG,IAAC,MAAM,EAAC,MAAM,aAChB,mCAAiB,EACjB,mCAAiB,EACjB,mCAAiB,EACjB,mCAAiB,IACb,IACL,CACJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,sBAAY,EAC/B,MAAC,GAAG,IAAC,MAAM,EAAC,OAAO,aACjB,yCAAuB,EACvB,uCAAqB,EACrB,sCAAoB,IAChB,EACN,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,uBAAa,IAC/B,CACJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,aAAa,6CAAmC,EAC5D,KAAC,GAAG,IAAC,MAAM,EAAC,YAAY,kDAAwC,IAC/D,CACJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,UAAU,uCAA6B,EACnD,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,wBAAc,EACjC,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,wBAAc,IAChC,CACJ;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC;QACV,iBAAiB,EAAE,KAAK;QACxB,QAAQ,EAAE,CACR,8BACE,KAAC,GAAG,IAAC,MAAM,EAAC,YAAY,sCAA4B,EACpD,KAAC,GAAG,IAAC,MAAM,EAAC,OAAO,wBAAc,IAChC,CACJ;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Header } from './header';
|
|
3
|
+
/**
|
|
4
|
+
* Header - Header component for boxes and panels
|
|
5
|
+
*
|
|
6
|
+
* Displays a label with optional action buttons.
|
|
7
|
+
* Pairs with Footer for consistent box structure.
|
|
8
|
+
*/
|
|
9
|
+
declare const meta: Meta<typeof Header>;
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof Header>;
|
|
12
|
+
export declare const Default: Story;
|
|
13
|
+
export declare const WithButtons: Story;
|
|
14
|
+
export declare const WithSingleButton: Story;
|
|
15
|
+
//# sourceMappingURL=header.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/header.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;;;;GAKG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAI7B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAK9B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Header } from './header';
|
|
3
|
+
import { Button } from './button';
|
|
4
|
+
import { ButtonGroup } from './button-group';
|
|
5
|
+
/**
|
|
6
|
+
* Header - Header component for boxes and panels
|
|
7
|
+
*
|
|
8
|
+
* Displays a label with optional action buttons.
|
|
9
|
+
* Pairs with Footer for consistent box structure.
|
|
10
|
+
*/
|
|
11
|
+
const meta = {
|
|
12
|
+
title: 'Atoms/Header',
|
|
13
|
+
component: Header,
|
|
14
|
+
tags: ['autodocs'],
|
|
15
|
+
};
|
|
16
|
+
export default meta;
|
|
17
|
+
export const Default = {
|
|
18
|
+
args: {
|
|
19
|
+
label: 'Code Preview',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export const WithButtons = {
|
|
23
|
+
args: {
|
|
24
|
+
label: 'Configuration',
|
|
25
|
+
children: (_jsx(ButtonGroup, { buttons: [
|
|
26
|
+
{ label: 'Copy', value: 'copy' },
|
|
27
|
+
{ label: 'Reset', value: 'reset' },
|
|
28
|
+
], onButtonClick: () => { } })),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export const WithSingleButton = {
|
|
32
|
+
args: {
|
|
33
|
+
label: 'Events',
|
|
34
|
+
children: _jsx(Button, { children: "Clear" }),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=header.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/header.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,IAAI,GAAwB;IAChC,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,cAAc;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,CACR,KAAC,WAAW,IACV,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;gBAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;aACnC,EACD,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,GACvB,CACH;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAU;IACrC,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,KAAC,MAAM,wBAAe;KACjC;CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Icon } from '@iconify/react';
|
|
3
|
+
/**
|
|
4
|
+
* Icon - Iconify icon component
|
|
5
|
+
*
|
|
6
|
+
* Re-exported from @iconify/react for consistent imports.
|
|
7
|
+
* Use any Iconify icon name (e.g., 'mdi:home', 'lucide:settings').
|
|
8
|
+
*
|
|
9
|
+
* @see https://icon-sets.iconify.design/
|
|
10
|
+
*/
|
|
11
|
+
declare const meta: Meta<typeof Icon>;
|
|
12
|
+
export default meta;
|
|
13
|
+
type Story = StoryObj<typeof Icon>;
|
|
14
|
+
export declare const Default: Story;
|
|
15
|
+
export declare const CommonIcons: Story;
|
|
16
|
+
export declare const Sizes: Story;
|
|
17
|
+
export declare const CustomIcon: Story;
|
|
18
|
+
//# sourceMappingURL=icon.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/icons/icon.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAI3B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAezB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KASnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Icon } from '@iconify/react';
|
|
3
|
+
/**
|
|
4
|
+
* Icon - Iconify icon component
|
|
5
|
+
*
|
|
6
|
+
* Re-exported from @iconify/react for consistent imports.
|
|
7
|
+
* Use any Iconify icon name (e.g., 'mdi:home', 'lucide:settings').
|
|
8
|
+
*
|
|
9
|
+
* @see https://icon-sets.iconify.design/
|
|
10
|
+
*/
|
|
11
|
+
const meta = {
|
|
12
|
+
title: 'Atoms/Icon',
|
|
13
|
+
component: Icon,
|
|
14
|
+
tags: ['autodocs'],
|
|
15
|
+
};
|
|
16
|
+
export default meta;
|
|
17
|
+
export const Default = {
|
|
18
|
+
args: {
|
|
19
|
+
icon: 'mdi:home',
|
|
20
|
+
width: 24,
|
|
21
|
+
height: 24,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export const CommonIcons = {
|
|
25
|
+
render: () => (_jsxs("div", { style: { display: 'flex', gap: '16px', alignItems: 'center' }, children: [_jsx(Icon, { icon: "mdi:home", width: 24 }), _jsx(Icon, { icon: "mdi:cog", width: 24 }), _jsx(Icon, { icon: "mdi:account", width: 24 }), _jsx(Icon, { icon: "mdi:magnify", width: 24 }), _jsx(Icon, { icon: "mdi:plus", width: 24 }), _jsx(Icon, { icon: "mdi:delete", width: 24 }), _jsx(Icon, { icon: "mdi:pencil", width: 24 }), _jsx(Icon, { icon: "mdi:check", width: 24 }), _jsx(Icon, { icon: "mdi:close", width: 24 }), _jsx(Icon, { icon: "mdi:chevron-down", width: 24 })] })),
|
|
26
|
+
};
|
|
27
|
+
export const Sizes = {
|
|
28
|
+
render: () => (_jsxs("div", { style: { display: 'flex', gap: '16px', alignItems: 'center' }, children: [_jsx(Icon, { icon: "mdi:star", width: 16 }), _jsx(Icon, { icon: "mdi:star", width: 24 }), _jsx(Icon, { icon: "mdi:star", width: 32 }), _jsx(Icon, { icon: "mdi:star", width: 48 })] })),
|
|
29
|
+
};
|
|
30
|
+
export const CustomIcon = {
|
|
31
|
+
args: {
|
|
32
|
+
icon: 'walkeros:piwik-pro',
|
|
33
|
+
width: 48,
|
|
34
|
+
height: 48,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=icon.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.stories.js","sourceRoot":"","sources":["../../../../src/components/atoms/icons/icon.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,IAAI,GAAsB;IAC9B,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACX;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAChE,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,EACnC,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,GAAI,EAClC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,GAAI,EACtC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,GAAI,EACtC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,EACnC,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,GAAI,EACrC,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,GAAI,EACrC,KAAC,IAAI,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,GAAI,EACpC,KAAC,IAAI,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,GAAI,EACpC,KAAC,IAAI,IAAC,IAAI,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,GAAI,IACvC,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAChE,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,EACnC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,EACnC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,EACnC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,GAAI,IAC/B,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACX;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { PanelHints } from './panel-hints';
|
|
3
|
+
/**
|
|
4
|
+
* PanelHints - Displays contextual hints with code examples
|
|
5
|
+
*
|
|
6
|
+
* Used in property panels to show common patterns and usage examples.
|
|
7
|
+
* Features a clean, minimal design with code-first presentation.
|
|
8
|
+
*/
|
|
9
|
+
declare const meta: Meta<typeof PanelHints>;
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof PanelHints>;
|
|
12
|
+
export declare const Default: Story;
|
|
13
|
+
export declare const CustomTitle: Story;
|
|
14
|
+
//# sourceMappingURL=panel-hints.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-hints.stories.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/panel-hints.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;GAKG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAIjC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC;AAEzC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { PanelHints } from './panel-hints';
|
|
2
|
+
/**
|
|
3
|
+
* PanelHints - Displays contextual hints with code examples
|
|
4
|
+
*
|
|
5
|
+
* Used in property panels to show common patterns and usage examples.
|
|
6
|
+
* Features a clean, minimal design with code-first presentation.
|
|
7
|
+
*/
|
|
8
|
+
const meta = {
|
|
9
|
+
title: 'Atoms/PanelHints',
|
|
10
|
+
component: PanelHints,
|
|
11
|
+
tags: ['autodocs'],
|
|
12
|
+
};
|
|
13
|
+
export default meta;
|
|
14
|
+
export const Default = {
|
|
15
|
+
args: {
|
|
16
|
+
hints: [
|
|
17
|
+
{ code: 'data.id', description: 'Product identifier' },
|
|
18
|
+
{ code: 'data.name', description: 'Product name' },
|
|
19
|
+
{ code: 'user.email', description: 'User email address' },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export const CustomTitle = {
|
|
24
|
+
args: {
|
|
25
|
+
title: 'Event properties',
|
|
26
|
+
hints: [
|
|
27
|
+
{
|
|
28
|
+
code: 'event.action',
|
|
29
|
+
description: 'The action that triggered the event',
|
|
30
|
+
},
|
|
31
|
+
{ code: 'event.label', description: 'Optional label for the event' },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=panel-hints.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-hints.stories.js","sourceRoot":"","sources":["../../../src/components/atoms/panel-hints.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,IAAI,GAA4B;IACpC,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;YACtD,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE;YAClD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC1D;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,qCAAqC;aACnD;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,8BAA8B,EAAE;SACrE;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface SpinnerProps {
|
|
2
|
+
/** Size of the spinner */
|
|
3
|
+
size?: 'sm' | 'md' | 'lg';
|
|
4
|
+
/** Additional CSS class */
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Spinner - Loading indicator
|
|
9
|
+
*
|
|
10
|
+
* Pure UI component for showing loading state.
|
|
11
|
+
* No internal state - controlled via parent.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <Spinner size="md" />
|
|
15
|
+
*/
|
|
16
|
+
export declare function Spinner({ size, className }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=spinner.d.ts.map
|