@gtcx/ui 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.
Files changed (155) hide show
  1. package/dist/components/ai/index.d.ts +3 -0
  2. package/dist/components/ai/index.d.ts.map +1 -0
  3. package/dist/components/ai/insight-card.d.ts +16 -0
  4. package/dist/components/ai/insight-card.d.ts.map +1 -0
  5. package/dist/components/data/advanced-table.d.ts +45 -0
  6. package/dist/components/data/advanced-table.d.ts.map +1 -0
  7. package/dist/components/data/avatar-group.d.ts +19 -0
  8. package/dist/components/data/avatar-group.d.ts.map +1 -0
  9. package/dist/components/data/avatar.d.ts +42 -0
  10. package/dist/components/data/avatar.d.ts.map +1 -0
  11. package/dist/components/data/badge.d.ts +53 -0
  12. package/dist/components/data/badge.d.ts.map +1 -0
  13. package/dist/components/data/card.d.ts +64 -0
  14. package/dist/components/data/card.d.ts.map +1 -0
  15. package/dist/components/data/data-visualization.d.ts +31 -0
  16. package/dist/components/data/data-visualization.d.ts.map +1 -0
  17. package/dist/components/data/index.d.ts +17 -0
  18. package/dist/components/data/index.d.ts.map +1 -0
  19. package/dist/components/data/rating.d.ts +25 -0
  20. package/dist/components/data/rating.d.ts.map +1 -0
  21. package/dist/components/data/skeleton.d.ts +16 -0
  22. package/dist/components/data/skeleton.d.ts.map +1 -0
  23. package/dist/components/effects/glassmorphism-card.d.ts +12 -0
  24. package/dist/components/effects/glassmorphism-card.d.ts.map +1 -0
  25. package/dist/components/effects/index.d.ts +3 -0
  26. package/dist/components/effects/index.d.ts.map +1 -0
  27. package/dist/components/feedback/accordion.d.ts +30 -0
  28. package/dist/components/feedback/accordion.d.ts.map +1 -0
  29. package/dist/components/feedback/alert-dialog.d.ts +67 -0
  30. package/dist/components/feedback/alert-dialog.d.ts.map +1 -0
  31. package/dist/components/feedback/alert.d.ts +60 -0
  32. package/dist/components/feedback/alert.d.ts.map +1 -0
  33. package/dist/components/feedback/collapsible.d.ts +32 -0
  34. package/dist/components/feedback/collapsible.d.ts.map +1 -0
  35. package/dist/components/feedback/content-loader.d.ts +12 -0
  36. package/dist/components/feedback/content-loader.d.ts.map +1 -0
  37. package/dist/components/feedback/dialog.d.ts +73 -0
  38. package/dist/components/feedback/dialog.d.ts.map +1 -0
  39. package/dist/components/feedback/hover-card.d.ts +22 -0
  40. package/dist/components/feedback/hover-card.d.ts.map +1 -0
  41. package/dist/components/feedback/index.d.ts +28 -0
  42. package/dist/components/feedback/index.d.ts.map +1 -0
  43. package/dist/components/feedback/popover.d.ts +29 -0
  44. package/dist/components/feedback/popover.d.ts.map +1 -0
  45. package/dist/components/feedback/progress.d.ts +33 -0
  46. package/dist/components/feedback/progress.d.ts.map +1 -0
  47. package/dist/components/feedback/screen-loader.d.ts +13 -0
  48. package/dist/components/feedback/screen-loader.d.ts.map +1 -0
  49. package/dist/components/feedback/sheet.d.ts +69 -0
  50. package/dist/components/feedback/sheet.d.ts.map +1 -0
  51. package/dist/components/feedback/toaster.d.ts +31 -0
  52. package/dist/components/feedback/toaster.d.ts.map +1 -0
  53. package/dist/components/feedback/tooltip.d.ts +13 -0
  54. package/dist/components/feedback/tooltip.d.ts.map +1 -0
  55. package/dist/components/forms/button.d.ts +34 -0
  56. package/dist/components/forms/button.d.ts.map +1 -0
  57. package/dist/components/forms/calendar.d.ts +12 -0
  58. package/dist/components/forms/calendar.d.ts.map +1 -0
  59. package/dist/components/forms/checkbox.d.ts +17 -0
  60. package/dist/components/forms/checkbox.d.ts.map +1 -0
  61. package/dist/components/forms/file-upload.d.ts +37 -0
  62. package/dist/components/forms/file-upload.d.ts.map +1 -0
  63. package/dist/components/forms/form.d.ts +48 -0
  64. package/dist/components/forms/form.d.ts.map +1 -0
  65. package/dist/components/forms/image-input.d.ts +20 -0
  66. package/dist/components/forms/image-input.d.ts.map +1 -0
  67. package/dist/components/forms/index.d.ts +29 -0
  68. package/dist/components/forms/index.d.ts.map +1 -0
  69. package/dist/components/forms/input.d.ts +58 -0
  70. package/dist/components/forms/input.d.ts.map +1 -0
  71. package/dist/components/forms/label.d.ts +19 -0
  72. package/dist/components/forms/label.d.ts.map +1 -0
  73. package/dist/components/forms/radio-group.d.ts +39 -0
  74. package/dist/components/forms/radio-group.d.ts.map +1 -0
  75. package/dist/components/forms/select.d.ts +18 -0
  76. package/dist/components/forms/select.d.ts.map +1 -0
  77. package/dist/components/forms/switch.d.ts +32 -0
  78. package/dist/components/forms/switch.d.ts.map +1 -0
  79. package/dist/components/forms/textarea.d.ts +14 -0
  80. package/dist/components/forms/textarea.d.ts.map +1 -0
  81. package/dist/components/forms/toggle-group.d.ts +33 -0
  82. package/dist/components/forms/toggle-group.d.ts.map +1 -0
  83. package/dist/components/forms/toggle.d.ts +27 -0
  84. package/dist/components/forms/toggle.d.ts.map +1 -0
  85. package/dist/components/index.d.ts +8 -0
  86. package/dist/components/index.d.ts.map +1 -0
  87. package/dist/components/layout/header.d.ts +49 -0
  88. package/dist/components/layout/header.d.ts.map +1 -0
  89. package/dist/components/layout/index.d.ts +13 -0
  90. package/dist/components/layout/index.d.ts.map +1 -0
  91. package/dist/components/layout/metronic-layout.d.ts +104 -0
  92. package/dist/components/layout/metronic-layout.d.ts.map +1 -0
  93. package/dist/components/layout/responsive-grid.d.ts +49 -0
  94. package/dist/components/layout/responsive-grid.d.ts.map +1 -0
  95. package/dist/components/layout/scroll-area.d.ts +24 -0
  96. package/dist/components/layout/scroll-area.d.ts.map +1 -0
  97. package/dist/components/layout/separator.d.ts +12 -0
  98. package/dist/components/layout/separator.d.ts.map +1 -0
  99. package/dist/components/layout/split-pane.d.ts +32 -0
  100. package/dist/components/layout/split-pane.d.ts.map +1 -0
  101. package/dist/components/navigation/breadcrumbs.d.ts +24 -0
  102. package/dist/components/navigation/breadcrumbs.d.ts.map +1 -0
  103. package/dist/components/navigation/command.d.ts +35 -0
  104. package/dist/components/navigation/command.d.ts.map +1 -0
  105. package/dist/components/navigation/context-menu.d.ts +24 -0
  106. package/dist/components/navigation/context-menu.d.ts.map +1 -0
  107. package/dist/components/navigation/dropdown-menu.d.ts +49 -0
  108. package/dist/components/navigation/dropdown-menu.d.ts.map +1 -0
  109. package/dist/components/navigation/index.d.ts +21 -0
  110. package/dist/components/navigation/index.d.ts.map +1 -0
  111. package/dist/components/navigation/mega-menu.d.ts +47 -0
  112. package/dist/components/navigation/mega-menu.d.ts.map +1 -0
  113. package/dist/components/navigation/menubar.d.ts +25 -0
  114. package/dist/components/navigation/menubar.d.ts.map +1 -0
  115. package/dist/components/navigation/navigation-menu.d.ts +28 -0
  116. package/dist/components/navigation/navigation-menu.d.ts.map +1 -0
  117. package/dist/components/navigation/platform-tabs.d.ts +39 -0
  118. package/dist/components/navigation/platform-tabs.d.ts.map +1 -0
  119. package/dist/components/navigation/side-nav.d.ts +55 -0
  120. package/dist/components/navigation/side-nav.d.ts.map +1 -0
  121. package/dist/components/navigation/tabs.d.ts +40 -0
  122. package/dist/components/navigation/tabs.d.ts.map +1 -0
  123. package/dist/components/navigation/toolbar.d.ts +33 -0
  124. package/dist/components/navigation/toolbar.d.ts.map +1 -0
  125. package/dist/hooks/index.d.ts +15 -0
  126. package/dist/hooks/index.d.ts.map +1 -0
  127. package/dist/hooks/use-body-class.d.ts +8 -0
  128. package/dist/hooks/use-body-class.d.ts.map +1 -0
  129. package/dist/hooks/use-breakpoint.d.ts +22 -0
  130. package/dist/hooks/use-breakpoint.d.ts.map +1 -0
  131. package/dist/hooks/use-copy-to-clipboard.d.ts +15 -0
  132. package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  133. package/dist/hooks/use-menu.d.ts +19 -0
  134. package/dist/hooks/use-menu.d.ts.map +1 -0
  135. package/dist/hooks/use-mounted.d.ts +8 -0
  136. package/dist/hooks/use-mounted.d.ts.map +1 -0
  137. package/dist/hooks/use-responsive.d.ts +11 -0
  138. package/dist/hooks/use-responsive.d.ts.map +1 -0
  139. package/dist/hooks/use-scroll-position.d.ts +13 -0
  140. package/dist/hooks/use-scroll-position.d.ts.map +1 -0
  141. package/dist/hooks/use-slider-input.d.ts +24 -0
  142. package/dist/hooks/use-slider-input.d.ts.map +1 -0
  143. package/dist/hooks/use-viewport.d.ts +6 -0
  144. package/dist/hooks/use-viewport.d.ts.map +1 -0
  145. package/dist/index.d.mts +566 -0
  146. package/dist/index.d.ts +12 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +6590 -0
  149. package/dist/index.mjs +6418 -0
  150. package/dist/themes/index.d.ts +6 -0
  151. package/dist/themes/index.d.ts.map +1 -0
  152. package/dist/tokens/index.d.ts +6 -0
  153. package/dist/tokens/index.d.ts.map +1 -0
  154. package/package.json +55 -0
  155. package/readme.md +143 -0
