pixelize-design-library 2.2.192 → 3.0.1-beta.1

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 (216) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/MIGRATION.md +562 -0
  3. package/coverage/clover.xml +638 -0
  4. package/coverage/coverage-final.json +20 -0
  5. package/coverage/lcov-report/Table/CompactSelect.tsx.html +379 -0
  6. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +514 -0
  7. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +373 -0
  8. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +574 -0
  9. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +574 -0
  10. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +1027 -0
  11. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +397 -0
  12. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +1060 -0
  13. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +361 -0
  14. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +337 -0
  15. package/coverage/lcov-report/Table/Components/index.html +266 -0
  16. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +178 -0
  17. package/coverage/lcov-report/Table/Components/useTable.ts.html +778 -0
  18. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +1810 -0
  19. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +178 -0
  20. package/coverage/lcov-report/Table/Table.tsx.html +1567 -0
  21. package/coverage/lcov-report/Table/TableProps.tsx.html +658 -0
  22. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +619 -0
  23. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +229 -0
  24. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +532 -0
  25. package/coverage/lcov-report/Table/TableSettings/index.html +146 -0
  26. package/coverage/lcov-report/Table/TableToDo.tsx.html +973 -0
  27. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +271 -0
  28. package/coverage/lcov-report/Table/filterTypes.ts.html +97 -0
  29. package/coverage/lcov-report/Table/index.html +176 -0
  30. package/coverage/lcov-report/base.css +224 -0
  31. package/coverage/lcov-report/block-navigation.js +87 -0
  32. package/coverage/lcov-report/favicon.png +0 -0
  33. package/coverage/lcov-report/index.html +146 -0
  34. package/coverage/lcov-report/prettify.css +1 -0
  35. package/coverage/lcov-report/prettify.js +2 -0
  36. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  37. package/coverage/lcov-report/sorter.js +210 -0
  38. package/coverage/lcov.info +1836 -0
  39. package/dist/Assets/defaultLogo.tsx +31 -0
  40. package/dist/Components/Table/Components/ActiveFilters.js +3 -3
  41. package/dist/Theme/Dark/palette.d.ts +370 -0
  42. package/dist/Theme/Dark/palette.js +372 -0
  43. package/dist/components-v2/AlertDialog/AlertDialog.d.ts +23 -0
  44. package/dist/components-v2/AlertDialog/AlertDialog.js +98 -0
  45. package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +14 -0
  46. package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +66 -0
  47. package/dist/components-v2/Charts/AreaChart.d.ts +23 -0
  48. package/dist/components-v2/Charts/AreaChart.js +63 -0
  49. package/dist/components-v2/Charts/BarChart.d.ts +25 -0
  50. package/dist/components-v2/Charts/BarChart.js +57 -0
  51. package/dist/components-v2/Charts/LineChart.d.ts +23 -0
  52. package/dist/components-v2/Charts/LineChart.js +55 -0
  53. package/dist/components-v2/Charts/PieChart.d.ts +15 -0
  54. package/dist/components-v2/Charts/PieChart.js +54 -0
  55. package/dist/components-v2/Charts/PolarChart.d.ts +14 -0
  56. package/dist/components-v2/Charts/PolarChart.js +54 -0
  57. package/dist/components-v2/Charts/chartOptions.d.ts +7 -0
  58. package/dist/components-v2/Charts/chartOptions.js +41 -0
  59. package/dist/components-v2/Charts/useChartTheme.d.ts +22 -0
  60. package/dist/components-v2/Charts/useChartTheme.js +106 -0
  61. package/dist/components-v2/ContactForm/ContactForm.d.ts +25 -0
  62. package/dist/components-v2/ContactForm/ContactForm.js +116 -0
  63. package/dist/components-v2/DatePicker/Calendar.d.ts +19 -0
  64. package/dist/components-v2/DatePicker/Calendar.js +212 -0
  65. package/dist/components-v2/DatePicker/DatePicker.d.ts +46 -0
  66. package/dist/components-v2/DatePicker/DatePicker.js +189 -0
  67. package/dist/components-v2/DatePicker/TimePicker.d.ts +12 -0
  68. package/dist/components-v2/DatePicker/TimePicker.js +105 -0
  69. package/dist/components-v2/DatePicker/utils.d.ts +31 -0
  70. package/dist/components-v2/DatePicker/utils.js +109 -0
  71. package/dist/components-v2/Drawer/Drawer.d.ts +27 -0
  72. package/dist/components-v2/Drawer/Drawer.js +132 -0
  73. package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +26 -0
  74. package/dist/components-v2/FeedbackForm/FeedbackForm.js +112 -0
  75. package/dist/components-v2/FileUploader/FileUploader.d.ts +28 -0
  76. package/dist/components-v2/FileUploader/FileUploader.js +127 -0
  77. package/dist/components-v2/Input/TextInput.d.ts +41 -0
  78. package/dist/components-v2/Input/TextInput.js +169 -0
  79. package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +39 -0
  80. package/dist/components-v2/KanbanBoard/KanbanBoard.js +101 -0
  81. package/dist/components-v2/Layout/AppLayout.d.ts +22 -0
  82. package/dist/components-v2/Layout/AppLayout.js +53 -0
  83. package/dist/components-v2/Loading/Loading.d.ts +19 -0
  84. package/dist/components-v2/Loading/Loading.js +55 -0
  85. package/dist/components-v2/Modal/Modal.d.ts +30 -0
  86. package/dist/components-v2/Modal/Modal.js +82 -0
  87. package/dist/components-v2/NavigationBar/NavigationBar.d.ts +47 -0
  88. package/dist/components-v2/NavigationBar/NavigationBar.js +148 -0
  89. package/dist/components-v2/Notification/Notification.d.ts +22 -0
  90. package/dist/components-v2/Notification/Notification.js +113 -0
  91. package/dist/components-v2/NumberInput/NumberInput.d.ts +37 -0
  92. package/dist/components-v2/NumberInput/NumberInput.js +210 -0
  93. package/dist/components-v2/PinInput/PinInput.d.ts +26 -0
  94. package/dist/components-v2/PinInput/PinInput.js +138 -0
  95. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +18 -0
  96. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +91 -0
  97. package/dist/components-v2/Select/Select.d.ts +41 -0
  98. package/dist/components-v2/Select/Select.js +284 -0
  99. package/dist/components-v2/Sidebar/Sidebar.d.ts +41 -0
  100. package/dist/components-v2/Sidebar/Sidebar.js +182 -0
  101. package/dist/components-v2/Slider/Slider.d.ts +18 -0
  102. package/dist/components-v2/Slider/Slider.js +101 -0
  103. package/dist/components-v2/Table/Table.d.ts +7 -0
  104. package/dist/components-v2/Table/Table.js +172 -0
  105. package/dist/components-v2/Table/TableProps.d.ts +139 -0
  106. package/dist/components-v2/Table/TableProps.js +9 -0
  107. package/dist/components-v2/Table/components/ActiveFilters.d.ts +10 -0
  108. package/dist/components-v2/Table/components/ActiveFilters.js +70 -0
  109. package/dist/components-v2/Table/components/BulkActionBar.d.ts +11 -0
  110. package/dist/components-v2/Table/components/BulkActionBar.js +92 -0
  111. package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +7 -0
  112. package/dist/components-v2/Table/components/ColumnResizeHandle.js +41 -0
  113. package/dist/components-v2/Table/components/Pagination.d.ts +11 -0
  114. package/dist/components-v2/Table/components/Pagination.js +92 -0
  115. package/dist/components-v2/Table/components/TableBody.d.ts +23 -0
  116. package/dist/components-v2/Table/components/TableBody.js +69 -0
  117. package/dist/components-v2/Table/components/TableCell.d.ts +14 -0
  118. package/dist/components-v2/Table/components/TableCell.js +63 -0
  119. package/dist/components-v2/Table/components/TableEmptyState.d.ts +12 -0
  120. package/dist/components-v2/Table/components/TableEmptyState.js +55 -0
  121. package/dist/components-v2/Table/components/TableErrorState.d.ts +6 -0
  122. package/dist/components-v2/Table/components/TableErrorState.js +52 -0
  123. package/dist/components-v2/Table/components/TableHeader.d.ts +21 -0
  124. package/dist/components-v2/Table/components/TableHeader.js +94 -0
  125. package/dist/components-v2/Table/components/TableRow.d.ts +20 -0
  126. package/dist/components-v2/Table/components/TableRow.js +64 -0
  127. package/dist/components-v2/Table/components/TableSearch.d.ts +8 -0
  128. package/dist/components-v2/Table/components/TableSearch.js +47 -0
  129. package/dist/components-v2/Table/filters/FilterChips.d.ts +6 -0
  130. package/dist/components-v2/Table/filters/FilterChips.js +9 -0
  131. package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +17 -0
  132. package/dist/components-v2/Table/filters/LeftFilterPane.js +105 -0
  133. package/dist/components-v2/Table/filters/TableFilters.d.ts +12 -0
  134. package/dist/components-v2/Table/filters/TableFilters.js +127 -0
  135. package/dist/components-v2/Table/hooks/useColumnResize.d.ts +15 -0
  136. package/dist/components-v2/Table/hooks/useColumnResize.js +104 -0
  137. package/dist/components-v2/Table/hooks/useTable.d.ts +58 -0
  138. package/dist/components-v2/Table/hooks/useTable.js +254 -0
  139. package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +25 -0
  140. package/dist/components-v2/Table/hooks/useTableKeyboard.js +112 -0
  141. package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +29 -0
  142. package/dist/components-v2/Table/hooks/useVirtualScroll.js +83 -0
  143. package/dist/components-v2/Table/settings/ManageColumns.d.ts +12 -0
  144. package/dist/components-v2/Table/settings/ManageColumns.js +59 -0
  145. package/dist/components-v2/Table/settings/TableSettings.d.ts +12 -0
  146. package/dist/components-v2/Table/settings/TableSettings.js +57 -0
  147. package/dist/components-v2/Table/utils/filterUtils.d.ts +7 -0
  148. package/dist/components-v2/Table/utils/filterUtils.js +149 -0
  149. package/dist/components-v2/Table/utils/sortUtils.d.ts +6 -0
  150. package/dist/components-v2/Table/utils/sortUtils.js +65 -0
  151. package/dist/components-v2/Tag/Tag.d.ts +15 -0
  152. package/dist/components-v2/Tag/Tag.js +87 -0
  153. package/dist/components-v2/Timeline/Timeline.d.ts +18 -0
  154. package/dist/components-v2/Timeline/Timeline.js +76 -0
  155. package/dist/components-v2/Toaster/Toaster.d.ts +61 -0
  156. package/dist/components-v2/Toaster/Toaster.js +63 -0
  157. package/dist/components-v2/Toggle/Toggle.d.ts +28 -0
  158. package/dist/components-v2/Toggle/Toggle.js +90 -0
  159. package/dist/components-v2/ui/accordion.d.ts +12 -0
  160. package/dist/components-v2/ui/accordion.js +104 -0
  161. package/dist/components-v2/ui/alert.d.ts +18 -0
  162. package/dist/components-v2/ui/alert.js +99 -0
  163. package/dist/components-v2/ui/avatar.d.ts +12 -0
  164. package/dist/components-v2/ui/avatar.js +80 -0
  165. package/dist/components-v2/ui/badge.d.ts +10 -0
  166. package/dist/components-v2/ui/badge.js +76 -0
  167. package/dist/components-v2/ui/button.d.ts +18 -0
  168. package/dist/components-v2/ui/button.js +97 -0
  169. package/dist/components-v2/ui/checkbox.d.ts +15 -0
  170. package/dist/components-v2/ui/checkbox.js +86 -0
  171. package/dist/components-v2/ui/dialog.d.ts +30 -0
  172. package/dist/components-v2/ui/dialog.js +115 -0
  173. package/dist/components-v2/ui/dropdown-menu.d.ts +26 -0
  174. package/dist/components-v2/ui/dropdown-menu.js +121 -0
  175. package/dist/components-v2/ui/field.d.ts +32 -0
  176. package/dist/components-v2/ui/field.js +62 -0
  177. package/dist/components-v2/ui/form-field.d.ts +25 -0
  178. package/dist/components-v2/ui/form-field.js +96 -0
  179. package/dist/components-v2/ui/input.d.ts +9 -0
  180. package/dist/components-v2/ui/input.js +73 -0
  181. package/dist/components-v2/ui/label.d.ts +10 -0
  182. package/dist/components-v2/ui/label.js +70 -0
  183. package/dist/components-v2/ui/popover.d.ts +9 -0
  184. package/dist/components-v2/ui/popover.js +60 -0
  185. package/dist/components-v2/ui/progress.d.ts +12 -0
  186. package/dist/components-v2/ui/progress.js +75 -0
  187. package/dist/components-v2/ui/radio-group.d.ts +17 -0
  188. package/dist/components-v2/ui/radio-group.js +91 -0
  189. package/dist/components-v2/ui/select.d.ts +24 -0
  190. package/dist/components-v2/ui/select.js +122 -0
  191. package/dist/components-v2/ui/separator.d.ts +5 -0
  192. package/dist/components-v2/ui/separator.js +55 -0
  193. package/dist/components-v2/ui/skeleton.d.ts +9 -0
  194. package/dist/components-v2/ui/skeleton.js +68 -0
  195. package/dist/components-v2/ui/spinner.d.ts +16 -0
  196. package/dist/components-v2/ui/spinner.js +64 -0
  197. package/dist/components-v2/ui/switch.d.ts +10 -0
  198. package/dist/components-v2/ui/switch.js +81 -0
  199. package/dist/components-v2/ui/tabs.d.ts +13 -0
  200. package/dist/components-v2/ui/tabs.js +95 -0
  201. package/dist/components-v2/ui/textarea.d.ts +10 -0
  202. package/dist/components-v2/ui/textarea.js +96 -0
  203. package/dist/components-v2/ui/tooltip.d.ts +17 -0
  204. package/dist/components-v2/ui/tooltip.js +75 -0
  205. package/dist/index.d.ts +128 -64
  206. package/dist/index.js +246 -173
  207. package/dist/lib/utils.d.ts +2 -0
  208. package/dist/lib/utils.js +8 -0
  209. package/dist/theme-v2/ThemeProvider.d.ts +19 -0
  210. package/dist/theme-v2/ThemeProvider.js +149 -0
  211. package/dist/theme-v2/dark.css +47 -0
  212. package/dist/theme-v2/tokens.css +72 -0
  213. package/package.json +41 -20
  214. package/tailwind.config.ts +91 -0
  215. package/vite.config.ts +49 -10
  216. package/index.html +0 -13
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __rest = (this && this.__rest) || function (s, e) {
36
+ var t = {};
37
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
+ t[p] = s[p];
39
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
+ t[p[i]] = s[p[i]];
43
+ }
44
+ return t;
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.TextInput = void 0;
48
+ const React = __importStar(require("react"));
49
+ const lucide_react_1 = require("lucide-react");
50
+ const utils_1 = require("../../lib/utils");
51
+ const field_1 = require("../ui/field");
52
+ const input_1 = require("../ui/input");
53
+ const form_field_1 = require("../ui/form-field");
54
+ const ICON_SIZE = {
55
+ sm: "h-4 w-4",
56
+ md: "h-[18px] w-[18px]",
57
+ lg: "h-5 w-5",
58
+ };
59
+ const ICON_INSET = {
60
+ sm: { left: "left-2", right: "right-2" },
61
+ md: { left: "left-2.5", right: "right-2.5" },
62
+ lg: { left: "left-3", right: "right-3" },
63
+ };
64
+ const PADDING_FOR_ICONS = {
65
+ sm: { left: "pl-8", right: "pr-8" },
66
+ md: { left: "pl-9", right: "pr-9" },
67
+ lg: { left: "pl-10", right: "pr-10" },
68
+ };
69
+ exports.TextInput = React.forwardRef((props, ref) => {
70
+ const { id, label, placeholder, value, defaultValue, onChange, type = "text", isDisabled, isReadOnly, isRequired, error = false, errorMessage, helperText, leftIcon, rightIcon, onLeftIconClick, onRightIconClick, isInformation, informationMessage, size = "md", width, maxLength, showCount = false, variant = "default", className, hideLabel = false } = props, inputProps = __rest(props, ["id", "label", "placeholder", "value", "defaultValue", "onChange", "type", "isDisabled", "isReadOnly", "isRequired", "error", "errorMessage", "helperText", "leftIcon", "rightIcon", "onLeftIconClick", "onRightIconClick", "isInformation", "informationMessage", "size", "width", "maxLength", "showCount", "variant", "className", "hideLabel"]);
71
+ return (React.createElement(field_1.Field, { id: id, label: hideLabel ? undefined : label, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage, helperText: helperText, error: error, errorMessage: errorMessage, width: width },
72
+ React.createElement(TextInputControl, Object.assign({ ref: ref, label: label, hideLabel: hideLabel, placeholder: placeholder, value: value, defaultValue: defaultValue, onChange: onChange, type: type, isDisabled: isDisabled, isReadOnly: isReadOnly, isRequired: isRequired, error: error, leftIcon: leftIcon, rightIcon: rightIcon, onLeftIconClick: onLeftIconClick, onRightIconClick: onRightIconClick, size: size, maxLength: maxLength, showCount: showCount, variant: variant, className: className }, inputProps))));
73
+ });
74
+ exports.TextInput.displayName = "TextInput";
75
+ const TextInputControl = React.forwardRef((_a, ref) => {
76
+ var { label, hideLabel, placeholder, value, defaultValue, onChange, type = "text", isDisabled, isReadOnly, error = false, leftIcon, rightIcon, onLeftIconClick, onRightIconClick, size = "md", maxLength, showCount = false, variant = "default", className } = _a, rest = __rest(_a, ["label", "hideLabel", "placeholder", "value", "defaultValue", "onChange", "type", "isDisabled", "isReadOnly", "error", "leftIcon", "rightIcon", "onLeftIconClick", "onRightIconClick", "size", "maxLength", "showCount", "variant", "className"]);
77
+ const field = (0, form_field_1.useFormField)();
78
+ const isFloating = variant === "floating";
79
+ const isPassword = type === "password";
80
+ const [showPassword, setShowPassword] = React.useState(false);
81
+ const effectiveType = isPassword && showPassword ? "text" : type;
82
+ const innerRef = React.useRef(null);
83
+ const setRefs = React.useCallback((node) => {
84
+ innerRef.current = node;
85
+ if (typeof ref === "function")
86
+ ref(node);
87
+ else if (ref)
88
+ ref.current =
89
+ node;
90
+ }, [ref]);
91
+ const focusInput = React.useCallback(() => {
92
+ var _a;
93
+ (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
94
+ }, []);
95
+ const [currentLength, setCurrentLength] = React.useState(() => {
96
+ const initial = typeof value === "string"
97
+ ? value
98
+ : typeof defaultValue === "string"
99
+ ? defaultValue
100
+ : "";
101
+ return initial.length;
102
+ });
103
+ React.useEffect(() => {
104
+ if (typeof value === "string")
105
+ setCurrentLength(value.length);
106
+ }, [value]);
107
+ const handleChange = (event) => {
108
+ setCurrentLength(event.target.value.length);
109
+ onChange === null || onChange === void 0 ? void 0 : onChange(event);
110
+ };
111
+ const resolvedRightIcon = isPassword ? (React.createElement("span", { className: "contents text-muted-foreground hover:text-foreground" }, showPassword ? (React.createElement(lucide_react_1.EyeOff, { "aria-hidden": "true" })) : (React.createElement(lucide_react_1.Eye, { "aria-hidden": "true" })))) : (rightIcon);
112
+ const handleRightIconClick = () => {
113
+ if (isPassword) {
114
+ setShowPassword((v) => !v);
115
+ focusInput();
116
+ return;
117
+ }
118
+ if (onRightIconClick) {
119
+ onRightIconClick();
120
+ }
121
+ else {
122
+ focusInput();
123
+ }
124
+ };
125
+ const handleLeftIconClick = () => {
126
+ if (onLeftIconClick) {
127
+ onLeftIconClick();
128
+ }
129
+ else {
130
+ focusInput();
131
+ }
132
+ };
133
+ const hasLeftIcon = !!leftIcon;
134
+ const hasRightIcon = !!resolvedRightIcon;
135
+ const padding = PADDING_FOR_ICONS[size];
136
+ const iconClass = (0, utils_1.cn)("flex items-center justify-center", ICON_SIZE[size]);
137
+ const effectivePlaceholder = isFloating ? " " : placeholder;
138
+ const showCountUI = showCount || typeof maxLength === "number";
139
+ const countRatio = maxLength ? currentLength / maxLength : 0;
140
+ const countColor = countRatio >= 1
141
+ ? "text-destructive"
142
+ : countRatio >= 0.8
143
+ ? "text-warning"
144
+ : "text-muted-foreground";
145
+ const showFloatingLabel = isFloating && label && !hideLabel;
146
+ return (React.createElement("div", { className: (0, utils_1.cn)("relative", className) },
147
+ hasLeftIcon && (React.createElement(IconSlot, { side: "left", size: size, disabled: isDisabled || isReadOnly, clickable: true, onClick: handleLeftIconClick, className: iconClass }, leftIcon)),
148
+ React.createElement(input_1.Input, Object.assign({ ref: setRefs, size: size, type: effectiveType, placeholder: effectivePlaceholder, value: value, defaultValue: defaultValue, onChange: handleChange, disabled: isDisabled, readOnly: isReadOnly, maxLength: maxLength, "aria-invalid": error || field.hasError || undefined, className: (0, utils_1.cn)("peer", hasLeftIcon && padding.left, hasRightIcon && padding.right, error &&
149
+ "border-destructive bg-destructive/5 focus-visible:ring-destructive", isReadOnly && "bg-muted cursor-default focus-visible:ring-0", showFloatingLabel && "placeholder:text-transparent") }, rest)),
150
+ showFloatingLabel && (React.createElement("span", { "aria-hidden": "true", className: (0, utils_1.cn)("pointer-events-none absolute left-3 bg-background px-1 text-muted-foreground transition-all motion-safe:duration-150", "top-1/2 -translate-y-1/2 text-sm", "peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:text-sm", "peer-focus:-top-0 peer-focus:-translate-y-1/2 peer-focus:text-xs peer-focus:text-foreground", "peer-[:not(:placeholder-shown)]:-top-0 peer-[:not(:placeholder-shown)]:-translate-y-1/2 peer-[:not(:placeholder-shown)]:text-xs", error &&
151
+ "peer-focus:text-destructive peer-[:not(:placeholder-shown)]:text-destructive", hasLeftIcon && "left-9") }, label)),
152
+ hasRightIcon && (React.createElement(IconSlot, { side: "right", size: size, disabled: isDisabled || isReadOnly, clickable: isPassword || !!onRightIconClick || true, ariaLabel: isPassword
153
+ ? showPassword
154
+ ? "Hide password"
155
+ : "Show password"
156
+ : undefined, onClick: handleRightIconClick, className: iconClass }, resolvedRightIcon)),
157
+ showCountUI && (React.createElement("span", { "aria-live": "polite", className: (0, utils_1.cn)("absolute -bottom-5 right-0 text-[11px] tabular-nums", countColor) },
158
+ currentLength,
159
+ typeof maxLength === "number" && `/${maxLength}`))));
160
+ });
161
+ TextInputControl.displayName = "TextInputControl";
162
+ function IconSlot({ side, size, disabled, clickable, onClick, ariaLabel, className, children, }) {
163
+ const inset = side === "left" ? ICON_INSET[size].left : ICON_INSET[size].right;
164
+ const sharedClass = (0, utils_1.cn)("absolute top-1/2 -translate-y-1/2 inline-flex items-center justify-center text-muted-foreground", inset);
165
+ if (!clickable || disabled) {
166
+ return (React.createElement("span", { "aria-hidden": "true", className: (0, utils_1.cn)(sharedClass, className) }, children));
167
+ }
168
+ return (React.createElement("button", { type: "button", tabIndex: -1, "aria-label": ariaLabel, onClick: onClick, className: (0, utils_1.cn)(sharedClass, "rounded-sm hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", className) }, children));
169
+ }
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ export type KanbanPriority = "low" | "medium" | "high" | "urgent";
3
+ export interface KanbanAssignee {
4
+ name: string;
5
+ initials?: string;
6
+ avatarUrl?: string;
7
+ }
8
+ export interface KanbanCard {
9
+ id: string;
10
+ title: React.ReactNode;
11
+ description?: React.ReactNode;
12
+ tags?: string[];
13
+ assignee?: KanbanAssignee;
14
+ priority?: KanbanPriority;
15
+ }
16
+ export interface KanbanColumn {
17
+ id: string;
18
+ title: React.ReactNode;
19
+ /** Tailwind text-color class for the column accent dot. */
20
+ accentClassName?: string;
21
+ cards: KanbanCard[];
22
+ }
23
+ export interface KanbanBoardProps {
24
+ columns: KanbanColumn[];
25
+ onCardMove?: (move: {
26
+ cardId: string;
27
+ fromColumnId: string;
28
+ toColumnId: string;
29
+ newIndex: number;
30
+ }) => void;
31
+ onAddCard?: (columnId: string) => void;
32
+ onCardClick?: (card: KanbanCard, columnId: string) => void;
33
+ emptyColumnMessage?: React.ReactNode;
34
+ className?: string;
35
+ }
36
+ export declare function KanbanBoard({ columns, onCardMove, onAddCard, onCardClick, emptyColumnMessage, className, }: KanbanBoardProps): React.ReactElement;
37
+ export declare namespace KanbanBoard {
38
+ var displayName: string;
39
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.KanbanBoard = KanbanBoard;
37
+ const React = __importStar(require("react"));
38
+ const dnd_1 = require("@hello-pangea/dnd");
39
+ const lucide_react_1 = require("lucide-react");
40
+ const utils_1 = require("../../lib/utils");
41
+ const avatar_1 = require("../ui/avatar");
42
+ const badge_1 = require("../ui/badge");
43
+ const button_1 = require("../ui/button");
44
+ const Tag_1 = require("../Tag/Tag");
45
+ const PRIORITY_STYLES = {
46
+ low: { dot: "bg-muted-foreground", label: "Low" },
47
+ medium: { dot: "bg-primary", label: "Medium" },
48
+ high: { dot: "bg-warning", label: "High" },
49
+ urgent: { dot: "bg-destructive", label: "Urgent" },
50
+ };
51
+ function KanbanBoard({ columns, onCardMove, onAddCard, onCardClick, emptyColumnMessage = "No cards yet.", className, }) {
52
+ const handleDragEnd = (result) => {
53
+ if (!result.destination)
54
+ return;
55
+ const { draggableId, source, destination } = result;
56
+ if (source.droppableId === destination.droppableId &&
57
+ source.index === destination.index) {
58
+ return;
59
+ }
60
+ onCardMove === null || onCardMove === void 0 ? void 0 : onCardMove({
61
+ cardId: draggableId,
62
+ fromColumnId: source.droppableId,
63
+ toColumnId: destination.droppableId,
64
+ newIndex: destination.index,
65
+ });
66
+ };
67
+ return (React.createElement(dnd_1.DragDropContext, { onDragEnd: handleDragEnd },
68
+ React.createElement("div", { className: (0, utils_1.cn)("flex h-full gap-3 overflow-x-auto pb-2", className) }, columns.map((column) => (React.createElement(KanbanColumnView, { key: column.id, column: column, onAddCard: onAddCard, onCardClick: onCardClick, emptyColumnMessage: emptyColumnMessage }))))));
69
+ }
70
+ KanbanBoard.displayName = "KanbanBoard";
71
+ function KanbanColumnView({ column, onAddCard, onCardClick, emptyColumnMessage, }) {
72
+ return (React.createElement("section", { className: "flex w-72 shrink-0 flex-col rounded-lg border border-border bg-muted/30", "aria-label": typeof column.title === "string" ? column.title : "Kanban column" },
73
+ React.createElement("header", { className: "flex items-center gap-2 border-b border-border px-3 py-2" },
74
+ column.accentClassName && (React.createElement("span", { "aria-hidden": "true", className: (0, utils_1.cn)("inline-block h-2 w-2 rounded-full", column.accentClassName) })),
75
+ React.createElement("h3", { className: "text-sm font-semibold text-foreground" }, column.title),
76
+ React.createElement(badge_1.Badge, { variant: "secondary", size: "sm", className: "ml-auto" }, column.cards.length)),
77
+ React.createElement(dnd_1.Droppable, { droppableId: column.id }, (provided, snapshot) => (React.createElement("div", Object.assign({ ref: provided.innerRef }, provided.droppableProps, { className: (0, utils_1.cn)("flex-1 space-y-2 overflow-y-auto p-2 transition-colors", snapshot.isDraggingOver && "bg-accent/40") }),
78
+ column.cards.length === 0 && !snapshot.isDraggingOver && (React.createElement("p", { className: "px-2 py-4 text-center text-xs text-muted-foreground" }, emptyColumnMessage)),
79
+ column.cards.map((card, index) => (React.createElement(dnd_1.Draggable, { key: card.id, draggableId: card.id, index: index }, (draggableProvided, draggableSnapshot) => (React.createElement("div", Object.assign({ ref: draggableProvided.innerRef }, draggableProvided.draggableProps, draggableProvided.dragHandleProps, { onClick: () => onCardClick === null || onCardClick === void 0 ? void 0 : onCardClick(card, column.id), className: (0, utils_1.cn)("cursor-grab rounded-md border border-border bg-card p-3 text-card-foreground shadow-sm transition-shadow", draggableSnapshot.isDragging &&
80
+ "cursor-grabbing rotate-1 shadow-lg", onCardClick && "hover:border-primary/40") }),
81
+ React.createElement(KanbanCardView, { card: card })))))),
82
+ provided.placeholder))),
83
+ onAddCard && (React.createElement("footer", { className: "border-t border-border p-2" },
84
+ React.createElement(button_1.Button, { variant: "ghost", size: "sm", leftIcon: React.createElement(lucide_react_1.Plus, null), onClick: () => onAddCard(column.id), className: "w-full justify-start text-muted-foreground" }, "Add card")))));
85
+ }
86
+ function KanbanCardView({ card }) {
87
+ var _a, _b, _c;
88
+ const priority = card.priority ? PRIORITY_STYLES[card.priority] : null;
89
+ const initials = (_b = (_a = card.assignee) === null || _a === void 0 ? void 0 : _a.initials) !== null && _b !== void 0 ? _b : (_c = card.assignee) === null || _c === void 0 ? void 0 : _c.name.split(/\s+/).map((part) => part[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
90
+ return (React.createElement("div", { className: "space-y-2 text-sm" },
91
+ React.createElement("div", { className: "flex items-start gap-2" },
92
+ priority && (React.createElement("span", { "aria-label": `Priority: ${priority.label}`, title: priority.label, className: (0, utils_1.cn)("mt-1.5 h-2 w-2 shrink-0 rounded-full", priority.dot) })),
93
+ React.createElement("p", { className: "font-medium text-foreground" }, card.title)),
94
+ card.description && (React.createElement("p", { className: "text-xs text-muted-foreground" }, card.description)),
95
+ card.tags && card.tags.length > 0 && (React.createElement("div", { className: "flex flex-wrap gap-1" }, card.tags.map((tag) => (React.createElement(Tag_1.Tag, { key: tag, label: tag, size: "sm", variant: "secondary" }))))),
96
+ card.assignee && (React.createElement("div", { className: "flex items-center gap-1.5 pt-1" },
97
+ React.createElement(avatar_1.Avatar, { size: "xs" },
98
+ card.assignee.avatarUrl && (React.createElement(avatar_1.AvatarImage, { src: card.assignee.avatarUrl, alt: card.assignee.name })),
99
+ React.createElement(avatar_1.AvatarFallback, null, initials !== null && initials !== void 0 ? initials : "?")),
100
+ React.createElement("span", { className: "text-xs text-muted-foreground" }, card.assignee.name)))));
101
+ }
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ export interface AppLayoutProps {
3
+ /** Pass a `<Sidebar>` element. The sidebar manages its own width. */
4
+ sidebar?: React.ReactNode;
5
+ /** Pass a `<NavigationBar>` element. */
6
+ navbar?: React.ReactNode;
7
+ children: React.ReactNode;
8
+ sidebarPosition?: "left" | "right";
9
+ className?: string;
10
+ /** Class applied to the scrolling `<main>` content area. */
11
+ mainClassName?: string;
12
+ }
13
+ /**
14
+ * Pure CSS layout shell — no JS dimension calculations. Sidebar handles its
15
+ * own width via Tailwind classes; the main column uses `flex-1 min-w-0` to
16
+ * absorb the remaining horizontal space. The `<main>` element owns the
17
+ * vertical scroll so the navbar stays sticky at the top.
18
+ */
19
+ export declare function AppLayout({ sidebar, navbar, children, sidebarPosition, className, mainClassName, }: AppLayoutProps): React.ReactElement;
20
+ export declare namespace AppLayout {
21
+ var displayName: string;
22
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AppLayout = AppLayout;
37
+ const React = __importStar(require("react"));
38
+ const utils_1 = require("../../lib/utils");
39
+ /**
40
+ * Pure CSS layout shell — no JS dimension calculations. Sidebar handles its
41
+ * own width via Tailwind classes; the main column uses `flex-1 min-w-0` to
42
+ * absorb the remaining horizontal space. The `<main>` element owns the
43
+ * vertical scroll so the navbar stays sticky at the top.
44
+ */
45
+ function AppLayout({ sidebar, navbar, children, sidebarPosition = "left", className, mainClassName, }) {
46
+ return (React.createElement("div", { className: (0, utils_1.cn)("flex h-screen overflow-hidden bg-background text-foreground", className) },
47
+ sidebar && sidebarPosition === "left" && sidebar,
48
+ React.createElement("div", { className: "flex min-w-0 flex-1 flex-col overflow-hidden" },
49
+ navbar,
50
+ React.createElement("main", { className: (0, utils_1.cn)("flex-1 overflow-y-auto", mainClassName) }, children)),
51
+ sidebar && sidebarPosition === "right" && sidebar));
52
+ }
53
+ AppLayout.displayName = "AppLayout";
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import { type SkeletonProps } from "../ui/skeleton";
3
+ import { type SpinnerSize } from "../ui/spinner";
4
+ export type LoadingVariant = "spinner" | "overlay" | "skeleton";
5
+ export interface LoadingProps {
6
+ variant?: LoadingVariant;
7
+ /** When false, renders nothing — convenient for `<Loading isLoading={state} />`. */
8
+ isLoading?: boolean;
9
+ /** Optional caption shown beneath the spinner (spinner + overlay variants). */
10
+ text?: React.ReactNode;
11
+ size?: SpinnerSize;
12
+ className?: string;
13
+ /** Forwarded to Skeleton when variant === 'skeleton'. */
14
+ skeletonProps?: SkeletonProps;
15
+ }
16
+ export declare function Loading({ variant, isLoading, text, size, className, skeletonProps, }: LoadingProps): React.ReactElement | null;
17
+ export declare namespace Loading {
18
+ var displayName: string;
19
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Loading = Loading;
37
+ const React = __importStar(require("react"));
38
+ const utils_1 = require("../../lib/utils");
39
+ const skeleton_1 = require("../ui/skeleton");
40
+ const spinner_1 = require("../ui/spinner");
41
+ function Loading({ variant = "spinner", isLoading = true, text, size = "md", className, skeletonProps, }) {
42
+ if (!isLoading)
43
+ return null;
44
+ if (variant === "skeleton") {
45
+ return React.createElement(skeleton_1.Skeleton, Object.assign({}, skeletonProps, { className: (0, utils_1.cn)(skeletonProps === null || skeletonProps === void 0 ? void 0 : skeletonProps.className, className) }));
46
+ }
47
+ const body = (React.createElement("div", { className: "flex flex-col items-center gap-2", "aria-live": "polite" },
48
+ React.createElement(spinner_1.Spinner, { size: size }),
49
+ text && (React.createElement("span", { className: "text-sm text-muted-foreground" }, text))));
50
+ if (variant === "overlay") {
51
+ return (React.createElement("div", { role: "status", "aria-busy": "true", className: (0, utils_1.cn)("fixed inset-0 z-50 flex items-center justify-center", "bg-background/70 backdrop-blur-sm", className) }, body));
52
+ }
53
+ return (React.createElement("div", { role: "status", "aria-busy": "true", className: (0, utils_1.cn)("flex items-center justify-center p-4", className) }, body));
54
+ }
55
+ Loading.displayName = "Loading";
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @deprecated Use `Dialog` from `pixelize-design-library` directly. `Modal` is
3
+ * a thin compatibility shim that maps the old prop names (`isOpen` / `onClose`)
4
+ * onto Radix Dialog's `open` / `onOpenChange`. New code should import:
5
+ *
6
+ * import { Dialog, DialogContent, ... } from "pixelize-design-library";
7
+ */
8
+ import * as React from "react";
9
+ import { DialogFooter, DialogHeader, type DialogContentProps } from "../ui/dialog";
10
+ export interface ModalProps extends Omit<DialogContentProps, "children"> {
11
+ isOpen: boolean;
12
+ onClose: () => void;
13
+ children?: React.ReactNode;
14
+ }
15
+ export declare function Modal({ isOpen, onClose, children, ...contentProps }: ModalProps): React.ReactElement;
16
+ export declare namespace Modal {
17
+ var displayName: string;
18
+ }
19
+ /** @deprecated Use `DialogHeader`. */
20
+ export declare const ModalHeader: typeof DialogHeader;
21
+ /** @deprecated Use `DialogTitle`. */
22
+ export declare const ModalTitle: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-dialog").DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
23
+ /** @deprecated Use `DialogDescription`. */
24
+ export declare const ModalDescription: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-dialog").DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
25
+ /** Body is just a passthrough — Dialog has no dedicated Body. */
26
+ export declare const ModalBody: React.FC<React.HTMLAttributes<HTMLDivElement>>;
27
+ /** @deprecated Use `DialogFooter`. */
28
+ export declare const ModalFooter: typeof DialogFooter;
29
+ /** @deprecated Use `DialogClose`. */
30
+ export declare const ModalClose: React.ForwardRefExoticComponent<import("@radix-ui/react-dialog").DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __rest = (this && this.__rest) || function (s, e) {
36
+ var t = {};
37
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
+ t[p] = s[p];
39
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
+ t[p[i]] = s[p[i]];
43
+ }
44
+ return t;
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.ModalClose = exports.ModalFooter = exports.ModalBody = exports.ModalDescription = exports.ModalTitle = exports.ModalHeader = void 0;
48
+ exports.Modal = Modal;
49
+ /**
50
+ * @deprecated Use `Dialog` from `pixelize-design-library` directly. `Modal` is
51
+ * a thin compatibility shim that maps the old prop names (`isOpen` / `onClose`)
52
+ * onto Radix Dialog's `open` / `onOpenChange`. New code should import:
53
+ *
54
+ * import { Dialog, DialogContent, ... } from "pixelize-design-library";
55
+ */
56
+ const React = __importStar(require("react"));
57
+ const dialog_1 = require("../ui/dialog");
58
+ function Modal(_a) {
59
+ var { isOpen, onClose, children } = _a, contentProps = __rest(_a, ["isOpen", "onClose", "children"]);
60
+ return (React.createElement(dialog_1.Dialog, { open: isOpen, onOpenChange: (open) => {
61
+ if (!open)
62
+ onClose();
63
+ } },
64
+ React.createElement(dialog_1.DialogContent, Object.assign({}, contentProps), children)));
65
+ }
66
+ Modal.displayName = "Modal";
67
+ /** @deprecated Use `DialogHeader`. */
68
+ exports.ModalHeader = dialog_1.DialogHeader;
69
+ /** @deprecated Use `DialogTitle`. */
70
+ exports.ModalTitle = dialog_1.DialogTitle;
71
+ /** @deprecated Use `DialogDescription`. */
72
+ exports.ModalDescription = dialog_1.DialogDescription;
73
+ /** Body is just a passthrough — Dialog has no dedicated Body. */
74
+ const ModalBody = (_a) => {
75
+ var { className } = _a, rest = __rest(_a, ["className"]);
76
+ return React.createElement("div", Object.assign({ className: className }, rest));
77
+ };
78
+ exports.ModalBody = ModalBody;
79
+ /** @deprecated Use `DialogFooter`. */
80
+ exports.ModalFooter = dialog_1.DialogFooter;
81
+ /** @deprecated Use `DialogClose`. */
82
+ exports.ModalClose = dialog_1.DialogClose;
@@ -0,0 +1,47 @@
1
+ import * as React from "react";
2
+ import { type LucideIcon } from "lucide-react";
3
+ import { type BreadcrumbItem } from "../Breadcrumbs/Breadcrumbs";
4
+ export interface NavigationUser {
5
+ name: string;
6
+ email?: string;
7
+ avatarUrl?: string;
8
+ initials?: string;
9
+ }
10
+ export interface UserMenuItem {
11
+ label: string;
12
+ icon?: React.ReactNode;
13
+ onClick?: () => void;
14
+ href?: string;
15
+ separator?: boolean;
16
+ variant?: "default" | "destructive";
17
+ }
18
+ export interface GlobalSearchConfig {
19
+ placeholder?: string;
20
+ onSearch?: (query: string) => void;
21
+ /** Visual-only hint (e.g. "⌘K"). Consumers wire their own keybind. */
22
+ shortcut?: string;
23
+ }
24
+ export interface NavigationBarProps {
25
+ logo?: string;
26
+ appName?: string;
27
+ onSidebarToggle?: () => void;
28
+ sidebarOpen?: boolean;
29
+ breadcrumb?: BreadcrumbItem[];
30
+ pageTitle?: React.ReactNode;
31
+ backAction?: {
32
+ label?: string;
33
+ onClick: () => void;
34
+ };
35
+ actions?: React.ReactNode;
36
+ user?: NavigationUser;
37
+ userMenuItems?: UserMenuItem[];
38
+ onLogout?: () => void;
39
+ logoutLabel?: string;
40
+ notificationCount?: number;
41
+ notificationIcon?: LucideIcon;
42
+ onNotificationClick?: () => void;
43
+ globalSearch?: GlobalSearchConfig;
44
+ showThemeSwitcher?: boolean;
45
+ className?: string;
46
+ }
47
+ export declare function NavigationBar({ logo, appName, onSidebarToggle, sidebarOpen, breadcrumb, pageTitle, backAction, actions, user, userMenuItems, onLogout, logoutLabel, notificationCount, notificationIcon, onNotificationClick, globalSearch, showThemeSwitcher, className, }: NavigationBarProps): React.ReactElement;