@brosco/ui 0.0.126 → 0.0.127

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
@@ -1 +1 @@
1
- UI Components based on Base UI
1
+ UI components based on Base UI
package/dist/index.d.ts CHANGED
@@ -1,196 +1,263 @@
1
- import { ButtonProps as ButtonProps_2 } from '@base-ui/react/button';
2
- import { ContextMenuPortalProps } from '@base-ui/react';
3
- import { ForwardRefExoticComponent } from 'react';
4
- import { JSX } from 'react';
5
- import { Menu as Menu_2 } from '@base-ui/react/menu';
6
- import { ReactNode } from 'react';
7
- import { RefAttributes } from 'react';
8
- import { SVGProps } from 'react';
9
- import { Tabs as Tabs_2 } from '@base-ui/react/tabs';
10
- import { TabsRootProps } from '@base-ui/react';
11
- import { TVReturnType } from 'tailwind-variants';
12
- import { TVReturnTypeLike } from 'tailwind-variants';
13
- import { VariantProps } from 'tailwind-variants';
14
-
15
- declare type ArrowSvgProps = SVGProps<SVGSVGElement> & {
16
- size?: number;
17
- };
18
-
19
- export declare const Button: ({ children, className, render, icon, iconAtEnd, isPending, disabled, variant, color, rounded, size, isIconOnly, fullWidth, ...props }: ButtonProps) => JSX.Element;
20
-
21
- declare type ButtonProps = ButtonProps_2 & VariantProps<typeof linkVariants> & {
22
- icon?: ReactNode;
23
- iconAtEnd?: ReactNode;
24
- isPending?: boolean;
25
- };
26
-
27
- declare const linkVariants: TVReturnType<{
28
- variant: {
29
- solid: "button--solid";
30
- bordered: "button--bordered";
31
- light: "button--light";
32
- };
33
- color: {
34
- primary: "button--primary";
35
- secondary: "button--secondary";
36
- success: "button--success";
37
- danger: "button--danger";
38
- };
39
- rounded: {
40
- full: "rounded-full";
41
- lg: "rounded-lg";
42
- md: "rounded-md";
43
- sm: "rounded-sm";
44
- none: "rounded-none";
45
- };
46
- size: {
47
- sm: "button--sm";
48
- md: "button--md";
49
- lg: "button--lg";
50
- };
51
- isIconOnly: {
52
- true: "button--icon-only";
53
- false: "px-4";
54
- };
55
- fullWidth: {
56
- true: "w-full";
57
- };
58
- }, undefined, "button", {
59
- variant: {
60
- solid: "button--solid";
61
- bordered: "button--bordered";
62
- light: "button--light";
63
- };
64
- color: {
65
- primary: "button--primary";
66
- secondary: "button--secondary";
67
- success: "button--success";
68
- danger: "button--danger";
69
- };
70
- rounded: {
71
- full: "rounded-full";
72
- lg: "rounded-lg";
73
- md: "rounded-md";
74
- sm: "rounded-sm";
75
- none: "rounded-none";
76
- };
77
- size: {
78
- sm: "button--sm";
79
- md: "button--md";
80
- lg: "button--lg";
81
- };
82
- isIconOnly: {
83
- true: "button--icon-only";
84
- false: "px-4";
85
- };
86
- fullWidth: {
87
- true: "w-full";
88
- };
89
- }, undefined, TVReturnTypeLike<{
90
- variant: {
91
- solid: "button--solid";
92
- bordered: "button--bordered";
93
- light: "button--light";
94
- };
95
- color: {
96
- primary: "button--primary";
97
- secondary: "button--secondary";
98
- success: "button--success";
99
- danger: "button--danger";
100
- };
101
- rounded: {
102
- full: "rounded-full";
103
- lg: "rounded-lg";
104
- md: "rounded-md";
105
- sm: "rounded-sm";
106
- none: "rounded-none";
107
- };
108
- size: {
109
- sm: "button--sm";
110
- md: "button--md";
111
- lg: "button--lg";
112
- };
113
- isIconOnly: {
114
- true: "button--icon-only";
115
- false: "px-4";
116
- };
117
- fullWidth: {
118
- true: "w-full";
119
- };
120
- }, undefined>>;
121
-
122
- export declare const Menu: {
123
- Root: <Payload>(props: Menu_2.Root.Props<Payload>) => React.JSX.Element;
124
- Trigger: ({ className, ...props }: Menu_2.Trigger.Props) => JSX.Element;
125
- Portal: ForwardRefExoticComponent<Omit< ContextMenuPortalProps, "ref"> & RefAttributes<HTMLDivElement>>;
126
- Positioner: (props: Menu_2.Positioner.Props) => JSX.Element;
127
- Popup: ({ className, ...props }: Menu_2.Popup.Props) => JSX.Element;
128
- Separator: ({ className, ...props }: Menu_2.Separator.Props) => JSX.Element;
129
- ArrowSvg: ({ className, size, ...props }: ArrowSvgProps) => JSX.Element;
130
- Item: ({ isActive, isDanger, className, disabled, ...props }: MenuItemProps) => JSX.Element;
131
- Group: ({ className, ...props }: Menu_2.Group.Props) => JSX.Element;
132
- GroupLabel: ({ className, ...props }: Menu_2.GroupLabel.Props) => JSX.Element;
133
- };
134
-
135
- declare type MenuItemProps = Menu_2.Item.Props & VariantProps<typeof variants>;
136
-
137
- export declare const Spinner: ({ className, size, ...props }: SpinnerProps) => JSX.Element;
138
-
139
- declare type SpinnerProps = SVGProps<SVGSVGElement> & {
140
- size?: number;
141
- };
142
-
143
- export declare const Tabs: {
144
- Root: ForwardRefExoticComponent<Omit< TabsRootProps, "ref"> & RefAttributes<HTMLDivElement>>;
145
- List: ({ className, color, ...props }: TabsListProps) => JSX.Element;
146
- Tab: ({ className, render, disabled, isActive, ...props }: TabsTabProps) => JSX.Element;
147
- Indicator: ({ className, ...props }: Tabs_2.Indicator.Props) => JSX.Element;
148
- };
149
-
150
- declare type TabsListProps = Tabs_2.List.Props & VariantProps<typeof variants_2>;
151
-
152
- declare type TabsTabProps = Tabs_2.Tab.Props & {
153
- isActive?: boolean;
154
- };
155
-
156
- declare const variants: TVReturnType<{
157
- isActive: {
158
- true: "menu--item-active";
159
- };
160
- isDanger: {
161
- true: "menu--item-danger";
162
- };
163
- }, undefined, undefined, {
164
- isActive: {
165
- true: "menu--item-active";
166
- };
167
- isDanger: {
168
- true: "menu--item-danger";
169
- };
170
- }, undefined, TVReturnTypeLike<{
171
- isActive: {
172
- true: "menu--item-active";
173
- };
174
- isDanger: {
175
- true: "menu--item-danger";
176
- };
177
- }, undefined>>;
178
-
179
- declare const variants_2: TVReturnType<{
180
- color: {
181
- primary: "tabs--primary";
182
- secondary: "tabs--secondary";
183
- };
184
- }, undefined, undefined, {
185
- color: {
186
- primary: "tabs--primary";
187
- secondary: "tabs--secondary";
188
- };
189
- }, undefined, TVReturnTypeLike<{
190
- color: {
191
- primary: "tabs--primary";
192
- secondary: "tabs--secondary";
193
- };
194
- }, undefined>>;
195
-
196
- export { }
1
+ import {
2
+ ButtonProps,
3
+ ContextMenuPortalProps,
4
+ Menu as Menu_2,
5
+ } from "@base-ui/react"
6
+ import {
7
+ ComponentProps,
8
+ ComponentPropsWithoutRef,
9
+ ComponentType,
10
+ ForwardRefExoticComponent,
11
+ JSX,
12
+ PropsWithChildren,
13
+ ReactElement,
14
+ ReactNode,
15
+ RefAttributes,
16
+ SVGProps,
17
+ } from "react"
18
+ import { TVReturnType, TVReturnTypeLike, VariantProps } from "tailwind-variants"
19
+
20
+ export declare const Button: ({
21
+ children,
22
+ className,
23
+ render,
24
+ icon,
25
+ isPending,
26
+ disabled,
27
+ variant,
28
+ color,
29
+ rounded,
30
+ size,
31
+ isIconOnly,
32
+ fullWidth,
33
+ ...props
34
+ }: Props) => JSX.Element
35
+
36
+ declare type ContextValue = {
37
+ link: ComponentType<
38
+ Omit<ComponentPropsWithoutRef<"a">, "href"> & {
39
+ href: string
40
+ }
41
+ >
42
+ pathname: string
43
+ }
44
+
45
+ export declare const DropdownMenu: ({ menu, ...props }: Props_2) => JSX.Element
46
+
47
+ declare const linkVariants: TVReturnType<
48
+ {
49
+ variant: {
50
+ solid: "button--solid"
51
+ bordered: "button--bordered"
52
+ light: "button--light"
53
+ }
54
+ color: {
55
+ primary: "button--primary"
56
+ secondary: "button--secondary"
57
+ success: "button--success"
58
+ danger: "button--danger"
59
+ }
60
+ rounded: {
61
+ full: "rounded-full"
62
+ lg: "rounded-lg"
63
+ md: "rounded-md"
64
+ sm: "rounded-sm"
65
+ none: "rounded-none"
66
+ }
67
+ size: {
68
+ sm: "button--sm"
69
+ md: "button--md"
70
+ lg: "button--lg"
71
+ }
72
+ isIconOnly: {
73
+ true: "button--icon-only"
74
+ false: "px-4"
75
+ }
76
+ fullWidth: {
77
+ true: "w-full"
78
+ }
79
+ },
80
+ undefined,
81
+ "button",
82
+ {
83
+ variant: {
84
+ solid: "button--solid"
85
+ bordered: "button--bordered"
86
+ light: "button--light"
87
+ }
88
+ color: {
89
+ primary: "button--primary"
90
+ secondary: "button--secondary"
91
+ success: "button--success"
92
+ danger: "button--danger"
93
+ }
94
+ rounded: {
95
+ full: "rounded-full"
96
+ lg: "rounded-lg"
97
+ md: "rounded-md"
98
+ sm: "rounded-sm"
99
+ none: "rounded-none"
100
+ }
101
+ size: {
102
+ sm: "button--sm"
103
+ md: "button--md"
104
+ lg: "button--lg"
105
+ }
106
+ isIconOnly: {
107
+ true: "button--icon-only"
108
+ false: "px-4"
109
+ }
110
+ fullWidth: {
111
+ true: "w-full"
112
+ }
113
+ },
114
+ undefined,
115
+ TVReturnTypeLike<
116
+ {
117
+ variant: {
118
+ solid: "button--solid"
119
+ bordered: "button--bordered"
120
+ light: "button--light"
121
+ }
122
+ color: {
123
+ primary: "button--primary"
124
+ secondary: "button--secondary"
125
+ success: "button--success"
126
+ danger: "button--danger"
127
+ }
128
+ rounded: {
129
+ full: "rounded-full"
130
+ lg: "rounded-lg"
131
+ md: "rounded-md"
132
+ sm: "rounded-sm"
133
+ none: "rounded-none"
134
+ }
135
+ size: {
136
+ sm: "button--sm"
137
+ md: "button--md"
138
+ lg: "button--lg"
139
+ }
140
+ isIconOnly: {
141
+ true: "button--icon-only"
142
+ false: "px-4"
143
+ }
144
+ fullWidth: {
145
+ true: "w-full"
146
+ }
147
+ },
148
+ undefined
149
+ >
150
+ >
151
+
152
+ export declare const Menu: {
153
+ Positioner: (props: Menu_2.Positioner.Props) => JSX.Element
154
+ Popup: ({ className, ...props }: Menu_2.Popup.Props) => JSX.Element
155
+ Separator: ({ className, ...props }: Menu_2.Separator.Props) => JSX.Element
156
+ Item: ({
157
+ isActive,
158
+ isDanger,
159
+ className,
160
+ disabled,
161
+ render,
162
+ ...props
163
+ }: MenuItemProps) => JSX.Element
164
+ Group: ({ className, ...props }: Menu_2.Group.Props) => JSX.Element
165
+ GroupLabel: ({ className, ...props }: Menu_2.GroupLabel.Props) => JSX.Element
166
+ Root: <Payload>(props: Menu_2.Root.Props<Payload>) => React.JSX.Element
167
+ Trigger: Menu_2.Trigger
168
+ Portal: ForwardRefExoticComponent<
169
+ Omit<ContextMenuPortalProps, "ref"> & RefAttributes<HTMLDivElement>
170
+ >
171
+ }
172
+
173
+ declare type MenuItemProps = Menu_2.Item.Props &
174
+ VariantProps<typeof menuVariants>
175
+
176
+ declare const menuVariants: TVReturnType<
177
+ {
178
+ isActive: {
179
+ true: "menu--item-active"
180
+ }
181
+ isDanger: {
182
+ true: "menu--item-danger"
183
+ }
184
+ },
185
+ undefined,
186
+ undefined,
187
+ {
188
+ isActive: {
189
+ true: "menu--item-active"
190
+ }
191
+ isDanger: {
192
+ true: "menu--item-danger"
193
+ }
194
+ },
195
+ undefined,
196
+ TVReturnTypeLike<
197
+ {
198
+ isActive: {
199
+ true: "menu--item-active"
200
+ }
201
+ isDanger: {
202
+ true: "menu--item-danger"
203
+ }
204
+ },
205
+ undefined
206
+ >
207
+ >
208
+
209
+ declare type NonEmptyArray<T> = [T, ...T[]]
210
+
211
+ declare type PartialBy<T, K extends keyof T = keyof T> = Omit<T, K> &
212
+ Partial<Pick<T, K>>
213
+
214
+ declare type Props = ButtonProps &
215
+ VariantProps<typeof linkVariants> & {
216
+ icon?: ReactNode
217
+ isPending?: boolean
218
+ }
219
+
220
+ declare type Props_2 = ComponentProps<typeof Menu.Trigger> & {
221
+ menu: NonEmptyArray<{
222
+ groupLabel?: string
223
+ items: NonEmptyArray<
224
+ {
225
+ label: string
226
+ icon: ReactElement
227
+ isDanger?: true
228
+ disabled?: boolean
229
+ } & (
230
+ | {
231
+ href: string
232
+ onClick?: never
233
+ }
234
+ | {
235
+ href?: never
236
+ onClick: () => void
237
+ }
238
+ )
239
+ >
240
+ }>
241
+ }
242
+
243
+ declare type Props_3 = SVGProps<SVGSVGElement> & {
244
+ size?: number
245
+ }
246
+
247
+ declare type ProviderProps = PropsWithChildren<PartialBy<ContextValue, "link">>
248
+
249
+ export declare const Spinner: ({
250
+ className,
251
+ size,
252
+ ...props
253
+ }: Props_3) => JSX.Element
254
+
255
+ export declare const UIProvider: ({
256
+ link,
257
+ pathname,
258
+ children,
259
+ }: ProviderProps) => JSX.Element
260
+
261
+ export declare const useUIContext: () => ContextValue
262
+
263
+ export {}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{cn as e}from"cn";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{Button as r}from"@base-ui/react";import{isValidElement as i}from"react";import{tv as a}from"tailwind-variants";import{Menu as o}from"@base-ui/react/menu";import{Tabs as s}from"@base-ui/react/tabs";var c=({className:n,size:r=24,...i})=>/* @__PURE__ */ t(`svg`,{className:e(`spinner`,n),fill:`currentColor`,height:r,stroke:`currentColor`,strokeWidth:`0`,version:`1.1`,viewBox:`0 0 16 16`,width:r,xmlns:`http://www.w3.org/2000/svg`,...i,children:/* @__PURE__ */ t(`path`,{d:`M16 8c-0.020-1.045-0.247-2.086-0.665-3.038-0.417-0.953-1.023-1.817-1.766-2.53s-1.624-1.278-2.578-1.651c-0.953-0.374-1.978-0.552-2.991-0.531-1.013 0.020-2.021 0.24-2.943 0.646-0.923 0.405-1.758 0.992-2.449 1.712s-1.237 1.574-1.597 2.497c-0.361 0.923-0.533 1.914-0.512 2.895 0.020 0.981 0.234 1.955 0.627 2.847 0.392 0.892 0.961 1.7 1.658 2.368s1.523 1.195 2.416 1.543c0.892 0.348 1.851 0.514 2.799 0.493 0.949-0.020 1.89-0.227 2.751-0.608 0.862-0.379 1.642-0.929 2.287-1.604s1.154-1.472 1.488-2.335c0.204-0.523 0.342-1.069 0.415-1.622 0.019 0.001 0.039 0.002 0.059 0.002 0.552 0 1-0.448 1-1 0-0.028-0.001-0.056-0.004-0.083h0.004zM14.411 10.655c-0.367 0.831-0.898 1.584-1.55 2.206s-1.422 1.112-2.254 1.434c-0.832 0.323-1.723 0.476-2.608 0.454-0.884-0.020-1.759-0.215-2.56-0.57-0.801-0.354-1.526-0.867-2.125-1.495s-1.071-1.371-1.38-2.173c-0.31-0.801-0.457-1.66-0.435-2.512s0.208-1.694 0.551-2.464c0.342-0.77 0.836-1.468 1.441-2.044s1.321-1.029 2.092-1.326c0.771-0.298 1.596-0.438 2.416-0.416s1.629 0.202 2.368 0.532c0.74 0.329 1.41 0.805 1.963 1.387s0.988 1.27 1.272 2.011c0.285 0.74 0.418 1.532 0.397 2.32h0.004c-0.002 0.027-0.004 0.055-0.004 0.083 0 0.516 0.39 0.94 0.892 0.994-0.097 0.544-0.258 1.075-0.481 1.578z`})}),l=a({base:`button`,variants:{variant:{solid:`button--solid`,bordered:`button--bordered`,light:`button--light`},color:{primary:`button--primary`,secondary:`button--secondary`,success:`button--success`,danger:`button--danger`},rounded:{full:`rounded-full`,lg:`rounded-lg`,md:`rounded-md`,sm:`rounded-sm`,none:`rounded-none`},size:{sm:`button--sm`,md:`button--md`,lg:`button--lg`},isIconOnly:{true:`button--icon-only`,false:`px-4`},fullWidth:{true:`w-full`}},defaultVariants:{variant:`light`,color:`primary`,rounded:`lg`,size:`md`}}),u=a({extend:l,defaultVariants:{variant:`solid`}}),d=({children:a,className:o,render:s,icon:d,iconAtEnd:f,isPending:p,disabled:m,variant:h,color:g,rounded:_,size:v,isIconOnly:y,fullWidth:b,...x})=>{let S={variant:h,color:g,rounded:_,size:v,isIconOnly:y,fullWidth:b},C=i(s)&&typeof s.props==`object`&&`href`in s.props;return/* @__PURE__ */ n(r,{className:e(C?l(S):u(S),o,!p&&m&&`disabled-opacity`),disabled:p||m,nativeButton:!C,render:s,...x,children:[p?/* @__PURE__ */ t(c,{}):d,!y&&a,f]})},f=a({variants:{isActive:{true:`menu--item-active`},isDanger:{true:`menu--item-danger`}}}),p={Root:o.Root,Trigger:({className:n,...r})=>/* @__PURE__ */ t(o.Trigger,{className:e(`menu--trigger`,n),...r}),Portal:o.Portal,Positioner:e=>/* @__PURE__ */ t(o.Positioner,{sideOffset:8,...e}),Popup:({className:n,...r})=>/* @__PURE__ */ t(o.Popup,{className:e(`menu--popup`,n),...r}),Separator:({className:n,...r})=>/* @__PURE__ */ t(o.Separator,{className:e(`menu--separator`,n),...r}),ArrowSvg:({className:e,size:n=16,...r})=>/* @__PURE__ */ t(`svg`,{className:e,fill:`currentColor`,height:n,stroke:`currentColor`,strokeWidth:`0`,viewBox:`0 0 512 512`,width:n,xmlns:`http://www.w3.org/2000/svg`,...r,children:/* @__PURE__ */ t(`path`,{d:`M256 294.1L383 167c9.4-9.4 24.6-9.4 33.9 0s9.3 24.6 0 34L273 345c-9.1 9.1-23.7 9.3-33.1.7L95 201.1c-4.7-4.7-7-10.9-7-17s2.3-12.3 7-17c9.4-9.4 24.6-9.4 33.9 0l127.1 127z`})}),Item:({isActive:n,isDanger:r,className:i,disabled:a,...s})=>/* @__PURE__ */ t(o.Item,{className:e(`menu--item`,f({isActive:n,isDanger:r}),i,!n&&a&&`disabled-opacity`),disabled:n||a,...s}),Group:({className:n,...r})=>/* @__PURE__ */ t(o.Group,{className:e(`menu--group`,n),...r}),GroupLabel:({className:n,...r})=>/* @__PURE__ */ t(o.GroupLabel,{className:e(`menu--group-label`,n),...r})},m=a({variants:{color:{primary:`tabs--primary`,secondary:`tabs--secondary`}},defaultVariants:{color:`primary`}}),h={Root:s.Root,List:({className:n,color:r,...i})=>/* @__PURE__ */ t(s.List,{className:e(`tabs--list`,m({color:r}),n),...i}),Tab:({className:n,render:r,disabled:a,isActive:o,...c})=>{let l=i(r)&&typeof r.props==`object`&&`href`in r.props;return/* @__PURE__ */ t(s.Tab,{className:e(`tabs--tab`,n,!o&&a&&`disabled-opacity`),disabled:o||a,nativeButton:!l,render:r,...c})},Indicator:({className:n,...r})=>/* @__PURE__ */ t(s.Indicator,{className:e(`tabs--indicator`,n),...r})};export{d as Button,p as Menu,c as Spinner,h as Tabs};
1
+ import{Button as e,Menu as t}from"@base-ui/react";import{cn as n}from"cn";import{Fragment as r,createContext as i,isValidElement as a,useContext as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{cn as l,tv as u}from"tailwind-variants";var d=e=>a(e)&&typeof e.props==`object`&&e.props&&`href`in e.props,f=({className:e,size:t=24,...r})=>/* @__PURE__ */ s(`svg`,{className:n(`spinner`,e),fill:`currentColor`,height:t,stroke:`currentColor`,strokeWidth:`0`,version:`1.1`,viewBox:`0 0 16 16`,width:t,xmlns:`http://www.w3.org/2000/svg`,...r,children:/* @__PURE__ */ s(`path`,{d:`M16 8c-0.020-1.045-0.247-2.086-0.665-3.038-0.417-0.953-1.023-1.817-1.766-2.53s-1.624-1.278-2.578-1.651c-0.953-0.374-1.978-0.552-2.991-0.531-1.013 0.020-2.021 0.24-2.943 0.646-0.923 0.405-1.758 0.992-2.449 1.712s-1.237 1.574-1.597 2.497c-0.361 0.923-0.533 1.914-0.512 2.895 0.020 0.981 0.234 1.955 0.627 2.847 0.392 0.892 0.961 1.7 1.658 2.368s1.523 1.195 2.416 1.543c0.892 0.348 1.851 0.514 2.799 0.493 0.949-0.020 1.89-0.227 2.751-0.608 0.862-0.379 1.642-0.929 2.287-1.604s1.154-1.472 1.488-2.335c0.204-0.523 0.342-1.069 0.415-1.622 0.019 0.001 0.039 0.002 0.059 0.002 0.552 0 1-0.448 1-1 0-0.028-0.001-0.056-0.004-0.083h0.004zM14.411 10.655c-0.367 0.831-0.898 1.584-1.55 2.206s-1.422 1.112-2.254 1.434c-0.832 0.323-1.723 0.476-2.608 0.454-0.884-0.020-1.759-0.215-2.56-0.57-0.801-0.354-1.526-0.867-2.125-1.495s-1.071-1.371-1.38-2.173c-0.31-0.801-0.457-1.66-0.435-2.512s0.208-1.694 0.551-2.464c0.342-0.77 0.836-1.468 1.441-2.044s1.321-1.029 2.092-1.326c0.771-0.298 1.596-0.438 2.416-0.416s1.629 0.202 2.368 0.532c0.74 0.329 1.41 0.805 1.963 1.387s0.988 1.27 1.272 2.011c0.285 0.74 0.418 1.532 0.397 2.32h0.004c-0.002 0.027-0.004 0.055-0.004 0.083 0 0.516 0.39 0.94 0.892 0.994-0.097 0.544-0.258 1.075-0.481 1.578z`})}),p=u({base:`button`,variants:{variant:{solid:`button--solid`,bordered:`button--bordered`,light:`button--light`},color:{primary:`button--primary`,secondary:`button--secondary`,success:`button--success`,danger:`button--danger`},rounded:{full:`rounded-full`,lg:`rounded-lg`,md:`rounded-md`,sm:`rounded-sm`,none:`rounded-none`},size:{sm:`button--sm`,md:`button--md`,lg:`button--lg`},isIconOnly:{true:`button--icon-only`,false:`px-4`},fullWidth:{true:`w-full`}},defaultVariants:{variant:`light`,color:`primary`,rounded:`lg`,size:`md`}}),m=u({extend:p,defaultVariants:{variant:`solid`}}),h=({children:t,className:r,render:i,icon:a,isPending:o,disabled:l,variant:u,color:h,rounded:g,size:_,isIconOnly:v,fullWidth:y,...b})=>{let x={variant:u,color:h,rounded:g,size:_,isIconOnly:v,fullWidth:y},S=d(i);return/* @__PURE__ */ c(e,{className:n(S?p(x):m(x),r),disabled:o||l,nativeButton:!S,render:i,...b,children:[o?/* @__PURE__ */ s(f,{}):a,!v&&t]})},g=u({variants:{isActive:{true:`menu--item-active`},isDanger:{true:`menu--item-danger`}}}),_={Positioner:e=>/* @__PURE__ */ s(t.Positioner,{sideOffset:8,...e}),Popup:({className:e,...n})=>/* @__PURE__ */ s(t.Popup,{className:l(`menu--popup`,e),...n}),Separator:({className:e,...n})=>/* @__PURE__ */ s(t.Separator,{className:l(`menu--separator`,e),...n}),Item:({isActive:e,isDanger:n,className:r,disabled:i,render:a,...o})=>{let c=d(a);return/* @__PURE__ */ s(t.Item,{className:l(`menu--item`,g({isActive:e,isDanger:n}),r,e&&`opacity-100`),disabled:e||i,nativeButton:!c,render:a,...o})},Group:({className:e,...n})=>/* @__PURE__ */ s(t.Group,{className:l(`menu--group`,e),...n}),GroupLabel:({className:e,...n})=>/* @__PURE__ */ s(t.GroupLabel,{className:l(`menu--group-label`,e),...n}),Root:t.Root,Trigger:t.Trigger,Portal:t.Portal},v=i(null),y=({link:e=e=>/* @__PURE__ */ s(`a`,{...e}),pathname:t=`/`,children:n})=>/* @__PURE__ */ s(v,{value:{link:e,pathname:t},children:n}),b=()=>{let e=o(v);if(!e)throw Error(`useUIContext must be used within UIProvider`);return e},x=({menu:e,...t})=>{let{link:n,pathname:i}=b();return/* @__PURE__ */ c(_.Root,{children:[/* @__PURE__ */ s(_.Trigger,{...t}),/* @__PURE__ */ s(_.Portal,{children:/* @__PURE__ */ s(_.Positioner,{children:/* @__PURE__ */ s(_.Popup,{children:e.map(({items:t,groupLabel:a},o)=>/* @__PURE__ */ c(r,{children:[/* @__PURE__ */ c(_.Group,{children:[a&&/* @__PURE__ */ s(_.GroupLabel,{children:a}),t.map(({label:e,isDanger:t,icon:r,href:a,disabled:o,onClick:l})=>/* @__PURE__ */ c(_.Item,{disabled:o,isActive:i===a,isDanger:t,render:a?/* @__PURE__ */ s(n,{href:a}):void 0,onClick:l,children:[r,e]},a||e))]}),e.length-o>1&&/* @__PURE__ */ s(_.Separator,{})]},t[0].label))})})})]})};export{h as Button,x as DropdownMenu,_ as Menu,f as Spinner,y as UIProvider,b as useUIContext};
package/dist/styles.css CHANGED
@@ -1,10 +1,7 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-ease:initial;--tw-leading:initial;--tw-duration:initial}}}@layer theme{:root{--background:var(--color-white);--foreground:var(--color-neutral-900);--primary:var(--color-blue-500);--secondary:var(--foreground);--success:var(--color-green-600);--danger:var(--color-red-500)}}@layer base;@layer components{.spinner{animation:var(--animate-spin,spin 1s linear infinite)}.button{--color:transparent;--bg:transparent;--bg-hover:var(--bg);--bg-active:var(--bg-hover);--fg:currentColor}.button--primary{--color:var(--primary)}.button--secondary{--color:var(--secondary)}.button--success{--color:var(--success)}.button--danger{--color:var(--danger)}.button--solid{--bg:var(--color);--bg-hover:var(--bg)}@supports (color:color-mix(in lab, red, red)){.button--solid{--bg-hover:color-mix(in oklab, var(--bg) 90%, var(--foreground) 10%)}}.button--solid{--bg-active:var(--bg)}@supports (color:color-mix(in lab, red, red)){.button--solid{--bg-active:color-mix(in oklab, var(--bg) 80%, var(--foreground) 20%)}}.button--solid{--fg:var(--color-white)}.button--solid.button--secondary{--bg:var(--color)}@supports (color:color-mix(in lab, red, red)){.button--solid.button--secondary{--bg:color-mix(in oklab, var(--color) 5%, transparent)}}.button--solid.button--secondary{--bg-hover:var(--bg)}@supports (color:color-mix(in lab, red, red)){.button--solid.button--secondary{--bg-hover:color-mix(in oklab, var(--bg) 95%, var(--foreground) 5%)}}.button--solid.button--secondary{--bg-active:var(--bg)}@supports (color:color-mix(in lab, red, red)){.button--solid.button--secondary{--bg-active:color-mix(in oklab, var(--bg) 90%, var(--foreground) 10%)}}.button--solid.button--secondary{--fg:var(--color)}.button--bordered,.button--light{--fg:var(--color);--bg-hover:var(--fg)}@supports (color:color-mix(in lab, red, red)){.button--bordered,.button--light{--bg-hover:color-mix(in oklab, var(--fg) 5%, transparent)}}.button{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);background-color:var(--bg);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;color:var(--fg);transition-property:background-color,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));-webkit-user-select:none;user-select:none;display:inline-flex}.button:focus-visible{--tw-outline-style:none;outline-style:none}.button:enabled{cursor:pointer}.button:hover{background-color:var(--bg-hover)}.button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y);background-color:var(--bg-active)}.button--sm{height:calc(var(--spacing,.25rem) * 9);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.button--md{height:calc(var(--spacing,.25rem) * 10);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.button--lg{height:calc(var(--spacing,.25rem) * 11);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,calc(1.5 / 1)))}.button--icon-only{flex-shrink:0}.button--icon-only.button--sm{width:calc(var(--spacing,.25rem) * 9)}.button--icon-only.button--md{width:calc(var(--spacing,.25rem) * 10)}.button--icon-only.button--lg{width:calc(var(--spacing,.25rem) * 11)}.button--solid:focus-visible{--tw-ring-color:var(--color);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.button--bordered{border-style:var(--tw-border-style);border-width:2px;border-color:var(--fg)}.button--bordered:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.button--light{position:relative}.button--light:focus-visible:after{width:calc(var(--spacing,.25rem) * 1.5);height:calc(var(--spacing,.25rem) * 1.5);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);content:"";background-color:currentColor;border-radius:2147483647px;position:absolute;top:0;left:50%}.button--light{text-underline-offset:6px;text-decoration-line:underline}.button--light:hover{text-decoration-line:none}.menu--popup{--bg:transparent;--bg-hover:var(--color-neutral-100);--border:transparent;--fg:var(--foreground)}.menu--item-danger{--bg-hover:var(--color-red-50);--fg:var(--color-danger)}.menu--item-active{--bg:var(--color-sky-50);--bg-hover:var(--bg);--border:var(--color-sky-300)}.menu--item-active.menu--item-danger{--bg:var(--color-red-50);--border:var(--color-red-200)}.menu--trigger[data-popup-open]>svg:last-of-type{transform:rotate(180deg)}.menu--popup{gap:var(--spacing,.25rem);border-radius:var(--radius-sm,.25rem);background-color:var(--background);padding:calc(var(--spacing,.25rem) * 2);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-neutral-300,oklch(87% 0 none));transition-property:scale,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-ease:var(--ease-out,cubic-bezier(0, 0, .2, 1));transition-timing-function:var(--ease-out,cubic-bezier(0, 0, .2, 1));flex-direction:column;display:flex}.menu--popup:focus-visible{--tw-outline-style:none;outline-style:none}.menu--popup[data-starting-style],.menu--popup[data-ending-style]{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0}.menu--item{align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-sm,.25rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--bg);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--fg);-webkit-user-select:none;user-select:none;display:flex}.menu--item:focus-visible{--tw-outline-style:none;outline-style:none}.menu--item:not(:is(:disabled,[data-disabled])){cursor:pointer}.menu--item:not(:is(:disabled,[data-disabled])):hover,.menu--item:not(:is(:disabled,[data-disabled])):focus-visible{background-color:var(--bg-hover)}.menu--group-label{padding-bottom:var(--spacing,.25rem);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:calc(var(--spacing,.25rem) * 4);line-height:calc(var(--spacing,.25rem) * 4);color:var(--color-neutral-500,oklch(55.6% 0 none));-webkit-user-select:none;user-select:none}.menu--separator{margin-inline:calc(var(--spacing,.25rem) * 3);margin-block:var(--spacing,.25rem);background-color:var(--color-neutral-300,oklch(87% 0 none));height:1px}.menu--group{gap:var(--spacing,.25rem);flex-direction:column;display:flex}.tabs{--color:transparent}.tabs--primary{--color:var(--color-primary)}.tabs--secondary{--color:var(--secondary)}.tabs--list{display:flex;position:relative}.tabs--tab{position:relative}.tabs--tab:focus-visible:after{background-color:var(--color);width:calc(var(--spacing,.25rem) * 1.5);height:calc(var(--spacing,.25rem) * 1.5);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);content:"";border-radius:2147483647px;position:absolute;top:0;left:50%}.tabs--tab{height:calc(var(--spacing,.25rem) * 9);cursor:default;justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);padding-inline:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;color:var(--foreground);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.tabs--tab{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.tabs--tab{-webkit-user-select:none;user-select:none}.tabs--tab:focus-visible{--tw-outline-style:none;outline-style:none}.tabs--tab[data-active],.tabs--tab:hover:not([data-active]){color:var(--foreground)}.tabs--tab:not([data-active]),.tabs--tab[aria-haspopup=menu]{cursor:pointer}.tabs--indicator{bottom:0;left:var(--active-tab-left);height:calc(var(--spacing,.25rem) * .75);width:var(--active-tab-width);background-color:var(--color);transition-property:left,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;border-radius:2147483647px;transition-duration:.3s;position:absolute}:disabled,[data-disabled]{pointer-events:none;-webkit-user-select:none;user-select:none}}@layer utilities{.disabled-opacity{opacity:.6}}:root,:host{--color-primary:var(--primary);--color-danger:var(--danger)}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-ease{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-border-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-duration:initial;--tw-content:"";--tw-leading:initial}}}@layer theme;@layer base{:root{--white:oklch(100% 0 0);--bg:var(--white);--fg:oklch(21% .006 285.885);--muted:oklch(55.2% .016 285.938);--primary:oklch(62.3% .214 259.815);--primary-fg:var(--white);--primary-hover:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root{--primary-hover:color-mix(in oklab, var(--primary) 90%, var(--primary-fg) 10%)}}:root{--secondary:var(--bg)}@supports (color:color-mix(in lab, red, red)){:root{--secondary:color-mix(in oklab, var(--bg) 95%, var(--fg) 5%)}}:root{--secondary-fg:var(--fg);--secondary-hover:var(--secondary)}@supports (color:color-mix(in lab, red, red)){:root{--secondary-hover:color-mix(in oklab, var(--secondary) 95%, var(--secondary-fg) 5%)}}:root{--success:oklch(62.7% .194 149.214);--success-fg:var(--white);--success-hover:var(--success)}@supports (color:color-mix(in lab, red, red)){:root{--success-hover:color-mix(in oklab, var(--success) 90%, var(--success-fg) 10%)}}:root{--danger:oklch(63.7% .237 25.331);--danger-fg:var(--white);--danger-hover:var(--danger)}@supports (color:color-mix(in lab, red, red)){:root{--danger-hover:color-mix(in oklab, var(--danger) 90%, var(--danger-fg) 10%)}}:disabled,[data-disabled]{pointer-events:none;opacity:.5;-webkit-user-select:none;user-select:none}:focus-visible{--tw-outline-style:none;outline-style:none}}@layer components{.button{--button-color:transparent;--button-fg:currentColor;--button-bg:transparent;--button-bg-hover:var(--button-bg);--button-bg-active:var(--button-bg-hover)}.button--primary{--button-color:var(--primary)}.button--secondary{--button-color:var(--secondary)}.button--success{--button-color:var(--success)}.button--danger{--button-color:var(--danger)}:is(.button--bordered,.button--light).button--primary,:is(.button--bordered,.button--light).button--success,:is(.button--bordered,.button--light).button--danger{--button-fg:var(--button-color)}:is(.button--bordered,.button--light).button--secondary{--button-fg:var(--secondary-fg)}.button--solid{--button-bg:var(--button-color);--button-bg-active:var(--button-color)}@supports (color:color-mix(in lab, red, red)){.button--solid{--button-bg-active:color-mix(in oklab, var(--button-color) 90%, var(--fg) 10%)}}.button--solid.button--primary,.button--solid.button--success,.button--solid.button--danger{--tw-ring-color:var(--button-bg)}.button--solid.button--primary{--button-fg:var(--primary-fg);--button-bg-hover:var(--primary-hover)}.button--solid.button--success{--button-fg:var(--success-fg);--button-bg-hover:var(--success-hover)}.button--solid.button--danger{--button-fg:var(--danger-fg);--button-bg-hover:var(--danger-hover)}.button--solid.button--secondary{--button-fg:var(--secondary-fg);--button-bg-hover:var(--secondary-hover);--tw-ring-color:var(--secondary-fg)}.button{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);background-color:var(--button-bg);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;color:var(--button-fg);transition-property:background-color,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));-webkit-user-select:none;user-select:none;display:inline-flex}.button:enabled{cursor:pointer}.button:hover{background-color:var(--button-bg-hover)}.button:active{background-color:var(--button-bg-active);scale:.97}.button--sm{height:calc(var(--spacing,.25rem) * 9);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.button--md{height:calc(var(--spacing,.25rem) * 10);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.button--lg{height:calc(var(--spacing,.25rem) * 11);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,calc(1.5 / 1)))}.button--icon-only{flex-shrink:0}.button--icon-only.button--sm{width:calc(var(--spacing,.25rem) * 9)}.button--icon-only.button--md{width:calc(var(--spacing,.25rem) * 10)}.button--icon-only.button--lg{width:calc(var(--spacing,.25rem) * 11)}.button--solid:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.button--bordered{border-style:var(--tw-border-style);border-width:2px;border-color:var(--button-fg)}.button--bordered:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.button--bordered:hover{scale:1.03}.button--bordered:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.button--light{position:relative}.button--light:focus-visible:after{width:calc(var(--spacing,.25rem) * 1.5);height:calc(var(--spacing,.25rem) * 1.5);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);content:"";background-color:currentColor;border-radius:2147483647px;position:absolute;top:0;left:50%}.button--light{text-underline-offset:6px;text-decoration-line:underline}.button--light:hover{text-decoration-line:none}:not(.button--icon-only)[aria-haspopup=menu]:after{margin-left:var(--spacing,.25rem);height:calc(var(--spacing,.25rem) * 2);width:calc(var(--spacing,.25rem) * 2);--tw-translate-y:calc(var(--spacing,.25rem) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y);border-right-style:var(--tw-border-style);border-right-width:2px;border-bottom-style:var(--tw-border-style);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.15s;--tw-content:"";content:var(--tw-content);border-color:currentColor;border-bottom-width:2px;transition-duration:.15s;display:inline-block;rotate:45deg}:not(.button--icon-only)[aria-haspopup=menu][aria-expanded=true]:after{--tw-translate-y:calc(var(--spacing,.25rem) * .5);translate:var(--tw-translate-x) var(--tw-translate-y);rotate:225deg}.menu--popup{--menu-bg:transparent;--menu-bg-hover:var(--color-neutral-100);--menu-border:transparent;--menu-fg:var(--fg)}.menu--item-danger{--menu-bg-hover:var(--color-red-50);--menu-fg:var(--danger)}.menu--item-active{--menu-bg:var(--color-sky-50);--menu-bg-hover:var(--menu-bg);--menu-border:var(--color-sky-300)}.menu--item-active.menu--item-danger{--menu-bg:var(--color-red-50);--menu-border:var(--color-red-200)}.menu--popup{transform-origin:var(--transform-origin);gap:var(--spacing,.25rem);border-radius:var(--radius-sm,.25rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-300);background-color:var(--bg);padding:calc(var(--spacing,.25rem) * 2);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-duration:.3s;flex-direction:column;transition-duration:.3s;display:flex}.menu--popup[data-starting-style],.menu--popup[data-ending-style]{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0}.menu--item{cursor:pointer;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-sm,.25rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--menu-border);background-color:var(--menu-bg);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);color:var(--menu-fg);-webkit-user-select:none;user-select:none;display:flex}.menu--item:hover,.menu--item:focus-visible{background-color:var(--menu-bg-hover)}.menu--group{gap:var(--spacing,.25rem);flex-direction:column;display:flex}.menu--group-label{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:calc(var(--spacing,.25rem) * 4);line-height:calc(var(--spacing,.25rem) * 4);color:var(--muted);-webkit-user-select:none;user-select:none}.menu--separator{margin-inline:calc(var(--spacing,.25rem) * 3);background-color:var(--color-neutral-300,oklch(87% 0 none));height:1px}.spinner{animation:var(--animate-spin,spin 1s linear infinite)}}@layer utilities;@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-leading{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
3
3
  @theme inline {
4
- --color-background: var(--background);
5
- --color-foreground: var(--foreground);
6
- --color-primary: var(--primary);
7
- --color-secondary: var(--secondary);
8
- --color-success: var(--success);
9
- --color-danger: var(--danger);
4
+ --color-bg: var(--bg);
5
+ --color-fg: var(--fg);
6
+ --color-muted: var(--muted);
10
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brosco/ui",
3
- "version": "0.0.126",
3
+ "version": "0.0.127",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -30,9 +30,9 @@
30
30
  },
31
31
  "devDependencies": {
32
32
  "@eslint/js": "^9.39.5",
33
+ "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
33
34
  "@microsoft/api-extractor": "^7.59.2",
34
35
  "@tailwindcss/vite": "^4.3.3",
35
- "@trivago/prettier-plugin-sort-imports": "^6.0.2",
36
36
  "@types/node": "^24.13.3",
37
37
  "@types/react": "^19.2.18",
38
38
  "@types/react-dom": "^19.2.7",