@pantool/components 1.0.0-alpha.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/README.md +80 -0
- package/dist/atoms/alert-dialog/alert-dialog.d.ts +7 -0
- package/dist/atoms/alert-dialog/alert-dialog.js +2 -0
- package/dist/atoms/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/atoms/alert-dialog/index.d.ts +1 -0
- package/dist/atoms/alert-dialog/index.js +1 -0
- package/dist/atoms/button/button.css +18 -0
- package/dist/atoms/button/button.d.ts +16 -0
- package/dist/atoms/button/button.js +2 -0
- package/dist/atoms/button/button.js.map +1 -0
- package/dist/atoms/button/button.module.js +2 -0
- package/dist/atoms/button/button.module.js.map +1 -0
- package/dist/atoms/button/index.d.ts +1 -0
- package/dist/atoms/button/index.js +1 -0
- package/dist/atoms/checkbox/checkbox.css +119 -0
- package/dist/atoms/checkbox/checkbox.d.ts +53 -0
- package/dist/atoms/checkbox/checkbox.js +2 -0
- package/dist/atoms/checkbox/checkbox.js.map +1 -0
- package/dist/atoms/checkbox/checkbox.module.js +2 -0
- package/dist/atoms/checkbox/checkbox.module.js.map +1 -0
- package/dist/atoms/checkbox/index.d.ts +1 -0
- package/dist/atoms/checkbox/index.js +1 -0
- package/dist/atoms/combobox/combobox.css +302 -0
- package/dist/atoms/combobox/combobox.d.ts +115 -0
- package/dist/atoms/combobox/combobox.js +2 -0
- package/dist/atoms/combobox/combobox.js.map +1 -0
- package/dist/atoms/combobox/combobox.module.js +2 -0
- package/dist/atoms/combobox/combobox.module.js.map +1 -0
- package/dist/atoms/combobox/components/chip.js +2 -0
- package/dist/atoms/combobox/components/chip.js.map +1 -0
- package/dist/atoms/combobox/components/item.d.ts +17 -0
- package/dist/atoms/combobox/components/item.js +2 -0
- package/dist/atoms/combobox/components/item.js.map +1 -0
- package/dist/atoms/combobox/index.d.ts +1 -0
- package/dist/atoms/combobox/index.js +1 -0
- package/dist/atoms/condition-guard/condition-guard.d.ts +32 -0
- package/dist/atoms/condition-guard/condition-guard.js +2 -0
- package/dist/atoms/condition-guard/condition-guard.js.map +1 -0
- package/dist/atoms/condition-guard/index.js +1 -0
- package/dist/atoms/context-menu/context-menu.css +75 -0
- package/dist/atoms/context-menu/context-menu.d.ts +41 -0
- package/dist/atoms/context-menu/context-menu.js +2 -0
- package/dist/atoms/context-menu/context-menu.js.map +1 -0
- package/dist/atoms/context-menu/context-menu.module.js +2 -0
- package/dist/atoms/context-menu/context-menu.module.js.map +1 -0
- package/dist/atoms/context-menu/index.js +1 -0
- package/dist/atoms/dialog/dialog.d.ts +7 -0
- package/dist/atoms/dialog/dialog.js +2 -0
- package/dist/atoms/dialog/dialog.js.map +1 -0
- package/dist/atoms/dialog/index.d.ts +1 -0
- package/dist/atoms/dialog/index.js +1 -0
- package/dist/atoms/icon/icon.d.ts +14 -0
- package/dist/atoms/icon/icon.js +2 -0
- package/dist/atoms/icon/icon.js.map +1 -0
- package/dist/atoms/icon/index.d.ts +1 -0
- package/dist/atoms/icon/index.js +1 -0
- package/dist/atoms/icon-button/icon-button.css +12 -0
- package/dist/atoms/icon-button/icon-button.d.ts +14 -0
- package/dist/atoms/icon-button/icon-button.js +2 -0
- package/dist/atoms/icon-button/icon-button.js.map +1 -0
- package/dist/atoms/icon-button/icon-button.module.js +2 -0
- package/dist/atoms/icon-button/icon-button.module.js.map +1 -0
- package/dist/atoms/icon-button/index.d.ts +1 -0
- package/dist/atoms/icon-button/index.js +1 -0
- package/dist/atoms/index.d.ts +17 -0
- package/dist/atoms/index.js +1 -0
- package/dist/atoms/input/index.d.ts +1 -0
- package/dist/atoms/input/index.js +1 -0
- package/dist/atoms/input/input.css +29 -0
- package/dist/atoms/input/input.d.ts +39 -0
- package/dist/atoms/input/input.js +2 -0
- package/dist/atoms/input/input.js.map +1 -0
- package/dist/atoms/input/input.module.js +2 -0
- package/dist/atoms/input/input.module.js.map +1 -0
- package/dist/atoms/radio/index.d.ts +1 -0
- package/dist/atoms/radio/index.js +1 -0
- package/dist/atoms/radio/radio.css +142 -0
- package/dist/atoms/radio/radio.d.ts +40 -0
- package/dist/atoms/radio/radio.js +2 -0
- package/dist/atoms/radio/radio.js.map +1 -0
- package/dist/atoms/radio/radio.module.js +2 -0
- package/dist/atoms/radio/radio.module.js.map +1 -0
- package/dist/atoms/switch/index.d.ts +1 -0
- package/dist/atoms/switch/index.js +1 -0
- package/dist/atoms/switch/switch.css +68 -0
- package/dist/atoms/switch/switch.d.ts +19 -0
- package/dist/atoms/switch/switch.js +2 -0
- package/dist/atoms/switch/switch.js.map +1 -0
- package/dist/atoms/switch/switch.module.js +2 -0
- package/dist/atoms/switch/switch.module.js.map +1 -0
- package/dist/atoms/tabs/index.d.ts +3 -0
- package/dist/atoms/tabs/index.js +1 -0
- package/dist/atoms/tabs/tabs.css +92 -0
- package/dist/atoms/tabs/tabs.d.ts +43 -0
- package/dist/atoms/tabs/tabs.js +2 -0
- package/dist/atoms/tabs/tabs.js.map +1 -0
- package/dist/atoms/tabs/tabs.module.js +2 -0
- package/dist/atoms/tabs/tabs.module.js.map +1 -0
- package/dist/atoms/text/index.d.ts +1 -0
- package/dist/atoms/text/index.js +1 -0
- package/dist/atoms/text/text.css +273 -0
- package/dist/atoms/text/text.d.ts +18 -0
- package/dist/atoms/text/text.js +2 -0
- package/dist/atoms/text/text.js.map +1 -0
- package/dist/atoms/text/text.module.js +2 -0
- package/dist/atoms/text/text.module.js.map +1 -0
- package/dist/atoms/toast/index.d.ts +1 -0
- package/dist/atoms/toast/index.js +1 -0
- package/dist/atoms/toast/toast.css +151 -0
- package/dist/atoms/toast/toast.d.ts +11 -0
- package/dist/atoms/toast/toast.js +2 -0
- package/dist/atoms/toast/toast.js.map +1 -0
- package/dist/atoms/toast/toast.module.js +2 -0
- package/dist/atoms/toast/toast.module.js.map +1 -0
- package/dist/atoms/tooltip/index.d.ts +1 -0
- package/dist/atoms/tooltip/index.js +1 -0
- package/dist/atoms/tooltip/tooltip.css +92 -0
- package/dist/atoms/tooltip/tooltip.d.ts +50 -0
- package/dist/atoms/tooltip/tooltip.js +2 -0
- package/dist/atoms/tooltip/tooltip.js.map +1 -0
- package/dist/atoms/tooltip/tooltip.module.js +2 -0
- package/dist/atoms/tooltip/tooltip.module.js.map +1 -0
- package/dist/helpers/portal/context/hooks.d.ts +7 -0
- package/dist/helpers/portal/context/hooks.js +2 -0
- package/dist/helpers/portal/context/hooks.js.map +1 -0
- package/dist/helpers/portal/context/index.internal.d.ts +2 -0
- package/dist/helpers/portal/context/index.internal.js +1 -0
- package/dist/helpers/portal/context/portal-config.d.ts +12 -0
- package/dist/helpers/portal/context/portal-config.js +2 -0
- package/dist/helpers/portal/context/portal-config.js.map +1 -0
- package/dist/helpers/portal/context/provider.d.ts +11 -0
- package/dist/helpers/portal/context/provider.js +2 -0
- package/dist/helpers/portal/context/provider.js.map +1 -0
- package/dist/helpers/portal/index.d.ts +3 -0
- package/dist/helpers/portal/index.js +1 -0
- package/dist/helpers/portal/portal.d.ts +24 -0
- package/dist/helpers/portal/portal.js +2 -0
- package/dist/helpers/portal/portal.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +1 -0
- package/dist/internals/base-button/base-button.css +262 -0
- package/dist/internals/base-button/base-button.d.ts +19 -0
- package/dist/internals/base-button/base-button.js +2 -0
- package/dist/internals/base-button/base-button.js.map +1 -0
- package/dist/internals/base-button/base-button.module.js +2 -0
- package/dist/internals/base-button/base-button.module.js.map +1 -0
- package/dist/internals/base-button/index.d.ts +1 -0
- package/dist/internals/base-button/index.js +1 -0
- package/dist/internals/base-dialog/base-dialog.css +74 -0
- package/dist/internals/base-dialog/base-dialog.d.ts +40 -0
- package/dist/internals/base-dialog/base-dialog.js +2 -0
- package/dist/internals/base-dialog/base-dialog.js.map +1 -0
- package/dist/internals/base-dialog/base-dialog.module.js +2 -0
- package/dist/internals/base-dialog/base-dialog.module.js.map +1 -0
- package/dist/internals/base-dialog/index.d.ts +1 -0
- package/dist/internals/base-dialog/index.js +1 -0
- package/dist/internals/base-field/base-field.css +115 -0
- package/dist/internals/base-field/base-field.d.ts +75 -0
- package/dist/internals/base-field/base-field.js +2 -0
- package/dist/internals/base-field/base-field.js.map +1 -0
- package/dist/internals/base-field/base-field.module.js +2 -0
- package/dist/internals/base-field/base-field.module.js.map +1 -0
- package/dist/internals/base-field/components/description.js +2 -0
- package/dist/internals/base-field/components/description.js.map +1 -0
- package/dist/internals/base-field/components/error.js +2 -0
- package/dist/internals/base-field/components/error.js.map +1 -0
- package/dist/internals/base-field/components/label.js +2 -0
- package/dist/internals/base-field/components/label.js.map +1 -0
- package/dist/internals/base-field/index.d.ts +1 -0
- package/dist/internals/base-field/index.js +1 -0
- package/dist/internals/base-svg/base-svg.css +137 -0
- package/dist/internals/base-svg/base-svg.d.ts +29 -0
- package/dist/internals/base-svg/base-svg.js +2 -0
- package/dist/internals/base-svg/base-svg.js.map +1 -0
- package/dist/internals/base-svg/base-svg.module.js +2 -0
- package/dist/internals/base-svg/base-svg.module.js.map +1 -0
- package/dist/internals/base-svg/index.d.ts +1 -0
- package/dist/internals/base-svg/index.js +1 -0
- package/dist/providers/alert-dialog-provider/alert-dialog-provider.d.ts +43 -0
- package/dist/providers/alert-dialog-provider/alert-dialog-provider.js +2 -0
- package/dist/providers/alert-dialog-provider/alert-dialog-provider.js.map +1 -0
- package/dist/providers/alert-dialog-provider/hooks.d.ts +16 -0
- package/dist/providers/alert-dialog-provider/hooks.js +2 -0
- package/dist/providers/alert-dialog-provider/hooks.js.map +1 -0
- package/dist/providers/alert-dialog-provider/index.d.ts +2 -0
- package/dist/providers/alert-dialog-provider/index.js +1 -0
- package/dist/providers/dialog-provider/dialog-provider.d.ts +43 -0
- package/dist/providers/dialog-provider/dialog-provider.js +2 -0
- package/dist/providers/dialog-provider/dialog-provider.js.map +1 -0
- package/dist/providers/dialog-provider/hooks.d.ts +16 -0
- package/dist/providers/dialog-provider/hooks.js +2 -0
- package/dist/providers/dialog-provider/hooks.js.map +1 -0
- package/dist/providers/dialog-provider/index.d.ts +2 -0
- package/dist/providers/dialog-provider/index.js +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.js +1 -0
- package/dist/providers/toast-provider/index.d.ts +1 -0
- package/dist/providers/toast-provider/index.js +1 -0
- package/dist/providers/toast-provider/toast-provider.css +13 -0
- package/dist/providers/toast-provider/toast-provider.d.ts +124 -0
- package/dist/providers/toast-provider/toast-provider.js +2 -0
- package/dist/providers/toast-provider/toast-provider.js.map +1 -0
- package/dist/providers/toast-provider/toast-provider.module.js +2 -0
- package/dist/providers/toast-provider/toast-provider.module.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.js +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Dialog as e}from"../../atoms/dialog/dialog.js";import{createContext as t,useCallback as n,useEffect as r,useState as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=t(null);let c=null;const l=e=>{if(!c){console.warn(`[Dialog] showDialog() called before <DialogProvider> is mounted.`);return}c(e)},u=t=>{let{children:l,classNames:u}=t,[d,f]=i({open:!1,title:``}),p=n(e=>{f({...e,open:!0})},[]);r(()=>(c=p,()=>{c=null}),[p]);let m=n(e=>{e||f(e=>({...e,open:!1}))},[]);return o(s.Provider,{value:{show:p},children:[l,a(e,{classNames:u,...d,onOpenChange:m})]})};export{s as DialogContext,u as DialogProvider,l as showDialog};
|
|
2
|
+
//# sourceMappingURL=dialog-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-provider.js","names":[],"sources":["../../../src/providers/dialog-provider/dialog-provider.tsx"],"sourcesContent":["import { createContext, useCallback, useEffect, useState } from \"react\";\nimport { Dialog } from \"../../atoms/dialog/dialog\";\nimport type {\n BaseDialogClassNames,\n BaseDialogOptions,\n} from \"../../internals/base-dialog\";\n\ntype DialogState = BaseDialogOptions & {\n open: boolean;\n};\n\ntype DialogContextValue = {\n /** Imperatively open the alert dialog with the given options. */\n show: (options: BaseDialogOptions) => void;\n};\n\nexport const DialogContext = createContext<DialogContextValue | null>(null);\n\n/** Singleton reference set when the provider mounts. */\nlet _show: ((options: BaseDialogOptions) => void) | null = null;\n\n/**\n * Imperatively show the alert dialog from anywhere in the app,\n * without needing access to React context.\n *\n * Requires `<DialogProvider>` to be mounted in the tree.\n *\n * @example\n * showDialog({\n * title: \"Delete item?\",\n * variant: \"negative\",\n * onConfirm: () => deleteItem(id),\n * });\n */\nexport const showDialog = (options: BaseDialogOptions) => {\n if (!_show) {\n console.warn(\n \"[Dialog] showDialog() called before <DialogProvider> is mounted.\",\n );\n return;\n }\n _show(options);\n};\n\nexport type DialogProviderProps = {\n /** The app subtree that can trigger alert dialogs. */\n children: React.ReactNode;\n /**\n * Optional className overrides for internal slots.\n * Keys correspond to existing CSS module classes in `styles[\"...\"]`.\n */\n classNames?: BaseDialogClassNames;\n};\n\n/**\n * Provides imperative alert dialog functionality to the app.\n *\n * Mount once near the root of your app. Exposes `showDialog()` for\n * out-of-context usage and `useDialog()` for in-context usage.\n *\n * @example\n * <DialogProvider>\n * <App />\n * </DialogProvider>\n */\nexport const DialogProvider = (props: DialogProviderProps) => {\n const { children, classNames } = props;\n\n const [state, setState] = useState<DialogState>({\n open: false,\n title: \"\",\n });\n\n const show = useCallback((options: BaseDialogOptions) => {\n setState({ ...options, open: true });\n }, []);\n\n useEffect(() => {\n _show = show;\n return () => {\n _show = null;\n };\n }, [show]);\n\n const handleOpenChange = useCallback((open: boolean) => {\n if (!open) setState(prev => ({ ...prev, open: false }));\n }, []);\n\n return (\n <DialogContext.Provider value={{ show }}>\n {children}\n <Dialog\n classNames={classNames}\n {...state}\n onOpenChange={handleOpenChange}\n />\n </DialogContext.Provider>\n );\n};\n"],"mappings":"4LAgBA,MAAa,EAAgB,EAAyC,IAAI,EAG1E,IAAI,EAAuD,KAe3D,MAAa,EAAc,GAA+B,CACxD,GAAI,CAAC,EAAO,CACV,QAAQ,KACN,kEACF,EACA,MACF,CACA,EAAM,CAAO,CACf,EAuBa,EAAkB,GAA+B,CAC5D,GAAM,CAAE,WAAU,cAAe,EAE3B,CAAC,EAAO,GAAY,EAAsB,CAC9C,KAAM,GACN,MAAO,EACT,CAAC,EAEK,EAAO,EAAa,GAA+B,CACvD,EAAS,CAAE,GAAG,EAAS,KAAM,EAAK,CAAC,CACrC,EAAG,CAAC,CAAC,EAEL,OACE,EAAQ,MACK,CACX,EAAQ,IACV,GACC,CAAC,CAAI,CAAC,EAET,IAAM,EAAmB,EAAa,GAAkB,CACjD,GAAM,EAAS,IAAS,CAAE,GAAG,EAAM,KAAM,EAAM,EAAE,CACxD,EAAG,CAAC,CAAC,EAEL,OACE,EAAC,EAAc,SAAf,CAAwB,MAAO,CAAE,MAAK,WAAtC,CACG,EACD,EAAC,EAAD,CACc,aACZ,GAAI,EACJ,aAAc,CACf,CAAA,CACqB,GAE5B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseDialogOptions } from "../../internals/base-dialog/base-dialog.js";
|
|
2
|
+
//#region src/providers/dialog-provider/hooks.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Returns the `show` function to imperatively open the alert dialog.
|
|
5
|
+
* Must be used within `<DialogProvider>`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const { show } = useDialog();
|
|
9
|
+
* show({ title: "Are you sure?", onConfirm: handleDelete });
|
|
10
|
+
*/
|
|
11
|
+
declare const useDialog: () => {
|
|
12
|
+
show: (options: BaseDialogOptions) => void;
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useDialog };
|
|
16
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","names":[],"sources":["../../../src/providers/dialog-provider/hooks.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./dialog-provider\";\n\n/**\n * Returns the `show` function to imperatively open the alert dialog.\n * Must be used within `<DialogProvider>`.\n *\n * @example\n * const { show } = useDialog();\n * show({ title: \"Are you sure?\", onConfirm: handleDelete });\n */\nexport const useDialog = () => {\n const ctx = useContext(DialogContext);\n if (!ctx) {\n throw new Error(\"useDialog must be used within <DialogProvider>\");\n }\n return ctx;\n};\n"],"mappings":"wFAWA,MAAa,MAAkB,CAC7B,IAAM,EAAM,EAAW,CAAa,EACpC,GAAI,CAAC,EACH,MAAU,MAAM,gDAAgD,EAElE,OAAO,CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./dialog-provider.js";import"./hooks.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { usePortalConfig } from "../helpers/portal/context/hooks.js";
|
|
2
|
+
import { PortalConfigProvider } from "../helpers/portal/context/provider.js";
|
|
3
|
+
import { Portal, PortalProps } from "../helpers/portal/portal.js";
|
|
4
|
+
import { AlertDialogContext, AlertDialogProvider, AlertDialogProviderProps, showAlertDialog } from "./alert-dialog-provider/alert-dialog-provider.js";
|
|
5
|
+
import { useAlertDialog } from "./alert-dialog-provider/hooks.js";
|
|
6
|
+
import { DialogContext, DialogProvider, DialogProviderProps, showDialog } from "./dialog-provider/dialog-provider.js";
|
|
7
|
+
import { useDialog } from "./dialog-provider/hooks.js";
|
|
8
|
+
import { ToastProvider, ToastProviderProps, toaster } from "./toast-provider/toast-provider.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../helpers/portal/context/hooks.js";import"../helpers/portal/context/provider.js";import"../helpers/portal/portal.js";import"../helpers/portal/index.js";import"./alert-dialog-provider/alert-dialog-provider.js";import"./alert-dialog-provider/hooks.js";import"./alert-dialog-provider/index.js";import"./dialog-provider/dialog-provider.js";import"./dialog-provider/hooks.js";import"./dialog-provider/index.js";import"./toast-provider/toast-provider.js";import"./toast-provider/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { ToastProvider, ToastProviderProps, toaster } from "./toast-provider.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./toast-provider.js";
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { ToastManagerAddOptions } from "@base-ui/react/toast";
|
|
2
|
+
|
|
3
|
+
//#region src/providers/toast-provider/toast-provider.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Imperative toast helpers for showing application notifications.
|
|
6
|
+
*
|
|
7
|
+
* Each method delegates to the shared Base UI toast manager and assigns
|
|
8
|
+
* a semantic `variant` used by the toast UI for styling.
|
|
9
|
+
*
|
|
10
|
+
* Variants:
|
|
11
|
+
* - `positive`: success confirmations
|
|
12
|
+
* - `negative`: errors and destructive failures
|
|
13
|
+
* - `warn`: warnings that may require attention
|
|
14
|
+
* - `info`: neutral informational updates
|
|
15
|
+
* - `neutral`: low-emphasis generic messages
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* toaster.positive({
|
|
19
|
+
* title: "Saved",
|
|
20
|
+
* description: "Your changes have been saved successfully.",
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* toaster.negative({
|
|
25
|
+
* title: "Something went wrong",
|
|
26
|
+
* description: "Please try again in a moment.",
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* toaster.warn({
|
|
31
|
+
* title: "Unsaved changes",
|
|
32
|
+
* description: "You have unsaved edits on this page.",
|
|
33
|
+
* duration: 8000,
|
|
34
|
+
* });
|
|
35
|
+
*/
|
|
36
|
+
declare const toaster: {
|
|
37
|
+
/**
|
|
38
|
+
* Show a positive toast.
|
|
39
|
+
*
|
|
40
|
+
* Use for successful actions such as saves, publishes, uploads,
|
|
41
|
+
* or other completed operations.
|
|
42
|
+
*
|
|
43
|
+
* @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.
|
|
44
|
+
* @returns The created toast identifier returned by the toast manager.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* toaster.positive({
|
|
48
|
+
* title: "Profile updated",
|
|
49
|
+
* description: "Your profile information was saved.",
|
|
50
|
+
* });
|
|
51
|
+
*/
|
|
52
|
+
positive: (options: ToastManagerAddOptions<any>) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Show a negative toast.
|
|
55
|
+
*
|
|
56
|
+
* Use for errors, failed requests, validation failures,
|
|
57
|
+
* or destructive action feedback.
|
|
58
|
+
*
|
|
59
|
+
* @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.
|
|
60
|
+
* @returns The created toast identifier returned by the toast manager.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* toaster.negative({
|
|
64
|
+
* title: "Delete failed",
|
|
65
|
+
* description: "The item could not be removed.",
|
|
66
|
+
* });
|
|
67
|
+
*/
|
|
68
|
+
negative: (options: ToastManagerAddOptions<any>) => string;
|
|
69
|
+
/**
|
|
70
|
+
* Show a warning toast.
|
|
71
|
+
*
|
|
72
|
+
* Use when the user should be alerted to a non-fatal issue,
|
|
73
|
+
* risky action, or condition that may need attention.
|
|
74
|
+
*
|
|
75
|
+
* @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.
|
|
76
|
+
* @returns The created toast identifier returned by the toast manager.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* toaster.warn({
|
|
80
|
+
* title: "Storage almost full",
|
|
81
|
+
* description: "Free up space to avoid interruptions.",
|
|
82
|
+
* });
|
|
83
|
+
*/
|
|
84
|
+
warn: (options: ToastManagerAddOptions<any>) => string;
|
|
85
|
+
/**
|
|
86
|
+
* Show an informational toast.
|
|
87
|
+
*
|
|
88
|
+
* Use for progress-adjacent updates, general notices,
|
|
89
|
+
* or non-urgent contextual information.
|
|
90
|
+
*
|
|
91
|
+
* @param options - Toast configuration passed to the Base UI toast manager.
|
|
92
|
+
* @returns The created toast identifier returned by the toast manager.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* toaster.info({
|
|
96
|
+
* title: "Invite sent",
|
|
97
|
+
* description: "Your teammate will receive an email shortly.",
|
|
98
|
+
* });
|
|
99
|
+
*/
|
|
100
|
+
info: (options: ToastManagerAddOptions<any>) => string;
|
|
101
|
+
/**
|
|
102
|
+
* Show a neutral toast.
|
|
103
|
+
*
|
|
104
|
+
* Use for generic messages that do not imply success, failure,
|
|
105
|
+
* warning, or special informational emphasis.
|
|
106
|
+
*
|
|
107
|
+
* @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.
|
|
108
|
+
* @returns The created toast identifier returned by the toast manager.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* toaster.neutral({
|
|
112
|
+
* title: "Session restored",
|
|
113
|
+
* description: "Your draft has been recovered.",
|
|
114
|
+
* });
|
|
115
|
+
*/
|
|
116
|
+
neutral: (options: ToastManagerAddOptions<any>) => string;
|
|
117
|
+
};
|
|
118
|
+
type ToastProviderProps = {
|
|
119
|
+
children: React.ReactNode;
|
|
120
|
+
};
|
|
121
|
+
declare const ToastProvider: (props: ToastProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
122
|
+
//#endregion
|
|
123
|
+
export { ToastProvider, ToastProviderProps, toaster };
|
|
124
|
+
//# sourceMappingURL=toast-provider.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{usePortalConfig as e}from"../../helpers/portal/context/hooks.js";import"../../helpers/portal/index.js";import{Toast as t}from"../../atoms/toast/toast.js";import"../../atoms/toast/index.js";import n from"./toast-provider.module.js";import{useEffect as r,useState as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{Toast as s}from"@base-ui/react/toast";const c=s.createToastManager(),l=()=>{let{toasts:e}=s.useToastManager();return e.map(e=>a(t,{...e}))},u={positive:e=>c.add({...e,data:{color:`positive`}}),negative:e=>c.add({...e,data:{color:`negative`}}),warn:e=>c.add({...e,data:{color:`warn`}}),info:e=>c.add({...e,data:{color:`info`}}),neutral:e=>c.add({...e,data:{color:`neutral`}})},d=t=>{let{children:u}=t,[d,f]=i(!1);r(()=>{f(!0)},[]);let{resolveContainer:p}=e(),m=p();return o(s.Provider,{toastManager:c,children:[u,d?a(s.Portal,{container:m,children:a(s.Viewport,{className:n.viewport,children:a(l,{})})}):null]})};export{d as ToastProvider,u as toaster};
|
|
2
|
+
//# sourceMappingURL=toast-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-provider.js","names":["BaseUIToast","Toast","styles"],"sources":["../../../src/providers/toast-provider/toast-provider.tsx"],"sourcesContent":["import {\n Toast as BaseUIToast,\n type ToastManagerAddOptions,\n} from \"@base-ui/react/toast\";\nimport { useEffect, useState } from \"react\";\nimport { Toast, type ToastData } from \"../../atoms/toast\";\nimport { usePortalConfig } from \"../../helpers/portal\";\nimport styles from \"./toast-provider.module.css\";\n\nconst toastManager = BaseUIToast.createToastManager<ToastData>();\n\nconst ToastList = () => {\n const { toasts } = BaseUIToast.useToastManager();\n\n return toasts.map(toast => <Toast {...toast} />);\n};\n\n/**\n * Imperative toast helpers for showing application notifications.\n *\n * Each method delegates to the shared Base UI toast manager and assigns\n * a semantic `variant` used by the toast UI for styling.\n *\n * Variants:\n * - `positive`: success confirmations\n * - `negative`: errors and destructive failures\n * - `warn`: warnings that may require attention\n * - `info`: neutral informational updates\n * - `neutral`: low-emphasis generic messages\n *\n * @example\n * toaster.positive({\n * title: \"Saved\",\n * description: \"Your changes have been saved successfully.\",\n * });\n *\n * @example\n * toaster.negative({\n * title: \"Something went wrong\",\n * description: \"Please try again in a moment.\",\n * });\n *\n * @example\n * toaster.warn({\n * title: \"Unsaved changes\",\n * description: \"You have unsaved edits on this page.\",\n * duration: 8000,\n * });\n */\nexport const toaster = {\n /**\n * Show a positive toast.\n *\n * Use for successful actions such as saves, publishes, uploads,\n * or other completed operations.\n *\n * @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.\n * @returns The created toast identifier returned by the toast manager.\n *\n * @example\n * toaster.positive({\n * title: \"Profile updated\",\n * description: \"Your profile information was saved.\",\n * });\n */\n positive: (options: ToastManagerAddOptions<any>) =>\n toastManager.add({ ...options, data: { color: \"positive\" } }),\n\n /**\n * Show a negative toast.\n *\n * Use for errors, failed requests, validation failures,\n * or destructive action feedback.\n *\n * @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.\n * @returns The created toast identifier returned by the toast manager.\n *\n * @example\n * toaster.negative({\n * title: \"Delete failed\",\n * description: \"The item could not be removed.\",\n * });\n */\n negative: (options: ToastManagerAddOptions<any>) =>\n toastManager.add({ ...options, data: { color: \"negative\" } }),\n\n /**\n * Show a warning toast.\n *\n * Use when the user should be alerted to a non-fatal issue,\n * risky action, or condition that may need attention.\n *\n * @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.\n * @returns The created toast identifier returned by the toast manager.\n *\n * @example\n * toaster.warn({\n * title: \"Storage almost full\",\n * description: \"Free up space to avoid interruptions.\",\n * });\n */\n warn: (options: ToastManagerAddOptions<any>) =>\n toastManager.add({ ...options, data: { color: \"warn\" } }),\n\n /**\n * Show an informational toast.\n *\n * Use for progress-adjacent updates, general notices,\n * or non-urgent contextual information.\n *\n * @param options - Toast configuration passed to the Base UI toast manager.\n * @returns The created toast identifier returned by the toast manager.\n *\n * @example\n * toaster.info({\n * title: \"Invite sent\",\n * description: \"Your teammate will receive an email shortly.\",\n * });\n */\n info: (options: ToastManagerAddOptions<any>) =>\n toastManager.add({ ...options, data: { color: \"info\" } }),\n\n /**\n * Show a neutral toast.\n *\n * Use for generic messages that do not imply success, failure,\n * warning, or special informational emphasis.\n *\n * @param {ToastManagerAddOptions<T>} options - Toast configuration passed to the Base UI toast manager.\n * @returns The created toast identifier returned by the toast manager.\n *\n * @example\n * toaster.neutral({\n * title: \"Session restored\",\n * description: \"Your draft has been recovered.\",\n * });\n */\n neutral: (options: ToastManagerAddOptions<any>) =>\n toastManager.add({ ...options, data: { color: \"neutral\" } }),\n};\n\nexport type ToastProviderProps = {\n children: React.ReactNode;\n};\n\nexport const ToastProvider = (props: ToastProviderProps) => {\n const { children } = props;\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const { resolveContainer } = usePortalConfig();\n const portalContainer = resolveContainer();\n\n return (\n <BaseUIToast.Provider toastManager={toastManager}>\n {children}\n {mounted ? (\n <BaseUIToast.Portal container={portalContainer}>\n <BaseUIToast.Viewport className={styles[\"viewport\"]}>\n <ToastList />\n </BaseUIToast.Viewport>\n </BaseUIToast.Portal>\n ) : null}\n </BaseUIToast.Provider>\n );\n};\n"],"mappings":"6XASA,MAAM,EAAeA,EAAY,mBAA8B,EAEzD,MAAkB,CACtB,GAAM,CAAE,UAAWA,EAAY,gBAAgB,EAE/C,OAAO,EAAO,IAAI,GAAS,EAACC,EAAD,CAAO,GAAI,CAAQ,CAAA,CAAC,CACjD,EAkCa,EAAU,CAgBrB,SAAW,GACT,EAAa,IAAI,CAAE,GAAG,EAAS,KAAM,CAAE,MAAO,UAAW,CAAE,CAAC,EAiB9D,SAAW,GACT,EAAa,IAAI,CAAE,GAAG,EAAS,KAAM,CAAE,MAAO,UAAW,CAAE,CAAC,EAiB9D,KAAO,GACL,EAAa,IAAI,CAAE,GAAG,EAAS,KAAM,CAAE,MAAO,MAAO,CAAE,CAAC,EAiB1D,KAAO,GACL,EAAa,IAAI,CAAE,GAAG,EAAS,KAAM,CAAE,MAAO,MAAO,CAAE,CAAC,EAiB1D,QAAU,GACR,EAAa,IAAI,CAAE,GAAG,EAAS,KAAM,CAAE,MAAO,SAAU,CAAE,CAAC,CAC/D,EAMa,EAAiB,GAA8B,CAC1D,GAAM,CAAE,YAAa,EACf,CAAC,EAAS,GAAc,EAAS,EAAK,EAE5C,MAAgB,CACd,EAAW,EAAI,CACjB,EAAG,CAAC,CAAC,EAEL,GAAM,CAAE,oBAAqB,EAAgB,EACvC,EAAkB,EAAiB,EAEzC,OACE,EAACD,EAAY,SAAb,CAAoC,wBAApC,CACG,EACA,EACC,EAACA,EAAY,OAAb,CAAoB,UAAW,WAC7B,EAACA,EAAY,SAAb,CAAsB,UAAWE,EAAO,kBACtC,EAAC,EAAD,CAAY,CAAA,CACQ,CAAA,CACJ,CAAA,EAClB,IACgB,GAE1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-provider.module.js","names":[],"sources":["../../../src/providers/toast-provider/toast-provider.module.css"],"sourcesContent":[".viewport {\n position: fixed;\n z-index: 1;\n width: calc(100vw - 2rem);\n margin: 0 auto;\n bottom: 1rem;\n right: 1rem;\n left: auto;\n top: auto;\n\n @media (min-width: 500px) {\n bottom: 2rem;\n right: 2rem;\n width: 22.5rem;\n }\n}\n"],"mappings":"AAEA,IAAA,EAAY,CAAA,SAAA,iBAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Overwrite } from "@pantool/lib";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type WithColorProps<P extends object> = P & {
|
|
5
|
+
/**
|
|
6
|
+
* The color of the content.
|
|
7
|
+
*
|
|
8
|
+
* @default "currentcolor"
|
|
9
|
+
*/
|
|
10
|
+
color?: "currentcolor" | "normal" | "secondary" | "tertiary" | "muted" | "brand" | "brand-secondary" | "brand-tertiary" | "brand-muted" | "positive" | "positive-secondary" | "positive-tertiary" | "positive-muted" | "negative" | "negative-secondary" | "negative-tertiary" | "negative-muted" | "warn" | "warn-secondary" | "warn-tertiary" | "warn-muted" | "info" | "info-secondary" | "info-tertiary" | "info-muted" | "on-neutral" | "on-brand" | "on-positive" | "on-negative" | "on-warn" | "on-info";
|
|
11
|
+
};
|
|
12
|
+
type MergeElementProps<E extends React.ElementType, P = object> = Overwrite<React.ComponentPropsWithRef<E>, P>;
|
|
13
|
+
type MergeElementPropsWithOmitted<E extends React.ElementType, K extends keyof React.ComponentPropsWithRef<E>, P = object> = Overwrite<Omit<React.ComponentPropsWithRef<E>, K>, P>;
|
|
14
|
+
type PolymorphicPropsWithOmitted<E extends React.ElementType, K extends keyof React.ComponentPropsWithRef<E>, P = object> = MergeElementPropsWithOmitted<E, K, P & {
|
|
15
|
+
/**
|
|
16
|
+
* The component used for the root node.
|
|
17
|
+
* Either a string to use a HTML element or a component.
|
|
18
|
+
*/
|
|
19
|
+
as?: E;
|
|
20
|
+
}>;
|
|
21
|
+
type PolymorphicProps<E extends React.ElementType, P = object> = MergeElementProps<E, P & {
|
|
22
|
+
/**
|
|
23
|
+
* The component used for the root node.
|
|
24
|
+
* Either a string to use a HTML element or a component.
|
|
25
|
+
*/
|
|
26
|
+
as?: E;
|
|
27
|
+
}>;
|
|
28
|
+
type WithBaseProps<P extends object> = P & {
|
|
29
|
+
/**
|
|
30
|
+
* The content of the component.
|
|
31
|
+
*/
|
|
32
|
+
children?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* The classname of the component's root.
|
|
35
|
+
*/
|
|
36
|
+
className?: string;
|
|
37
|
+
};
|
|
38
|
+
type WithRef<P extends object, E extends React.ElementType> = P & {
|
|
39
|
+
ref?: React.ComponentPropsWithRef<E>["ref"];
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { MergeElementProps, MergeElementPropsWithOmitted, PolymorphicProps, PolymorphicPropsWithOmitted, WithBaseProps, WithColorProps, WithRef };
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"@pantool/lib";
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pantool/components",
|
|
3
|
+
"description": "TODO:",
|
|
4
|
+
"version": "1.0.0-alpha.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist/**/*.js",
|
|
8
|
+
"dist/**/*.js.map",
|
|
9
|
+
"dist/**/*.css",
|
|
10
|
+
"dist/**/*.d.ts",
|
|
11
|
+
"./README.md"
|
|
12
|
+
],
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./atoms/*": {
|
|
22
|
+
"types": "./dist/atoms/*.d.ts",
|
|
23
|
+
"import": "./dist/atoms/*.js",
|
|
24
|
+
"default": "./dist/atoms/*.js"
|
|
25
|
+
},
|
|
26
|
+
"./atoms": {
|
|
27
|
+
"types": "./dist/atoms/index.d.ts",
|
|
28
|
+
"import": "./dist/atoms/index.js",
|
|
29
|
+
"default": "./dist/atoms/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./providers/*": {
|
|
32
|
+
"types": "./dist/providers/*.d.ts",
|
|
33
|
+
"import": "./dist/providers/*.js",
|
|
34
|
+
"default": "./dist/providers/*.js"
|
|
35
|
+
},
|
|
36
|
+
"./providers": {
|
|
37
|
+
"types": "./dist/providers/index.d.ts",
|
|
38
|
+
"import": "./dist/providers/index.js",
|
|
39
|
+
"default": "./dist/providers/index.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@mdi/js": "^7",
|
|
44
|
+
"@types/react": "^17 || ^18 || ^19",
|
|
45
|
+
"react": "^17 || ^18 || ^19",
|
|
46
|
+
"react-dom": "^17 || ^18 || ^19"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@base-ui/react": "^1.4.1",
|
|
50
|
+
"@dnd-kit/core": "^6.3.1",
|
|
51
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
52
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
53
|
+
"clsx": "^2.1.1",
|
|
54
|
+
"cmdk": "^1.1.1",
|
|
55
|
+
"date-fns": "^4.1.0",
|
|
56
|
+
"date-fns-jalali": "4.1.0-0",
|
|
57
|
+
"react-day-picker": "^9.13.0",
|
|
58
|
+
"recharts": "^3.8.1",
|
|
59
|
+
"sonner": "^2.0.7",
|
|
60
|
+
"@pantool/lib": "1.0.0-alpha.1"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@babel/preset-react": "^7.28.5",
|
|
64
|
+
"@babel/preset-typescript": "^7.28.5",
|
|
65
|
+
"@mdi/js": "^7.4.47",
|
|
66
|
+
"@tsdown/css": "^0.22.0",
|
|
67
|
+
"@wyw-in-js/vite": "^1.1.0"
|
|
68
|
+
},
|
|
69
|
+
"scripts": {
|
|
70
|
+
"clear": "shx rm -rf dist",
|
|
71
|
+
"gen:base-ui": "tsx ./scripts/gen-base-ui-md-files.ts",
|
|
72
|
+
"gen:base-ui:f": "tsx ./scripts/gen-base-ui-md-files.ts -f",
|
|
73
|
+
"build": "clear && tsdown",
|
|
74
|
+
"release": "pnpm build && pnpm publish --no-git-checks --access public",
|
|
75
|
+
"release:alpha": "pnpm build && pnpm publish . --no-git-checks --access public --tag alpha"
|
|
76
|
+
}
|
|
77
|
+
}
|