panelui-native 0.106.0 → 0.107.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/components/button/index.js +11 -2
- package/lib/module/components/button/index.js.map +1 -1
- package/lib/typescript/src/components/button/index.d.ts +17 -2
- package/lib/typescript/src/components/button/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/button/index.tsx +26 -4
|
@@ -260,6 +260,7 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
260
260
|
fullWidth,
|
|
261
261
|
disabled,
|
|
262
262
|
loading = false,
|
|
263
|
+
spinnerProps,
|
|
263
264
|
startContent,
|
|
264
265
|
endContent,
|
|
265
266
|
native,
|
|
@@ -429,9 +430,17 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
429
430
|
disabled: isDisabled,
|
|
430
431
|
busy: loading
|
|
431
432
|
},
|
|
432
|
-
children: [loading ?
|
|
433
|
+
children: [loading ?
|
|
434
|
+
/*#__PURE__*/
|
|
435
|
+
// The caller's props after the defaults, so a size they pick wins;
|
|
436
|
+
// the class goes through the slot so their tokens replace the
|
|
437
|
+
// variant's rather than competing with them.
|
|
438
|
+
_jsx(Spinner, {
|
|
433
439
|
size: SPINNER_SIZE[resolvedSize ?? 'md'],
|
|
434
|
-
|
|
440
|
+
...spinnerProps,
|
|
441
|
+
className: spinner({
|
|
442
|
+
className: spinnerProps?.className
|
|
443
|
+
})
|
|
435
444
|
}) : startContent, textChildren(children, text => /*#__PURE__*/_jsx(Text, {
|
|
436
445
|
className: label({
|
|
437
446
|
className: labelClassName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","forwardRef","useContext","View","tv","useCSSVariable","AnimatedPressable","Text","textChildren","cn","IconColorProvider","NativeHost","getNativeUI","getSwiftUIModifiers","Spinner","jsx","_jsx","jsxs","_jsxs","buttonVariants","slots","root","label","spinner","variants","variant","primary","secondary","outline","ghost","destructive","social","size","sm","md","lg","xl","icon","fullWidth","true","disabled","defaultVariants","ButtonGroupContext","ButtonGroupProvider","value","children","Provider","useButtonGroup","ATTACHED","SPINNER_SIZE","BUTTON_HIT_SLOP","CONTENT_COLOR_VAR","NATIVE_HEIGHT","NATIVE_ICON_PADDING","NATIVE_ICON_FRAME","NATIVE_CONTROL_SIZE","NATIVE_VARIANT","Button","className","labelClassName","loading","startContent","endContent","native","systemImage","glass","accessibilityState","props","ref","isDisabled","nativeUI","group","attached","resolvedVariant","resolvedSize","themedColor","contentColor","undefined","Host","NativeButton","RNHostView","isStringLabel","prominent","swiftUI","nativeModifiers","buttonStyle","buttonBorderShape","controlSize","filter","Boolean","nativeContent","hostFrame","width","height","host","matchContents","horizontal","ignoreSafeArea","style","modifiers","length","onPress","padding","alignItems","justifyContent","color","text","hitSlop","pressScale","accessibilityRole","busy","displayName"],"sourceRoot":"../../../../src","sources":["components/button/index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,UAAU,QAAwB,OAAO;AAC7E,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,EAAE,QAA2B,mBAAmB;AACzD,SAASC,cAAc,QAAQ,SAAS;AACxC,SACEC,iBAAiB,QAEZ,wCAAqC;AAC5C,SAASC,IAAI,EAAEC,YAAY,QAAQ,0BAAuB;AAC1D,SAASC,EAAE,QAAQ,mBAAgB;AACnC,SAASC,iBAAiB,QAAQ,sBAAa;AAC/C,SAASC,UAAU,EAAEC,WAAW,EAAEC,mBAAmB,QAAQ,uBAAc;AAC3E,SAASC,OAAO,
|
|
1
|
+
{"version":3,"names":["createContext","forwardRef","useContext","View","tv","useCSSVariable","AnimatedPressable","Text","textChildren","cn","IconColorProvider","NativeHost","getNativeUI","getSwiftUIModifiers","Spinner","jsx","_jsx","jsxs","_jsxs","buttonVariants","slots","root","label","spinner","variants","variant","primary","secondary","outline","ghost","destructive","social","size","sm","md","lg","xl","icon","fullWidth","true","disabled","defaultVariants","ButtonGroupContext","ButtonGroupProvider","value","children","Provider","useButtonGroup","ATTACHED","SPINNER_SIZE","BUTTON_HIT_SLOP","CONTENT_COLOR_VAR","NATIVE_HEIGHT","NATIVE_ICON_PADDING","NATIVE_ICON_FRAME","NATIVE_CONTROL_SIZE","NATIVE_VARIANT","Button","className","labelClassName","loading","spinnerProps","startContent","endContent","native","systemImage","glass","accessibilityState","props","ref","isDisabled","nativeUI","group","attached","resolvedVariant","resolvedSize","themedColor","contentColor","undefined","Host","NativeButton","RNHostView","isStringLabel","prominent","swiftUI","nativeModifiers","buttonStyle","buttonBorderShape","controlSize","filter","Boolean","nativeContent","hostFrame","width","height","host","matchContents","horizontal","ignoreSafeArea","style","modifiers","length","onPress","padding","alignItems","justifyContent","color","text","hitSlop","pressScale","accessibilityRole","busy","displayName"],"sourceRoot":"../../../../src","sources":["components/button/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@ import { type ReactNode } from 'react';
|
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
import { type VariantProps } from 'tailwind-variants';
|
|
4
4
|
import { type AnimatedPressableProps } from '../../primitives/animated-pressable.js';
|
|
5
|
+
import { type SpinnerProps } from '../spinner/index.js';
|
|
5
6
|
declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
6
7
|
variant: {
|
|
7
8
|
primary: {
|
|
@@ -237,6 +238,20 @@ export interface ButtonProps extends Omit<AnimatedPressableProps, 'children' | '
|
|
|
237
238
|
disabled?: boolean;
|
|
238
239
|
/** Show a spinner and block presses while an action is in flight. */
|
|
239
240
|
loading?: boolean;
|
|
241
|
+
/**
|
|
242
|
+
* Props for the spinner `loading` shows. Leave it unset and the spinner is
|
|
243
|
+
* drawn in the label's colour, at a size picked from the button's.
|
|
244
|
+
*
|
|
245
|
+
* `color` paints the turning arc and `trackColor` the faint ring under it —
|
|
246
|
+
* any colour React Native accepts. `className` takes theme tokens instead,
|
|
247
|
+
* such as `border-t-success`. On a filled button, set the track as well as
|
|
248
|
+
* the arc: the default track is a tint of the label colour, and beside an
|
|
249
|
+
* arc in another colour it reads as a second spinner.
|
|
250
|
+
*
|
|
251
|
+
* There is no `label`. The button already announces itself as busy while it
|
|
252
|
+
* loads, so a label on the spinner would announce the same wait twice.
|
|
253
|
+
*/
|
|
254
|
+
spinnerProps?: Omit<SpinnerProps, 'label'>;
|
|
240
255
|
/** Content rendered before the label (replaced by the spinner while loading). */
|
|
241
256
|
startContent?: ReactNode;
|
|
242
257
|
/** Content rendered after the label. */
|
|
@@ -248,8 +263,8 @@ export interface ButtonProps extends Omit<AnimatedPressableProps, 'children' | '
|
|
|
248
263
|
* optional `@expo/ui` package; without it this prop does nothing.
|
|
249
264
|
*
|
|
250
265
|
* **Theme tokens do not apply** — the platform draws the button, so
|
|
251
|
-
* `className`, `fullWidth`, `startContent`, `endContent
|
|
252
|
-
* all ignored. `variant` maps onto the nearest platform style:
|
|
266
|
+
* `className`, `fullWidth`, `startContent`, `endContent`, `loading` and
|
|
267
|
+
* `spinnerProps` are all ignored. `variant` maps onto the nearest platform style:
|
|
253
268
|
* `primary`/`destructive` → filled, `outline` → outlined, everything else
|
|
254
269
|
* → text; `size` sets the height.
|
|
255
270
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wCAAqC,CAAC;AAK7C,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,qBAAY,CAAC;AAExD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqCd,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAA7E,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAA7E,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAkCjF,CAAC;AAEH,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAE9D,0BAA0B;AAC1B,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAWjE,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAEA;AAED,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,uBAAuB,GAAG,IAAI,CAE/D;AAoCD,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,UAAU,GAAG,UAAU,CAAC,EAC3D,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3C,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wCAAwC;IACxC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkFD,eAAO,MAAM,MAAM,8FAoNlB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "panelui-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.107.0",
|
|
4
4
|
"description": "High-performance React Native UI components for Expo. Semantic design tokens, powered by Uniwind (Tailwind v4) and Reanimated.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"module": "./lib/module/index.js",
|
|
@@ -10,7 +10,7 @@ import { Text, textChildren } from '../../primitives/text';
|
|
|
10
10
|
import { cn } from '../../utils/cn';
|
|
11
11
|
import { IconColorProvider } from '../../icons';
|
|
12
12
|
import { NativeHost, getNativeUI, getSwiftUIModifiers } from '../../native';
|
|
13
|
-
import { Spinner } from '../spinner';
|
|
13
|
+
import { Spinner, type SpinnerProps } from '../spinner';
|
|
14
14
|
|
|
15
15
|
const buttonVariants = tv({
|
|
16
16
|
slots: {
|
|
@@ -171,6 +171,20 @@ export interface ButtonProps
|
|
|
171
171
|
disabled?: boolean;
|
|
172
172
|
/** Show a spinner and block presses while an action is in flight. */
|
|
173
173
|
loading?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Props for the spinner `loading` shows. Leave it unset and the spinner is
|
|
176
|
+
* drawn in the label's colour, at a size picked from the button's.
|
|
177
|
+
*
|
|
178
|
+
* `color` paints the turning arc and `trackColor` the faint ring under it —
|
|
179
|
+
* any colour React Native accepts. `className` takes theme tokens instead,
|
|
180
|
+
* such as `border-t-success`. On a filled button, set the track as well as
|
|
181
|
+
* the arc: the default track is a tint of the label colour, and beside an
|
|
182
|
+
* arc in another colour it reads as a second spinner.
|
|
183
|
+
*
|
|
184
|
+
* There is no `label`. The button already announces itself as busy while it
|
|
185
|
+
* loads, so a label on the spinner would announce the same wait twice.
|
|
186
|
+
*/
|
|
187
|
+
spinnerProps?: Omit<SpinnerProps, 'label'>;
|
|
174
188
|
/** Content rendered before the label (replaced by the spinner while loading). */
|
|
175
189
|
startContent?: ReactNode;
|
|
176
190
|
/** Content rendered after the label. */
|
|
@@ -182,8 +196,8 @@ export interface ButtonProps
|
|
|
182
196
|
* optional `@expo/ui` package; without it this prop does nothing.
|
|
183
197
|
*
|
|
184
198
|
* **Theme tokens do not apply** — the platform draws the button, so
|
|
185
|
-
* `className`, `fullWidth`, `startContent`, `endContent
|
|
186
|
-
* all ignored. `variant` maps onto the nearest platform style:
|
|
199
|
+
* `className`, `fullWidth`, `startContent`, `endContent`, `loading` and
|
|
200
|
+
* `spinnerProps` are all ignored. `variant` maps onto the nearest platform style:
|
|
187
201
|
* `primary`/`destructive` → filled, `outline` → outlined, everything else
|
|
188
202
|
* → text; `size` sets the height.
|
|
189
203
|
*
|
|
@@ -321,6 +335,7 @@ export const Button = forwardRef<View, ButtonProps>(
|
|
|
321
335
|
fullWidth,
|
|
322
336
|
disabled,
|
|
323
337
|
loading = false,
|
|
338
|
+
spinnerProps,
|
|
324
339
|
startContent,
|
|
325
340
|
endContent,
|
|
326
341
|
native,
|
|
@@ -502,7 +517,14 @@ export const Button = forwardRef<View, ButtonProps>(
|
|
|
502
517
|
accessibilityState={{ ...accessibilityState, disabled: isDisabled, busy: loading }}
|
|
503
518
|
>
|
|
504
519
|
{loading ? (
|
|
505
|
-
|
|
520
|
+
// The caller's props after the defaults, so a size they pick wins;
|
|
521
|
+
// the class goes through the slot so their tokens replace the
|
|
522
|
+
// variant's rather than competing with them.
|
|
523
|
+
<Spinner
|
|
524
|
+
size={SPINNER_SIZE[resolvedSize ?? 'md']}
|
|
525
|
+
{...spinnerProps}
|
|
526
|
+
className={spinner({ className: spinnerProps?.className })}
|
|
527
|
+
/>
|
|
506
528
|
) : (
|
|
507
529
|
startContent
|
|
508
530
|
)}
|