@@ -0,0 +1,29 @@
1
+ export { Button } from './button';
2
+ export type { ButtonProps, ButtonVariant, ButtonMode } from './button';
3
+ export { Input, InputGroup, InputAddon, InputWrapper, InputPassword, InputSearch } from './input';
4
+ export type { InputProps, InputSize, InputGroupProps, InputAddonProps, InputWrapperProps, } from './input';
5
+ export { Label } from './label';
6
+ export type { LabelProps } from './label';
7
+ export { Checkbox, CheckboxGroup } from './checkbox';
8
+ export type { CheckboxProps, CheckboxSize } from './checkbox';
9
+ export { Switch, SwitchIndicator } from './switch';
10
+ export type { SwitchProps, SwitchShape, SwitchSize, SwitchIndicatorProps } from './switch';
11
+ export { Select, SelectOption, SelectOptGroup } from './select';
12
+ export type { SelectProps, SelectSize } from './select';
13
+ export { Textarea } from './textarea';
14
+ export type { TextareaProps, TextareaSize } from './textarea';
15
+ export { Form, FormItem, FormLabel, FormDescription, FormMessage, FormControl } from './form';
16
+ export type { FormProps, FormItemProps, FormLabelProps, FormDescriptionProps, FormMessageProps, FormControlProps, } from './form';
17
+ export { Calendar, DatePicker } from './calendar';
18
+ export type { CalendarProps } from './calendar';
19
+ export { Toggle } from './toggle';
20
+ export type { ToggleProps, ToggleVariant, ToggleSize } from './toggle';
21
+ export { ToggleGroup } from './toggle-group';
22
+ export type { ToggleGroupProps, ToggleGroupItem } from './toggle-group';
23
+ export { RadioGroup } from './radio-group';
24
+ export type { RadioGroupProps, RadioOption } from './radio-group';
25
+ export { FileUpload } from './file-upload';
26
+ export type { FileUploadProps } from './file-upload';
27
+ export { ImageInput } from './image-input';
28
+ export type { ImageInputProps, ImageInputFile } from './image-input';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClG,YAAY,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE3F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC9F,YAAY,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { Input as AntInput } from 'antd';
2
+ import type { InputProps as AntInputProps, InputRef } from 'antd';
3
+ import React from 'react';
4
+ export type InputSize = 'sm' | 'md' | 'lg';
5
+ export interface InputProps extends Omit<AntInputProps, 'size'> {
6
+ /** Size variant — mirrors Metronic input sizes. @default 'md' */
7
+ inputSize?: InputSize;
8
+ }
9
+ /**
10
+ * Input — mirrors Metronic Input.
11
+ *
12
+ * Wraps Ant Design Input with Metronic-compatible size variants.
13
+ */
14
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<InputRef>>;
15
+ export interface InputGroupProps {
16
+ children: React.ReactNode;
17
+ /** Compact mode — removes gaps between children. @default true */
18
+ compact?: boolean;
19
+ className?: string;
20
+ style?: React.CSSProperties;
21
+ }
22
+ /**
23
+ * InputGroup — mirrors Metronic InputGroup.
24
+ *
25
+ * Uses Ant Design Space.Compact for adjacent input/addon layout.
26
+ */
27
+ export declare function InputGroup({ children, compact: _compact, className, style, }: InputGroupProps): import("react/jsx-runtime").JSX.Element;
28
+ export interface InputAddonProps {
29
+ children: React.ReactNode;
30
+ /** Size variant. @default 'md' */
31
+ inputSize?: InputSize;
32
+ /** Icon-only mode — centers content without extra padding. */
33
+ iconMode?: boolean;
34
+ className?: string;
35
+ style?: React.CSSProperties;
36
+ }
37
+ /**
38
+ * InputAddon — mirrors Metronic InputAddon.
39
+ *
40
+ * A styled container for icons/text placed before or after an Input.
41
+ */
42
+ export declare function InputAddon({ children, inputSize, iconMode, className, style, }: InputAddonProps): import("react/jsx-runtime").JSX.Element;
43
+ export interface InputWrapperProps {
44
+ children: React.ReactNode;
45
+ /** Size variant. @default 'md' */
46
+ inputSize?: InputSize;
47
+ className?: string;
48
+ style?: React.CSSProperties;
49
+ }
50
+ /**
51
+ * InputWrapper — mirrors Metronic InputWrapper.
52
+ *
53
+ * A container that visually wraps multiple input elements into one field.
54
+ */
55
+ export declare function InputWrapper({ children, inputSize, className, style }: InputWrapperProps): import("react/jsx-runtime").JSX.Element;
56
+ export declare const InputPassword: typeof AntInput.Password;
57
+ export declare const InputSearch: typeof AntInput.Search;
58
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/forms/input.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAS,MAAM,MAAM,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,IAAI,aAAa,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAQ3C,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IAC7D,iEAAiE;IACjE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,6EAajB,CAAC;AAMF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EAAE,QAAe,EACxB,SAAS,EACT,KAAK,GACN,EAAE,eAAe,2CAajB;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kCAAkC;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,SAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,eAAe,2CA4BjB;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kCAAkC;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAwB/F;AAGD,eAAO,MAAM,aAAa,EAAE,OAAO,QAAQ,CAAC,QAA4B,CAAC;AACzE,eAAO,MAAM,WAAW,EAAE,OAAO,QAAQ,CAAC,MAAwB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export interface LabelProps {
3
+ /** The form element ID this label is associated with. */
4
+ htmlFor?: string;
5
+ /** Required indicator. @default false */
6
+ required?: boolean;
7
+ /** Optional text appended after the label. */
8
+ optional?: boolean;
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ style?: React.CSSProperties;
12
+ }
13
+ /**
14
+ * Label — mirrors Metronic Form Label.
15
+ *
16
+ * A styled label element for form fields with optional required/optional indicators.
17
+ */
18
+ export declare function Label({ htmlFor, required, optional, children, className, style, }: LabelProps): import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/forms/label.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACpB,OAAO,EACP,QAAgB,EAChB,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,UAAU,2CAkCZ"}
@@ -0,0 +1,39 @@
1
+ import type { RadioGroupProps as AntRadioGroupProps } from 'antd';
2
+ import React from 'react';
3
+ export interface RadioOption {
4
+ value: string;
5
+ label: React.ReactNode;
6
+ disabled?: boolean;
7
+ }
8
+ export interface RadioGroupProps {
9
+ /** Radio options. */
10
+ options: RadioOption[];
11
+ /** Controlled value. */
12
+ value?: string;
13
+ /** Default value. */
14
+ defaultValue?: string;
15
+ /** Callback when value changes. */
16
+ onChange?: (value: string) => void;
17
+ /** Layout direction. @default 'horizontal' */
18
+ direction?: 'horizontal' | 'vertical';
19
+ /** Render as button group. @default 'default' */
20
+ variant?: 'default' | 'button';
21
+ /** Size. @default 'md' */
22
+ size?: 'sm' | 'md' | 'lg';
23
+ /** Disabled state. */
24
+ disabled?: boolean;
25
+ className?: string;
26
+ style?: React.CSSProperties;
27
+ }
28
+ declare function resolveSize(size: 'sm' | 'md' | 'lg'): AntRadioGroupProps['size'];
29
+ /** Exported for testing. */
30
+ export { resolveSize as resolveRadioSize };
31
+ /**
32
+ * RadioGroup -- radio button selection.
33
+ *
34
+ * Wraps Ant Design Radio.Group with a simplified options API.
35
+ * Uses Ant's `options` prop for clean rendering; `variant='button'`
36
+ * switches to `optionType='button'` for segmented-control style.
37
+ */
38
+ export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
39
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/components/forms/radio-group.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CASzE;AAED,4BAA4B;AAC5B,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,wFAyCtB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Select as AntSelect } from 'antd';
2
+ import type { SelectProps as AntSelectProps } from 'antd';
3
+ export type SelectSize = 'sm' | 'md' | 'lg';
4
+ export interface SelectProps extends Omit<AntSelectProps, 'size'> {
5
+ /** Size variant — mirrors Metronic Select sizes. @default 'md' */
6
+ selectSize?: SelectSize;
7
+ }
8
+ /**
9
+ * Select — mirrors Metronic Select.
10
+ *
11
+ * Wraps Ant Design Select with Metronic-compatible size API.
12
+ * Use `options` prop or `Select.Option` children for items.
13
+ */
14
+ export declare function Select({ selectSize, ...rest }: SelectProps): import("react/jsx-runtime").JSX.Element;
15
+ /** Re-export Ant Design's Select sub-components for convenience. */
16
+ export declare const SelectOption: typeof AntSelect.Option;
17
+ export declare const SelectOptGroup: typeof AntSelect.OptGroup;
18
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/forms/select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAQ5C,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IAC/D,kEAAkE;IAClE,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EAAE,UAAiB,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,2CAUjE;AAED,oEAAoE;AACpE,eAAO,MAAM,YAAY,EAAE,OAAO,SAAS,CAAC,MAAyB,CAAC;AACtE,eAAO,MAAM,cAAc,EAAE,OAAO,SAAS,CAAC,QAA6B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { SwitchProps as AntSwitchProps } from 'antd';
2
+ import React from 'react';
3
+ export type SwitchShape = 'pill' | 'square';
4
+ export type SwitchSize = 'sm' | 'md' | 'lg';
5
+ export interface SwitchProps extends Omit<AntSwitchProps, 'size'> {
6
+ /** Shape — pill (default) or square. @default 'pill' */
7
+ shape?: SwitchShape;
8
+ /** Size variant. @default 'md' */
9
+ switchSize?: SwitchSize;
10
+ /** Accessible label for assistive technologies. */
11
+ ariaLabel?: string;
12
+ }
13
+ /**
14
+ * Switch — mirrors Metronic Switch.
15
+ *
16
+ * Wraps Ant Design Switch with Metronic-compatible size and shape API.
17
+ */
18
+ export declare function Switch({ shape, switchSize, ariaLabel, style, ...rest }: SwitchProps): import("react/jsx-runtime").JSX.Element;
19
+ export interface SwitchIndicatorProps {
20
+ /** Current state of the indicator. */
21
+ state: 'on' | 'off';
22
+ children?: React.ReactNode;
23
+ className?: string;
24
+ style?: React.CSSProperties;
25
+ }
26
+ /**
27
+ * SwitchIndicator — mirrors Metronic SwitchIndicator.
28
+ *
29
+ * Shows conditional content based on on/off state.
30
+ */
31
+ export declare function SwitchIndicator({ state, children, className, style }: SwitchIndicatorProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/components/forms/switch.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IAC/D,wDAAwD;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,kCAAkC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAc,EACd,UAAiB,EACjB,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,WAAW,2CAeb;AAID,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,oBAAoB,2CAc1F"}
@@ -0,0 +1,14 @@
1
+ import type { TextAreaProps as AntTextAreaProps } from 'antd/es/input';
2
+ import React from 'react';
3
+ export type TextareaSize = 'sm' | 'md' | 'lg';
4
+ export interface TextareaProps extends AntTextAreaProps {
5
+ /** Size variant — mirrors Metronic Textarea sizes. @default 'md' */
6
+ textareaSize?: TextareaSize;
7
+ }
8
+ /**
9
+ * Textarea — mirrors Metronic Textarea.
10
+ *
11
+ * Wraps Ant Design TextArea with Metronic-compatible size API.
12
+ */
13
+ export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
14
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/components/forms/textarea.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,oEAAoE;IACpE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAQD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,2FAIpB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ export interface ToggleGroupItem {
3
+ value: string;
4
+ label: React.ReactNode;
5
+ icon?: React.ReactNode;
6
+ disabled?: boolean;
7
+ }
8
+ export interface ToggleGroupProps {
9
+ /** Available items. */
10
+ items: ToggleGroupItem[];
11
+ /** Selection mode. @default 'single' */
12
+ type?: 'single' | 'multiple';
13
+ /** Controlled value (string for single, string[] for multiple). */
14
+ value?: string | string[];
15
+ /** Default value. */
16
+ defaultValue?: string | string[];
17
+ /** Callback when value changes. */
18
+ onChange?: (value: string | string[]) => void;
19
+ /** Size. @default 'md' */
20
+ size?: 'sm' | 'md' | 'lg';
21
+ /** Disabled. */
22
+ disabled?: boolean;
23
+ className?: string;
24
+ style?: React.CSSProperties;
25
+ }
26
+ /**
27
+ * ToggleGroup — mirrors Metronic ToggleGroup.
28
+ *
29
+ * For single selection, uses Ant Design Segmented.
30
+ * For multiple selection, renders toggle buttons in a group.
31
+ */
32
+ export declare function ToggleGroup({ items, type, value, defaultValue, onChange, size, disabled, className, style, }: ToggleGroupProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=toggle-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/components/forms/toggle-group.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,wCAAwC;IACxC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,0BAA0B;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAQD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAe,EACf,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,IAAW,EACX,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,gBAAgB,2CA6FlB"}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export type ToggleVariant = 'default' | 'outline';
3
+ export type ToggleSize = 'sm' | 'md' | 'lg';
4
+ export interface ToggleProps {
5
+ /** Visual variant. @default 'default' */
6
+ variant?: ToggleVariant;
7
+ /** Size. @default 'md' */
8
+ size?: ToggleSize;
9
+ /** Controlled pressed state. */
10
+ pressed?: boolean;
11
+ /** Default pressed state. @default false */
12
+ defaultPressed?: boolean;
13
+ /** Callback when pressed state changes. */
14
+ onPressedChange?: (pressed: boolean) => void;
15
+ /** Disabled. */
16
+ disabled?: boolean;
17
+ children?: React.ReactNode;
18
+ className?: string;
19
+ style?: React.CSSProperties;
20
+ }
21
+ /**
22
+ * Toggle — mirrors Metronic Toggle.
23
+ *
24
+ * A stateful toggle button using Ant Design Button with pressed styling.
25
+ */
26
+ export declare function Toggle({ variant, size, pressed: controlledPressed, defaultPressed, onPressedChange, disabled, children, className, style, }: ToggleProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/components/forms/toggle.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAQD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,IAAW,EACX,OAAO,EAAE,iBAAiB,EAC1B,cAAsB,EACtB,eAAe,EACf,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,WAAW,2CAqCb"}
@@ -0,0 +1,8 @@
1
+ export * from './ai';
2
+ export * from './data';
3
+ export * from './effects';
4
+ export * from './layout';
5
+ export * from './navigation';
6
+ export * from './feedback';
7
+ export * from './forms';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ export interface HeaderMenuItem {
3
+ key: string;
4
+ label: string;
5
+ icon?: React.ReactNode;
6
+ href?: string;
7
+ }
8
+ export interface UserMenu {
9
+ name: string;
10
+ email: string;
11
+ avatar?: string;
12
+ role?: string;
13
+ }
14
+ export interface HeaderProps {
15
+ /** Application title displayed in the header. */
16
+ title?: string;
17
+ /** Subtitle displayed below the title. */
18
+ subtitle?: string;
19
+ /** Logo element rendered before the title. */
20
+ logo?: React.ReactNode;
21
+ /** Top-level navigation menu items. */
22
+ menuItems?: HeaderMenuItem[];
23
+ /** User information for the avatar dropdown. */
24
+ user?: UserMenu;
25
+ /** Show the notification bell icon. @default true */
26
+ showNotifications?: boolean;
27
+ /** Number of unread notifications. @default 0 */
28
+ notificationCount?: number;
29
+ /** Callback when the notification icon is clicked. */
30
+ onNotificationClick?: () => void;
31
+ /** Callback when a user menu item is clicked. */
32
+ onUserMenuClick?: (key: string) => void;
33
+ /** Callback when a navigation menu item is clicked. */
34
+ onMenuClick?: (key: string) => void;
35
+ /** Controlled active menu key. */
36
+ activeKey?: string;
37
+ className?: string;
38
+ /** Fix the header to the top of the viewport. @default false */
39
+ fixed?: boolean;
40
+ }
41
+ /**
42
+ * Application header — mirrors Metronic KTHeader.
43
+ *
44
+ * Renders a top bar with logo, title, horizontal navigation, notifications,
45
+ * and user avatar dropdown. All colors come from the active theme via
46
+ * ConfigProvider — no platform prop needed.
47
+ */
48
+ export declare function Header({ title, subtitle, logo, menuItems, user, showNotifications, notificationCount, onNotificationClick, onUserMenuClick, onMenuClick, activeKey, className, fixed, }: HeaderProps): import("react/jsx-runtime").JSX.Element;
49
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/layout/header.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;AASxC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,uCAAuC;IACvC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,iDAAiD;IACjD,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uDAAuD;IACvD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAc,EACd,IAAkB,EAClB,iBAAwB,EACxB,iBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAa,GACd,EAAE,WAAW,2CAgIb"}
@@ -0,0 +1,13 @@
1
+ export { Header } from './header';
2
+ export type { HeaderProps, HeaderMenuItem, UserMenu } from './header';
3
+ export { Separator } from './separator';
4
+ export type { SeparatorProps } from './separator';
5
+ export { ScrollArea } from './scroll-area';
6
+ export type { ScrollAreaProps } from './scroll-area';
7
+ export { ResponsiveGrid, ResponsiveGridItem } from './responsive-grid';
8
+ export type { ResponsiveGridProps, ResponsiveGridItemProps } from './responsive-grid';
9
+ export { SplitPane } from './split-pane';
10
+ export type { SplitPaneProps } from './split-pane';
11
+ export { MetronicLayout, menuConfigToSideNavItems } from './metronic-layout';
12
+ export type { MetronicLayoutProps, MetronicLayoutVariant, MetronicMenuConfig, MetronicMenuConfigItem, MetronicHeaderNavItem, } from './metronic-layout';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,104 @@
1
+ import React from 'react';
2
+ import type { SideNavItem } from '../navigation/side-nav';
3
+ export interface MetronicMenuConfigItem {
4
+ /** Display label for the menu item. */
5
+ title?: string;
6
+ /** Icon component (e.g. a lucide-react component). Rendered as <Icon size={16} />. */
7
+ icon?: React.ComponentType<{
8
+ size?: number;
9
+ className?: string;
10
+ }>;
11
+ /** Navigation path. */
12
+ path?: string;
13
+ /** Nested children. */
14
+ children?: MetronicMenuConfigItem[];
15
+ /** When set, renders as a section heading (group label). */
16
+ heading?: string;
17
+ /** When true, this item is a collapsible "show more / show less" container. */
18
+ collapse?: boolean;
19
+ /** Label shown when the collapsible section is expanded. */
20
+ collapseTitle?: string;
21
+ /** Label shown when the collapsible section is collapsed. */
22
+ expandTitle?: string;
23
+ /** When true, renders a visual separator. */
24
+ separator?: boolean;
25
+ /** Disables the menu item. */
26
+ disabled?: boolean;
27
+ }
28
+ export type MetronicMenuConfig = MetronicMenuConfigItem[];
29
+ export interface MetronicHeaderNavItem {
30
+ /** Display label. */
31
+ title: string;
32
+ /** Navigation path (leaf link). */
33
+ path?: string;
34
+ /** Sub-items — renders a chevron indicator. */
35
+ children?: MetronicHeaderNavItem[];
36
+ }
37
+ export type MetronicLayoutVariant = 'sidebar' | 'horizontal' | 'mini-sidebar' | 'top-only' | 'dark-sidebar' | 'card-sidebar' | 'content-sidebar' | 'mega-menu';
38
+ export interface MetronicLayoutProps {
39
+ children: React.ReactNode;
40
+ /** Layout structural variant. @default 'sidebar' */
41
+ variant?: MetronicLayoutVariant;
42
+ /** Sidebar menu configuration (used for sidebar nav and horizontal navbar). */
43
+ menu: MetronicMenuConfig;
44
+ /** Controlled sidebar collapsed state (sidebar variant only). */
45
+ sidebarCollapsed?: boolean;
46
+ /** Callback when the sidebar toggle is clicked. */
47
+ onSidebarToggle?: () => void;
48
+ /** Whether the sidebar starts collapsed (uncontrolled mode). */
49
+ defaultSidebarCollapsed?: boolean;
50
+ /** Logo element for the sidebar header or horizontal header. */
51
+ logo?: React.ReactNode;
52
+ /** Compact logo shown when the sidebar is collapsed. */
53
+ logoCollapsed?: React.ReactNode;
54
+ /** Sidebar color scheme. @default 'light' */
55
+ sidebarTheme?: 'light' | 'dark';
56
+ /** Sidebar width when expanded. @default 280 */
57
+ sidebarWidth?: number;
58
+ /** Sidebar width when collapsed. @default 80 */
59
+ sidebarCollapsedWidth?: number;
60
+ /** Current navigation path — used to highlight the active menu item. */
61
+ currentPath?: string;
62
+ /** Callback when a menu item with a path is clicked. */
63
+ onNavigate?: (path: string) => void;
64
+ /** Custom content rendered in the header area (above content, right of sidebar). */
65
+ headerContent?: React.ReactNode;
66
+ /** Custom content rendered in the footer area. */
67
+ footerContent?: React.ReactNode;
68
+ /** Horizontal navigation items for the header (sidebar variant). */
69
+ headerNavItems?: MetronicHeaderNavItem[];
70
+ /** Callback when a header nav item is clicked. */
71
+ onHeaderNavigate?: (path: string) => void;
72
+ /** User info for the header toolbar avatar. */
73
+ headerUser?: {
74
+ name: string;
75
+ avatar?: string;
76
+ };
77
+ /** Show search icon in toolbar. @default true */
78
+ showSearch?: boolean;
79
+ /** Show notifications bell in toolbar. @default true */
80
+ showNotifications?: boolean;
81
+ /** Notification badge count. */
82
+ notificationCount?: number;
83
+ /** Show chat icon in toolbar. @default true */
84
+ showChat?: boolean;
85
+ /** Show apps grid icon in toolbar. @default true */
86
+ showApps?: boolean;
87
+ /** Override the entire right toolbar with custom content. */
88
+ headerToolbar?: React.ReactNode;
89
+ /** Callback when a toolbar icon is clicked. */
90
+ onToolbarAction?: (action: 'search' | 'notifications' | 'chat' | 'apps') => void;
91
+ /** Static links rendered on the right side of the navbar (horizontal variant). */
92
+ navbarLinks?: {
93
+ label: string;
94
+ href?: string;
95
+ }[];
96
+ className?: string;
97
+ style?: React.CSSProperties;
98
+ }
99
+ export declare function menuConfigToSideNavItems(items: MetronicMenuConfig, keyPrefix?: string): SideNavItem[];
100
+ export declare function MetronicLayout({ children, variant, menu, sidebarCollapsed: controlledCollapsed, onSidebarToggle, defaultSidebarCollapsed, logo, logoCollapsed, sidebarTheme, sidebarWidth, sidebarCollapsedWidth, currentPath, onNavigate, headerContent, footerContent, headerNavItems, onHeaderNavigate, headerUser, showSearch, showNotifications, notificationCount, showChat, showApps, headerToolbar, onToolbarAction, navbarLinks, className, style, }: MetronicLayoutProps): import("react/jsx-runtime").JSX.Element;
101
+ export declare namespace MetronicLayout {
102
+ var displayName: string;
103
+ }
104
+ //# sourceMappingURL=metronic-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metronic-layout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/metronic-layout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { RowProps, ColProps } from 'antd';
2
+ import React from 'react';
3
+ export interface ResponsiveGridProps {
4
+ /** Gutter spacing in pixels, or [horizontal, vertical]. */
5
+ gutter?: number | [number, number];
6
+ /** Vertical alignment. @default 'top' */
7
+ align?: RowProps['align'];
8
+ /** Horizontal justification. @default 'start' */
9
+ justify?: RowProps['justify'];
10
+ /** Allow row wrapping. @default true */
11
+ wrap?: boolean;
12
+ children: React.ReactNode;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ }
16
+ export interface ResponsiveGridItemProps {
17
+ /** Column span (out of 24). */
18
+ span?: number;
19
+ /** Responsive span for xs breakpoint. */
20
+ xs?: number | ColProps['xs'];
21
+ /** Responsive span for sm breakpoint. */
22
+ sm?: number | ColProps['sm'];
23
+ /** Responsive span for md breakpoint. */
24
+ md?: number | ColProps['md'];
25
+ /** Responsive span for lg breakpoint. */
26
+ lg?: number | ColProps['lg'];
27
+ /** Responsive span for xl breakpoint. */
28
+ xl?: number | ColProps['xl'];
29
+ /** Responsive span for xxl breakpoint. */
30
+ xxl?: number | ColProps['xxl'];
31
+ /** Column offset. */
32
+ offset?: number;
33
+ children?: React.ReactNode;
34
+ className?: string;
35
+ style?: React.CSSProperties;
36
+ }
37
+ /**
38
+ * ResponsiveGrid -- responsive grid layout.
39
+ *
40
+ * Wraps Ant Design Row with default gutter from the theme.
41
+ */
42
+ export declare const ResponsiveGrid: React.ForwardRefExoticComponent<ResponsiveGridProps & React.RefAttributes<HTMLDivElement>>;
43
+ /**
44
+ * ResponsiveGridItem -- grid column.
45
+ *
46
+ * Wraps Ant Design Col with responsive breakpoint props.
47
+ */
48
+ export declare const ResponsiveGridItem: React.ForwardRefExoticComponent<ResponsiveGridItemProps & React.RefAttributes<HTMLDivElement>>;
49
+ //# sourceMappingURL=responsive-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive-grid.d.ts","sourceRoot":"","sources":["../../../src/components/layout/responsive-grid.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yCAAyC;IACzC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9B,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,4FAmB1B,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,gGAoB9B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface ScrollAreaProps {
3
+ children: React.ReactNode;
4
+ /** Max height before scrolling. */
5
+ maxHeight?: number | string;
6
+ /** Max width before scrolling. */
7
+ maxWidth?: number | string;
8
+ /** Scroll direction. @default 'vertical' */
9
+ direction?: 'vertical' | 'horizontal' | 'both';
10
+ /** Accessible label for the scrollable region. */
11
+ ariaLabel?: string;
12
+ /** Keyboard tab order. @default 0 */
13
+ tabIndex?: number;
14
+ className?: string;
15
+ style?: React.CSSProperties;
16
+ }
17
+ /**
18
+ * ScrollArea — mirrors Metronic ScrollArea.
19
+ *
20
+ * A CSS-only scrollable container with themed scrollbar styling.
21
+ * No external dependencies — uses overflow + custom scrollbar CSS.
22
+ */
23
+ export declare function ScrollArea({ children, maxHeight, maxWidth, direction, ariaLabel, tabIndex, className, style, }: ScrollAreaProps): import("react/jsx-runtime").JSX.Element;
24
+ //# sourceMappingURL=scroll-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/layout/scroll-area.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/C,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAsB,EACtB,SAAgC,EAChC,QAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,eAAe,2CA2BjB"}
@@ -0,0 +1,12 @@
1
+ import type { DividerProps } from 'antd';
2
+ export interface SeparatorProps extends Omit<DividerProps, 'orientation'> {
3
+ /** Orientation — mirrors Metronic Separator. @default 'horizontal' */
4
+ orientation?: 'horizontal' | 'vertical';
5
+ }
6
+ /**
7
+ * Separator — mirrors Metronic Separator.
8
+ *
9
+ * Wraps Ant Design Divider with Metronic-compatible API.
10
+ */
11
+ export declare function Separator({ orientation, ...rest }: SeparatorProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/layout/separator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;IACvE,sEAAsE;IACtE,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,WAA0B,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAEhF"}