@lerianstudio/sindarian-ui 1.0.0-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.
- package/README.md +235 -0
- package/dist/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
- package/dist/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
- package/dist/components/breadcrumb/get-breadcrumb-paths.js +15 -0
- package/dist/components/breadcrumb/index.d.ts +10 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/index.js +13 -0
- package/dist/components/entity-box/index.d.ts +17 -0
- package/dist/components/entity-box/index.d.ts.map +1 -0
- package/dist/components/entity-box/index.js +39 -0
- package/dist/components/entity-data-table/index.d.ts +17 -0
- package/dist/components/entity-data-table/index.d.ts.map +1 -0
- package/dist/components/entity-data-table/index.js +20 -0
- package/dist/components/form/combo-box-field/index.d.ts +14 -0
- package/dist/components/form/combo-box-field/index.d.ts.map +1 -0
- package/dist/components/form/combo-box-field/index.js +35 -0
- package/dist/components/form/country-field/index.d.ts +4 -0
- package/dist/components/form/country-field/index.d.ts.map +1 -0
- package/dist/components/form/country-field/index.js +11 -0
- package/dist/components/form/index.d.ts +8 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +23 -0
- package/dist/components/form/input-field/index.d.ts +23 -0
- package/dist/components/form/input-field/index.d.ts.map +1 -0
- package/dist/components/form/input-field/index.js +14 -0
- package/dist/components/form/pagination-limit-field/index.d.ts +8 -0
- package/dist/components/form/pagination-limit-field/index.d.ts.map +1 -0
- package/dist/components/form/pagination-limit-field/index.js +10 -0
- package/dist/components/form/password-field/index.d.ts +12 -0
- package/dist/components/form/password-field/index.d.ts.map +1 -0
- package/dist/components/form/password-field/index.js +15 -0
- package/dist/components/form/select-field/index.d.ts +18 -0
- package/dist/components/form/select-field/index.d.ts.map +1 -0
- package/dist/components/form/select-field/index.js +14 -0
- package/dist/components/form/state-field/index.d.ts +8 -0
- package/dist/components/form/state-field/index.d.ts.map +1 -0
- package/dist/components/form/state-field/index.js +42 -0
- package/dist/components/form/switch-field/index.d.ts +14 -0
- package/dist/components/form/switch-field/index.d.ts.map +1 -0
- package/dist/components/form/switch-field/index.js +11 -0
- package/dist/components/page/index.d.ts +4 -0
- package/dist/components/page/index.d.ts.map +1 -0
- package/dist/components/page/index.js +16 -0
- package/dist/components/page-header/index.d.ts +33 -0
- package/dist/components/page-header/index.d.ts.map +1 -0
- package/dist/components/page-header/index.js +47 -0
- package/dist/components/pagination/index.d.ts +8 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +10 -0
- package/dist/components/table/id-table-cell.d.ts +6 -0
- package/dist/components/table/id-table-cell.d.ts.map +1 -0
- package/dist/components/table/id-table-cell.js +16 -0
- package/dist/components/table/index.d.ts +3 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +18 -0
- package/dist/components/table/locked-table-actions.d.ts +6 -0
- package/dist/components/table/locked-table-actions.d.ts.map +1 -0
- package/dist/components/table/locked-table-actions.js +11 -0
- package/dist/components/table/name-table-cell.d.ts +6 -0
- package/dist/components/table/name-table-cell.d.ts.map +1 -0
- package/dist/components/table/name-table-cell.js +10 -0
- package/dist/components/ui/alert/index.d.ts +11 -0
- package/dist/components/ui/alert/index.d.ts.map +1 -0
- package/dist/components/ui/alert/index.js +31 -0
- package/dist/components/ui/autocomplete/index.d.ts +54 -0
- package/dist/components/ui/autocomplete/index.d.ts.map +1 -0
- package/dist/components/ui/autocomplete/index.js +324 -0
- package/dist/components/ui/autosize-textarea/index.d.ts +15 -0
- package/dist/components/ui/autosize-textarea/index.d.ts.map +1 -0
- package/dist/components/ui/autosize-textarea/index.js +89 -0
- package/dist/components/ui/avatar/index.d.ts +7 -0
- package/dist/components/ui/avatar/index.d.ts.map +1 -0
- package/dist/components/ui/avatar/index.js +51 -0
- package/dist/components/ui/badge/index.d.ts +11 -0
- package/dist/components/ui/badge/index.d.ts.map +1 -0
- package/dist/components/ui/badge/index.js +28 -0
- package/dist/components/ui/breadcrumb/index.d.ts +12 -0
- package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb/index.js +35 -0
- package/dist/components/ui/button/index.d.ts +17 -0
- package/dist/components/ui/button/index.d.ts.map +1 -0
- package/dist/components/ui/button/index.js +72 -0
- package/dist/components/ui/card/index.d.ts +10 -0
- package/dist/components/ui/card/index.d.ts.map +1 -0
- package/dist/components/ui/card/index.js +32 -0
- package/dist/components/ui/checkbox/index.d.ts +5 -0
- package/dist/components/ui/checkbox/index.d.ts.map +1 -0
- package/dist/components/ui/checkbox/index.js +44 -0
- package/dist/components/ui/collapsible/index.d.ts +6 -0
- package/dist/components/ui/collapsible/index.d.ts.map +1 -0
- package/dist/components/ui/collapsible/index.js +50 -0
- package/dist/components/ui/command/index.d.ts +14 -0
- package/dist/components/ui/command/index.d.ts.map +1 -0
- package/dist/components/ui/command/index.js +45 -0
- package/dist/components/ui/dialog/index.d.ts +16 -0
- package/dist/components/ui/dialog/index.d.ts.map +1 -0
- package/dist/components/ui/dialog/index.js +80 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +27 -0
- package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/index.js +107 -0
- package/dist/components/ui/form.d.ts +37 -0
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/form.js +110 -0
- package/dist/components/ui/input/index.d.ts +4 -0
- package/dist/components/ui/input/index.d.ts.map +1 -0
- package/dist/components/ui/input/index.js +10 -0
- package/dist/components/ui/input-with-icon/index.d.ts +12 -0
- package/dist/components/ui/input-with-icon/index.d.ts.map +1 -0
- package/dist/components/ui/input-with-icon/index.js +57 -0
- package/dist/components/ui/label/index.d.ts +7 -0
- package/dist/components/ui/label/index.d.ts.map +1 -0
- package/dist/components/ui/label/index.js +45 -0
- package/dist/components/ui/label/label.stories.d.ts +5 -0
- package/dist/components/ui/label/label.stories.d.ts.map +1 -0
- package/dist/components/ui/label/label.stories.js +24 -0
- package/dist/components/ui/loading-button/index.d.ts +7 -0
- package/dist/components/ui/loading-button/index.d.ts.map +1 -0
- package/dist/components/ui/loading-button/index.js +9 -0
- package/dist/components/ui/multiple-select/index.d.ts +91 -0
- package/dist/components/ui/multiple-select/index.d.ts.map +1 -0
- package/dist/components/ui/multiple-select/index.js +233 -0
- package/dist/components/ui/paper/index.d.ts +4 -0
- package/dist/components/ui/paper/index.d.ts.map +1 -0
- package/dist/components/ui/paper/index.js +8 -0
- package/dist/components/ui/popover/index.d.ts +8 -0
- package/dist/components/ui/popover/index.d.ts.map +1 -0
- package/dist/components/ui/popover/index.js +55 -0
- package/dist/components/ui/progress/index.d.ts +8 -0
- package/dist/components/ui/progress/index.d.ts.map +1 -0
- package/dist/components/ui/progress/index.js +43 -0
- package/dist/components/ui/select/index.d.ts +19 -0
- package/dist/components/ui/select/index.d.ts.map +1 -0
- package/dist/components/ui/select/index.js +101 -0
- package/dist/components/ui/separator/index.d.ts +5 -0
- package/dist/components/ui/separator/index.d.ts.map +1 -0
- package/dist/components/ui/separator/index.js +43 -0
- package/dist/components/ui/sheet/index.d.ts +19 -0
- package/dist/components/ui/sheet/index.d.ts.map +1 -0
- package/dist/components/ui/sheet/index.js +94 -0
- package/dist/components/ui/skeleton/index.d.ts +3 -0
- package/dist/components/ui/skeleton/index.d.ts.map +1 -0
- package/dist/components/ui/skeleton/index.js +8 -0
- package/dist/components/ui/stepper/index.d.ts +18 -0
- package/dist/components/ui/stepper/index.d.ts.map +1 -0
- package/dist/components/ui/stepper/index.js +29 -0
- package/dist/components/ui/switch/index.d.ts +5 -0
- package/dist/components/ui/switch/index.d.ts.map +1 -0
- package/dist/components/ui/switch/index.js +43 -0
- package/dist/components/ui/table/index.d.ts +21 -0
- package/dist/components/ui/table/index.d.ts.map +1 -0
- package/dist/components/ui/table/index.js +56 -0
- package/dist/components/ui/tabs/index.d.ts +8 -0
- package/dist/components/ui/tabs/index.d.ts.map +1 -0
- package/dist/components/ui/tabs/index.js +55 -0
- package/dist/components/ui/textarea/index.d.ts +4 -0
- package/dist/components/ui/textarea/index.d.ts.map +1 -0
- package/dist/components/ui/textarea/index.js +8 -0
- package/dist/components/ui/toast/index.d.ts +17 -0
- package/dist/components/ui/toast/index.d.ts.map +1 -0
- package/dist/components/ui/toast/index.js +80 -0
- package/dist/components/ui/toast/toaster.d.ts +2 -0
- package/dist/components/ui/toast/toaster.d.ts.map +1 -0
- package/dist/components/ui/toast/toaster.js +13 -0
- package/dist/components/ui/tooltip/index.d.ts +11 -0
- package/dist/components/ui/tooltip/index.d.ts.map +1 -0
- package/dist/components/ui/tooltip/index.js +66 -0
- package/dist/hooks/use-click-away.d.ts +9 -0
- package/dist/hooks/use-click-away.d.ts.map +1 -0
- package/dist/hooks/use-click-away.js +29 -0
- package/dist/hooks/use-click-away.test.d.ts +2 -0
- package/dist/hooks/use-click-away.test.d.ts.map +1 -0
- package/dist/hooks/use-click-away.test.js +39 -0
- package/dist/hooks/use-pagination.d.ts +13 -0
- package/dist/hooks/use-pagination.d.ts.map +1 -0
- package/dist/hooks/use-pagination.js +41 -0
- package/dist/hooks/use-stepper.d.ts +11 -0
- package/dist/hooks/use-stepper.d.ts.map +1 -0
- package/dist/hooks/use-stepper.js +26 -0
- package/dist/hooks/use-stepper.test.d.ts +2 -0
- package/dist/hooks/use-stepper.test.d.ts.map +1 -0
- package/dist/hooks/use-stepper.test.js +45 -0
- package/dist/hooks/use-toast.d.ts +45 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +164 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +8 -0
- package/dist/public/countries.json +21210 -0
- package/dist/types/metadata-type.d.ts +2 -0
- package/dist/types/metadata-type.d.ts.map +1 -0
- package/dist/types/metadata-type.js +2 -0
- package/dist/utils/country-utils.d.ts +17 -0
- package/dist/utils/country-utils.d.ts.map +1 -0
- package/dist/utils/country-utils.js +25 -0
- package/dist/utils/currency-codes.d.ts +5 -0
- package/dist/utils/currency-codes.d.ts.map +1 -0
- package/dist/utils/currency-codes.js +184 -0
- package/package.json +76 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.SIDE_OPTIONS = void 0;
|
|
41
|
+
exports.AutocompleteTrigger = AutocompleteTrigger;
|
|
42
|
+
exports.AutocompleteValue = AutocompleteValue;
|
|
43
|
+
exports.AutocompleteMultipleValue = AutocompleteMultipleValue;
|
|
44
|
+
exports.AutocompleteEmpty = AutocompleteEmpty;
|
|
45
|
+
exports.AutocompleteLoading = AutocompleteLoading;
|
|
46
|
+
exports.AutocompleteContent = AutocompleteContent;
|
|
47
|
+
exports.AutocompleteGroup = AutocompleteGroup;
|
|
48
|
+
exports.AutocompleteItem = AutocompleteItem;
|
|
49
|
+
exports.Autocomplete = Autocomplete;
|
|
50
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
51
|
+
const react_1 = __importDefault(require("react"));
|
|
52
|
+
const SelectPrimitive = __importStar(require("@radix-ui/react-select"));
|
|
53
|
+
const lucide_react_1 = require("lucide-react");
|
|
54
|
+
const badge_1 = require("../badge");
|
|
55
|
+
const utils_1 = require("../../../lib/utils");
|
|
56
|
+
const separator_1 = require("../separator");
|
|
57
|
+
const cmdk_1 = require("cmdk");
|
|
58
|
+
const use_click_away_1 = require("../../../hooks/use-click-away");
|
|
59
|
+
const lodash_1 = require("lodash");
|
|
60
|
+
const AutocompleteContext = react_1.default.createContext({
|
|
61
|
+
value: [],
|
|
62
|
+
onValueChange: (values) => values,
|
|
63
|
+
handleChange: (value) => value,
|
|
64
|
+
handleClear: () => { },
|
|
65
|
+
setOpen: () => { },
|
|
66
|
+
setOnScrollbar: () => { },
|
|
67
|
+
options: {},
|
|
68
|
+
addOption: (option) => option,
|
|
69
|
+
inputRef: react_1.default.createRef()
|
|
70
|
+
});
|
|
71
|
+
const useAutocomplete = () => {
|
|
72
|
+
const context = react_1.default.useContext(AutocompleteContext);
|
|
73
|
+
if (!context) {
|
|
74
|
+
throw new Error('useAutocomplete must be used within a AutocompleteProvider');
|
|
75
|
+
}
|
|
76
|
+
return context;
|
|
77
|
+
};
|
|
78
|
+
function AutocompleteTrigger({ ref, className, onClear, children }) {
|
|
79
|
+
const _ref = react_1.default.useRef(null);
|
|
80
|
+
const { open, readOnly, setOpen, disabled, value, inputRef, handleClear } = useAutocomplete();
|
|
81
|
+
react_1.default.useImperativeHandle(ref, () => _ref.current);
|
|
82
|
+
const isNoSelection = disabled || readOnly || value.length < 1;
|
|
83
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: _ref, className: (0, utils_1.cn)('bg-background ring-offset-background placeholder:text-shadcn-400 data-[disabled=true]:bg-shadcn-100 data-[read-only=true]:bg-shadcn-100 flex rounded-md border border-[#C7C7C7] text-sm focus:outline-hidden focus-visible:outline-hidden data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 data-[read-only=true]:opacity-50 md:text-sm dark:border-inherit [&>span]:line-clamp-1', {
|
|
84
|
+
'h-9': value.length === 0,
|
|
85
|
+
'min-h-9': value.length > 0,
|
|
86
|
+
'cursor-text': !disabled && value.length !== 0
|
|
87
|
+
}, className), onClick: () => {
|
|
88
|
+
// Redirect focus to the input field when clicking on the container
|
|
89
|
+
if (readOnly || disabled) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (open) {
|
|
93
|
+
inputRef?.current?.blur();
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
inputRef?.current?.focus();
|
|
97
|
+
}
|
|
98
|
+
setOpen(!open);
|
|
99
|
+
}, "data-disabled": disabled, "data-read-only": readOnly, children: [(0, jsx_runtime_1.jsx)("div", { className: "flex grow flex-wrap gap-1 px-3 py-2", children: children }), (0, jsx_runtime_1.jsxs)("div", { className: "flex shrink-0 items-center justify-end", children: [(0, jsx_runtime_1.jsx)("button", { type: "button", className: (0, utils_1.cn)(isNoSelection && 'hidden'), children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "text-muted-foreground mx-2 h-4 cursor-pointer", onClick: (event) => {
|
|
100
|
+
event.stopPropagation();
|
|
101
|
+
handleClear();
|
|
102
|
+
onClear?.();
|
|
103
|
+
} }) }), (0, jsx_runtime_1.jsx)(separator_1.Separator, { orientation: "vertical", className: (0, utils_1.cn)(isNoSelection && 'hidden') }), (0, jsx_runtime_1.jsx)(SelectPrimitive.Icon, { className: "cursor-pointer data-[disabled=true]:cursor-not-allowed data-[read-only=true]:cursor-default", "data-disabled": disabled, "data-read-only": readOnly, children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { className: "mx-3 my-2 h-4 w-4 opacity-50" }) })] })] }));
|
|
104
|
+
}
|
|
105
|
+
function AutocompleteValue({ ref, className, value: valueProp, onValueChange, onBlur, ...props }) {
|
|
106
|
+
const [search, setSearch] = react_1.default.useState(valueProp);
|
|
107
|
+
const { value, showValue, options, readOnly, disabled, inputRef } = useAutocomplete();
|
|
108
|
+
react_1.default.useImperativeHandle(ref, () => inputRef.current);
|
|
109
|
+
const updateSearch = (value) => {
|
|
110
|
+
if ((0, lodash_1.isNil)(value)) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const v = typeof value === 'string' ? value : value[0];
|
|
114
|
+
if (v === '') {
|
|
115
|
+
handleValueChange('');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
handleValueChange(showValue ? v : options[v]);
|
|
119
|
+
};
|
|
120
|
+
const handleValueChange = (value) => {
|
|
121
|
+
setSearch(value);
|
|
122
|
+
onValueChange?.(value);
|
|
123
|
+
};
|
|
124
|
+
const handleBlur = (event) => {
|
|
125
|
+
updateSearch(value);
|
|
126
|
+
onBlur?.(event);
|
|
127
|
+
};
|
|
128
|
+
// If options changes, update only the internal value
|
|
129
|
+
react_1.default.useEffect(() => {
|
|
130
|
+
if ((0, lodash_1.isNil)(value)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const v = typeof value === 'string' ? value : value[0];
|
|
134
|
+
if (v === '') {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
setSearch(showValue ? v : options[v]);
|
|
138
|
+
}, [options]);
|
|
139
|
+
react_1.default.useEffect(() => {
|
|
140
|
+
updateSearch(value);
|
|
141
|
+
}, [value]);
|
|
142
|
+
return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Input, { ...props, ref: inputRef, value: search, onValueChange: handleValueChange, disabled: disabled, readOnly: readOnly, className: (0, utils_1.cn)('placeholder:text-muted-foreground w-full bg-transparent outline-hidden read-only:opacity-50 read-only:placeholder:opacity-0 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0', className), onBlur: handleBlur }));
|
|
143
|
+
}
|
|
144
|
+
function AutocompleteMultipleValue({ ref, className, ...props }) {
|
|
145
|
+
const { value, disabled, handleChange, options, showValue, inputRef } = useAutocomplete();
|
|
146
|
+
react_1.default.useImperativeHandle(ref, () => inputRef.current);
|
|
147
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [options &&
|
|
148
|
+
value?.map((value) => ((0, jsx_runtime_1.jsxs)(badge_1.Badge, { variant: "secondary", className: (0, utils_1.cn)('data-disabled:bg-muted-foreground data-fixed:bg-muted-foreground data-disabled:text-muted data-fixed:text-muted data-disabled:hover:bg-muted-foreground data-fixed:hover:bg-muted-foreground'), children: [showValue ? value : options[value], (0, jsx_runtime_1.jsx)("button", { type: "button", className: (0, utils_1.cn)('ring-offset-background focus:ring-ring ml-1 rounded-full outline-hidden focus:ring-2 focus:ring-offset-2', disabled && 'hidden'), children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { className: "text-muted-foreground hover:text-foreground h-3 w-3", onClick: (event) => {
|
|
149
|
+
event.stopPropagation();
|
|
150
|
+
handleChange(value);
|
|
151
|
+
} }) })] }, value))), (0, jsx_runtime_1.jsx)(cmdk_1.Command.Input, { ...props, ref: inputRef, disabled: disabled, className: (0, utils_1.cn)('placeholder:text-muted-foreground w-full bg-transparent outline-hidden focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 disabled:placeholder:opacity-0', className) })] }));
|
|
152
|
+
}
|
|
153
|
+
function AutocompleteEmpty({ className, ...props }) {
|
|
154
|
+
const render = (0, cmdk_1.useCommandState)((state) => state.filtered.count === 0);
|
|
155
|
+
if (!render)
|
|
156
|
+
return null;
|
|
157
|
+
return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "autocomplete-empty", className: (0, utils_1.cn)('py-6 text-center text-sm', className), "cmdk-empty": "", role: "presentation", ...props }));
|
|
158
|
+
}
|
|
159
|
+
function AutocompleteLoading({ className, ref, ...props }) {
|
|
160
|
+
return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Loading, { ref: ref, "data-slot": "autocomplete-loading", className: (0, utils_1.cn)('flex items-center justify-center py-6 text-center text-sm', className), ...props, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-muted-foreground h-5 w-5 animate-spin" }) }));
|
|
161
|
+
}
|
|
162
|
+
exports.SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'];
|
|
163
|
+
function AutocompleteContent({ className, position = 'popper', side = 'bottom', ref, children, onMouseEnter, onMouseLeave, onPointerDownOutside, ...props }) {
|
|
164
|
+
const _ref = react_1.default.useRef(null);
|
|
165
|
+
const { open, addOption, setOpen, onScrollbar, setOnScrollbar, inputRef } = useAutocomplete();
|
|
166
|
+
react_1.default.useImperativeHandle(ref, () => _ref.current);
|
|
167
|
+
(0, use_click_away_1.useClickAway)(_ref, (event) => {
|
|
168
|
+
// Should not close when clicking on the scrollbar
|
|
169
|
+
if (onScrollbar) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
setOpen(false);
|
|
173
|
+
inputRef.current?.blur();
|
|
174
|
+
onPointerDownOutside?.(event);
|
|
175
|
+
});
|
|
176
|
+
/**
|
|
177
|
+
* Iterates recursively into react children to find valid items options
|
|
178
|
+
* Adds the valid ones into the options object
|
|
179
|
+
* @param children
|
|
180
|
+
*/
|
|
181
|
+
const _searchChildren = (children) => {
|
|
182
|
+
react_1.default.Children.forEach(react_1.default.Children.toArray(children), (child) => {
|
|
183
|
+
// If child is already invalid, like pure string, dismiss
|
|
184
|
+
if (!react_1.default.isValidElement(child)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// If child is recognized as an AutocompleteItem
|
|
188
|
+
if (child.type &&
|
|
189
|
+
child.type.displayName === 'AutocompleteItem') {
|
|
190
|
+
// Check if the item was proper filled with a value prop
|
|
191
|
+
if (child.props.value) {
|
|
192
|
+
addOption({
|
|
193
|
+
[child.props.value]: child.props.children
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// If not, search recursively into the childrens
|
|
199
|
+
if (child.props.children) {
|
|
200
|
+
_searchChildren(child.props.children);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
// Since this component is not going to be rendered in the DOM until open is true,
|
|
205
|
+
// we need to register the options when the component mounts
|
|
206
|
+
// and when the children changes.
|
|
207
|
+
react_1.default.useEffect(() => {
|
|
208
|
+
_searchChildren(children);
|
|
209
|
+
}, [children]);
|
|
210
|
+
if (!open) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "relative", children: (0, jsx_runtime_1.jsx)(cmdk_1.Command.List, { ref: _ref, className: (0, utils_1.cn)('bg-popover text-popover-foreground animate-in absolute top-1 z-50 max-h-96 w-full min-w-32 overflow-x-hidden overflow-y-auto rounded-md border shadow-md outline-hidden', position === 'popper' &&
|
|
214
|
+
'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className), "data-side": side, ...props, onMouseEnter: (e) => {
|
|
215
|
+
onMouseEnter?.(e);
|
|
216
|
+
setOnScrollbar(true);
|
|
217
|
+
}, onMouseLeave: (e) => {
|
|
218
|
+
onMouseLeave?.(e);
|
|
219
|
+
setOnScrollbar(false);
|
|
220
|
+
}, children: children }) }));
|
|
221
|
+
}
|
|
222
|
+
function AutocompleteGroup({ className, ...props }) {
|
|
223
|
+
return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Group, { "data-slot": "autocomplete-group", className: (0, utils_1.cn)('overflow-hidden p-1 text-slate-950 dark:text-slate-50 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-slate-500 dark:[&_[cmdk-group-heading]]:text-slate-400', className), ...props }));
|
|
224
|
+
}
|
|
225
|
+
function AutocompleteItem({ className, value, onSelect, ...props }) {
|
|
226
|
+
const { handleChange } = useAutocomplete();
|
|
227
|
+
return ((0, jsx_runtime_1.jsx)(cmdk_1.Command.Item, { "data-slot": "autocomplete-item", value: value, className: (0, utils_1.cn)("data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground dark:data-[selected='true']:bg-accent relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 dark:data-[selected=true]:text-slate-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className), ...props, onMouseDown: (e) => {
|
|
228
|
+
e.preventDefault();
|
|
229
|
+
e.stopPropagation();
|
|
230
|
+
}, onSelect: (value) => {
|
|
231
|
+
handleChange(value);
|
|
232
|
+
onSelect?.(value);
|
|
233
|
+
} }));
|
|
234
|
+
}
|
|
235
|
+
function Autocomplete({ ref, value, defaultValue, onValueChange, onClear, className, open: openProp, onOpenChange, showValue, readOnly, disabled, multiple, onKeyDown, children, ...props }) {
|
|
236
|
+
const _ref = react_1.default.useRef(null);
|
|
237
|
+
const [open, _setOpen] = react_1.default.useState(openProp);
|
|
238
|
+
const inputRef = react_1.default.useRef(null);
|
|
239
|
+
const [onScrollbar, setOnScrollbar] = react_1.default.useState(false);
|
|
240
|
+
const [selected, setSelected] = react_1.default.useState(defaultValue ?? value ?? (multiple ? [] : ''));
|
|
241
|
+
const [options, addOption] = react_1.default.useReducer((prev, state) => ({
|
|
242
|
+
...prev,
|
|
243
|
+
...state
|
|
244
|
+
}), {});
|
|
245
|
+
react_1.default.useImperativeHandle(ref, () => _ref.current);
|
|
246
|
+
const setOpen = (open) => {
|
|
247
|
+
_setOpen(open);
|
|
248
|
+
onOpenChange?.(open);
|
|
249
|
+
};
|
|
250
|
+
const handleClear = () => {
|
|
251
|
+
onClear?.();
|
|
252
|
+
if (!multiple) {
|
|
253
|
+
setSelected('');
|
|
254
|
+
onValueChange?.('');
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
setSelected([]);
|
|
258
|
+
onValueChange?.([]);
|
|
259
|
+
};
|
|
260
|
+
const handleChange = react_1.default.useCallback((value) => {
|
|
261
|
+
if (!value) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (!multiple) {
|
|
265
|
+
setSelected(value);
|
|
266
|
+
onValueChange?.(value);
|
|
267
|
+
setOpen(false);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const newSelected = selected.includes(value)
|
|
271
|
+
? selected.filter((item) => item !== value)
|
|
272
|
+
: [...selected, value];
|
|
273
|
+
setSelected(newSelected);
|
|
274
|
+
onValueChange?.(newSelected);
|
|
275
|
+
}, [selected, onValueChange]);
|
|
276
|
+
const handleKeyDown = react_1.default.useCallback((e) => {
|
|
277
|
+
const input = inputRef.current;
|
|
278
|
+
if (input) {
|
|
279
|
+
if (e.key === 'Delete' || e.key === 'Backspace') {
|
|
280
|
+
if (multiple) {
|
|
281
|
+
if (input.value === '' && selected.length > 0) {
|
|
282
|
+
handleChange(selected[selected.length - 1]);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// This is not a default behavior of the <input /> field
|
|
287
|
+
if (e.key === 'Escape') {
|
|
288
|
+
e.stopPropagation();
|
|
289
|
+
input.blur();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}, [selected, handleChange]);
|
|
293
|
+
// Keeps the selected value in sync with the value prop
|
|
294
|
+
react_1.default.useEffect(() => {
|
|
295
|
+
if (!(0, lodash_1.isNil)(value)) {
|
|
296
|
+
setSelected(value);
|
|
297
|
+
}
|
|
298
|
+
}, [value]);
|
|
299
|
+
// Keeps the open state in sync with the open prop
|
|
300
|
+
react_1.default.useEffect(() => {
|
|
301
|
+
if (openProp !== undefined) {
|
|
302
|
+
setOpen(openProp);
|
|
303
|
+
}
|
|
304
|
+
}, [openProp]);
|
|
305
|
+
return ((0, jsx_runtime_1.jsx)(AutocompleteContext.Provider, { value: {
|
|
306
|
+
value: selected,
|
|
307
|
+
onValueChange: setSelected,
|
|
308
|
+
showValue,
|
|
309
|
+
readOnly,
|
|
310
|
+
disabled,
|
|
311
|
+
handleChange,
|
|
312
|
+
handleClear,
|
|
313
|
+
onScrollbar,
|
|
314
|
+
setOnScrollbar,
|
|
315
|
+
open,
|
|
316
|
+
setOpen,
|
|
317
|
+
options,
|
|
318
|
+
addOption,
|
|
319
|
+
inputRef
|
|
320
|
+
}, children: (0, jsx_runtime_1.jsx)(cmdk_1.Command, { ref: _ref, className: (0, utils_1.cn)('flex h-auto w-full flex-col overflow-visible rounded-md bg-transparent text-slate-950 dark:text-slate-50', className), "data-disabled": disabled, "aria-disabled": disabled, "data-read-only": readOnly, "aria-readonly": readOnly, ...props, onKeyDown: (e) => {
|
|
321
|
+
handleKeyDown(e);
|
|
322
|
+
onKeyDown?.(e);
|
|
323
|
+
}, children: children }) }));
|
|
324
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type UseAutosizeTextAreaProps = {
|
|
3
|
+
textAreaRef: React.RefObject<HTMLTextAreaElement | null>;
|
|
4
|
+
minHeight?: number;
|
|
5
|
+
maxHeight?: number;
|
|
6
|
+
triggerAutoSize: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const useAutosizeTextArea: ({ textAreaRef, triggerAutoSize, maxHeight, minHeight }: UseAutosizeTextAreaProps) => void;
|
|
9
|
+
export type AutosizeTextAreaProps = React.ComponentProps<'textarea'> & {
|
|
10
|
+
maxHeight?: number;
|
|
11
|
+
minHeight?: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function AutosizeTextarea({ maxHeight, minHeight, className, onChange, value, ref, ...props }: AutosizeTextAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/autosize-textarea/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,wBAAwB,GAAG;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAA;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,wDAKjC,wBAAwB,SA4B1B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAmC,EACnC,SAAc,EACd,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAkCvB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.useAutosizeTextArea = void 0;
|
|
38
|
+
exports.AutosizeTextarea = AutosizeTextarea;
|
|
39
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
+
const React = __importStar(require("react"));
|
|
41
|
+
const utils_1 = require("../../../lib/utils");
|
|
42
|
+
const react_1 = require("react");
|
|
43
|
+
const useAutosizeTextArea = ({ textAreaRef, triggerAutoSize, maxHeight = Number.MAX_SAFE_INTEGER, minHeight = 0 }) => {
|
|
44
|
+
const [init, setInit] = React.useState(true);
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
// We need to reset the height momentarily to get the correct scrollHeight for the textarea
|
|
47
|
+
const textAreaElement = textAreaRef.current;
|
|
48
|
+
if (textAreaElement) {
|
|
49
|
+
if (init) {
|
|
50
|
+
textAreaElement.style.minHeight = `${minHeight}px`;
|
|
51
|
+
if (maxHeight > minHeight) {
|
|
52
|
+
textAreaElement.style.maxHeight = `${maxHeight}px`;
|
|
53
|
+
}
|
|
54
|
+
setInit(false);
|
|
55
|
+
}
|
|
56
|
+
textAreaElement.style.height = `${minHeight}px`;
|
|
57
|
+
const scrollHeight = textAreaElement.scrollHeight;
|
|
58
|
+
// We then set the height directly, outside of the render loop
|
|
59
|
+
// Trying to set this with state or a ref will segment an incorrect value.
|
|
60
|
+
if (scrollHeight > maxHeight) {
|
|
61
|
+
textAreaElement.style.height = `${maxHeight}px`;
|
|
62
|
+
textAreaElement.style.overflowY = 'auto';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
textAreaElement.style.height = `${scrollHeight}px`;
|
|
66
|
+
textAreaElement.style.overflowY = 'hidden';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}, [textAreaRef.current, triggerAutoSize]);
|
|
70
|
+
};
|
|
71
|
+
exports.useAutosizeTextArea = useAutosizeTextArea;
|
|
72
|
+
function AutosizeTextarea({ maxHeight = Number.MAX_SAFE_INTEGER, minHeight = 36, className, onChange, value, ref, ...props }) {
|
|
73
|
+
const textAreaRef = React.useRef(null);
|
|
74
|
+
const [triggerAutoSize, setTriggerAutoSize] = React.useState('');
|
|
75
|
+
(0, exports.useAutosizeTextArea)({
|
|
76
|
+
textAreaRef,
|
|
77
|
+
triggerAutoSize: triggerAutoSize,
|
|
78
|
+
maxHeight,
|
|
79
|
+
minHeight
|
|
80
|
+
});
|
|
81
|
+
(0, react_1.useImperativeHandle)(ref, () => textAreaRef.current);
|
|
82
|
+
React.useEffect(() => {
|
|
83
|
+
setTriggerAutoSize(value);
|
|
84
|
+
}, [props?.defaultValue, value]);
|
|
85
|
+
return ((0, jsx_runtime_1.jsx)("textarea", { ...props, value: value, ref: textAreaRef, className: (0, utils_1.cn)('border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full overflow-y-hidden rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden', 'read-only:cursor-default read-only:bg-zinc-100 read-only:caret-transparent read-only:opacity-50 read-only:select-text read-only:focus:ring-0 read-only:focus:ring-offset-0 read-only:focus:outline-hidden', 'disabled:cursor-not-allowed disabled:opacity-50', className), onChange: (e) => {
|
|
86
|
+
setTriggerAutoSize(e.target.value);
|
|
87
|
+
onChange?.(e);
|
|
88
|
+
} }));
|
|
89
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
3
|
+
declare function Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { Avatar, AvatarImage, AvatarFallback };
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/avatar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAIzD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAWnD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,2CAWvD;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.Avatar = Avatar;
|
|
38
|
+
exports.AvatarImage = AvatarImage;
|
|
39
|
+
exports.AvatarFallback = AvatarFallback;
|
|
40
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
41
|
+
const AvatarPrimitive = __importStar(require("@radix-ui/react-avatar"));
|
|
42
|
+
const utils_1 = require("../../../lib/utils");
|
|
43
|
+
function Avatar({ className, ...props }) {
|
|
44
|
+
return ((0, jsx_runtime_1.jsx)(AvatarPrimitive.Root, { "data-slot": "avatar", className: (0, utils_1.cn)('relative flex size-10 shrink-0 overflow-hidden rounded-full', className), ...props }));
|
|
45
|
+
}
|
|
46
|
+
function AvatarImage({ className, ...props }) {
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: (0, utils_1.cn)('aspect-square size-full', className), ...props }));
|
|
48
|
+
}
|
|
49
|
+
function AvatarFallback({ className, ...props }) {
|
|
50
|
+
return ((0, jsx_runtime_1.jsx)(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: (0, utils_1.cn)('bg-muted flex size-full items-center justify-center rounded-full', className), ...props }));
|
|
51
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "active" | "inactive" | "secondary" | "outline" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export type BadgeProps = React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
|
|
7
|
+
asChild?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare function Badge({ className, variant, asChild, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export { Badge, badgeVariants };
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAKjE,QAAA,MAAM,aAAa;;8EAoBlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACnD,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5D,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAUnE;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.badgeVariants = void 0;
|
|
4
|
+
exports.Badge = Badge;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const class_variance_authority_1 = require("class-variance-authority");
|
|
7
|
+
const utils_1 = require("../../../lib/utils");
|
|
8
|
+
const react_slot_1 = require("@radix-ui/react-slot");
|
|
9
|
+
const badgeVariants = (0, class_variance_authority_1.cva)('inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-sm font-medium transition-colors focus:outline-hidden focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300', {
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: 'border-transparent bg-slate-900 text-slate-50 hover:bg-slate-900/80 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/80',
|
|
13
|
+
active: 'bg-[#D1FAE5] text-[#065F46] border-none py-[2px] px-3',
|
|
14
|
+
inactive: 'bg-[#F3F4F6] text-[#1F2937] border-none py-[2px] px-3',
|
|
15
|
+
secondary: 'border-transparent bg-slate-100 text-slate-900 hover:bg-slate-100/80 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-800/80',
|
|
16
|
+
destructive: 'border-transparent bg-red-500 text-slate-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/80',
|
|
17
|
+
outline: 'text-slate-950 dark:text-slate-50'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
variant: 'default'
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
exports.badgeVariants = badgeVariants;
|
|
25
|
+
function Badge({ className, variant, asChild, ...props }) {
|
|
26
|
+
const Comp = asChild ? react_slot_1.Slot : 'span';
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(Comp, { "data-slot": "badge", className: (0, utils_1.cn)(badgeVariants({ variant }), className), ...props }));
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
declare function Breadcrumb({ ...props }: React.ComponentProps<'nav'>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function BreadcrumbLink({ asChild, className, ...props }: React.ComponentProps<'a'> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<'li'>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis };
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,iBAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAE5D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAW1E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAQ1E;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,2CAaA;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAc5E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAY5B;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAa9B;AAED,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EACnB,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Breadcrumb = Breadcrumb;
|
|
4
|
+
exports.BreadcrumbList = BreadcrumbList;
|
|
5
|
+
exports.BreadcrumbItem = BreadcrumbItem;
|
|
6
|
+
exports.BreadcrumbLink = BreadcrumbLink;
|
|
7
|
+
exports.BreadcrumbPage = BreadcrumbPage;
|
|
8
|
+
exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
|
9
|
+
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
10
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
11
|
+
const react_slot_1 = require("@radix-ui/react-slot");
|
|
12
|
+
const lucide_react_1 = require("lucide-react");
|
|
13
|
+
const utils_1 = require("../../../lib/utils");
|
|
14
|
+
function Breadcrumb({ ...props }) {
|
|
15
|
+
return (0, jsx_runtime_1.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
|
|
16
|
+
}
|
|
17
|
+
function BreadcrumbList({ className, ...props }) {
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)("ol", { "data-slot": "breadcrumb-list", className: (0, utils_1.cn)('flex flex-wrap items-center gap-1.5 text-sm break-words text-slate-500 sm:gap-2.5 dark:text-slate-400', className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)("li", { "data-slot": "breadcrumb-item", className: (0, utils_1.cn)('inline-flex items-center gap-1.5', className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function BreadcrumbLink({ asChild, className, ...props }) {
|
|
24
|
+
const Comp = asChild ? react_slot_1.Slot : 'a';
|
|
25
|
+
return ((0, jsx_runtime_1.jsx)(Comp, { "data-slot": "breadcrumb-link", className: (0, utils_1.cn)('font-medium text-[#3f3f46] underline transition-colors hover:text-slate-950 dark:hover:text-slate-50', className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
28
|
+
return ((0, jsx_runtime_1.jsx)("span", { "data-slot": "breadcrumb-page", role: "link", "aria-disabled": "true", "aria-current": "page", className: (0, utils_1.cn)('text-shadcn-400 text-sm font-normal dark:text-slate-50', className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
function BreadcrumbSeparator({ children, className, ...props }) {
|
|
31
|
+
return ((0, jsx_runtime_1.jsx)("li", { "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: (0, utils_1.cn)('text-shadcn-400 [&>svg]:size-3.5', className), ...props, children: children ?? (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, {}) }));
|
|
32
|
+
}
|
|
33
|
+
function BreadcrumbEllipsis({ className, ...props }) {
|
|
34
|
+
return ((0, jsx_runtime_1.jsxs)("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: (0, utils_1.cn)('flex h-9 w-9 items-center justify-center', className), ...props, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.MoreHorizontal, { className: "h-4 w-4" }), (0, jsx_runtime_1.jsx)("span", { className: "sr-only", children: "More" })] }));
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "link" | "secondary" | "outline" | "plain" | "white" | "activeLink" | "hoverLink" | "ghost" | null | undefined;
|
|
5
|
+
size?: "default" | "link" | "sm" | "lg" | "icon" | "xl" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type ButtonProps = React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
} & {
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
iconPlacement?: 'start' | 'end' | 'far-end';
|
|
12
|
+
fullWidth?: boolean;
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare function Button({ className, variant, size, asChild, icon, iconPlacement, fullWidth, readOnly, onClick, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export { Button, buttonVariants };
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;8EAmCnB,CAAA;AAuBD,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GACtD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,IAAI,EACJ,aAAuB,EACvB,SAAiB,EACjB,QAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,2CAyCb;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
|