tyrell-react 1.0.0-RC10
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 +21 -0
- package/README.md +410 -0
- package/dist/components/TyButton.d.ts +52 -0
- package/dist/components/TyButton.d.ts.map +1 -0
- package/dist/components/TyButton.js +76 -0
- package/dist/components/TyButton.js.map +1 -0
- package/dist/components/TyCalendar.d.ts +63 -0
- package/dist/components/TyCalendar.d.ts.map +1 -0
- package/dist/components/TyCalendar.js +128 -0
- package/dist/components/TyCalendar.js.map +1 -0
- package/dist/components/TyCalendarMonth.d.ts +32 -0
- package/dist/components/TyCalendarMonth.d.ts.map +1 -0
- package/dist/components/TyCalendarMonth.js +54 -0
- package/dist/components/TyCalendarMonth.js.map +1 -0
- package/dist/components/TyCalendarNavigation.d.ts +21 -0
- package/dist/components/TyCalendarNavigation.d.ts.map +1 -0
- package/dist/components/TyCalendarNavigation.js +50 -0
- package/dist/components/TyCalendarNavigation.js.map +1 -0
- package/dist/components/TyCheckbox.d.ts +39 -0
- package/dist/components/TyCheckbox.d.ts.map +1 -0
- package/dist/components/TyCheckbox.js +76 -0
- package/dist/components/TyCheckbox.js.map +1 -0
- package/dist/components/TyCopy.d.ts +21 -0
- package/dist/components/TyCopy.d.ts.map +1 -0
- package/dist/components/TyCopy.js +46 -0
- package/dist/components/TyCopy.js.map +1 -0
- package/dist/components/TyDatePicker.d.ts +45 -0
- package/dist/components/TyDatePicker.d.ts.map +1 -0
- package/dist/components/TyDatePicker.js +122 -0
- package/dist/components/TyDatePicker.js.map +1 -0
- package/dist/components/TyDropdown.d.ts +62 -0
- package/dist/components/TyDropdown.d.ts.map +1 -0
- package/dist/components/TyDropdown.js +124 -0
- package/dist/components/TyDropdown.js.map +1 -0
- package/dist/components/TyFileUpload.d.ts +31 -0
- package/dist/components/TyFileUpload.d.ts.map +1 -0
- package/dist/components/TyFileUpload.js +56 -0
- package/dist/components/TyFileUpload.js.map +1 -0
- package/dist/components/TyIcon.d.ts +17 -0
- package/dist/components/TyIcon.d.ts.map +1 -0
- package/dist/components/TyIcon.js +42 -0
- package/dist/components/TyIcon.js.map +1 -0
- package/dist/components/TyInput.d.ts +65 -0
- package/dist/components/TyInput.d.ts.map +1 -0
- package/dist/components/TyInput.js +134 -0
- package/dist/components/TyInput.js.map +1 -0
- package/dist/components/TyModal.d.ts +48 -0
- package/dist/components/TyModal.d.ts.map +1 -0
- package/dist/components/TyModal.js +120 -0
- package/dist/components/TyModal.js.map +1 -0
- package/dist/components/TyMultiselect.d.ts +57 -0
- package/dist/components/TyMultiselect.d.ts.map +1 -0
- package/dist/components/TyMultiselect.js +111 -0
- package/dist/components/TyMultiselect.js.map +1 -0
- package/dist/components/TyOption.d.ts +10 -0
- package/dist/components/TyOption.d.ts.map +1 -0
- package/dist/components/TyOption.js +29 -0
- package/dist/components/TyOption.js.map +1 -0
- package/dist/components/TyPopup.d.ts +24 -0
- package/dist/components/TyPopup.d.ts.map +1 -0
- package/dist/components/TyPopup.js +70 -0
- package/dist/components/TyPopup.js.map +1 -0
- package/dist/components/TyRadio.d.ts +20 -0
- package/dist/components/TyRadio.d.ts.map +1 -0
- package/dist/components/TyRadio.js +35 -0
- package/dist/components/TyRadio.js.map +1 -0
- package/dist/components/TyRadioGroup.d.ts +40 -0
- package/dist/components/TyRadioGroup.d.ts.map +1 -0
- package/dist/components/TyRadioGroup.js +61 -0
- package/dist/components/TyRadioGroup.js.map +1 -0
- package/dist/components/TyResizeObserver.d.ts +11 -0
- package/dist/components/TyResizeObserver.d.ts.map +1 -0
- package/dist/components/TyResizeObserver.js +28 -0
- package/dist/components/TyResizeObserver.js.map +1 -0
- package/dist/components/TyScrollContainer.d.ts +25 -0
- package/dist/components/TyScrollContainer.d.ts.map +1 -0
- package/dist/components/TyScrollContainer.js +61 -0
- package/dist/components/TyScrollContainer.js.map +1 -0
- package/dist/components/TyStep.d.ts +17 -0
- package/dist/components/TyStep.d.ts.map +1 -0
- package/dist/components/TyStep.js +35 -0
- package/dist/components/TyStep.js.map +1 -0
- package/dist/components/TySwitch.d.ts +35 -0
- package/dist/components/TySwitch.d.ts.map +1 -0
- package/dist/components/TySwitch.js +59 -0
- package/dist/components/TySwitch.js.map +1 -0
- package/dist/components/TyTab.d.ts +13 -0
- package/dist/components/TyTab.d.ts.map +1 -0
- package/dist/components/TyTab.js +34 -0
- package/dist/components/TyTab.js.map +1 -0
- package/dist/components/TyTabs.d.ts +23 -0
- package/dist/components/TyTabs.d.ts.map +1 -0
- package/dist/components/TyTabs.js +48 -0
- package/dist/components/TyTabs.js.map +1 -0
- package/dist/components/TyTag.d.ts +22 -0
- package/dist/components/TyTag.d.ts.map +1 -0
- package/dist/components/TyTag.js +51 -0
- package/dist/components/TyTag.js.map +1 -0
- package/dist/components/TyTextarea.d.ts +37 -0
- package/dist/components/TyTextarea.d.ts.map +1 -0
- package/dist/components/TyTextarea.js +116 -0
- package/dist/components/TyTextarea.js.map +1 -0
- package/dist/components/TyTooltip.d.ts +17 -0
- package/dist/components/TyTooltip.d.ts.map +1 -0
- package/dist/components/TyTooltip.js +41 -0
- package/dist/components/TyTooltip.js.map +1 -0
- package/dist/components/TyWizard.d.ts +26 -0
- package/dist/components/TyWizard.d.ts.map +1 -0
- package/dist/components/TyWizard.js +50 -0
- package/dist/components/TyWizard.js.map +1 -0
- package/dist/components/index.d.ts +112 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +127 -0
- package/dist/components/index.js.map +1 -0
- package/dist/utils/react-version.d.ts +2 -0
- package/dist/utils/react-version.d.ts.map +1 -0
- package/dist/utils/react-version.js +8 -0
- package/dist/utils/react-version.js.map +1 -0
- package/dist/utils/use-boolean-prop.d.ts +36 -0
- package/dist/utils/use-boolean-prop.d.ts.map +1 -0
- package/dist/utils/use-boolean-prop.js +62 -0
- package/dist/utils/use-boolean-prop.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +47 -0
- package/src/components/EventConventionTest.tsx +155 -0
- package/src/components/TyButton.tsx +157 -0
- package/src/components/TyCalendar.tsx +247 -0
- package/src/components/TyCalendarMonth.tsx +108 -0
- package/src/components/TyCalendarNavigation.tsx +91 -0
- package/src/components/TyCheckbox.tsx +147 -0
- package/src/components/TyCopy.tsx +83 -0
- package/src/components/TyDatePicker.tsx +215 -0
- package/src/components/TyDropdown.tsx +240 -0
- package/src/components/TyFileUpload.tsx +108 -0
- package/src/components/TyIcon.tsx +71 -0
- package/src/components/TyInput.tsx +239 -0
- package/src/components/TyModal.tsx +195 -0
- package/src/components/TyMultiselect.tsx +208 -0
- package/src/components/TyOption.tsx +47 -0
- package/src/components/TyPopup.tsx +116 -0
- package/src/components/TyRadio.tsx +61 -0
- package/src/components/TyRadioGroup.tsx +125 -0
- package/src/components/TyResizeObserver.tsx +54 -0
- package/src/components/TyScrollContainer.tsx +102 -0
- package/src/components/TyStep.tsx +71 -0
- package/src/components/TySwitch.tsx +114 -0
- package/src/components/TyTab.tsx +65 -0
- package/src/components/TyTabs.tsx +93 -0
- package/src/components/TyTag.tsx +86 -0
- package/src/components/TyTextarea.tsx +181 -0
- package/src/components/TyTooltip.tsx +83 -0
- package/src/components/TyWizard.tsx +99 -0
- package/src/components/index.ts +279 -0
- package/src/utils/react-version.ts +8 -0
- package/src/utils/use-boolean-prop.ts +62 -0
- package/src/version.ts +6 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { useBooleanProperty } from '../utils/use-boolean-prop';
|
|
3
|
+
// React wrapper for ty-popup web component
|
|
4
|
+
export const TyPopup = React.forwardRef(({ placement, offset, manual, disableClose, onOpen, onClose, children, ...props }, ref) => {
|
|
5
|
+
const elementRef = useRef(null);
|
|
6
|
+
// Handle ref forwarding
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (ref && elementRef.current) {
|
|
9
|
+
if (typeof ref === 'function') {
|
|
10
|
+
ref(elementRef.current);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
ref.current = elementRef.current;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}, [ref]);
|
|
17
|
+
// Listen for popup open/close events.
|
|
18
|
+
// Guard with `event.target === element` so bubbled open/close events
|
|
19
|
+
// from popup-like descendants (ty-dropdown, ty-multiselect, ty-date-picker
|
|
20
|
+
// when slotted inside this popup) don't fire the consumer's onOpen/onClose.
|
|
21
|
+
// See TyModal.tsx for the same pattern + rationale.
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const element = elementRef.current;
|
|
24
|
+
if (!element)
|
|
25
|
+
return;
|
|
26
|
+
const handleOpen = (event) => {
|
|
27
|
+
if (event.target !== element)
|
|
28
|
+
return;
|
|
29
|
+
if (onOpen)
|
|
30
|
+
onOpen(event);
|
|
31
|
+
};
|
|
32
|
+
const handleClose = (event) => {
|
|
33
|
+
if (event.target !== element)
|
|
34
|
+
return;
|
|
35
|
+
if (onClose)
|
|
36
|
+
onClose(event);
|
|
37
|
+
};
|
|
38
|
+
if (onOpen)
|
|
39
|
+
element.addEventListener('open', handleOpen);
|
|
40
|
+
if (onClose)
|
|
41
|
+
element.addEventListener('close', handleClose);
|
|
42
|
+
return () => {
|
|
43
|
+
if (onOpen)
|
|
44
|
+
element.removeEventListener('open', handleOpen);
|
|
45
|
+
if (onClose)
|
|
46
|
+
element.removeEventListener('close', handleClose);
|
|
47
|
+
};
|
|
48
|
+
}, [onOpen, onClose]);
|
|
49
|
+
// Convert React props to web component attributes
|
|
50
|
+
const webComponentProps = {
|
|
51
|
+
...props,
|
|
52
|
+
ref: elementRef,
|
|
53
|
+
};
|
|
54
|
+
// Add optional attributes only if they have values
|
|
55
|
+
if (placement) {
|
|
56
|
+
webComponentProps.placement = placement;
|
|
57
|
+
}
|
|
58
|
+
if (offset !== undefined) {
|
|
59
|
+
webComponentProps.offset = offset.toString();
|
|
60
|
+
}
|
|
61
|
+
const isManual = useBooleanProperty(elementRef, 'manual', manual);
|
|
62
|
+
const isDisableClose = useBooleanProperty(elementRef, 'disableClose', disableClose);
|
|
63
|
+
if (isManual)
|
|
64
|
+
webComponentProps.manual = '';
|
|
65
|
+
if (isDisableClose)
|
|
66
|
+
webComponentProps['disable-close'] = '';
|
|
67
|
+
return React.createElement('ty-popup', webComponentProps, children);
|
|
68
|
+
});
|
|
69
|
+
TyPopup.displayName = 'TyPopup';
|
|
70
|
+
//# sourceMappingURL=TyPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyPopup.js","sourceRoot":"","sources":["../../src/components/TyPopup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyRadioProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Form field value (selected by parent ty-radio-group when matches its `value`) */
|
|
4
|
+
value?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Selected state. Usually managed by the parent `<TyRadioGroup>` based on its
|
|
7
|
+
* own `value`; set explicitly only when using `ty-radio` outside a group.
|
|
8
|
+
*/
|
|
9
|
+
checked?: boolean;
|
|
10
|
+
/** Disable this individual radio */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Radio size — typically inherited from the parent group */
|
|
13
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
14
|
+
/** Semantic styling variant — typically inherited from the parent group */
|
|
15
|
+
flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
|
|
16
|
+
/** Label content (wrap in a `<label>` for click delegation, see ty-radio docs) */
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export declare const TyRadio: React.ForwardRefExoticComponent<TyRadioProps & React.RefAttributes<HTMLElement>>;
|
|
20
|
+
//# sourceMappingURL=TyRadio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyRadio.d.ts","sourceRoot":"","sources":["../../src/components/TyRadio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACrE,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEhF,kFAAkF;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,OAAO,kFAgCnB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { useBooleanProperty } from '../utils/use-boolean-prop';
|
|
3
|
+
export const TyRadio = React.forwardRef(({ children, value, checked, disabled, size, flavor, ...props }, ref) => {
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (ref && elementRef.current) {
|
|
7
|
+
if (typeof ref === 'function') {
|
|
8
|
+
ref(elementRef.current);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
ref.current = elementRef.current;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}, [ref]);
|
|
15
|
+
// Imperative property sync for boolean props (see use-boolean-prop.ts).
|
|
16
|
+
const isChecked = useBooleanProperty(elementRef, 'checked', checked);
|
|
17
|
+
const isDisabled = useBooleanProperty(elementRef, 'disabled', disabled);
|
|
18
|
+
const webComponentProps = {
|
|
19
|
+
...props,
|
|
20
|
+
ref: elementRef,
|
|
21
|
+
};
|
|
22
|
+
if (isChecked)
|
|
23
|
+
webComponentProps.checked = '';
|
|
24
|
+
if (isDisabled)
|
|
25
|
+
webComponentProps.disabled = '';
|
|
26
|
+
if (value !== undefined)
|
|
27
|
+
webComponentProps.value = value;
|
|
28
|
+
if (size)
|
|
29
|
+
webComponentProps.size = size;
|
|
30
|
+
if (flavor)
|
|
31
|
+
webComponentProps.flavor = flavor;
|
|
32
|
+
return React.createElement('ty-radio', webComponentProps, children);
|
|
33
|
+
});
|
|
34
|
+
TyRadio.displayName = 'TyRadio';
|
|
35
|
+
//# sourceMappingURL=TyRadio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyRadio.js","sourceRoot":"","sources":["../../src/components/TyRadio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAyB/D,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CACrC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,wEAAwE;IACxE,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,IAAI,SAAS;QAAE,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;IAC9C,IAAI,UAAU;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAEhD,IAAI,KAAK,KAAK,SAAS;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IACzD,IAAI,IAAI;QAAE,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;IACxC,IAAI,MAAM;QAAE,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;IAE9C,OAAO,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC,CACF,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyRadioGroupProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange' | 'onInput'> {
|
|
3
|
+
/** Currently selected value (matches one child `<TyRadio value="...">`) */
|
|
4
|
+
value?: string;
|
|
5
|
+
/** Form field name */
|
|
6
|
+
name?: string;
|
|
7
|
+
/** Group label rendered above the radios */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** Disable the entire group */
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
/** Required field — renders required-icon next to the label */
|
|
12
|
+
required?: boolean;
|
|
13
|
+
/** Error message rendered below the group */
|
|
14
|
+
error?: string;
|
|
15
|
+
/** Layout direction for radio children */
|
|
16
|
+
orientation?: 'vertical' | 'horizontal';
|
|
17
|
+
/** Group size — propagates to all `<TyRadio>` children */
|
|
18
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
19
|
+
/** Group flavor — propagates to all `<TyRadio>` children */
|
|
20
|
+
flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
|
|
21
|
+
/**
|
|
22
|
+
* Fires when selection changes (React convention)
|
|
23
|
+
* Maps to native 'input' event from ty-radio-group
|
|
24
|
+
*/
|
|
25
|
+
onChange?: (event: CustomEvent<TyRadioGroupEventDetail>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Fires on blur if value changed (native DOM behavior)
|
|
28
|
+
* Maps to native 'change' event from ty-radio-group
|
|
29
|
+
*/
|
|
30
|
+
onChangeCommit?: (event: CustomEvent<TyRadioGroupEventDetail>) => void;
|
|
31
|
+
/** `<TyRadio>` children */
|
|
32
|
+
children?: React.ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export interface TyRadioGroupEventDetail {
|
|
35
|
+
value: string;
|
|
36
|
+
formValue: string;
|
|
37
|
+
originalEvent: Event;
|
|
38
|
+
}
|
|
39
|
+
export declare const TyRadioGroup: React.ForwardRefExoticComponent<TyRadioGroupProps & React.RefAttributes<HTMLElement>>;
|
|
40
|
+
//# sourceMappingURL=TyRadioGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyRadioGroup.d.ts","sourceRoot":"","sources":["../../src/components/TyRadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxG,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAExC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEhF;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC;IAEjE;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC;IAEvE,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,uFAqExB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { useBooleanProperty } from '../utils/use-boolean-prop';
|
|
3
|
+
export const TyRadioGroup = React.forwardRef(({ children, value, name, label, disabled, required, error, orientation, size, flavor, onChange, onChangeCommit, ...props }, ref) => {
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const element = elementRef.current;
|
|
7
|
+
if (!element)
|
|
8
|
+
return;
|
|
9
|
+
const handleInput = (event) => {
|
|
10
|
+
if (onChange)
|
|
11
|
+
onChange(event);
|
|
12
|
+
};
|
|
13
|
+
const handleChangeCommit = (event) => {
|
|
14
|
+
if (onChangeCommit)
|
|
15
|
+
onChangeCommit(event);
|
|
16
|
+
};
|
|
17
|
+
element.addEventListener('input', handleInput);
|
|
18
|
+
element.addEventListener('change', handleChangeCommit);
|
|
19
|
+
return () => {
|
|
20
|
+
element.removeEventListener('input', handleInput);
|
|
21
|
+
element.removeEventListener('change', handleChangeCommit);
|
|
22
|
+
};
|
|
23
|
+
}, [onChange, onChangeCommit]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (ref && elementRef.current) {
|
|
26
|
+
if (typeof ref === 'function') {
|
|
27
|
+
ref(elementRef.current);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
ref.current = elementRef.current;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, [ref]);
|
|
34
|
+
const isDisabled = useBooleanProperty(elementRef, 'disabled', disabled);
|
|
35
|
+
const isRequired = useBooleanProperty(elementRef, 'required', required);
|
|
36
|
+
const webComponentProps = {
|
|
37
|
+
...props,
|
|
38
|
+
ref: elementRef,
|
|
39
|
+
};
|
|
40
|
+
if (isDisabled)
|
|
41
|
+
webComponentProps.disabled = '';
|
|
42
|
+
if (isRequired)
|
|
43
|
+
webComponentProps.required = '';
|
|
44
|
+
if (value !== undefined)
|
|
45
|
+
webComponentProps.value = value;
|
|
46
|
+
if (name)
|
|
47
|
+
webComponentProps.name = name;
|
|
48
|
+
if (label)
|
|
49
|
+
webComponentProps.label = label;
|
|
50
|
+
if (error)
|
|
51
|
+
webComponentProps.error = error;
|
|
52
|
+
if (orientation)
|
|
53
|
+
webComponentProps.orientation = orientation;
|
|
54
|
+
if (size)
|
|
55
|
+
webComponentProps.size = size;
|
|
56
|
+
if (flavor)
|
|
57
|
+
webComponentProps.flavor = flavor;
|
|
58
|
+
return React.createElement('ty-radio-group', webComponentProps, children);
|
|
59
|
+
});
|
|
60
|
+
TyRadioGroup.displayName = 'TyRadioGroup';
|
|
61
|
+
//# sourceMappingURL=TyRadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyRadioGroup.js","sourceRoot":"","sources":["../../src/components/TyRadioGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyResizeObserverProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Required unique identifier for size registry */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Debounce in milliseconds (default: 0 = no debounce) */
|
|
6
|
+
debounce?: number;
|
|
7
|
+
/** Content to observe */
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const TyResizeObserver: React.ForwardRefExoticComponent<TyResizeObserverProps & React.RefAttributes<HTMLElement>>;
|
|
11
|
+
//# sourceMappingURL=TyResizeObserver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyResizeObserver.d.ts","sourceRoot":"","sources":["../../src/components/TyResizeObserver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC9E,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IAEX,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAGD,eAAO,MAAM,gBAAgB,2FAoC5B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
// React wrapper for ty-resize-observer web component
|
|
3
|
+
export const TyResizeObserver = React.forwardRef(({ children, id, debounce, ...props }, ref) => {
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
// Combine refs if needed
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (ref && elementRef.current) {
|
|
8
|
+
if (typeof ref === 'function') {
|
|
9
|
+
ref(elementRef.current);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
ref.current = elementRef.current;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}, [ref]);
|
|
16
|
+
// Convert React props to web component attributes
|
|
17
|
+
const webComponentProps = {
|
|
18
|
+
...props,
|
|
19
|
+
ref: elementRef,
|
|
20
|
+
id,
|
|
21
|
+
};
|
|
22
|
+
// Add number attributes
|
|
23
|
+
if (debounce !== undefined)
|
|
24
|
+
webComponentProps.debounce = debounce;
|
|
25
|
+
return React.createElement('ty-resize-observer', webComponentProps, children);
|
|
26
|
+
});
|
|
27
|
+
TyResizeObserver.displayName = 'TyResizeObserver';
|
|
28
|
+
//# sourceMappingURL=TyResizeObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyResizeObserver.js","sourceRoot":"","sources":["../../src/components/TyResizeObserver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAcjD,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAC9C,CAAC,EACC,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,kDAAkD;IAClD,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;QACf,EAAE;KACH,CAAC;IAEF,wBAAwB;IACxB,IAAI,QAAQ,KAAK,SAAS;QAAE,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAElE,OAAO,KAAK,CAAC,aAAa,CACxB,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyScrollContainerProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Maximum height of the scroll container */
|
|
4
|
+
maxHeight?: string;
|
|
5
|
+
/** Enable/disable scroll shadows (default: true) */
|
|
6
|
+
shadow?: boolean;
|
|
7
|
+
/** Hide native scrollbar */
|
|
8
|
+
hideScrollbar?: boolean;
|
|
9
|
+
/** Content to scroll */
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export interface TyScrollContainerRef {
|
|
13
|
+
/** Force update shadows (useful after dynamic content changes) */
|
|
14
|
+
updateShadows: () => void;
|
|
15
|
+
/** Scroll to top */
|
|
16
|
+
scrollToTop: (smooth?: boolean) => void;
|
|
17
|
+
/** Scroll to bottom */
|
|
18
|
+
scrollToBottom: (smooth?: boolean) => void;
|
|
19
|
+
/** Get the underlying scroll element */
|
|
20
|
+
scrollElement: HTMLElement | null;
|
|
21
|
+
/** Get the native element */
|
|
22
|
+
element: HTMLElement | null;
|
|
23
|
+
}
|
|
24
|
+
export declare const TyScrollContainer: React.ForwardRefExoticComponent<TyScrollContainerProps & React.RefAttributes<TyScrollContainerRef>>;
|
|
25
|
+
//# sourceMappingURL=TyScrollContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyScrollContainer.d.ts","sourceRoot":"","sources":["../../src/components/TyScrollContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAKtE,MAAM,WAAW,sBAAuB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC/E,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAGD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,oBAAoB;IACpB,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,uBAAuB;IACvB,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,wCAAwC;IACxC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,6BAA6B;IAC7B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAGD,eAAO,MAAM,iBAAiB,qGAiE7B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useImperativeHandle } from 'react';
|
|
2
|
+
import { needsPropertyBridge } from '../utils/react-version';
|
|
3
|
+
import { useBooleanProperty, coerceBool } from '../utils/use-boolean-prop';
|
|
4
|
+
// React wrapper for ty-scroll-container web component
|
|
5
|
+
export const TyScrollContainer = React.forwardRef(({ children, maxHeight, shadow, hideScrollbar, ...props }, ref) => {
|
|
6
|
+
const elementRef = useRef(null);
|
|
7
|
+
// Expose imperative methods via ref
|
|
8
|
+
useImperativeHandle(ref, () => ({
|
|
9
|
+
updateShadows: () => {
|
|
10
|
+
const el = elementRef.current;
|
|
11
|
+
el?.updateShadows?.();
|
|
12
|
+
},
|
|
13
|
+
scrollToTop: (smooth = true) => {
|
|
14
|
+
const el = elementRef.current;
|
|
15
|
+
el?.scrollToTop?.(smooth);
|
|
16
|
+
},
|
|
17
|
+
scrollToBottom: (smooth = true) => {
|
|
18
|
+
const el = elementRef.current;
|
|
19
|
+
el?.scrollToBottom?.(smooth);
|
|
20
|
+
},
|
|
21
|
+
get scrollElement() {
|
|
22
|
+
const el = elementRef.current;
|
|
23
|
+
return el?.scrollElement ?? null;
|
|
24
|
+
},
|
|
25
|
+
get element() {
|
|
26
|
+
return elementRef.current;
|
|
27
|
+
}
|
|
28
|
+
}), []);
|
|
29
|
+
// shadow defaults to true; only the explicit-false case matters at the
|
|
30
|
+
// attribute level. Bridge it imperatively so flipping back to true
|
|
31
|
+
// propagates on React 18.
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!needsPropertyBridge)
|
|
34
|
+
return;
|
|
35
|
+
if (shadow === undefined)
|
|
36
|
+
return;
|
|
37
|
+
const el = elementRef.current;
|
|
38
|
+
if (!el)
|
|
39
|
+
return;
|
|
40
|
+
const next = coerceBool(shadow);
|
|
41
|
+
if (Boolean(el.shadow) !== next)
|
|
42
|
+
el.shadow = next;
|
|
43
|
+
}, [shadow]);
|
|
44
|
+
const isHideScrollbar = useBooleanProperty(elementRef, 'hideScrollbar', hideScrollbar);
|
|
45
|
+
// Convert React props to web component attributes
|
|
46
|
+
const webComponentProps = {
|
|
47
|
+
...props,
|
|
48
|
+
ref: elementRef,
|
|
49
|
+
};
|
|
50
|
+
// Add string attributes
|
|
51
|
+
if (maxHeight)
|
|
52
|
+
webComponentProps['max-height'] = maxHeight;
|
|
53
|
+
// Add boolean attributes
|
|
54
|
+
if (shadow !== undefined && !coerceBool(shadow))
|
|
55
|
+
webComponentProps.shadow = 'false';
|
|
56
|
+
if (isHideScrollbar)
|
|
57
|
+
webComponentProps['hide-scrollbar'] = '';
|
|
58
|
+
return React.createElement('ty-scroll-container', webComponentProps, children);
|
|
59
|
+
});
|
|
60
|
+
TyScrollContainer.displayName = 'TyScrollContainer';
|
|
61
|
+
//# sourceMappingURL=TyScrollContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyScrollContainer.js","sourceRoot":"","sources":["../../src/components/TyScrollContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA+B3E,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAC/C,CAAC,EACC,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,oCAAoC;IACpC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,aAAa,EAAE,GAAG,EAAE;YAClB,MAAM,EAAE,GAAG,UAAU,CAAC,OAAc,CAAC;YACrC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC;QACxB,CAAC;QACD,WAAW,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAC7B,MAAM,EAAE,GAAG,UAAU,CAAC,OAAc,CAAC;YACrC,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAChC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAc,CAAC;YACrC,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,aAAa;YACf,MAAM,EAAE,GAAG,UAAU,CAAC,OAAc,CAAC;YACrC,OAAO,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC;QACnC,CAAC;QACD,IAAI,OAAO;YACT,OAAO,UAAU,CAAC,OAAO,CAAC;QAC5B,CAAC;KACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAER,uEAAuE;IACvE,mEAAmE;IACnE,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACjC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,OAAc,CAAC;QACrC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI;YAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IACpD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;IAEvF,kDAAkD;IAClD,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,wBAAwB;IACxB,IAAI,SAAS;QAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IAE3D,yBAAyB;IACzB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,iBAAiB,CAAC,MAAM,GAAG,OAAO,CAAC;IACpF,IAAI,eAAe;QAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;IAE9D,OAAO,KAAK,CAAC,aAAa,CACxB,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyStepProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Required unique identifier for the step */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Main step title displayed in indicator */
|
|
6
|
+
label?: string;
|
|
7
|
+
/** Optional subtitle/description */
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Whether the step is disabled */
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
/** User-controlled status override */
|
|
12
|
+
status?: 'completed' | 'active' | 'pending' | 'error';
|
|
13
|
+
/** Step content */
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare const TyStep: React.ForwardRefExoticComponent<TyStepProps & React.RefAttributes<HTMLElement>>;
|
|
17
|
+
//# sourceMappingURL=TyStep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyStep.d.ts","sourceRoot":"","sources":["../../src/components/TyStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACpE,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IAEX,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,sCAAsC;IACtC,MAAM,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAEtD,mBAAmB;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAGD,eAAO,MAAM,MAAM,iFA4ClB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
// React wrapper for ty-step web component
|
|
3
|
+
export const TyStep = React.forwardRef(({ children, id, label, description, disabled, status, ...props }, ref) => {
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
// Combine refs if needed
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (ref && elementRef.current) {
|
|
8
|
+
if (typeof ref === 'function') {
|
|
9
|
+
ref(elementRef.current);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
ref.current = elementRef.current;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}, [ref]);
|
|
16
|
+
// Convert React props to web component attributes
|
|
17
|
+
const webComponentProps = {
|
|
18
|
+
...props,
|
|
19
|
+
ref: elementRef,
|
|
20
|
+
id,
|
|
21
|
+
};
|
|
22
|
+
// Add string attributes
|
|
23
|
+
if (label)
|
|
24
|
+
webComponentProps.label = label;
|
|
25
|
+
if (description)
|
|
26
|
+
webComponentProps.description = description;
|
|
27
|
+
if (status)
|
|
28
|
+
webComponentProps.status = status;
|
|
29
|
+
// Add boolean attributes
|
|
30
|
+
if (disabled)
|
|
31
|
+
webComponentProps.disabled = true;
|
|
32
|
+
return React.createElement('ty-step', webComponentProps, children);
|
|
33
|
+
});
|
|
34
|
+
TyStep.displayName = 'TyStep';
|
|
35
|
+
//# sourceMappingURL=TyStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyStep.js","sourceRoot":"","sources":["../../src/components/TyStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAuBjD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EACC,QAAQ,EACR,EAAE,EACF,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,kDAAkD;IAClD,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;QACf,EAAE;KACH,CAAC;IAEF,wBAAwB;IACxB,IAAI,KAAK;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3C,IAAI,WAAW;QAAE,iBAAiB,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7D,IAAI,MAAM;QAAE,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;IAE9C,yBAAyB;IACzB,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEhD,OAAO,KAAK,CAAC,aAAa,CACxB,SAAS,EACT,iBAAiB,EACjB,QAAQ,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TySwitchProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange' | 'onInput'> {
|
|
3
|
+
/** Checked (on) state */
|
|
4
|
+
checked?: boolean;
|
|
5
|
+
/** Form field value when checked */
|
|
6
|
+
value?: string;
|
|
7
|
+
/** Form field name */
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Disable the switch */
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
/** Required field */
|
|
12
|
+
required?: boolean;
|
|
13
|
+
/** Switch size */
|
|
14
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
15
|
+
/** Semantic styling variant */
|
|
16
|
+
flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
|
|
17
|
+
/**
|
|
18
|
+
* Fires when switch state changes (React convention)
|
|
19
|
+
* Maps to native 'input' event from ty-switch
|
|
20
|
+
*/
|
|
21
|
+
onChange?: (event: CustomEvent<TySwitchEventDetail>) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Fires on blur if value changed (native DOM behavior)
|
|
24
|
+
* Maps to native 'change' event from ty-switch
|
|
25
|
+
*/
|
|
26
|
+
onChangeCommit?: (event: CustomEvent<TySwitchEventDetail>) => void;
|
|
27
|
+
}
|
|
28
|
+
export interface TySwitchEventDetail {
|
|
29
|
+
value: boolean;
|
|
30
|
+
checked: boolean;
|
|
31
|
+
formValue: string | null;
|
|
32
|
+
originalEvent: Event;
|
|
33
|
+
}
|
|
34
|
+
export declare const TySwitch: React.ForwardRefExoticComponent<TySwitchProps & React.RefAttributes<HTMLElement>>;
|
|
35
|
+
//# sourceMappingURL=TySwitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TySwitch.d.ts","sourceRoot":"","sources":["../../src/components/TySwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpG,yBAAyB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEhF;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAE7D;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,mFAkEpB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { useBooleanProperty } from '../utils/use-boolean-prop';
|
|
3
|
+
export const TySwitch = React.forwardRef(({ checked, value, name, disabled, required, size, flavor, onChange, onChangeCommit, ...props }, ref) => {
|
|
4
|
+
const elementRef = useRef(null);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const element = elementRef.current;
|
|
7
|
+
if (!element)
|
|
8
|
+
return;
|
|
9
|
+
const handleInput = (event) => {
|
|
10
|
+
if (onChange)
|
|
11
|
+
onChange(event);
|
|
12
|
+
};
|
|
13
|
+
const handleChangeCommit = (event) => {
|
|
14
|
+
if (onChangeCommit)
|
|
15
|
+
onChangeCommit(event);
|
|
16
|
+
};
|
|
17
|
+
element.addEventListener('input', handleInput);
|
|
18
|
+
element.addEventListener('change', handleChangeCommit);
|
|
19
|
+
return () => {
|
|
20
|
+
element.removeEventListener('input', handleInput);
|
|
21
|
+
element.removeEventListener('change', handleChangeCommit);
|
|
22
|
+
};
|
|
23
|
+
}, [onChange, onChangeCommit]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (ref && elementRef.current) {
|
|
26
|
+
if (typeof ref === 'function') {
|
|
27
|
+
ref(elementRef.current);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
ref.current = elementRef.current;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, [ref]);
|
|
34
|
+
// Imperative property sync for boolean props (see use-boolean-prop.ts).
|
|
35
|
+
const isChecked = useBooleanProperty(elementRef, 'checked', checked);
|
|
36
|
+
const isDisabled = useBooleanProperty(elementRef, 'disabled', disabled);
|
|
37
|
+
const isRequired = useBooleanProperty(elementRef, 'required', required);
|
|
38
|
+
const webComponentProps = {
|
|
39
|
+
...props,
|
|
40
|
+
ref: elementRef,
|
|
41
|
+
};
|
|
42
|
+
if (isChecked)
|
|
43
|
+
webComponentProps.checked = '';
|
|
44
|
+
if (isDisabled)
|
|
45
|
+
webComponentProps.disabled = '';
|
|
46
|
+
if (isRequired)
|
|
47
|
+
webComponentProps.required = '';
|
|
48
|
+
if (value)
|
|
49
|
+
webComponentProps.value = value;
|
|
50
|
+
if (name)
|
|
51
|
+
webComponentProps.name = name;
|
|
52
|
+
if (size)
|
|
53
|
+
webComponentProps.size = size;
|
|
54
|
+
if (flavor)
|
|
55
|
+
webComponentProps.flavor = flavor;
|
|
56
|
+
return React.createElement('ty-switch', webComponentProps);
|
|
57
|
+
});
|
|
58
|
+
TySwitch.displayName = 'TySwitch';
|
|
59
|
+
//# sourceMappingURL=TySwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TySwitch.js","sourceRoot":"","sources":["../../src/components/TySwitch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TyTabProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Required unique identifier */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Simple text label */
|
|
6
|
+
label?: string;
|
|
7
|
+
/** Whether the tab is disabled */
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/** Tab content */
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare const TyTab: React.ForwardRefExoticComponent<TyTabProps & React.RefAttributes<HTMLElement>>;
|
|
13
|
+
//# sourceMappingURL=TyTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyTab.d.ts","sourceRoot":"","sources":["../../src/components/TyTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACnE,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IAEX,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAGD,eAAO,MAAM,KAAK,gFA2CjB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { useBooleanProperty } from '../utils/use-boolean-prop';
|
|
3
|
+
// React wrapper for ty-tab web component
|
|
4
|
+
export const TyTab = React.forwardRef(({ children, id, label, disabled, ...props }, ref) => {
|
|
5
|
+
const elementRef = useRef(null);
|
|
6
|
+
// Combine refs if needed
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (ref && elementRef.current) {
|
|
9
|
+
if (typeof ref === 'function') {
|
|
10
|
+
ref(elementRef.current);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
ref.current = elementRef.current;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}, [ref]);
|
|
17
|
+
// Convert React props to web component attributes
|
|
18
|
+
const webComponentProps = {
|
|
19
|
+
...props,
|
|
20
|
+
ref: elementRef,
|
|
21
|
+
};
|
|
22
|
+
// Add required attribute
|
|
23
|
+
webComponentProps.id = id;
|
|
24
|
+
// Add boolean attributes
|
|
25
|
+
const isDisabled = useBooleanProperty(elementRef, 'disabled', disabled);
|
|
26
|
+
if (isDisabled)
|
|
27
|
+
webComponentProps.disabled = '';
|
|
28
|
+
// Add string attributes
|
|
29
|
+
if (label)
|
|
30
|
+
webComponentProps.label = label;
|
|
31
|
+
return React.createElement('ty-tab', webComponentProps, children);
|
|
32
|
+
});
|
|
33
|
+
TyTab.displayName = 'TyTab';
|
|
34
|
+
//# sourceMappingURL=TyTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TyTab.js","sourceRoot":"","sources":["../../src/components/TyTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAiB/D,yCAAyC;AACzC,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CACnC,CAAC,EACC,QAAQ,EACR,EAAE,EACF,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,kDAAkD;IAClD,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;IAE1B,yBAAyB;IACzB,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxE,IAAI,UAAU;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAEhD,wBAAwB;IACxB,IAAI,KAAK;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IAE3C,OAAO,KAAK,CAAC,aAAa,CACxB,QAAQ,EACR,iBAAiB,EACjB,QAAQ,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
|