tyrell-react 1.0.0-TC7 → 1.0.0-TC8

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/README.md CHANGED
@@ -259,18 +259,31 @@ for everything else (spacing, layout, typography). Don't mix `bg-blue-500` with
259
259
 
260
260
  ## 🎨 Icons (3000+ Available)
261
261
 
262
- Register icons via CDN before use:
262
+ Import only the icons you need (tree-shaking) and register them once at app startup
263
+ via the global `window.tyIcons` API exposed by `tyrell-components`:
263
264
 
264
- ```html
265
- <!-- In index.html -->
266
- <script type="module">
267
- import { check, heart, star } from 'https://cdn.jsdelivr.net/npm/tyrell-components@latest/dist/icons/lucide.js';
268
-
269
- window.tyrell.icons.register({ check, heart, star });
270
- </script>
265
+ ```tsx
266
+ // app/icons.ts (or wherever your app boots)
267
+ import { check, heart, star } from 'tyrell-components/icons/lucide';
268
+
269
+ export function registerIcons() {
270
+ window.tyIcons.register({ check, heart, star });
271
+ }
272
+ ```
273
+
274
+ ```tsx
275
+ // app/layout.tsx (call once, e.g. in a top-level effect)
276
+ 'use client';
277
+ import { useEffect } from 'react';
278
+ import { registerIcons } from './icons';
279
+
280
+ export default function RootLayout({ children }) {
281
+ useEffect(() => { registerIcons(); }, []);
282
+ return <>{children}</>;
283
+ }
271
284
  ```
272
285
 
273
- Then use in React:
286
+ Then use icons anywhere in React:
274
287
 
275
288
  ```tsx
276
289
  import { TyIcon, TyButton } from 'tyrell-react';
