anicca-ui 1.0.0 → 1.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.
Files changed (114) hide show
  1. package/dist/anicca-ui.css +1 -1
  2. package/dist/anicca-ui.es.js +2637 -603
  3. package/dist/anicca-ui.umd.js +30 -1
  4. package/dist/auth/AuthModal/AuthModal.d.ts +92 -0
  5. package/dist/auth/AuthModal/index.d.ts +1 -0
  6. package/dist/auth/index.d.ts +1 -0
  7. package/dist/dashboard/components/ActivityFeed/ActivityFeed.d.ts +1 -10
  8. package/dist/dashboard/components/Breadcrumb/Breadcrumb.d.ts +1 -9
  9. package/dist/dashboard/components/ChartWrapper/ChartWrapper.d.ts +1 -15
  10. package/dist/dashboard/components/DataTable/DataTable.d.ts +3 -10
  11. package/dist/dashboard/components/Modal/Modal.d.ts +1 -9
  12. package/dist/dashboard/components/Navbar/Navbar.d.ts +1 -9
  13. package/dist/dashboard/components/ProgressCard/ProgressCard.d.ts +1 -14
  14. package/dist/dashboard/components/Sidebar/Sidebar.d.ts +2 -11
  15. package/dist/dashboard/components/StatCard/StatCard.d.ts +2 -12
  16. package/dist/dashboard/components/Tabs/Tabs.d.ts +1 -2
  17. package/dist/data/Avatar/Avatar.d.ts +31 -0
  18. package/dist/data/Avatar/index.d.ts +1 -0
  19. package/dist/data/Badge/Badge.d.ts +16 -0
  20. package/dist/data/Badge/index.d.ts +1 -0
  21. package/dist/data/Pagination/Pagination.d.ts +27 -0
  22. package/dist/data/Pagination/index.d.ts +1 -0
  23. package/dist/data/Skeleton/Skeleton.d.ts +18 -0
  24. package/dist/data/Skeleton/index.d.ts +1 -0
  25. package/dist/data/Spinner/Spinner.d.ts +16 -0
  26. package/dist/data/Spinner/index.d.ts +1 -0
  27. package/dist/data/index.d.ts +5 -0
  28. package/dist/demo/App.d.ts +1 -0
  29. package/dist/demo/data.d.ts +153 -0
  30. package/dist/demo/nav.d.ts +5 -0
  31. package/dist/demo/pages/AdminPage.d.ts +1 -0
  32. package/dist/demo/pages/DashboardPage.d.ts +1 -0
  33. package/dist/demo/pages/FormElementPage.d.ts +1 -0
  34. package/dist/demo/pages/FormValidationPage.d.ts +1 -0
  35. package/dist/demo/pages/FormWizardPage.d.ts +1 -0
  36. package/dist/demo/pages/Placeholder.d.ts +4 -0
  37. package/dist/demo/pages/ProfilePage.d.ts +1 -0
  38. package/dist/demo/pages/RtlPage.d.ts +1 -0
  39. package/dist/demo/pages/Settings2Page.d.ts +1 -0
  40. package/dist/demo/pages/SettingsPage.d.ts +1 -0
  41. package/dist/demo/pages/TableBasicPage.d.ts +1 -0
  42. package/dist/demo/pages/TableDataPage.d.ts +1 -0
  43. package/dist/demo/pages/auth.d.ts +5 -0
  44. package/dist/demo/pages/dashLayouts.d.ts +10 -0
  45. package/dist/demo/pages/errors.d.ts +3 -0
  46. package/dist/demo/pages/extra.d.ts +2 -0
  47. package/dist/demo/pages/icons.d.ts +3 -0
  48. package/dist/demo/pages/landing.d.ts +9 -0
  49. package/dist/demo/pages/maps.d.ts +3 -0
  50. package/dist/demo/pages/parts.d.ts +45 -0
  51. package/dist/demo/pages/plugins.d.ts +6 -0
  52. package/dist/demo/pages/special.d.ts +5 -0
  53. package/dist/demo/pages/users.d.ts +5 -0
  54. package/dist/demo/pages/widgets.d.ts +3 -0
  55. package/dist/demo/theme-init.d.ts +0 -0
  56. package/dist/demo/theme.d.ts +33 -0
  57. package/dist/demo/ui/AuthLayout.d.ts +9 -0
  58. package/dist/demo/ui/HeaderMenus.d.ts +2 -0
  59. package/dist/demo/ui/LandingLayout.d.ts +7 -0
  60. package/dist/demo/ui/Modal.d.ts +20 -0
  61. package/dist/demo/ui/Toast.d.ts +8 -0
  62. package/dist/demo/ui/UserMenu.d.ts +9 -0
  63. package/dist/demo/ui/charts.d.ts +29 -0
  64. package/dist/demo/ui/form.d.ts +54 -0
  65. package/dist/demo/ui/primitives.d.ts +32 -0
  66. package/dist/demo.d.ts +1 -0
  67. package/dist/feedback/Alert/Alert.d.ts +21 -0
  68. package/dist/feedback/Alert/index.d.ts +1 -0
  69. package/dist/feedback/Popover/Popover.d.ts +22 -0
  70. package/dist/feedback/Popover/index.d.ts +1 -0
  71. package/dist/feedback/Popup/Popup.d.ts +40 -0
  72. package/dist/feedback/Popup/index.d.ts +1 -0
  73. package/dist/feedback/Toast/Toast.d.ts +46 -0
  74. package/dist/feedback/Toast/index.d.ts +1 -0
  75. package/dist/feedback/Tooltip/Tooltip.d.ts +20 -0
  76. package/dist/feedback/Tooltip/index.d.ts +1 -0
  77. package/dist/feedback/index.d.ts +5 -0
  78. package/dist/index.d.ts +6 -0
  79. package/dist/layout/Card/Card.d.ts +21 -0
  80. package/dist/layout/Card/index.d.ts +1 -0
  81. package/dist/layout/Divider/Divider.d.ts +15 -0
  82. package/dist/layout/Divider/index.d.ts +1 -0
  83. package/dist/layout/Grid/Grid.d.ts +23 -0
  84. package/dist/layout/Grid/index.d.ts +1 -0
  85. package/dist/layout/Stack/Stack.d.ts +22 -0
  86. package/dist/layout/Stack/index.d.ts +1 -0
  87. package/dist/layout/index.d.ts +4 -0
  88. package/dist/overlay/Combobox/Combobox.d.ts +39 -0
  89. package/dist/overlay/Combobox/index.d.ts +1 -0
  90. package/dist/overlay/Drawer/Drawer.d.ts +26 -0
  91. package/dist/overlay/Drawer/index.d.ts +1 -0
  92. package/dist/overlay/Dropdown/Dropdown.d.ts +20 -0
  93. package/dist/overlay/Dropdown/index.d.ts +1 -0
  94. package/dist/overlay/Menu/Menu.d.ts +22 -0
  95. package/dist/overlay/Menu/index.d.ts +1 -0
  96. package/dist/overlay/index.d.ts +4 -0
  97. package/dist/primitives/Button/Button.d.ts +20 -0
  98. package/dist/primitives/Button/index.d.ts +1 -0
  99. package/dist/primitives/Checkbox/Checkbox.d.ts +14 -0
  100. package/dist/primitives/Checkbox/index.d.ts +1 -0
  101. package/dist/primitives/Input/Input.d.ts +24 -0
  102. package/dist/primitives/Input/index.d.ts +1 -0
  103. package/dist/primitives/Radio/Radio.d.ts +29 -0
  104. package/dist/primitives/Radio/index.d.ts +1 -0
  105. package/dist/primitives/Select/Select.d.ts +23 -0
  106. package/dist/primitives/Select/index.d.ts +1 -0
  107. package/dist/primitives/Switch/Switch.d.ts +15 -0
  108. package/dist/primitives/Switch/index.d.ts +1 -0
  109. package/dist/primitives/Textarea/Textarea.d.ts +18 -0
  110. package/dist/primitives/Textarea/index.d.ts +1 -0
  111. package/dist/primitives/index.d.ts +7 -0
  112. package/dist/theme/AniccaThemeProvider.d.ts +2 -1
  113. package/dist/theme/types.d.ts +29 -30
  114. package/package.json +3 -6
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Preview configuration: grouped navigation (mirrors a full admin template),
3
+ * page titles, accent palette, and shared utility class strings.
4
+ */
5
+ export type Page = string;
6
+ export interface NavItem {
7
+ icon: string;
8
+ label: string;
9
+ page: Page;
10
+ }
11
+ export interface NavGroup {
12
+ label: string;
13
+ icon: string;
14
+ items: NavItem[];
15
+ }
16
+ export declare const NAV_GROUPS: NavGroup[];
17
+ /** page → title lookup, derived from the nav. */
18
+ export declare const TITLES: Record<string, string>;
19
+ /** Pages rendered without the dashboard shell (own full-screen layout). */
20
+ export declare const STANDALONE: ReadonlySet<Page>;
21
+ /** Accent hexes chosen to read well in both light and dark themes. */
22
+ export declare const ACCENT: {
23
+ readonly indigo: "#4648d4";
24
+ readonly green: "#10b981";
25
+ readonly red: "#ef4444";
26
+ readonly amber: "#d97706";
27
+ readonly slate: "#64748b";
28
+ };
29
+ /** Reusable surface + control classes (theme-aware via index.html overrides). */
30
+ export declare const card = "rounded-[22px] glass border border-outline-variant/15 shadow-[0_1px_2px_rgba(11,28,48,0.04),0_20px_44px_-24px_rgba(11,28,48,0.30)]";
31
+ export declare const btnPrimary = "inline-flex items-center gap-2 px-5 py-2.5 rounded-[12px] bg-primary text-on-primary text-label-md font-semibold shadow-sm hover:brightness-[1.06] active:scale-[.98] transition-all";
32
+ export declare const btnGhost = "inline-flex items-center gap-2 px-5 py-2.5 rounded-[12px] border border-outline-variant/50 text-on-surface text-label-md hover:bg-surface-container-low hover:border-outline-variant active:scale-[.98] transition-all";
33
+ export declare const pageShell = "p-margin-desktop max-w-container-max mx-auto space-y-gutter";
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /** Full-screen split layout for authentication pages. */
4
+ export declare function AuthLayout({ title, subtitle, children, footer }: {
5
+ title: string;
6
+ subtitle: string;
7
+ children: ReactNode;
8
+ footer?: ReactNode;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare function NotificationsMenu(): import("react/jsx-runtime").JSX.Element;
2
+ export declare function MessagesMenu(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ import { Page } from '../theme';
3
+
4
+ export declare function LandingLayout({ active, children }: {
5
+ active: Page;
6
+ children: ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /**
4
+ * Action helpers shared by every interactive control: a toast, an info popup,
5
+ * a form popup, and a delete confirm popup — all via AniccaPopupProvider.
6
+ */
7
+ export declare function useActions(): {
8
+ notify: (message: string, tone?: import('./Toast').Tone) => void;
9
+ notifyPopup: import('../..').AniccaPopupControls;
10
+ info: (title: string, body: ReactNode) => string;
11
+ form: (title: string, fields: string[]) => string;
12
+ confirm: (title: string, message: string, onConfirm: () => void) => string;
13
+ };
14
+ /**
15
+ * The "⋮" row menu: a dropdown of actions. Rendered with fixed positioning so
16
+ * it is never clipped by the table's overflow. Delete asks for confirmation.
17
+ */
18
+ export declare function RowActions({ label }: {
19
+ label: string;
20
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export type Tone = 'info' | 'success' | 'error';
4
+ /** Fire a transient toast from anywhere inside <ToastProvider>. */
5
+ export declare const useToast: () => (message: string, tone?: Tone) => void;
6
+ export declare function ToastProvider({ children }: {
7
+ children: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ interface UserMenuProps {
2
+ name: string;
3
+ role: string;
4
+ onProfile: () => void;
5
+ onLogout: () => void;
6
+ }
7
+ /** Avatar button in the navbar that opens a Profile / Logout dropdown. */
8
+ export declare function UserMenu({ name, role, onProfile, onLogout }: UserMenuProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,29 @@
1
+ export interface Series {
2
+ name: string;
3
+ color: string;
4
+ data: number[];
5
+ }
6
+ export declare function LineChart({ series, labels, height, area, sparkline, suffix }: {
7
+ series: Series[];
8
+ labels: string[];
9
+ height?: number;
10
+ area?: boolean;
11
+ sparkline?: boolean;
12
+ suffix?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function BarChart({ series, labels, height, stacked, prefix, suffix }: {
15
+ series: Series[];
16
+ labels: string[];
17
+ height?: number;
18
+ stacked?: boolean;
19
+ prefix?: string;
20
+ suffix?: string;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export declare function RadialBar({ items, height }: {
23
+ items: {
24
+ label: string;
25
+ value: number;
26
+ color: string;
27
+ }[];
28
+ height?: number;
29
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,54 @@
1
+ export declare function TextInput({ label, hint, error, icon, type, placeholder, defaultValue }: {
2
+ label?: string;
3
+ hint?: string;
4
+ error?: string;
5
+ icon?: string;
6
+ type?: string;
7
+ placeholder?: string;
8
+ defaultValue?: string;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function Textarea({ label, hint, placeholder, rows }: {
11
+ label?: string;
12
+ hint?: string;
13
+ placeholder?: string;
14
+ rows?: number;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Select({ label, hint, options }: {
17
+ label?: string;
18
+ hint?: string;
19
+ options: string[];
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ /** Multi-select with removable chips (Choices.js replacement). */
22
+ export declare function MultiSelect({ label, options }: {
23
+ label?: string;
24
+ options: string[];
25
+ }): import("react/jsx-runtime").JSX.Element;
26
+ export declare function Checkbox({ label }: {
27
+ label: string;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ export declare function RadioGroup({ label, options }: {
30
+ label?: string;
31
+ options: string[];
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ /** Toggle switch with optional label row. */
34
+ export declare function SwitchField({ label }: {
35
+ label: string;
36
+ }): import("react/jsx-runtime").JSX.Element;
37
+ export declare function Range({ label, min, max, defaultValue }: {
38
+ label?: string;
39
+ min?: number;
40
+ max?: number;
41
+ defaultValue?: number;
42
+ }): import("react/jsx-runtime").JSX.Element;
43
+ export declare function DatePicker({ label, hint }: {
44
+ label?: string;
45
+ hint?: string;
46
+ }): import("react/jsx-runtime").JSX.Element;
47
+ /** Drag-and-drop file area (Dropzone replacement). */
48
+ export declare function FileDrop({ label }: {
49
+ label?: string;
50
+ }): import("react/jsx-runtime").JSX.Element;
51
+ /** Lightweight rich-text toolbar + editable area (Quill replacement). */
52
+ export declare function RichText({ label }: {
53
+ label?: string;
54
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,32 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ /** Material Symbols glyph, optionally filled. */
4
+ export declare function Icon({ name, className, fill }: {
5
+ name: string;
6
+ className?: string;
7
+ fill?: boolean;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export type BadgeTone = 'success' | 'warn' | 'error' | 'info' | 'neutral';
10
+ export declare function Badge({ tone, children }: {
11
+ tone: BadgeTone;
12
+ children: ReactNode;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ /** Self-contained on/off switch with a toast on change. */
15
+ export declare function Toggle({ on: initial }: {
16
+ on: boolean;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ /** Labelled text input that keeps its own value (Settings forms). */
19
+ export declare function Field({ label, value }: {
20
+ label: string;
21
+ value?: string;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ /** Segmented control — pill button group for in-place filtering (no card). */
24
+ export declare function Segmented({ options, value, onChange }: {
25
+ options: string[];
26
+ value: string;
27
+ onChange: (v: string) => void;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ /** Breadcrumb trail; last entry is the current page. */
30
+ export declare function Crumbs({ trail }: {
31
+ trail: string[];
32
+ }): import("react/jsx-runtime").JSX.Element;
package/dist/demo.d.ts ADDED
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaAlertVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';
4
+ export interface AniccaAlertLabels {
5
+ dismiss?: string;
6
+ }
7
+ export interface AniccaAlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
8
+ variant?: AniccaAlertVariant;
9
+ title?: React.ReactNode;
10
+ /** Replace default variant icon. Pass null to hide icon. */
11
+ icon?: React.ReactNode | null;
12
+ /** Show dismiss × button and call this when clicked. */
13
+ onDismiss?: () => void;
14
+ labels?: AniccaAlertLabels;
15
+ /** Visual style. */
16
+ appearance?: 'soft' | 'outlined';
17
+ }
18
+ /**
19
+ * AniccaAlert — Inline contextual message with variant icon + optional dismiss.
20
+ */
21
+ export declare function AniccaAlert({ variant, title, icon, onDismiss, labels, appearance, className, children, ...rest }: AniccaAlertProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Alert';
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaPopoverPlacement = 'top' | 'right' | 'bottom' | 'left';
4
+ export interface AniccaPopoverProps {
5
+ content: React.ReactNode;
6
+ placement?: AniccaPopoverPlacement;
7
+ /** Controlled open state. */
8
+ open?: boolean;
9
+ onOpenChange?: (open: boolean) => void;
10
+ /** Disable outside-click dismissal. */
11
+ disableOutsideClick?: boolean;
12
+ /** Disable escape key dismissal. */
13
+ disableEscapeKey?: boolean;
14
+ /** Trigger event. Default click. */
15
+ trigger?: 'click' | 'hover';
16
+ children: React.ReactElement;
17
+ className?: string;
18
+ }
19
+ /**
20
+ * AniccaPopover — Click/hover popover that portals to body. Wrap a single trigger element.
21
+ */
22
+ export declare function AniccaPopover({ content, placement, open: controlledOpen, onOpenChange, disableOutsideClick, disableEscapeKey, trigger, children, className, }: AniccaPopoverProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Popover';
@@ -0,0 +1,40 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaPopupVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';
4
+ export interface AniccaPopupAction {
5
+ label: string;
6
+ onClick: () => void;
7
+ /** @default 'secondary' */
8
+ variant?: 'primary' | 'secondary' | 'danger';
9
+ }
10
+ export interface AniccaPopup {
11
+ id: string;
12
+ title?: React.ReactNode;
13
+ description?: React.ReactNode;
14
+ variant?: AniccaPopupVariant;
15
+ /** Milliseconds before auto-dismiss. 0 = stay until dismissed. Defaults to 0 when actions present, 4000 otherwise. */
16
+ duration?: number;
17
+ actions?: AniccaPopupAction[];
18
+ }
19
+ export interface AniccaPopupControls {
20
+ push: (popup: Omit<AniccaPopup, 'id'> & {
21
+ id?: string;
22
+ }) => string;
23
+ dismiss: (id: string) => void;
24
+ clear: () => void;
25
+ }
26
+ export interface AniccaPopupProviderProps {
27
+ children: React.ReactNode;
28
+ }
29
+ /**
30
+ * AniccaPopupProvider — Wrap your app to enable center popup notifications via `useAniccaPopup()`.
31
+ */
32
+ export declare function AniccaPopupProvider({ children }: AniccaPopupProviderProps): React.ReactElement;
33
+ /**
34
+ * useAniccaPopup — Returns popup controls. Must be used inside AniccaPopupProvider.
35
+ *
36
+ * @example
37
+ * const popup = useAniccaPopup()
38
+ * popup.push({ title: 'Hapus data?', variant: 'danger', actions: [{ label: 'Hapus', onClick: del, variant: 'danger' }, { label: 'Batal', onClick: () => {} }] })
39
+ */
40
+ export declare function useAniccaPopup(): AniccaPopupControls;
@@ -0,0 +1 @@
1
+ export * from './Popup';
@@ -0,0 +1,46 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaToastVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';
4
+ export type AniccaToastPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';
5
+ export interface AniccaToast {
6
+ id: string;
7
+ title?: React.ReactNode;
8
+ description?: React.ReactNode;
9
+ variant?: AniccaToastVariant;
10
+ /** Milliseconds before auto-dismiss. 0 = stay until manually closed. */
11
+ duration?: number;
12
+ /** Optional action button rendered on the right. */
13
+ action?: {
14
+ label: string;
15
+ onClick: () => void;
16
+ };
17
+ }
18
+ interface ToastContextValue {
19
+ toasts: AniccaToast[];
20
+ push: (toast: Omit<AniccaToast, 'id'> & {
21
+ id?: string;
22
+ }) => string;
23
+ dismiss: (id: string) => void;
24
+ clear: () => void;
25
+ }
26
+ export interface AniccaToastProviderProps {
27
+ position?: AniccaToastPosition;
28
+ /** Default duration for toasts that don't specify one. */
29
+ defaultDuration?: number;
30
+ /** Maximum visible toasts; older are dropped. */
31
+ max?: number;
32
+ children: React.ReactNode;
33
+ }
34
+ /**
35
+ * AniccaToastProvider — Wrap your app to enable toast notifications via `useAniccaToast()`.
36
+ */
37
+ export declare function AniccaToastProvider({ position, defaultDuration, max, children, }: AniccaToastProviderProps): React.ReactElement;
38
+ /**
39
+ * useAniccaToast — Returns toast controls. Must be used inside AniccaToastProvider.
40
+ *
41
+ * @example
42
+ * const toast = useAniccaToast()
43
+ * toast.push({ title: 'Saved!', variant: 'success' })
44
+ */
45
+ export declare function useAniccaToast(): ToastContextValue;
46
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Toast';
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaTooltipPlacement = 'top' | 'right' | 'bottom' | 'left';
4
+ export interface AniccaTooltipProps {
5
+ content: React.ReactNode;
6
+ placement?: AniccaTooltipPlacement;
7
+ /** Show delay in ms. Default 200. */
8
+ delay?: number;
9
+ /** Disable tooltip behavior (still renders children). */
10
+ disabled?: boolean;
11
+ /** Force open (controlled). */
12
+ open?: boolean;
13
+ children: React.ReactElement;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * AniccaTooltip — Hover/focus tooltip that portals to body, follows trigger position.
18
+ * Wraps a single child element.
19
+ */
20
+ export declare function AniccaTooltip({ content, placement, delay, disabled, open: controlledOpen, children, className, }: AniccaTooltipProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Tooltip';
@@ -0,0 +1,5 @@
1
+ export * from './Alert';
2
+ export * from './Toast';
3
+ export * from './Popup';
4
+ export * from './Tooltip';
5
+ export * from './Popover';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
2
  export * from './theme';
3
+ export * from './primitives';
4
+ export * from './layout';
5
+ export * from './data';
6
+ export * from './feedback';
7
+ export * from './overlay';
3
8
  export * from './dashboard';
4
9
  export * from './validation';
5
10
  export * from './date';
6
11
  export * from './utils';
12
+ export * from './auth';
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaCardVariant = 'elevated' | 'outlined' | 'flat';
4
+ export interface AniccaCardProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ variant?: AniccaCardVariant;
6
+ /** Render border-left accent color (e.g. for status cards). */
7
+ accent?: string;
8
+ /** Disable padding on body; useful when composing with CardHeader/CardBody/CardFooter. */
9
+ unpadded?: boolean;
10
+ }
11
+ /**
12
+ * AniccaCard — Container with variants. Compose with CardHeader/Body/Footer or pass children directly.
13
+ */
14
+ export declare function AniccaCard({ variant, accent, unpadded, className, style, children, ...rest }: AniccaCardProps): React.ReactElement;
15
+ export interface AniccaCardSlotProps extends React.HTMLAttributes<HTMLDivElement> {
16
+ }
17
+ export declare function AniccaCardHeader({ className, children, ...rest }: AniccaCardSlotProps): React.ReactElement;
18
+ export declare function AniccaCardTitle({ className, children, ...rest }: React.HTMLAttributes<HTMLHeadingElement>): React.ReactElement;
19
+ export declare function AniccaCardDescription({ className, children, ...rest }: React.HTMLAttributes<HTMLParagraphElement>): React.ReactElement;
20
+ export declare function AniccaCardBody({ className, children, ...rest }: AniccaCardSlotProps): React.ReactElement;
21
+ export declare function AniccaCardFooter({ className, children, ...rest }: AniccaCardSlotProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Card';
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface AniccaDividerProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ orientation?: 'horizontal' | 'vertical';
5
+ /** Optional label rendered in the middle (horizontal only). */
6
+ label?: React.ReactNode;
7
+ /** Visual style. */
8
+ variant?: 'solid' | 'dashed' | 'dotted';
9
+ /** Custom thickness (px). Default 1. */
10
+ thickness?: number;
11
+ }
12
+ /**
13
+ * AniccaDivider — Visual separator. Horizontal with optional label or vertical.
14
+ */
15
+ export declare function AniccaDivider({ orientation, label, variant, thickness, className, style, ...rest }: AniccaDividerProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Divider';
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface AniccaGridProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Number of columns. Accepts number or CSS template string (e.g. "1fr 2fr"). */
5
+ columns?: number | string;
6
+ /** Responsive columns: { base, sm, md, lg, xl } */
7
+ responsive?: {
8
+ base?: number | string;
9
+ sm?: number | string;
10
+ md?: number | string;
11
+ lg?: number | string;
12
+ xl?: number | string;
13
+ };
14
+ /** Gap in rem or any CSS length. */
15
+ gap?: number | string;
16
+ /** Min child column width — uses repeat(auto-fit, minmax(...)). Overrides columns. */
17
+ minChildWidth?: string;
18
+ as?: keyof React.JSX.IntrinsicElements;
19
+ }
20
+ /**
21
+ * AniccaGrid — CSS Grid wrapper with responsive columns + autosizing via minChildWidth.
22
+ */
23
+ export declare function AniccaGrid({ columns, responsive, gap, minChildWidth, as, className, style, children, ...rest }: AniccaGridProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Grid';
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaStackDirection = 'vertical' | 'horizontal';
4
+ export type AniccaStackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
5
+ export type AniccaStackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
6
+ export interface AniccaStackProps extends React.HTMLAttributes<HTMLDivElement> {
7
+ direction?: AniccaStackDirection;
8
+ /** Gap between items in rem. Accepts number (rem) or string. */
9
+ gap?: number | string;
10
+ align?: AniccaStackAlign;
11
+ justify?: AniccaStackJustify;
12
+ /** Allow wrap when direction=horizontal. */
13
+ wrap?: boolean;
14
+ /** Render a divider element between children. */
15
+ divider?: React.ReactNode;
16
+ /** Render as a specific element. */
17
+ as?: keyof React.JSX.IntrinsicElements;
18
+ }
19
+ /**
20
+ * AniccaStack — Flexbox stack with consistent gap, optional dividers between items.
21
+ */
22
+ export declare function AniccaStack({ direction, gap, align, justify, wrap, divider, as, className, style, children, ...rest }: AniccaStackProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Stack';
@@ -0,0 +1,4 @@
1
+ export * from './Card';
2
+ export * from './Stack';
3
+ export * from './Grid';
4
+ export * from './Divider';
@@ -0,0 +1,39 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface AniccaComboboxOption {
4
+ value: string;
5
+ label: string;
6
+ description?: string;
7
+ disabled?: boolean;
8
+ }
9
+ export interface AniccaComboboxLabels {
10
+ noResults?: string;
11
+ searchPlaceholder?: string;
12
+ }
13
+ export interface AniccaComboboxProps {
14
+ options: AniccaComboboxOption[];
15
+ /** Selected value (controlled). */
16
+ value?: string;
17
+ /** Initial value (uncontrolled). */
18
+ defaultValue?: string;
19
+ onChange?: (value: string) => void;
20
+ /** Override built-in filter. Receives query + option, returns boolean. */
21
+ filter?: (query: string, option: AniccaComboboxOption) => boolean;
22
+ /** Custom renderer for each option in the panel. */
23
+ renderOption?: (option: AniccaComboboxOption, isActive: boolean) => React.ReactNode;
24
+ label?: string;
25
+ helper?: string;
26
+ error?: string;
27
+ placeholder?: string;
28
+ required?: boolean;
29
+ disabled?: boolean;
30
+ /** Allow free-text input (not constrained to options). */
31
+ allowCustomValue?: boolean;
32
+ labels?: AniccaComboboxLabels;
33
+ wrapperClassName?: string;
34
+ className?: string;
35
+ }
36
+ /**
37
+ * AniccaCombobox — Searchable select with keyboard navigation. Filters options as user types.
38
+ */
39
+ export declare function AniccaCombobox({ options, value, defaultValue, onChange, filter, renderOption, label, helper, error, placeholder, required, disabled, allowCustomValue, labels, wrapperClassName, className, }: AniccaComboboxProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Combobox';
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaDrawerSide = 'left' | 'right' | 'top' | 'bottom';
4
+ export type AniccaDrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full' | string;
5
+ export interface AniccaDrawerLabels {
6
+ close?: string;
7
+ }
8
+ export interface AniccaDrawerProps {
9
+ open: boolean;
10
+ onClose: () => void;
11
+ side?: AniccaDrawerSide;
12
+ size?: AniccaDrawerSize;
13
+ title?: React.ReactNode;
14
+ footer?: React.ReactNode;
15
+ /** Disable escape key dismissal. */
16
+ disableEscapeKey?: boolean;
17
+ /** Disable backdrop click dismissal. */
18
+ disableBackdropClick?: boolean;
19
+ labels?: AniccaDrawerLabels;
20
+ className?: string;
21
+ children: React.ReactNode;
22
+ }
23
+ /**
24
+ * AniccaDrawer — Slide-in panel from any edge with backdrop + scroll lock.
25
+ */
26
+ export declare function AniccaDrawer({ open, onClose, side, size, title, footer, disableEscapeKey, disableBackdropClick, labels, className, children, }: AniccaDrawerProps): React.ReactElement | null;
@@ -0,0 +1 @@
1
+ export * from './Drawer';
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type AniccaDropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
4
+ export interface AniccaDropdownProps {
5
+ /** Element rendered inside dropdown panel. */
6
+ content: React.ReactNode;
7
+ placement?: AniccaDropdownPlacement;
8
+ open?: boolean;
9
+ onOpenChange?: (open: boolean) => void;
10
+ /** Match panel width to trigger width. */
11
+ matchTriggerWidth?: boolean;
12
+ /** Trigger element (any clickable). */
13
+ children: React.ReactElement;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * AniccaDropdown — Click-toggle popover anchored to a trigger element. Closes on outside click + Escape.
18
+ * Pair with AniccaMenu for menu-style items.
19
+ */
20
+ export declare function AniccaDropdown({ content, placement, open: controlledOpen, onOpenChange, matchTriggerWidth, children, className, }: AniccaDropdownProps): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Dropdown';
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface AniccaMenuProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ children: React.ReactNode;
5
+ }
6
+ /**
7
+ * AniccaMenu — Container for menu items, dividers, labels. Use inside AniccaDropdown.
8
+ */
9
+ export declare function AniccaMenu({ className, children, ...rest }: AniccaMenuProps): React.ReactElement;
10
+ export interface AniccaMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
11
+ leftIcon?: React.ReactNode;
12
+ rightIcon?: React.ReactNode;
13
+ /** Mark as destructive variant (red). */
14
+ destructive?: boolean;
15
+ /** Optional shortcut hint (e.g. "⌘K"). */
16
+ shortcut?: string;
17
+ }
18
+ export declare function AniccaMenuItem({ leftIcon, rightIcon, destructive, shortcut, className, children, ...rest }: AniccaMenuItemProps): React.ReactElement;
19
+ export declare function AniccaMenuDivider({ className }: {
20
+ className?: string;
21
+ }): React.ReactElement;
22
+ export declare function AniccaMenuLabel({ className, children, ...rest }: React.HTMLAttributes<HTMLDivElement>): React.ReactElement;
@@ -0,0 +1 @@
1
+ export * from './Menu';