@pixpilot/shadcn-ui 0.0.6 → 0.1.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/dist/Button.cjs +1 -1
- package/dist/Button.js +1 -1
- package/dist/ContentCard.d.ts +2 -2
- package/dist/DatePicker.d.ts +2 -2
- package/dist/LoadingOverlay.cjs +1 -0
- package/dist/LoadingOverlay.d.cts +13 -0
- package/dist/LoadingOverlay.d.ts +13 -0
- package/dist/LoadingOverlay.js +1 -0
- package/dist/ThemeToggle.d.cts +2 -2
- package/dist/hooks/index.cjs +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/use-media-query.cjs +1 -0
- package/dist/hooks/use-media-query.d.cts +8 -0
- package/dist/hooks/use-media-query.d.ts +8 -0
- package/dist/hooks/use-media-query.js +1 -0
- package/dist/icon-selector/IconPicker.cjs +1 -0
- package/dist/icon-selector/IconPicker.d.cts +34 -0
- package/dist/icon-selector/IconPicker.d.ts +34 -0
- package/dist/icon-selector/IconPicker.js +1 -0
- package/dist/icon-selector/constants.cjs +1 -0
- package/dist/icon-selector/icon-picker-container.cjs +1 -0
- package/dist/icon-selector/icon-picker-container.js +1 -0
- package/dist/icon-selector/icon-picker-content.cjs +1 -0
- package/dist/icon-selector/icon-picker-content.js +1 -0
- package/dist/icon-selector/index.cjs +1 -0
- package/dist/icon-selector/index.d.cts +3 -0
- package/dist/icon-selector/index.d.ts +3 -0
- package/dist/icon-selector/index.js +1 -0
- package/dist/icon-selector/types.d.cts +11 -0
- package/dist/icon-selector/types.d.ts +11 -0
- package/dist/icon-selector/use-async-providers.cjs +1 -0
- package/dist/icon-selector/use-async-providers.d.cts +14 -0
- package/dist/icon-selector/use-async-providers.d.ts +14 -0
- package/dist/icon-selector/use-async-providers.js +1 -0
- package/dist/icon-selector/utils/is-valid-provider.cjs +1 -0
- package/dist/icon-selector/utils/is-valid-provider.js +1 -0
- package/dist/icon-selector/virtualized-icon-grid.cjs +1 -0
- package/dist/icon-selector/virtualized-icon-grid.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +7 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +1 -1
- package/dist/tags-input.d.cts +2 -2
- package/package.json +8 -4
- package/dist/Loader.cjs +0 -1
- package/dist/Loader.d.cts +0 -21
- package/dist/Loader.d.ts +0 -21
- package/dist/Loader.js +0 -1
package/dist/Button.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./AbsoluteFill.cjs`)
|
|
1
|
+
const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./AbsoluteFill.cjs`);let n=require(`@pixpilot/shadcn`);n=e.__toESM(n);let r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`);i=e.__toESM(i);let a=require(`lucide-react`);a=e.__toESM(a);const o=14,s=16,c=20;function l(e){return e===`sm`||e===`icon-sm`?14:e===`lg`||e===`icon-lg`?20:16}function u(e){let{children:o,disabled:s,onClick:c,disabledTooltip:u,loading:d,LoaderProps:f,onDisabledClick:p,tooltip:m,title:h,TooltipProps:g,className:_,variant:v,size:y,ref:b,...x}=e,{placement:S=`end`}=f||{},C=(0,r.useCallback)(e=>{c&&!s&&c(e)},[s,c]),w=s||d,T=!!m||!!h,E=!!u&&w,D=T||E,O=E?u??``:m??h??``,k=(0,i.jsx)(`div`,{className:(0,n.cn)(`flex items-center justify-center`,S===`center`&&`rounded-0 absolute inset-0`,S===`start`&&`mr-1`,S===`end`&&`ml-1`),children:(0,i.jsx)(a.Loader2,{className:`text-background animate-spin`,style:{height:l(y),width:l(y)}})}),A=(0,i.jsxs)(n.Button,{...x,ref:b,disabled:w,onClick:C,className:(0,n.cn)(`relative`,_),variant:v,size:y,children:[!!u&&w&&(0,i.jsxs)(n.Tooltip,{...g,children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsx)(t.AbsoluteFill,{onClick:p,style:{pointerEvents:`all`,cursor:`not-allowed`}})}),(0,i.jsx)(n.TooltipContent,{children:(0,i.jsx)(`p`,{children:u})})]}),d&&S===`start`&&k,o,d&&(S===`end`||S===`center`)&&k]});return D&&!(u&&w)?(0,i.jsxs)(n.Tooltip,{...g,children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:A}),(0,i.jsx)(n.TooltipContent,{children:(0,i.jsx)(`p`,{children:O})})]}):A}u.displayName=`Button`,exports.Button=u;
|
package/dist/Button.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AbsoluteFill as e}from"./AbsoluteFill.js";import{
|
|
1
|
+
import{AbsoluteFill as e}from"./AbsoluteFill.js";import{Button as t,Tooltip as n,TooltipContent as r,TooltipTrigger as i,cn as a}from"@pixpilot/shadcn";import o,{useCallback as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{Loader2 as u}from"lucide-react";function d(e){return e===`sm`||e===`icon-sm`?14:e===`lg`||e===`icon-lg`?20:16}function f(o){let{children:f,disabled:p,onClick:m,disabledTooltip:h,loading:g,LoaderProps:_,onDisabledClick:v,tooltip:y,title:b,TooltipProps:x,className:S,variant:C,size:w,ref:T,...E}=o,{placement:D=`end`}=_||{},O=s(e=>{m&&!p&&m(e)},[p,m]),k=p||g,A=!!y||!!b,j=!!h&&k,M=A||j,N=j?h??``:y??b??``,P=c(`div`,{className:a(`flex items-center justify-center`,D===`center`&&`rounded-0 absolute inset-0`,D===`start`&&`mr-1`,D===`end`&&`ml-1`),children:c(u,{className:`text-background animate-spin`,style:{height:d(w),width:d(w)}})}),F=l(t,{...E,ref:T,disabled:k,onClick:O,className:a(`relative`,S),variant:C,size:w,children:[!!h&&k&&l(n,{...x,children:[c(i,{asChild:!0,children:c(e,{onClick:v,style:{pointerEvents:`all`,cursor:`not-allowed`}})}),c(r,{children:c(`p`,{children:h})})]}),g&&D===`start`&&P,f,g&&(D===`end`||D===`center`)&&P]});return M&&!(h&&k)?l(n,{...x,children:[c(i,{asChild:!0,children:F}),c(r,{children:c(`p`,{children:N})})]}):F}f.displayName=`Button`;export{f as Button};
|
package/dist/ContentCard.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Card } from "@pixpilot/shadcn";
|
|
2
2
|
import React, { ReactNode } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime1 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/ContentCard.d.ts
|
|
6
6
|
interface SectionCardProps extends React.ComponentProps<typeof Card> {
|
|
@@ -8,7 +8,7 @@ interface SectionCardProps extends React.ComponentProps<typeof Card> {
|
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
marginBottom?: boolean;
|
|
10
10
|
}
|
|
11
|
-
declare function ContentCard(props: SectionCardProps):
|
|
11
|
+
declare function ContentCard(props: SectionCardProps): react_jsx_runtime1.JSX.Element;
|
|
12
12
|
declare namespace ContentCard {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
package/dist/DatePicker.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Calendar } from "@pixpilot/shadcn";
|
|
2
2
|
import { ComponentProps } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/DatePicker.d.ts
|
|
6
6
|
type BaseDatePickerProps = {
|
|
@@ -8,7 +8,7 @@ type BaseDatePickerProps = {
|
|
|
8
8
|
onChange?: (date: Date | undefined) => void;
|
|
9
9
|
placeholder?: string;
|
|
10
10
|
} & Omit<ComponentProps<typeof Calendar>, 'selected' | 'onSelect' | 'mode'>;
|
|
11
|
-
declare function DatePicker(props: BaseDatePickerProps):
|
|
11
|
+
declare function DatePicker(props: BaseDatePickerProps): react_jsx_runtime2.JSX.Element;
|
|
12
12
|
declare namespace DatePicker {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";const e=require(`./_virtual/rolldown_runtime.cjs`);let t=require(`@pixpilot/shadcn`);t=e.__toESM(t);let n=require(`react`);n=e.__toESM(n);let r=require(`react/jsx-runtime`);r=e.__toESM(r);let i=require(`lucide-react`);i=e.__toESM(i);const a=0,o=300,s=e=>{let{backdrop:a=!0,placement:o=`center`,loading:s,delay:c=0,message:l}=e,[u,d]=(0,n.useState)(!1),[f,p]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e;return s?e=setTimeout(()=>{d(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{p(!0)})})},c):(p(!1),e=setTimeout(()=>{d(!1)},u?300:0)),()=>{clearTimeout(e)}},[s,c,u]);let m={top:`items-start pt-[50px]`,center:`items-center`,bottom:`items-end pb-[50px]`}[o];return u?(0,r.jsx)(`div`,{className:(0,t.cn)(`fixed inset-0 z-[9999] flex justify-center transition-opacity`,m,a?`bg-black/50`:`pointer-events-none`,f?`opacity-100`:`opacity-0`),style:{transitionDuration:`300ms`},children:(0,r.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,r.jsx)(i.Loader2,{className:`text-foreground h-10 w-10 animate-spin`}),l!=null&&(0,r.jsx)(`div`,{className:`mt-2 text-foreground`,children:l})]})}):null};exports.LoadingOverlay=s;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/LoadingOverlay.d.ts
|
|
4
|
+
interface LoaderProps {
|
|
5
|
+
backdrop?: boolean;
|
|
6
|
+
placement?: 'top' | 'bottom' | 'center';
|
|
7
|
+
loading: boolean;
|
|
8
|
+
message?: string;
|
|
9
|
+
delay?: number;
|
|
10
|
+
}
|
|
11
|
+
declare const LoadingOverlay: React.FC<LoaderProps>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { LoaderProps, LoadingOverlay };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/LoadingOverlay.d.ts
|
|
4
|
+
interface LoaderProps {
|
|
5
|
+
backdrop?: boolean;
|
|
6
|
+
placement?: 'top' | 'bottom' | 'center';
|
|
7
|
+
loading: boolean;
|
|
8
|
+
message?: string;
|
|
9
|
+
delay?: number;
|
|
10
|
+
}
|
|
11
|
+
declare const LoadingOverlay: React.FC<LoaderProps>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { LoaderProps, LoadingOverlay };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{cn as e}from"@pixpilot/shadcn";import t,{useEffect as n,useState as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{Loader2 as o}from"lucide-react";const s=t=>{let{backdrop:s=!0,placement:c=`center`,loading:l,delay:u=0,message:d}=t,[f,p]=r(!1),[m,h]=r(!1);n(()=>{let e;return l?e=setTimeout(()=>{p(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{h(!0)})})},u):(h(!1),e=setTimeout(()=>{p(!1)},f?300:0)),()=>{clearTimeout(e)}},[l,u,f]);let g={top:`items-start pt-[50px]`,center:`items-center`,bottom:`items-end pb-[50px]`}[c];return f?i(`div`,{className:e(`fixed inset-0 z-[9999] flex justify-center transition-opacity`,g,s?`bg-black/50`:`pointer-events-none`,m?`opacity-100`:`opacity-0`),style:{transitionDuration:`300ms`},children:a(`div`,{className:`flex flex-col items-center`,children:[i(o,{className:`text-foreground h-10 w-10 animate-spin`}),d!=null&&i(`div`,{className:`mt-2 text-foreground`,children:d})]})}):null};export{s as LoadingOverlay};
|
package/dist/ThemeToggle.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/ThemeToggle.d.ts
|
|
4
|
-
declare function ThemeToggle():
|
|
4
|
+
declare function ThemeToggle(): react_jsx_runtime6.JSX.Element;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { ThemeToggle };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./use-media-query.cjs`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { useMediaQuery } from "./use-media-query.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMediaQuery as e}from"./use-media-query.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`react-responsive`);t=e.__toESM(t);const n=t.useMediaQuery;exports.useMediaQuery=n;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_responsive0 from "react-responsive";
|
|
2
|
+
|
|
3
|
+
//#region src/hooks/use-media-query.d.ts
|
|
4
|
+
declare const useMediaQuery: (settings: Partial<react_responsive0.MediaQueryAllQueryable & {
|
|
5
|
+
query?: string;
|
|
6
|
+
}>, device?: react_responsive0.MediaQueryMatchers, onChange?: (_: boolean) => void) => boolean;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { useMediaQuery };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_responsive0 from "react-responsive";
|
|
2
|
+
|
|
3
|
+
//#region src/hooks/use-media-query.d.ts
|
|
4
|
+
declare const useMediaQuery$1: (settings: Partial<react_responsive0.MediaQueryAllQueryable & {
|
|
5
|
+
query?: string;
|
|
6
|
+
}>, device?: react_responsive0.MediaQueryMatchers, onChange?: (_: boolean) => void) => boolean;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { useMediaQuery$1 as useMediaQuery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useMediaQuery as e}from"react-responsive";const t=e;export{t as useMediaQuery};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../Button.cjs`),n=require(`../hooks/use-media-query.cjs`),r=require(`./constants.cjs`),i=require(`./icon-picker-container.cjs`),a=require(`./icon-picker-content.cjs`);require(`../index.cjs`);let o=require(`react`);o=e.__toESM(o);let s=require(`react/jsx-runtime`);s=e.__toESM(s);let c=require(`@iconify/react`);c=e.__toESM(c);const l=({value:e,onChange:l,onOpenChange:u,pickerMode:d=`dialog`,popover:f,variant:p=`default`,providers:m})=>{let[h,g]=(0,o.useState)(!1),_=n.useMediaQuery({maxWidth:768}),v=(0,o.useCallback)(e=>{l?.(e),g(!1),u?.(!1)},[l,u]),y=typeof e==`string`&&e.length>0,b=y?(0,s.jsx)(c.Icon,{icon:e,width:`20`,height:`20`}):(0,s.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`No icon selected`}),x=(0,s.jsx)(a.default,{providers:m,onChange:v,onSelect:()=>g(!1)});if(m.length===0){if(process.env.NODE_ENV===`development`)throw Error(r.ICON_SELECTOR_ERROR_MESSAGE);return(0,s.jsx)(`div`,{children:`No icons configured`})}let S;S=d===`popover`?_?`dialog`:`popover`:d;let C=p===`icon-button`,w=y?`Change selected icon (${e})`:`Select an icon`,T=y?(0,s.jsx)(c.Icon,{icon:e,width:`20`,height:`20`}):(0,s.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted-foreground text-lg`,children:`+`});return C?(0,s.jsx)(i.IconPickerContainer,{effectiveMode:S,isOpen:h,setIsOpen:g,selectorContent:x,popover:f,children:(0,s.jsx)(t.Button,{type:`button`,variant:`outline`,className:`p-2`,"aria-label":w,children:T})}):(0,s.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2`,children:[b,y&&(0,s.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e})]}),(0,s.jsx)(i.IconPickerContainer,{effectiveMode:S,isOpen:h,setIsOpen:g,selectorContent:x,popover:f,children:(0,s.jsx)(t.Button,{type:`button`,variant:`outline`,className:`whitespace-nowrap`,children:y?`Change Icon`:`Select Icon`})})]})};exports.IconPicker=l;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AsyncIconProvider } from "./use-async-providers.cjs";
|
|
2
|
+
import { PopoverContent } from "@pixpilot/shadcn";
|
|
3
|
+
import { FC } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/icon-selector/IconPicker.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Mount type for the icon selector picker
|
|
9
|
+
* - 'dialog': Always display as a modal dialog
|
|
10
|
+
* - 'popover': Always display as a popover anchored to the trigger button
|
|
11
|
+
*/
|
|
12
|
+
type MountType = 'dialog' | 'popover';
|
|
13
|
+
type IconPickerVariant = 'default' | 'icon-button';
|
|
14
|
+
/**
|
|
15
|
+
* Icon Selector Component
|
|
16
|
+
* Allows users to select an icon from multiple icon providers via a dialog or popover
|
|
17
|
+
*/
|
|
18
|
+
interface IconPickerProps {
|
|
19
|
+
value?: string;
|
|
20
|
+
onChange?: (value: string) => void;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
pickerMode?: MountType;
|
|
23
|
+
popover?: Partial<React.ComponentProps<typeof PopoverContent>>;
|
|
24
|
+
variant?: IconPickerVariant;
|
|
25
|
+
providers: AsyncIconProvider[];
|
|
26
|
+
isLoading?: boolean;
|
|
27
|
+
onProvidersLoaded?: (providers: Array<{
|
|
28
|
+
prefix: string;
|
|
29
|
+
name: string;
|
|
30
|
+
}>) => void;
|
|
31
|
+
}
|
|
32
|
+
declare const IconPicker: FC<IconPickerProps>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { IconPicker, IconPickerProps, IconPickerVariant };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AsyncIconProvider } from "./use-async-providers.js";
|
|
2
|
+
import { PopoverContent } from "@pixpilot/shadcn";
|
|
3
|
+
import { FC } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/icon-selector/IconPicker.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Mount type for the icon selector picker
|
|
9
|
+
* - 'dialog': Always display as a modal dialog
|
|
10
|
+
* - 'popover': Always display as a popover anchored to the trigger button
|
|
11
|
+
*/
|
|
12
|
+
type MountType = 'dialog' | 'popover';
|
|
13
|
+
type IconPickerVariant = 'default' | 'icon-button';
|
|
14
|
+
/**
|
|
15
|
+
* Icon Selector Component
|
|
16
|
+
* Allows users to select an icon from multiple icon providers via a dialog or popover
|
|
17
|
+
*/
|
|
18
|
+
interface IconPickerProps {
|
|
19
|
+
value?: string;
|
|
20
|
+
onChange?: (value: string) => void;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
pickerMode?: MountType;
|
|
23
|
+
popover?: Partial<React.ComponentProps<typeof PopoverContent>>;
|
|
24
|
+
variant?: IconPickerVariant;
|
|
25
|
+
providers: AsyncIconProvider[];
|
|
26
|
+
isLoading?: boolean;
|
|
27
|
+
onProvidersLoaded?: (providers: Array<{
|
|
28
|
+
prefix: string;
|
|
29
|
+
name: string;
|
|
30
|
+
}>) => void;
|
|
31
|
+
}
|
|
32
|
+
declare const IconPicker: FC<IconPickerProps>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { IconPicker, IconPickerProps, IconPickerVariant };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Button as e}from"../Button.js";import{useMediaQuery as t}from"../hooks/use-media-query.js";import{IconPickerContainer as n}from"./icon-picker-container.js";import r from"./icon-picker-content.js";import"../index.js";import{useCallback as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Icon as c}from"@iconify/react";const l=({value:l,onChange:u,onOpenChange:d,pickerMode:f=`dialog`,popover:p,variant:m=`default`,providers:h})=>{let[g,_]=a(!1),v=t({maxWidth:768}),y=i(e=>{u?.(e),_(!1),d?.(!1)},[u,d]),b=typeof l==`string`&&l.length>0,x=b?o(c,{icon:l,width:`20`,height:`20`}):o(`span`,{className:`text-sm text-muted-foreground`,children:`No icon selected`}),S=o(r,{providers:h,onChange:y,onSelect:()=>_(!1)});if(h.length===0)return o(`div`,{children:`No icons configured`});let C;C=f===`popover`?v?`dialog`:`popover`:f;let w=m===`icon-button`,T=b?`Change selected icon (${l})`:`Select an icon`,E=b?o(c,{icon:l,width:`20`,height:`20`}):o(`span`,{"aria-hidden":`true`,className:`text-muted-foreground text-lg`,children:`+`});return w?o(n,{effectiveMode:C,isOpen:g,setIsOpen:_,selectorContent:S,popover:p,children:o(e,{type:`button`,variant:`outline`,className:`p-2`,"aria-label":T,children:E})}):s(`div`,{className:`flex items-center gap-2`,children:[s(`div`,{className:`flex items-center gap-2 rounded-md border border-input bg-background px-3 py-2`,children:[x,b&&o(`span`,{className:`text-sm text-muted-foreground`,children:l})]}),o(n,{effectiveMode:C,isOpen:g,setIsOpen:_,selectorContent:S,popover:p,children:o(e,{type:`button`,variant:`outline`,className:`whitespace-nowrap`,children:b?`Change Icon`:`Select Icon`})})]})};export{l as IconPicker};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`IconSelector requires icon providers configured in <Form fields={{iconSelector: {providers: [{prefix, icons, name}, ...]}}}>`;exports.ICON_SELECTOR_ERROR_MESSAGE=`IconSelector requires icon providers configured in <Form fields={{iconSelector: {providers: [{prefix, icons, name}, ...]}}}>`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`@pixpilot/shadcn`);t=e.__toESM(t);let n=require(`react/jsx-runtime`);n=e.__toESM(n);const r=({effectiveMode:e,isOpen:r,setIsOpen:i,selectorContent:a,children:o,popover:s})=>(0,n.jsxs)(n.Fragment,{children:[e===`dialog`&&(0,n.jsxs)(t.Dialog,{open:r,onOpenChange:i,children:[(0,n.jsx)(t.DialogTrigger,{asChild:!0,children:o}),(0,n.jsxs)(t.DialogContent,{className:`max-h-[80vh] w-full overflow-hidden`,children:[(0,n.jsx)(t.DialogHeader,{children:(0,n.jsx)(t.DialogTitle,{children:`Select an Icon`})}),(0,n.jsx)(`div`,{children:a})]})]}),e===`popover`&&(0,n.jsxs)(t.Popover,{open:r,onOpenChange:i,children:[(0,n.jsx)(t.PopoverTrigger,{asChild:!0,children:o}),(0,n.jsx)(t.PopoverContent,{side:`right`,...s,className:(0,t.cn)(`w-full min-w-sm lg:min-w-lg p-4`,`max-h-dvh md:max-h-auto`,s?.className),children:a})]})]});exports.IconPickerContainer=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Dialog as e,DialogContent as t,DialogHeader as n,DialogTitle as r,DialogTrigger as i,Popover as a,PopoverContent as o,PopoverTrigger as s,cn as c}from"@pixpilot/shadcn";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";const f=({effectiveMode:f,isOpen:p,setIsOpen:m,selectorContent:h,children:g,popover:_})=>d(l,{children:[f===`dialog`&&d(e,{open:p,onOpenChange:m,children:[u(i,{asChild:!0,children:g}),d(t,{className:`max-h-[80vh] w-full overflow-hidden`,children:[u(n,{children:u(r,{children:`Select an Icon`})}),u(`div`,{children:h})]})]}),f===`popover`&&d(a,{open:p,onOpenChange:m,children:[u(s,{asChild:!0,children:g}),u(o,{side:`right`,..._,className:c(`w-full min-w-sm lg:min-w-lg p-4`,`max-h-dvh md:max-h-auto`,_?.className),children:h})]})]});export{f as IconPickerContainer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../LoadingOverlay.cjs`),n=require(`./use-async-providers.cjs`),r=require(`./virtualized-icon-grid.cjs`);let i=require(`@pixpilot/shadcn`);i=e.__toESM(i);let a=require(`react`);a=e.__toESM(a);let o=require(`react/jsx-runtime`);o=e.__toESM(o);let s=require(`lucide-react`);s=e.__toESM(s);function c(e,t){return e?``:t?`No icons found matching your search`:`No icons provided by the selected provider!`}const l=({providers:e,onChange:l,onSelect:u,maxHeight:d=`60vh`})=>{let[f,p]=(0,a.useState)(``),{providers:m,isLoading:h}=n.useAsyncProviders(e),g=(0,a.useMemo)(()=>m.map(e=>e.prefix),[m]),[_,v]=(0,a.useState)(g[0]??`default`);(0,a.useEffect)(()=>{g.length>0&&v(e=>e===`default`?g[0]??`default`:e)},[g]);let y=(0,a.useCallback)(e=>{try{return e.icons.map(t=>`${e.prefix}:${t}`)}catch{return[]}},[]),b=(0,a.useMemo)(()=>{let e={};for(let t of m)e[t.prefix]=y(t);return e},[m,y]),x=(0,a.useMemo)(()=>{if(!f)return{isSearching:!1,data:b[_]??[]};let e=[],t=f.toLowerCase();for(let n of m){let r=(b[n.prefix]??[]).filter(e=>e.toLowerCase().includes(t));e.push(...r)}return{isSearching:!0,data:e}},[f,_,b,m]),S=(0,a.useCallback)(e=>{l?.(e),u?.()},[l,u]),{isSearching:C,data:w}=x,T=!C&&w.length===0||C&&w.length===0;return(0,o.jsxs)(`div`,{className:`flex flex-col gap-4 min-h-[200px] max-h-[80vh]`,children:[(0,o.jsxs)(`div`,{className:`relative`,children:[(0,o.jsx)(i.Input,{placeholder:`Search icons...`,value:f,onChange:e=>p(e.target.value),autoFocus:!0,disabled:h}),f&&(0,o.jsx)(`button`,{type:`button`,onClick:()=>p(``),className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors`,"aria-label":`Clear search`,children:(0,o.jsx)(s.X,{className:`h-4 w-4`})})]}),!C&&m.length>1&&(0,o.jsxs)(i.Tabs,{value:_,onValueChange:v,children:[(0,o.jsx)(i.TabsList,{className:`w-full`,children:m.map(e=>(0,o.jsx)(i.TabsTrigger,{value:e.prefix,children:e.name??e.prefix},e.prefix))}),m.map(e=>(0,o.jsx)(i.TabsContent,{value:e.prefix,children:(0,o.jsx)(r.default,{icons:b[e.prefix]??[],onSelectIcon:S,maxHeight:d})},e.prefix))]}),T&&C&&(0,o.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:c(!1,C)})}),(0,o.jsx)(t.LoadingOverlay,{message:`Loading icons...`,loading:h}),C&&m.length>0&&(0,o.jsx)(r.default,{icons:w,onSelectIcon:S,maxHeight:d}),!C&&m.length===1&&(0,o.jsx)(r.default,{icons:w,onSelectIcon:S,maxHeight:d})]})};var u=l;exports.default=u;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{LoadingOverlay as e}from"../LoadingOverlay.js";import{useAsyncProviders as t}from"./use-async-providers.js";import n from"./virtualized-icon-grid.js";import{Input as r,Tabs as i,TabsContent as a,TabsList as o,TabsTrigger as s}from"@pixpilot/shadcn";import{useCallback as c,useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{X as m}from"lucide-react";function h(e,t){return e?``:t?`No icons found matching your search`:`No icons provided by the selected provider!`}var g=({providers:g,onChange:_,onSelect:v,maxHeight:y=`60vh`})=>{let[b,x]=d(``),{providers:S,isLoading:C}=t(g),w=u(()=>S.map(e=>e.prefix),[S]),[T,E]=d(w[0]??`default`);l(()=>{w.length>0&&E(e=>e===`default`?w[0]??`default`:e)},[w]);let D=c(e=>{try{return e.icons.map(t=>`${e.prefix}:${t}`)}catch{return[]}},[]),O=u(()=>{let e={};for(let t of S)e[t.prefix]=D(t);return e},[S,D]),k=u(()=>{if(!b)return{isSearching:!1,data:O[T]??[]};let e=[],t=b.toLowerCase();for(let n of S){let r=(O[n.prefix]??[]).filter(e=>e.toLowerCase().includes(t));e.push(...r)}return{isSearching:!0,data:e}},[b,T,O,S]),A=c(e=>{_?.(e),v?.()},[_,v]),{isSearching:j,data:M}=k,N=!j&&M.length===0||j&&M.length===0;return p(`div`,{className:`flex flex-col gap-4 min-h-[200px] max-h-[80vh]`,children:[p(`div`,{className:`relative`,children:[f(r,{placeholder:`Search icons...`,value:b,onChange:e=>x(e.target.value),autoFocus:!0,disabled:C}),b&&f(`button`,{type:`button`,onClick:()=>x(``),className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors`,"aria-label":`Clear search`,children:f(m,{className:`h-4 w-4`})})]}),!j&&S.length>1&&p(i,{value:T,onValueChange:E,children:[f(o,{className:`w-full`,children:S.map(e=>f(s,{value:e.prefix,children:e.name??e.prefix},e.prefix))}),S.map(e=>f(a,{value:e.prefix,children:f(n,{icons:O[e.prefix]??[],onSelectIcon:A,maxHeight:y})},e.prefix))]}),N&&j&&f(`div`,{className:`flex items-center justify-center py-8`,children:f(`p`,{className:`text-sm text-muted-foreground`,children:h(!1,j)})}),f(e,{message:`Loading icons...`,loading:C}),j&&S.length>0&&f(n,{icons:M,onSelectIcon:A,maxHeight:y}),!j&&S.length===1&&f(n,{icons:M,onSelectIcon:A,maxHeight:y})]})};export{g as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./use-async-providers.cjs`),t=require(`./IconPicker.cjs`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useAsyncProviders as e}from"./use-async-providers.js";import{IconPicker as t}from"./IconPicker.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`./utils/is-valid-provider.cjs`);let n=require(`react`);n=e.__toESM(n);function r(e=[]){let[r,i]=(0,n.useState)({resolved:[],loading:!1,errors:[]}),a=(0,n.useRef)([]);return(0,n.useEffect)(()=>{let n=!0;return r.loading||a.current.length===e.length&&e.every((e,t)=>e===a.current[t])?void 0:(a.current=e,(async()=>{if(!e.length){n&&i({resolved:[],loading:!1,errors:[]});return}i(e=>({...e,loading:!0,errors:[]}));let r=[],a=[],o=await Promise.allSettled(e.map(async e=>typeof e==`function`?e():e));for(let[e,n]of o.entries())if(n.status===`fulfilled`){let i=n.value;if(t.isValidProvider(i))r.push(i);else{let t=Error(`Invalid provider at index ${e}: Missing required fields.`);a.push(t),console.warn(t.message,i)}}else{let t=n.reason instanceof Error?n.reason:Error(String(n.reason));a.push(t),console.error(`Provider at index ${e} failed to load:`,t)}i({resolved:r,loading:!1,errors:a})})(),()=>{n=!1})},[e,r.loading]),{providers:r.resolved,isLoading:r.loading,errors:r.errors}}exports.useAsyncProviders=r;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IconProvider } from "./types.cjs";
|
|
2
|
+
import "./index.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/icon-selector/use-async-providers.d.ts
|
|
5
|
+
type IconProviderLoader = () => Promise<IconProvider>;
|
|
6
|
+
type AsyncIconProvider = IconProvider | IconProviderLoader;
|
|
7
|
+
interface UseAsyncProvidersReturn {
|
|
8
|
+
providers: IconProvider[];
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
errors: Error[];
|
|
11
|
+
}
|
|
12
|
+
declare function useAsyncProviders(providers?: AsyncIconProvider[]): UseAsyncProvidersReturn;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { AsyncIconProvider, IconProviderLoader, useAsyncProviders };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IconProvider } from "./types.js";
|
|
2
|
+
import "./index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/icon-selector/use-async-providers.d.ts
|
|
5
|
+
type IconProviderLoader = () => Promise<IconProvider>;
|
|
6
|
+
type AsyncIconProvider = IconProvider | IconProviderLoader;
|
|
7
|
+
interface UseAsyncProvidersReturn {
|
|
8
|
+
providers: IconProvider[];
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
errors: Error[];
|
|
11
|
+
}
|
|
12
|
+
declare function useAsyncProviders(providers?: AsyncIconProvider[]): UseAsyncProvidersReturn;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { AsyncIconProvider, IconProviderLoader, useAsyncProviders };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{isValidProvider as e}from"./utils/is-valid-provider.js";import{useEffect as t,useRef as n,useState as r}from"react";function i(i=[]){let[a,o]=r({resolved:[],loading:!1,errors:[]}),s=n([]);return t(()=>{let t=!0;return a.loading||s.current.length===i.length&&i.every((e,t)=>e===s.current[t])?void 0:(s.current=i,(async()=>{if(!i.length){t&&o({resolved:[],loading:!1,errors:[]});return}o(e=>({...e,loading:!0,errors:[]}));let n=[],r=[],a=await Promise.allSettled(i.map(async e=>typeof e==`function`?e():e));for(let[t,i]of a.entries())if(i.status===`fulfilled`){let a=i.value;if(e(a))n.push(a);else{let e=Error(`Invalid provider at index ${t}: Missing required fields.`);r.push(e),console.warn(e.message,a)}}else{let e=i.reason instanceof Error?i.reason:Error(String(i.reason));r.push(e),console.error(`Provider at index ${t} failed to load:`,e)}o({resolved:n,loading:!1,errors:r})})(),()=>{t=!1})},[i,a.loading]),{providers:a.resolved,isLoading:a.loading,errors:a.errors}}export{i as useAsyncProviders};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return typeof e==`object`&&!!e&&`prefix`in e&&`icons`in e&&`name`in e&&typeof e.prefix==`string`&&Array.isArray(e.icons)}exports.isValidProvider=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return typeof e==`object`&&!!e&&`prefix`in e&&`icons`in e&&`name`in e&&typeof e.prefix==`string`&&Array.isArray(e.icons)}export{e as isValidProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`react`);t=e.__toESM(t);let n=require(`react/jsx-runtime`);n=e.__toESM(n);let r=require(`@iconify/react`);r=e.__toESM(r);let i=require(`@tanstack/react-virtual`);i=e.__toESM(i);const a=80,o=80,s=480,c=3,l=t.default.memo(({iconName:e,onSelectIcon:t})=>{if(!e)return null;let i=e.split(`:`)[1]??e;return(0,n.jsxs)(`button`,{type:`button`,onClick:()=>t(e),className:`w-full h-full flex flex-col items-center justify-center gap-1 rounded-md border border-transparent hover:border-primary hover:bg-accent transition-colors p-1`,title:e,children:[(0,n.jsx)(r.Icon,{icon:e,width:`24`,height:`24`}),(0,n.jsx)(`span`,{className:`truncate text-xs text-muted-foreground max-w-full`,children:i})]})});l.displayName=`IconCell`;const u=({icons:e,onSelectIcon:r,maxHeight:a=480,columnCount:o,cellSize:s=80})=>{let c=(0,t.useRef)(null),u=(0,t.useRef)(null),[d,f]=(0,t.useState)(0),p=(0,t.useMemo)(()=>o!==void 0&&o>0?o:d===0?3:Math.max(3,Math.floor(d/s)),[d,s,o]);(0,t.useEffect)(()=>{let e=new ResizeObserver(e=>{for(let t of e)f(t.contentRect.width)});return u.current&&e.observe(u.current),()=>{e.disconnect()}},[]);let m=typeof a==`number`?a:480,h=(0,i.useVirtualizer)({count:(0,t.useMemo)(()=>Math.ceil(e.length/p),[e.length,p]),getScrollElement:()=>c.current,estimateSize:()=>80,overscan:10}),g=h.getVirtualItems(),_=h.getTotalSize(),v=(0,t.useCallback)(e=>{r(e)},[r]);return(0,n.jsx)(`div`,{ref:u,style:{height:m,width:`100%`,overflow:`hidden`,position:`relative`,display:`flex`,flexDirection:`column`},children:u.current&&(0,n.jsx)(`div`,{ref:c,style:{height:`100%`,width:`100%`,overflow:`auto`,flex:1},children:(0,n.jsx)(`div`,{style:{height:`${_}px`,width:`100%`,position:`relative`},children:g.map(t=>{let r=t.index*p,i=Math.min(r+p,e.length),a=e.slice(r,i);return(0,n.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,width:`100%`,height:`${t.size}px`,transform:`translateY(${t.start}px)`},children:(0,n.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(${p}, 1fr)`,height:`100%`,width:`100%`,gap:`0`},children:a.map(e=>(0,n.jsx)(`div`,{style:{minHeight:`100%`,minWidth:`0`},children:(0,n.jsx)(l,{iconName:e,onSelectIcon:v})},e))})},t.key)})})})})};var d=u;exports.default=d;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import e,{useCallback as t,useEffect as n,useMemo as r,useRef as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Icon as c}from"@iconify/react";import{useVirtualizer as l}from"@tanstack/react-virtual";const u=e.memo(({iconName:e,onSelectIcon:t})=>{if(!e)return null;let n=e.split(`:`)[1]??e;return s(`button`,{type:`button`,onClick:()=>t(e),className:`w-full h-full flex flex-col items-center justify-center gap-1 rounded-md border border-transparent hover:border-primary hover:bg-accent transition-colors p-1`,title:e,children:[o(c,{icon:e,width:`24`,height:`24`}),o(`span`,{className:`truncate text-xs text-muted-foreground max-w-full`,children:n})]})});u.displayName=`IconCell`;var d=({icons:e,onSelectIcon:s,maxHeight:c=480,columnCount:d,cellSize:f=80})=>{let p=i(null),m=i(null),[h,g]=a(0),_=r(()=>d!==void 0&&d>0?d:h===0?3:Math.max(3,Math.floor(h/f)),[h,f,d]);n(()=>{let e=new ResizeObserver(e=>{for(let t of e)g(t.contentRect.width)});return m.current&&e.observe(m.current),()=>{e.disconnect()}},[]);let v=typeof c==`number`?c:480,y=l({count:r(()=>Math.ceil(e.length/_),[e.length,_]),getScrollElement:()=>p.current,estimateSize:()=>80,overscan:10}),b=y.getVirtualItems(),x=y.getTotalSize(),S=t(e=>{s(e)},[s]);return o(`div`,{ref:m,style:{height:v,width:`100%`,overflow:`hidden`,position:`relative`,display:`flex`,flexDirection:`column`},children:m.current&&o(`div`,{ref:p,style:{height:`100%`,width:`100%`,overflow:`auto`,flex:1},children:o(`div`,{style:{height:`${x}px`,width:`100%`,position:`relative`},children:b.map(t=>{let n=t.index*_,r=Math.min(n+_,e.length),i=e.slice(n,r);return o(`div`,{style:{position:`absolute`,top:0,left:0,width:`100%`,height:`${t.size}px`,transform:`translateY(${t.start}px)`},children:o(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(${_}, 1fr)`,height:`100%`,width:`100%`,gap:`0`},children:i.map(e=>o(`div`,{style:{minHeight:`100%`,minWidth:`0`},children:o(u,{iconName:e,onSelectIcon:S})},e))})},t.key)})})})})};export{d as default};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./AbsoluteFill.cjs`),n=require(`./Alert.cjs`),r=require(`./
|
|
1
|
+
const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./AbsoluteFill.cjs`),n=require(`./Alert.cjs`),r=require(`./Button.cjs`),i=require(`./CloseButtonRounded.cjs`),a=require(`./CloseButtonAbsolute.cjs`),o=require(`./Combobox.cjs`),s=require(`./confirmation-dialog/confirmation-dialogs.cjs`),c=require(`./confirmation-dialog/DialogProvider.cjs`);require(`./confirmation-dialog/index.cjs`);const l=require(`./ContentCard.cjs`),u=require(`./DatePicker.cjs`),d=require(`./FileUploadInline.cjs`),f=require(`./hooks/use-media-query.cjs`);require(`./hooks/index.cjs`);const p=require(`./LoadingOverlay.cjs`),m=require(`./icon-selector/use-async-providers.cjs`),h=require(`./icon-selector/IconPicker.cjs`);require(`./icon-selector/index.cjs`);const g=require(`./Pagination/Pagination.cjs`);require(`./Pagination/index.cjs`);const _=require(`./PopoverContent.cjs`),v=require(`./Select.cjs`),y=require(`./Slider.cjs`),b=require(`./spinner/spinner.cjs`);require(`./spinner/index.cjs`);const x=require(`./tags-input.cjs`),S=require(`./theme-provider/ThemeProvider.cjs`);require(`./theme-provider/index.cjs`);const C=require(`./ThemeToggle.cjs`),w=require(`./toast/toast.cjs`);require(`./toast/index.cjs`);let T=require(`@pixpilot/shadcn`);T=e.__toESM(T);let E=require(`next-themes`);E=e.__toESM(E),exports.AbsoluteFill=t.AbsoluteFill,exports.Alert=n.Alert,exports.Button=r.Button,exports.CloseButtonAbsolute=a.CloseButtonAbsolute,exports.CloseButtonRounded=i.CloseButtonRounded,exports.Combobox=o.Combobox,exports.ContentCard=l.ContentCard,exports.DEFAULT_ALERT_DURATION=w.DEFAULT_ALERT_DURATION,exports.DatePicker=u.DatePicker,exports.DialogProvider=c.DialogProvider,exports.FileUploadInline=d.FileUploadInline,exports.IconPicker=h.IconPicker,exports.LoadingOverlay=p.LoadingOverlay,exports.Pagination=g.Pagination,exports.PopoverContent=_.PopoverContent,exports.Select=v.Select,exports.Slider=y.Slider,exports.Spinner=b.Spinner,exports.TagsInput=x.TagsInput,exports.ThemeProvider=S.ThemeProvider,exports.ThemeToggle=C.ThemeToggle,exports.cn=T.cn,exports.showConfirmDialog=s.showConfirmDialog,exports.toast=w.toast,exports.toastError=w.toastError,exports.toastInfo=w.toastInfo,exports.toastSuccess=w.toastSuccess,exports.toastWarning=w.toastWarning,exports.useAsyncProviders=m.useAsyncProviders,exports.useMediaQuery=f.useMediaQuery,Object.defineProperty(exports,`useTheme`,{enumerable:!0,get:function(){return E.useTheme}});
|
package/dist/index.d.cts
CHANGED
|
@@ -11,7 +11,12 @@ import "./confirmation-dialog/index.cjs";
|
|
|
11
11
|
import { ContentCard } from "./ContentCard.cjs";
|
|
12
12
|
import { DatePicker } from "./DatePicker.cjs";
|
|
13
13
|
import { FileUploadInline, FileUploadInlineProps } from "./FileUploadInline.cjs";
|
|
14
|
-
import {
|
|
14
|
+
import { useMediaQuery } from "./hooks/use-media-query.cjs";
|
|
15
|
+
import { AsyncIconProvider, IconProviderLoader, useAsyncProviders } from "./icon-selector/use-async-providers.cjs";
|
|
16
|
+
import { IconPicker, IconPickerProps, IconPickerVariant } from "./icon-selector/IconPicker.cjs";
|
|
17
|
+
import { IconProvider } from "./icon-selector/types.cjs";
|
|
18
|
+
import "./icon-selector/index.cjs";
|
|
19
|
+
import { LoaderProps, LoadingOverlay } from "./LoadingOverlay.cjs";
|
|
15
20
|
import { Pagination, PaginationProps } from "./Pagination/Pagination.cjs";
|
|
16
21
|
import "./Pagination/index.cjs";
|
|
17
22
|
import { PopoverContent, PopoverContentProps } from "./PopoverContent.cjs";
|
|
@@ -26,4 +31,4 @@ import { ThemeToggle } from "./ThemeToggle.cjs";
|
|
|
26
31
|
import { DEFAULT_ALERT_DURATION, ToastMessage, toast, toastError, toastInfo, toastSuccess, toastWarning } from "./toast/toast.cjs";
|
|
27
32
|
import "./toast/index.cjs";
|
|
28
33
|
import { cn } from "@pixpilot/shadcn";
|
|
29
|
-
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, Button, ButtonLoaderProps, ButtonProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, DialogProviderProps, FileUploadInline, FileUploadInlineProps,
|
|
34
|
+
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AsyncIconProvider, Button, ButtonLoaderProps, ButtonProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, DialogProviderProps, FileUploadInline, FileUploadInlineProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, LoaderProps, LoadingOverlay, Pagination, PaginationProps, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, Select, SelectOption, Slider, SliderProps, Spinner, SpinnerProps, TagsInput, TagsInputProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ToastMessage, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useAsyncProviders, useMediaQuery, useTheme };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,13 @@ import "./confirmation-dialog/index.js";
|
|
|
11
11
|
import { ContentCard } from "./ContentCard.js";
|
|
12
12
|
import { DatePicker } from "./DatePicker.js";
|
|
13
13
|
import { FileUploadInline, FileUploadInlineProps } from "./FileUploadInline.js";
|
|
14
|
-
import {
|
|
14
|
+
import { useMediaQuery } from "./hooks/use-media-query.js";
|
|
15
|
+
import "./hooks/index.js";
|
|
16
|
+
import { AsyncIconProvider, IconProviderLoader, useAsyncProviders } from "./icon-selector/use-async-providers.js";
|
|
17
|
+
import { IconPicker, IconPickerProps, IconPickerVariant } from "./icon-selector/IconPicker.js";
|
|
18
|
+
import { IconProvider } from "./icon-selector/types.js";
|
|
19
|
+
import "./icon-selector/index.js";
|
|
20
|
+
import { LoaderProps, LoadingOverlay } from "./LoadingOverlay.js";
|
|
15
21
|
import { Pagination, PaginationProps } from "./Pagination/Pagination.js";
|
|
16
22
|
import "./Pagination/index.js";
|
|
17
23
|
import { PopoverContent, PopoverContentProps } from "./PopoverContent.js";
|
|
@@ -26,4 +32,4 @@ import { ThemeToggle } from "./ThemeToggle.js";
|
|
|
26
32
|
import { DEFAULT_ALERT_DURATION, ToastMessage, toast, toastError, toastInfo, toastSuccess, toastWarning } from "./toast/toast.js";
|
|
27
33
|
import "./toast/index.js";
|
|
28
34
|
import { cn } from "@pixpilot/shadcn";
|
|
29
|
-
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, Button, ButtonLoaderProps, ButtonProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, DialogProviderProps, FileUploadInline, FileUploadInlineProps,
|
|
35
|
+
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AsyncIconProvider, Button, ButtonLoaderProps, ButtonProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, DialogProviderProps, FileUploadInline, FileUploadInlineProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, LoaderProps, LoadingOverlay, Pagination, PaginationProps, PopoverCloseButtonProps, PopoverContent, PopoverContentProps, Select, SelectOption, Slider, SliderProps, Spinner, SpinnerProps, TagsInput, TagsInputProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ToastMessage, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useAsyncProviders, useMediaQuery, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AbsoluteFill as e}from"./AbsoluteFill.js";import{Alert as t}from"./Alert.js";import{
|
|
1
|
+
import{AbsoluteFill as e}from"./AbsoluteFill.js";import{Alert as t}from"./Alert.js";import{Button as n}from"./Button.js";import{CloseButtonRounded as r}from"./CloseButtonRounded.js";import{CloseButtonAbsolute as i}from"./CloseButtonAbsolute.js";import{Combobox as a}from"./Combobox.js";import{showConfirmDialog as o}from"./confirmation-dialog/confirmation-dialogs.js";import{DialogProvider as s}from"./confirmation-dialog/DialogProvider.js";import"./confirmation-dialog/index.js";import{ContentCard as c}from"./ContentCard.js";import{DatePicker as l}from"./DatePicker.js";import{FileUploadInline as u}from"./FileUploadInline.js";import{useMediaQuery as d}from"./hooks/use-media-query.js";import"./hooks/index.js";import{LoadingOverlay as f}from"./LoadingOverlay.js";import{useAsyncProviders as p}from"./icon-selector/use-async-providers.js";import{IconPicker as m}from"./icon-selector/IconPicker.js";import"./icon-selector/index.js";import{Pagination as h}from"./Pagination/Pagination.js";import"./Pagination/index.js";import{PopoverContent as g}from"./PopoverContent.js";import{Select as _}from"./Select.js";import{Slider as v}from"./Slider.js";import{Spinner as y}from"./spinner/spinner.js";import"./spinner/index.js";import{TagsInput as b}from"./tags-input.js";import{ThemeProvider as x}from"./theme-provider/ThemeProvider.js";import{useTheme as S}from"./theme-provider/index.js";import{ThemeToggle as C}from"./ThemeToggle.js";import{DEFAULT_ALERT_DURATION as w,toast as T,toastError as E,toastInfo as D,toastSuccess as O,toastWarning as k}from"./toast/toast.js";import"./toast/index.js";import{cn as A}from"@pixpilot/shadcn";export{e as AbsoluteFill,t as Alert,n as Button,i as CloseButtonAbsolute,r as CloseButtonRounded,a as Combobox,c as ContentCard,w as DEFAULT_ALERT_DURATION,l as DatePicker,s as DialogProvider,u as FileUploadInline,m as IconPicker,f as LoadingOverlay,h as Pagination,g as PopoverContent,_ as Select,v as Slider,y as Spinner,b as TagsInput,x as ThemeProvider,C as ThemeToggle,A as cn,o as showConfirmDialog,T as toast,E as toastError,D as toastInfo,O as toastSuccess,k as toastWarning,p as useAsyncProviders,d as useMediaQuery,S as useTheme};
|
package/dist/tags-input.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CommandOptionListItem } from "./CommandOptionList.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime5 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/tags-input.d.ts
|
|
5
5
|
interface TagsInputProps {
|
|
@@ -55,6 +55,6 @@ declare function TagsInput({
|
|
|
55
55
|
addOnPaste,
|
|
56
56
|
addOnTab,
|
|
57
57
|
onValidate
|
|
58
|
-
}: TagsInputProps):
|
|
58
|
+
}: TagsInputProps): react_jsx_runtime5.JSX.Element;
|
|
59
59
|
//#endregion
|
|
60
60
|
export { TagsInput, TagsInputProps };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixpilot/shadcn-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.1.0",
|
|
5
5
|
"description": "Custom UI components and utilities built with shadcn/ui.",
|
|
6
6
|
"author": "m.doaie <m.doaie@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
"url": "https://github.com/pixpilot/shadcn-components.git",
|
|
11
11
|
"directory": "packages/shadcn-ui"
|
|
12
12
|
},
|
|
13
|
-
"keywords": [],
|
|
14
13
|
"exports": {
|
|
15
14
|
".": {
|
|
16
15
|
"types": "./dist/index.d.ts",
|
|
@@ -30,12 +29,17 @@
|
|
|
30
29
|
},
|
|
31
30
|
"dependencies": {
|
|
32
31
|
"@ebay/nice-modal-react": "^1.2.13",
|
|
32
|
+
"@iconify-json/fa": "^1.2.2",
|
|
33
|
+
"@iconify-json/mdi": "^1.2.3",
|
|
34
|
+
"@iconify/react": "^6.0.2",
|
|
33
35
|
"@pixpilot/hash": "^0.0.0",
|
|
36
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
34
37
|
"class-variance-authority": "^0.7.1",
|
|
35
38
|
"lucide-react": "0.553.0",
|
|
36
39
|
"next-themes": "0.4.6",
|
|
40
|
+
"react-responsive": "^10.0.1",
|
|
37
41
|
"sonner": "2.0.7",
|
|
38
|
-
"@pixpilot/shadcn": "0.1.
|
|
42
|
+
"@pixpilot/shadcn": "0.1.11"
|
|
39
43
|
},
|
|
40
44
|
"devDependencies": {
|
|
41
45
|
"@storybook/react": "^8.5.3",
|
|
@@ -47,9 +51,9 @@
|
|
|
47
51
|
"tsdown": "^0.15.8",
|
|
48
52
|
"typescript": "^5.9.3",
|
|
49
53
|
"@internal/eslint-config": "0.3.0",
|
|
50
|
-
"@internal/tsdown-config": "0.1.0",
|
|
51
54
|
"@internal/prettier-config": "0.0.1",
|
|
52
55
|
"@internal/tsconfig": "0.1.0",
|
|
56
|
+
"@internal/tsdown-config": "0.1.0",
|
|
53
57
|
"@internal/vitest-config": "0.1.0"
|
|
54
58
|
},
|
|
55
59
|
"prettier": "@internal/prettier-config",
|
package/dist/Loader.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";const e=require(`./_virtual/rolldown_runtime.cjs`);let t=require(`@pixpilot/shadcn`);t=e.__toESM(t);let n=require(`react`);n=e.__toESM(n);let r=require(`react/jsx-runtime`);r=e.__toESM(r);let i=require(`lucide-react`);i=e.__toESM(i);const a=0,o=e=>{let{backdrop:a=!0,placement:o=`center`,loading:s,delay:c=0}=e,[l,u]=(0,n.useReducer)((e,t)=>{switch(t.type){case`show`:return!0;case`hide`:return!1;default:return e}},!1);(0,n.useEffect)(()=>{if(s){let e=setTimeout(()=>u({type:`show`}),c);return()=>clearTimeout(e)}u({type:`hide`})},[s,c]);let d={top:`items-start pt-[50px]`,center:`items-center`,bottom:`items-end pb-[50px]`}[o];return l?(0,r.jsx)(`div`,{className:(0,t.cn)(`fixed inset-0 z-9999 flex justify-center`,d,a&&`bg-black/50`),children:(0,r.jsx)(i.Loader2,{className:`text-foreground h-10 w-10 animate-spin`})}):null};exports.Loader=o;
|
package/dist/Loader.d.cts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
//#region src/Loader.d.ts
|
|
4
|
-
interface LoaderProps {
|
|
5
|
-
backdrop?: boolean;
|
|
6
|
-
/**
|
|
7
|
-
* Position of the loader
|
|
8
|
-
* @default 'center'
|
|
9
|
-
*/
|
|
10
|
-
placement?: 'top' | 'bottom' | 'center';
|
|
11
|
-
loading: boolean;
|
|
12
|
-
message?: string;
|
|
13
|
-
/**
|
|
14
|
-
* Delay in milliseconds before showing the loader
|
|
15
|
-
* @default 300
|
|
16
|
-
*/
|
|
17
|
-
delay?: number;
|
|
18
|
-
}
|
|
19
|
-
declare const Loader: React.FC<LoaderProps>;
|
|
20
|
-
//#endregion
|
|
21
|
-
export { Loader, LoaderProps };
|
package/dist/Loader.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
//#region src/Loader.d.ts
|
|
4
|
-
interface LoaderProps {
|
|
5
|
-
backdrop?: boolean;
|
|
6
|
-
/**
|
|
7
|
-
* Position of the loader
|
|
8
|
-
* @default 'center'
|
|
9
|
-
*/
|
|
10
|
-
placement?: 'top' | 'bottom' | 'center';
|
|
11
|
-
loading: boolean;
|
|
12
|
-
message?: string;
|
|
13
|
-
/**
|
|
14
|
-
* Delay in milliseconds before showing the loader
|
|
15
|
-
* @default 300
|
|
16
|
-
*/
|
|
17
|
-
delay?: number;
|
|
18
|
-
}
|
|
19
|
-
declare const Loader: React.FC<LoaderProps>;
|
|
20
|
-
//#endregion
|
|
21
|
-
export { Loader, LoaderProps };
|
package/dist/Loader.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{cn as e}from"@pixpilot/shadcn";import t,{useEffect as n,useReducer as r}from"react";import{jsx as i}from"react/jsx-runtime";import{Loader2 as a}from"lucide-react";const o=t=>{let{backdrop:o=!0,placement:s=`center`,loading:c,delay:l=0}=t,[u,d]=r((e,t)=>{switch(t.type){case`show`:return!0;case`hide`:return!1;default:return e}},!1);n(()=>{if(c){let e=setTimeout(()=>d({type:`show`}),l);return()=>clearTimeout(e)}d({type:`hide`})},[c,l]);let f={top:`items-start pt-[50px]`,center:`items-center`,bottom:`items-end pb-[50px]`}[s];return u?i(`div`,{className:e(`fixed inset-0 z-9999 flex justify-center`,f,o&&`bg-black/50`),children:i(a,{className:`text-foreground h-10 w-10 animate-spin`})}):null};export{o as Loader};
|