@@ -279,7 +292,7 @@ function IconExample() {
279
292
  return (
280
293
  <>
281
294
  <TyIcon name="check" size="lg" />
282
-
295
+
283
296
  <TyButton flavor="primary">
284
297
  <TyIcon name="heart" />
285
298
  Like
@@ -289,6 +302,17 @@ function IconExample() {
289
302
  }
290
303
  ```
291
304
 
305
+ CDN alternative (vanilla HTML, no bundler):
306
+
307
+ ```html
308
+ <script type="module">
309
+ import { check, heart, star }
310
+ from 'https://cdn.jsdelivr.net/npm/tyrell-components@latest/lib/icons/lucide.js';
311
+
312
+ window.tyIcons.register({ check, heart, star });
313
+ </script>
314
+ ```
315
+
292
316
  ## 📘 TypeScript Support
293
317
 
294
318
  Full TypeScript definitions included:
@@ -1 +1 @@
1
- {"version":3,"file":"TyButton.d.ts","sourceRoot":"","sources":["../../src/components/TyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,KAAK,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5F,KAAK,YAAY,GAAG,aAAa,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,aAAa,GAAG,CAAC;AAC9E,KAAK,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,aAAa;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACrF,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAErC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,mFA2EpB,CAAC"}
1
+ {"version":3,"file":"TyButton.d.ts","sourceRoot":"","sources":["../../src/components/TyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,KAAK,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5F,KAAK,YAAY,GAAG,aAAa,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,aAAa,GAAG,CAAC;AAC9E,KAAK,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,aAAa;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACrF,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAEtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAErC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,mFAgFpB,CAAC"}
@@ -1,30 +1,35 @@
1
- import React, { useEffect, useRef, useCallback } from 'react';
2
- export const TyButton = React.forwardRef(({ children, type, appearance, disabled, pill, action, wide, label, name, value, ...props }, ref) => {
1
+ import React, { useEffect, useRef } from 'react';
2
+ export const TyButton = React.forwardRef(({ children, type, appearance, disabled, pill, action, wide, label, name, value, onClick, ...props }, ref) => {
3
3
  const elementRef = useRef(null);
4
- const handleFormSubmission = useCallback((event) => {
5
- const element = elementRef.current;
6
- if (!element || type !== 'submit')
7
- return;
8
- const form = element.closest('form');
9
- if (!form)
10
- return;
11
- event.preventDefault();
12
- event.stopPropagation();
13
- const syntheticEvent = new Event('submit', {
14
- bubbles: true,
15
- cancelable: true
16
- });
17
- form.dispatchEvent(syntheticEvent);
18
- }, [type]);
4
+ // Imperatively attach the click listener so onClick reliably fires for the
5
+ // CustomEvent('click') that <ty-button> re-dispatches on its host (the
6
+ // inner <button> calls stopPropagation, so React's delegated onClick can
7
+ // miss it). Also handles type=submit by dispatching a synthetic submit.
19
8
  useEffect(() => {
20
9
  const element = elementRef.current;
21
- if (!element || type !== 'submit')
10
+ if (!element)
22
11
  return;
23
- element.addEventListener('click', handleFormSubmission);
12
+ const handler = (event) => {
13
+ if (type === 'submit') {
14
+ const form = element.closest('form');
15
+ if (form) {
16
+ event.preventDefault();
17
+ event.stopPropagation();
18
+ form.dispatchEvent(new Event('submit', {
19
+ bubbles: true,
20
+ cancelable: true,
21
+ }));
22
+ }
23
+ }
24
+ if (onClick) {
25
+ onClick(event);
26
+ }
27
+ };
28
+ element.addEventListener('click', handler);
24
29
  return () => {
25
- element.removeEventListener('click', handleFormSubmission);
30
+ element.removeEventListener('click', handler);
26
31
  };
27
- }, [type, handleFormSubmission]);
32
+ }, [type, onClick]);
28
33
  useEffect(() => {
29
34
  if (ref && elementRef.current) {
30
35
  if (typeof ref === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"TyButton.js","sourceRoot":"","sources":["../../src/components/TyButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TyButton.js","sourceRoot":"","sources":["../../src/components/TyButton.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;AAEjD,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,kFA4BnB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ export const TyRadio = React.forwardRef(({ children, value, checked, disabled, size, flavor, ...props }, ref) => {
3
+ const elementRef = useRef(null);
4
+ useEffect(() => {
5
+ if (ref && elementRef.current) {
6
+ if (typeof ref === 'function') {
7
+ ref(elementRef.current);
8
+ }
9
+ else {
10
+ ref.current = elementRef.current;
11
+ }
12
+ }
13
+ }, [ref]);
14
+ const webComponentProps = {
15
+ ...props,
16
+ ref: elementRef,
17
+ };
18
+ if (checked)
19
+ webComponentProps.checked = '';
20
+ if (disabled)
21
+ webComponentProps.disabled = '';
22
+ if (value !== undefined)
23
+ webComponentProps.value = value;
24
+ if (size)
25
+ webComponentProps.size = size;
26
+ if (flavor)
27
+ webComponentProps.flavor = flavor;
28
+ return React.createElement('ty-radio', webComponentProps, children);
29
+ });
30
+ TyRadio.displayName = 'TyRadio';
31
+ //# 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;AAyBjD,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,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,IAAI,OAAO;QAAE,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAE9C,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;AAEjD,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,uFAkExB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ export const TyRadioGroup = React.forwardRef(({ children, value, name, label, disabled, required, error, orientation, size, flavor, onChange, onChangeCommit, ...props }, ref) => {
3
+ const elementRef = useRef(null);
4
+ useEffect(() => {
5
+ const element = elementRef.current;
6
+ if (!element)
7
+ return;
8
+ const handleInput = (event) => {
9
+ if (onChange)
10
+ onChange(event);
11
+ };
12
+ const handleChangeCommit = (event) => {
13
+ if (onChangeCommit)
14
+ onChangeCommit(event);
15
+ };
16
+ element.addEventListener('input', handleInput);
17
+ element.addEventListener('change', handleChangeCommit);
18
+ return () => {
19
+ element.removeEventListener('input', handleInput);
20
+ element.removeEventListener('change', handleChangeCommit);
21
+ };
22
+ }, [onChange, onChangeCommit]);
23
+ useEffect(() => {
24
+ if (ref && elementRef.current) {
25
+ if (typeof ref === 'function') {
26
+ ref(elementRef.current);
27
+ }
28
+ else {
29
+ ref.current = elementRef.current;
30
+ }
31
+ }
32
+ }, [ref]);
33
+ const webComponentProps = {
34
+ ...props,
35
+ ref: elementRef,
36
+ };
37
+ if (disabled)
38
+ webComponentProps.disabled = '';
39
+ if (required)
40
+ webComponentProps.required = '';
41
+ if (value !== undefined)
42
+ webComponentProps.value = value;
43
+ if (name)
44
+ webComponentProps.name = name;
45
+ if (label)
46
+ webComponentProps.label = label;
47
+ if (error)
48
+ webComponentProps.error = error;
49
+ if (orientation)
50
+ webComponentProps.orientation = orientation;
51
+ if (size)
52
+ webComponentProps.size = size;
53
+ if (flavor)
54
+ webComponentProps.flavor = flavor;
55
+ return React.createElement('ty-radio-group', webComponentProps, children);
56
+ });
57
+ TyRadioGroup.displayName = 'TyRadioGroup';
58
+ //# sourceMappingURL=TyRadioGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TyRadioGroup.js","sourceRoot":"","sources":["../../src/components/TyRadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAoDjD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,CAAC,EACC,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACnC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,KAA6C,CAAC,CAAC;QACxE,CAAC,CAAC;QACF,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC1C,IAAI,cAAc;gBAAE,cAAc,CAAC,KAA6C,CAAC,CAAC;QACpF,CAAC,CAAC;QAEF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAEvD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC5D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/B,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,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9C,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAE9C,IAAI,KAAK,KAAK,SAAS;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IACzD,IAAI,IAAI;QAAE,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;IACxC,IAAI,KAAK;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3C,IAAI,KAAK;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3C,IAAI,WAAW;QAAE,iBAAiB,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7D,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,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,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;AAEjD,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,mFA6DpB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ export const TySwitch = React.forwardRef(({ checked, value, name, disabled, required, size, flavor, onChange, onChangeCommit, ...props }, ref) => {
3
+ const elementRef = useRef(null);
4
+ useEffect(() => {
5
+ const element = elementRef.current;
6
+ if (!element)
7
+ return;
8
+ const handleInput = (event) => {
9
+ if (onChange)
10
+ onChange(event);
11
+ };
12
+ const handleChangeCommit = (event) => {
13
+ if (onChangeCommit)
14
+ onChangeCommit(event);
15
+ };
16
+ element.addEventListener('input', handleInput);
17
+ element.addEventListener('change', handleChangeCommit);
18
+ return () => {
19
+ element.removeEventListener('input', handleInput);
20
+ element.removeEventListener('change', handleChangeCommit);
21
+ };
22
+ }, [onChange, onChangeCommit]);
23
+ useEffect(() => {
24
+ if (ref && elementRef.current) {
25
+ if (typeof ref === 'function') {
26
+ ref(elementRef.current);
27
+ }
28
+ else {
29
+ ref.current = elementRef.current;
30
+ }
31
+ }
32
+ }, [ref]);
33
+ const webComponentProps = {
34
+ ...props,
35
+ ref: elementRef,
36
+ };
37
+ if (checked)
38
+ webComponentProps.checked = '';
39
+ if (disabled)
40
+ webComponentProps.disabled = '';
41
+ if (required)
42
+ webComponentProps.required = '';
43
+ if (value)
44
+ webComponentProps.value = value;
45
+ if (name)
46
+ webComponentProps.name = name;
47
+ if (size)
48
+ webComponentProps.size = size;
49
+ if (flavor)
50
+ webComponentProps.flavor = flavor;
51
+ return React.createElement('ty-switch', webComponentProps);
52
+ });
53
+ TySwitch.displayName = 'TySwitch';
54
+ //# sourceMappingURL=TySwitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TySwitch.js","sourceRoot":"","sources":["../../src/components/TySwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AA4CjD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CACtC,CAAC,EACC,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,GAAG,KAAK,EACT,EAAE,GAAG,EAAE,EAAE;IACR,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACnC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,KAAyC,CAAC,CAAC;QACpE,CAAC,CAAC;QACF,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC1C,IAAI,cAAc;gBAAE,cAAc,CAAC,KAAyC,CAAC,CAAC;QAChF,CAAC,CAAC;QAEF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAEvD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC5D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/B,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,MAAM,iBAAiB,GAAwB;QAC7C,GAAG,KAAK;QACR,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,IAAI,OAAO;QAAE,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9C,IAAI,QAAQ;QAAE,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;IAE9C,IAAI,KAAK;QAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3C,IAAI,IAAI;QAAE,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;IACxC,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,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC7D,CAAC,CACF,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
@@ -26,6 +26,12 @@ export { TyPopup } from './TyPopup';
26
26
  export type { TyPopupProps, TyPopupElement } from './TyPopup';
27
27
  export { TyCheckbox } from './TyCheckbox';
28
28
  export type { TyCheckboxProps, TyCheckboxEventDetail } from './TyCheckbox';
29
+ export { TySwitch } from './TySwitch';
30
+ export type { TySwitchProps, TySwitchEventDetail } from './TySwitch';
31
+ export { TyRadio } from './TyRadio';
32
+ export type { TyRadioProps } from './TyRadio';
33
+ export { TyRadioGroup } from './TyRadioGroup';
34
+ export type { TyRadioGroupProps, TyRadioGroupEventDetail } from './TyRadioGroup';
29
35
  export { TyCopy } from './TyCopy';
30
36
  export type { TyCopyProps } from './TyCopy';
31
37
  export { TyTabs } from './TyTabs';
@@ -58,6 +64,9 @@ export { TyCalendar as Calendar } from './TyCalendar';
58
64
  export { TyDatePicker as DatePicker } from './TyDatePicker';
59
65
  export { TyPopup as Popup } from './TyPopup';
60
66
  export { TyCheckbox as Checkbox } from './TyCheckbox';
67
+ export { TySwitch as Switch } from './TySwitch';
68
+ export { TyRadio as Radio } from './TyRadio';
69
+ export { TyRadioGroup as RadioGroup } from './TyRadioGroup';
61
70
  export { TyCopy as Copy } from './TyCopy';
62
71
  export { TyTabs as Tabs } from './TyTabs';
63
72
  export { TyTab as Tab } from './TyTab';
@@ -81,6 +90,9 @@ export type { TyCalendarProps as CalendarProps, TyCalendarChangeEventDetail as C
81
90
  export type { TyDatePickerProps as DatePickerProps, TyDatePickerEventDetail as DatePickerEventDetail } from './TyDatePicker';
82
91
  export type { TyPopupProps as PopupProps, TyPopupElement as PopupElement } from './TyPopup';
83
92
  export type { TyCheckboxProps as CheckboxProps, TyCheckboxEventDetail as CheckboxEventDetail } from './TyCheckbox';
93
+ export type { TySwitchProps as SwitchProps, TySwitchEventDetail as SwitchEventDetail } from './TySwitch';
94
+ export type { TyRadioProps as RadioProps } from './TyRadio';
95
+ export type { TyRadioGroupProps as RadioGroupProps, TyRadioGroupEventDetail as RadioGroupEventDetail } from './TyRadioGroup';
84
96
  export type { TyCopyProps as CopyProps } from './TyCopy';
85
97
  export type { TyTabsProps as TabsProps } from './TyTabs';
86
98
  export type { TyTabProps as TabProps } from './TyTab';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAOxF,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,gBAAgB,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,iBAAiB,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3E,YAAY,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAG/D,YAAY,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,YAAY,EAAE,YAAY,IAAI,UAAU,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGpG,YAAY,EAAE,eAAe,IAAI,aAAa,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnH,YAAY,EAAE,eAAe,IAAI,aAAa,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/H,YAAY,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAG/D,YAAY,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,YAAY,EAAE,YAAY,IAAI,UAAU,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG5H,YAAY,EAAE,cAAc,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAGlE,YAAY,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,wBAAwB,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGlI,YAAY,EAAE,eAAe,IAAI,aAAa,EAAE,2BAA2B,IAAI,yBAAyB,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG7L,YAAY,EAAE,iBAAiB,IAAI,eAAe,EAAE,uBAAuB,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG7H,YAAY,EAAE,YAAY,IAAI,UAAU,EAAE,cAAc,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAG5F,YAAY,EAAE,eAAe,IAAI,aAAa,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnH,YAAY,EAAE,aAAa,IAAI,WAAW,EAAE,mBAAmB,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGzG,YAAY,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5D,YAAY,EAAE,iBAAiB,IAAI,eAAe,EAAE,uBAAuB,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG7H,YAAY,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,YAAY,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,YAAY,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,YAAY,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGpF,YAAY,EAAE,yBAAyB,IAAI,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGnG,YAAY,EAAE,aAAa,IAAI,WAAW,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3G,YAAY,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,YAAY,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGvF,YAAY,EAAE,sBAAsB,IAAI,oBAAoB,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -23,6 +23,9 @@ export { TyCalendar } from './TyCalendar';
23
23
  export { TyDatePicker } from './TyDatePicker';
24
24
  export { TyPopup } from './TyPopup';
25
25
  export { TyCheckbox } from './TyCheckbox';
26
+ export { TySwitch } from './TySwitch';
27
+ export { TyRadio } from './TyRadio';
28
+ export { TyRadioGroup } from './TyRadioGroup';
26
29
  export { TyCopy } from './TyCopy';
27
30
  export { TyTabs } from './TyTabs';
28
31
  export { TyTab } from './TyTab';
@@ -49,6 +52,9 @@ export { TyCalendar as Calendar } from './TyCalendar';
49
52
  export { TyDatePicker as DatePicker } from './TyDatePicker';
50
53
  export { TyPopup as Popup } from './TyPopup';
51
54
  export { TyCheckbox as Checkbox } from './TyCheckbox';
55
+ export { TySwitch as Switch } from './TySwitch';
56
+ export { TyRadio as Radio } from './TyRadio';
57
+ export { TyRadioGroup as RadioGroup } from './TyRadioGroup';
52
58
  export { TyCopy as Copy } from './TyCopy';
53
59
  export { TyTabs as Tabs } from './TyTabs';
54
60
  export { TyTab as Tab } from './TyTab';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tyrell-react",
3
- "version": "1.0.0-TC7",
3
+ "version": "1.0.0-TC8",
4
4
  "description": "React wrappers for Tyrell Components",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",
@@ -72,36 +72,41 @@ export const TyButton = React.forwardRef<HTMLElement, TyButtonProps>(
72
72
  label,
73
73
  name,
74
74
  value,
75
+ onClick,
75
76
  ...props
76
77
  }, ref) => {
77
78
  const elementRef = useRef<HTMLElement>(null);
78
79
 
79
- const handleFormSubmission = useCallback((event: Event) => {
80
- const element = elementRef.current;
81
- if (!element || type !== 'submit') return;
82
-
83
- const form = element.closest('form');
84
- if (!form) return;
85
-
86
- event.preventDefault();
87
- event.stopPropagation();
88
-
89
- const syntheticEvent = new Event('submit', {
90
- bubbles: true,
91
- cancelable: true
92
- });
93
- form.dispatchEvent(syntheticEvent);
94
- }, [type]);
95
-
80
+ // Imperatively attach the click listener so onClick reliably fires for the
81
+ // CustomEvent('click') that <ty-button> re-dispatches on its host (the
82
+ // inner <button> calls stopPropagation, so React's delegated onClick can
83
+ // miss it). Also handles type=submit by dispatching a synthetic submit.
96
84
  useEffect(() => {
97
85
  const element = elementRef.current;
98
- if (!element || type !== 'submit') return;
86
+ if (!element) return;
87
+
88
+ const handler = (event: Event) => {
89
+ if (type === 'submit') {
90
+ const form = element.closest('form');
91
+ if (form) {
92
+ event.preventDefault();
93
+ event.stopPropagation();
94
+ form.dispatchEvent(new Event('submit', {
95
+ bubbles: true,
96
+ cancelable: true,
97
+ }));
98
+ }
99
+ }
100
+ if (onClick) {
101
+ onClick(event as unknown as React.MouseEvent<HTMLElement>);
102
+ }
103
+ };
99
104
 
100
- element.addEventListener('click', handleFormSubmission);
105
+ element.addEventListener('click', handler);
101
106
  return () => {
102
- element.removeEventListener('click', handleFormSubmission);
107
+ element.removeEventListener('click', handler);
103
108
  };
104
- }, [type, handleFormSubmission]);
109
+ }, [type, onClick]);
105
110
 
106
111
  useEffect(() => {
107
112
  if (ref && elementRef.current) {
@@ -0,0 +1,56 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ export interface TyRadioProps extends React.HTMLAttributes<HTMLElement> {
4
+ /** Form field value (selected by parent ty-radio-group when matches its `value`) */
5
+ value?: string;
6
+
7
+ /**
8
+ * Selected state. Usually managed by the parent `<TyRadioGroup>` based on its
9
+ * own `value`; set explicitly only when using `ty-radio` outside a group.
10
+ */
11
+ checked?: boolean;
12
+
13
+ /** Disable this individual radio */
14
+ disabled?: boolean;
15
+
16
+ /** Radio size — typically inherited from the parent group */
17
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
18
+
19
+ /** Semantic styling variant — typically inherited from the parent group */
20
+ flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
21
+
22
+ /** Label content (wrap in a `<label>` for click delegation, see ty-radio docs) */
23
+ children?: React.ReactNode;
24
+ }
25
+
26
+ export const TyRadio = React.forwardRef<HTMLElement, TyRadioProps>(
27
+ ({ children, value, checked, disabled, size, flavor, ...props }, ref) => {
28
+ const elementRef = useRef<HTMLElement>(null);
29
+
30
+ useEffect(() => {
31
+ if (ref && elementRef.current) {
32
+ if (typeof ref === 'function') {
33
+ ref(elementRef.current);
34
+ } else {
35
+ ref.current = elementRef.current;
36
+ }
37
+ }
38
+ }, [ref]);
39
+
40
+ const webComponentProps: Record<string, any> = {
41
+ ...props,
42
+ ref: elementRef,
43
+ };
44
+
45
+ if (checked) webComponentProps.checked = '';
46
+ if (disabled) webComponentProps.disabled = '';
47
+
48
+ if (value !== undefined) webComponentProps.value = value;
49
+ if (size) webComponentProps.size = size;
50
+ if (flavor) webComponentProps.flavor = flavor;
51
+
52
+ return React.createElement('ty-radio', webComponentProps, children);
53
+ }
54
+ );
55
+
56
+ TyRadio.displayName = 'TyRadio';
@@ -0,0 +1,121 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ export interface TyRadioGroupProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange' | 'onInput'> {
4
+ /** Currently selected value (matches one child `<TyRadio value="...">`) */
5
+ value?: string;
6
+
7
+ /** Form field name */
8
+ name?: string;
9
+
10
+ /** Group label rendered above the radios */
11
+ label?: string;
12
+
13
+ /** Disable the entire group */
14
+ disabled?: boolean;
15
+
16
+ /** Required field — renders required-icon next to the label */
17
+ required?: boolean;
18
+
19
+ /** Error message rendered below the group */
20
+ error?: string;
21
+
22
+ /** Layout direction for radio children */
23
+ orientation?: 'vertical' | 'horizontal';
24
+
25
+ /** Group size — propagates to all `<TyRadio>` children */
26
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
27
+
28
+ /** Group flavor — propagates to all `<TyRadio>` children */
29
+ flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
30
+
31
+ /**
32
+ * Fires when selection changes (React convention)
33
+ * Maps to native 'input' event from ty-radio-group
34
+ */
35
+ onChange?: (event: CustomEvent<TyRadioGroupEventDetail>) => void;
36
+
37
+ /**
38
+ * Fires on blur if value changed (native DOM behavior)
39
+ * Maps to native 'change' event from ty-radio-group
40
+ */
41
+ onChangeCommit?: (event: CustomEvent<TyRadioGroupEventDetail>) => void;
42
+
43
+ /** `<TyRadio>` children */
44
+ children?: React.ReactNode;
45
+ }
46
+
47
+ export interface TyRadioGroupEventDetail {
48
+ value: string;
49
+ formValue: string;
50
+ originalEvent: Event;
51
+ }
52
+
53
+ export const TyRadioGroup = React.forwardRef<HTMLElement, TyRadioGroupProps>(
54
+ ({
55
+ children,
56
+ value,
57
+ name,
58
+ label,
59
+ disabled,
60
+ required,
61
+ error,
62
+ orientation,
63
+ size,
64
+ flavor,
65
+ onChange,
66
+ onChangeCommit,
67
+ ...props
68
+ }, ref) => {
69
+ const elementRef = useRef<HTMLElement>(null);
70
+
71
+ useEffect(() => {
72
+ const element = elementRef.current;
73
+ if (!element) return;
74
+
75
+ const handleInput = (event: Event) => {
76
+ if (onChange) onChange(event as CustomEvent<TyRadioGroupEventDetail>);
77
+ };
78
+ const handleChangeCommit = (event: Event) => {
79
+ if (onChangeCommit) onChangeCommit(event as CustomEvent<TyRadioGroupEventDetail>);
80
+ };
81
+
82
+ element.addEventListener('input', handleInput);
83
+ element.addEventListener('change', handleChangeCommit);
84
+
85
+ return () => {
86
+ element.removeEventListener('input', handleInput);
87
+ element.removeEventListener('change', handleChangeCommit);
88
+ };
89
+ }, [onChange, onChangeCommit]);
90
+
91
+ useEffect(() => {
92
+ if (ref && elementRef.current) {
93
+ if (typeof ref === 'function') {
94
+ ref(elementRef.current);
95
+ } else {
96
+ ref.current = elementRef.current;
97
+ }
98
+ }
99
+ }, [ref]);
100
+
101
+ const webComponentProps: Record<string, any> = {
102
+ ...props,
103
+ ref: elementRef,
104
+ };
105
+
106
+ if (disabled) webComponentProps.disabled = '';
107
+ if (required) webComponentProps.required = '';
108
+
109
+ if (value !== undefined) webComponentProps.value = value;
110
+ if (name) webComponentProps.name = name;
111
+ if (label) webComponentProps.label = label;
112
+ if (error) webComponentProps.error = error;
113
+ if (orientation) webComponentProps.orientation = orientation;
114
+ if (size) webComponentProps.size = size;
115
+ if (flavor) webComponentProps.flavor = flavor;
116
+
117
+ return React.createElement('ty-radio-group', webComponentProps, children);
118
+ }
119
+ );
120
+
121
+ TyRadioGroup.displayName = 'TyRadioGroup';
@@ -0,0 +1,108 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+
3
+ export interface TySwitchProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange' | 'onInput'> {
4
+ /** Checked (on) state */
5
+ checked?: boolean;
6
+
7
+ /** Form field value when checked */
8
+ value?: string;
9
+
10
+ /** Form field name */
11
+ name?: string;
12
+
13
+ /** Disable the switch */
14
+ disabled?: boolean;
15
+
16
+ /** Required field */
17
+ required?: boolean;
18
+
19
+ /** Switch size */
20
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
21
+
22
+ /** Semantic styling variant */
23
+ flavor?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'neutral';
24
+
25
+ /**
26
+ * Fires when switch state changes (React convention)
27
+ * Maps to native 'input' event from ty-switch
28
+ */
29
+ onChange?: (event: CustomEvent<TySwitchEventDetail>) => void;
30
+
31
+ /**
32
+ * Fires on blur if value changed (native DOM behavior)
33
+ * Maps to native 'change' event from ty-switch
34
+ */
35
+ onChangeCommit?: (event: CustomEvent<TySwitchEventDetail>) => void;
36
+ }
37
+
38
+ export interface TySwitchEventDetail {
39
+ value: boolean;
40
+ checked: boolean;
41
+ formValue: string | null;
42
+ originalEvent: Event;
43
+ }
44
+
45
+ export const TySwitch = React.forwardRef<HTMLElement, TySwitchProps>(
46
+ ({
47
+ checked,
48
+ value,
49
+ name,
50
+ disabled,
51
+ required,
52
+ size,
53
+ flavor,
54
+ onChange,
55
+ onChangeCommit,
56
+ ...props
57
+ }, ref) => {
58
+ const elementRef = useRef<HTMLElement>(null);
59
+
60
+ useEffect(() => {
61
+ const element = elementRef.current;
62
+ if (!element) return;
63
+
64
+ const handleInput = (event: Event) => {
65
+ if (onChange) onChange(event as CustomEvent<TySwitchEventDetail>);
66
+ };
67
+ const handleChangeCommit = (event: Event) => {
68
+ if (onChangeCommit) onChangeCommit(event as CustomEvent<TySwitchEventDetail>);
69
+ };
70
+
71
+ element.addEventListener('input', handleInput);
72
+ element.addEventListener('change', handleChangeCommit);
73
+
74
+ return () => {
75
+ element.removeEventListener('input', handleInput);
76
+ element.removeEventListener('change', handleChangeCommit);
77
+ };
78
+ }, [onChange, onChangeCommit]);
79
+
80
+ useEffect(() => {
81
+ if (ref && elementRef.current) {
82
+ if (typeof ref === 'function') {
83
+ ref(elementRef.current);
84
+ } else {
85
+ ref.current = elementRef.current;
86
+ }
87
+ }
88
+ }, [ref]);
89
+
90
+ const webComponentProps: Record<string, any> = {
91
+ ...props,
92
+ ref: elementRef,
93
+ };
94
+
95
+ if (checked) webComponentProps.checked = '';
96
+ if (disabled) webComponentProps.disabled = '';
97
+ if (required) webComponentProps.required = '';
98
+
99
+ if (value) webComponentProps.value = value;
100
+ if (name) webComponentProps.name = name;
101
+ if (size) webComponentProps.size = size;
102
+ if (flavor) webComponentProps.flavor = flavor;
103
+
104
+ return React.createElement('ty-switch', webComponentProps);
105
+ }
106
+ );
107
+
108
+ TySwitch.displayName = 'TySwitch';
@@ -53,6 +53,15 @@ export type { TyPopupProps, TyPopupElement } from './TyPopup';
53
53
  export { TyCheckbox } from './TyCheckbox';
54
54
  export type { TyCheckboxProps, TyCheckboxEventDetail } from './TyCheckbox';
55
55
 
56
+ export { TySwitch } from './TySwitch';
57
+ export type { TySwitchProps, TySwitchEventDetail } from './TySwitch';
58
+
59
+ export { TyRadio } from './TyRadio';
60
+ export type { TyRadioProps } from './TyRadio';
61
+
62
+ export { TyRadioGroup } from './TyRadioGroup';
63
+ export type { TyRadioGroupProps, TyRadioGroupEventDetail } from './TyRadioGroup';
64
+
56
65
  export { TyCopy } from './TyCopy';
57
66
  export type { TyCopyProps } from './TyCopy';
58
67
 
@@ -99,6 +108,9 @@ export { TyCalendar as Calendar } from './TyCalendar';
99
108
  export { TyDatePicker as DatePicker } from './TyDatePicker';
100
109
  export { TyPopup as Popup } from './TyPopup';
101
110
  export { TyCheckbox as Checkbox } from './TyCheckbox';
111
+ export { TySwitch as Switch } from './TySwitch';
112
+ export { TyRadio as Radio } from './TyRadio';
113
+ export { TyRadioGroup as RadioGroup } from './TyRadioGroup';
102
114
  export { TyCopy as Copy } from './TyCopy';
103
115
  export { TyTabs as Tabs } from './TyTabs';
104
116
  export { TyTab as Tab } from './TyTab';
@@ -155,6 +167,15 @@ export type { TyPopupProps as PopupProps, TyPopupElement as PopupElement } from
155
167
  // Checkbox types
156
168
  export type { TyCheckboxProps as CheckboxProps, TyCheckboxEventDetail as CheckboxEventDetail } from './TyCheckbox';
157
169
 
170
+ // Switch types
171
+ export type { TySwitchProps as SwitchProps, TySwitchEventDetail as SwitchEventDetail } from './TySwitch';
172
+
173
+ // Radio types
174
+ export type { TyRadioProps as RadioProps } from './TyRadio';
175
+
176
+ // RadioGroup types
177
+ export type { TyRadioGroupProps as RadioGroupProps, TyRadioGroupEventDetail as RadioGroupEventDetail } from './TyRadioGroup';
178
+
158
179
  // Copy types
159
180
  export type { TyCopyProps as CopyProps } from './TyCopy';
160
181