@tokis/react 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/cjs/components/accordion/index.js +36 -0
- package/dist/cjs/components/alert/index.js +14 -0
- package/dist/cjs/components/app-bar/index.js +9 -0
- package/dist/cjs/components/avatar/index.js +64 -0
- package/dist/cjs/components/badge/index.js +6 -0
- package/dist/cjs/components/bottom-nav/index.js +12 -0
- package/dist/cjs/components/breadcrumbs/index.js +19 -0
- package/dist/cjs/components/button/ButtonIcon.js +9 -0
- package/dist/cjs/components/button/ButtonLabel.js +9 -0
- package/dist/cjs/components/button/ButtonRoot.js +23 -0
- package/dist/cjs/components/button/index.js +11 -0
- package/dist/cjs/components/button/useButton.js +14 -0
- package/dist/cjs/components/card/index.js +25 -0
- package/dist/cjs/components/charts/index.js +214 -0
- package/dist/cjs/components/checkbox/index.js +18 -0
- package/dist/cjs/components/chip/index.js +6 -0
- package/dist/cjs/components/circular-progress/index.js +28 -0
- package/dist/cjs/components/codeblock/CodeBlock.js +35 -0
- package/dist/cjs/components/codeblock/index.js +5 -0
- package/dist/cjs/components/command-palette/index.js +84 -0
- package/dist/cjs/components/confirm-dialog/index.js +10 -0
- package/dist/cjs/components/context-menu/index.js +82 -0
- package/dist/cjs/components/dialog/index.js +43 -0
- package/dist/cjs/components/divider/index.js +6 -0
- package/dist/cjs/components/drawer/index.js +37 -0
- package/dist/cjs/components/dropdown/index.js +104 -0
- package/dist/cjs/components/emptystate/index.js +9 -0
- package/dist/cjs/components/extended/index.js +329 -0
- package/dist/cjs/components/hover-card/index.js +107 -0
- package/dist/cjs/components/infinite-scroll/index.js +21 -0
- package/dist/cjs/components/input/index.js +27 -0
- package/dist/cjs/components/layout/index.js +34 -0
- package/dist/cjs/components/link/index.js +7 -0
- package/dist/cjs/components/list/index.js +14 -0
- package/dist/cjs/components/menu/index.js +120 -0
- package/dist/cjs/components/nav-rail/index.js +12 -0
- package/dist/cjs/components/pagination/index.js +46 -0
- package/dist/cjs/components/popover/index.js +114 -0
- package/dist/cjs/components/portal/index.js +10 -0
- package/dist/cjs/components/progress/index.js +21 -0
- package/dist/cjs/components/radio/index.js +60 -0
- package/dist/cjs/components/result/index.js +25 -0
- package/dist/cjs/components/search-field/index.js +30 -0
- package/dist/cjs/components/select/index.js +88 -0
- package/dist/cjs/components/skeleton/index.js +6 -0
- package/dist/cjs/components/slider/index.js +73 -0
- package/dist/cjs/components/snackbar/index.js +41 -0
- package/dist/cjs/components/spinner/index.js +6 -0
- package/dist/cjs/components/statistic/index.js +17 -0
- package/dist/cjs/components/stepper/index.js +24 -0
- package/dist/cjs/components/switch/index.js +19 -0
- package/dist/cjs/components/table/index.js +26 -0
- package/dist/cjs/components/tabs/index.js +44 -0
- package/dist/cjs/components/tag/index.js +6 -0
- package/dist/cjs/components/timeline/index.js +12 -0
- package/dist/cjs/components/toggle/index.js +32 -0
- package/dist/cjs/components/tooltip/index.js +116 -0
- package/dist/cjs/components/treeview/index.js +89 -0
- package/dist/cjs/components/typography/index.js +20 -0
- package/dist/cjs/components/virtual-list/index.js +25 -0
- package/dist/cjs/context/ConfigProvider.js +22 -0
- package/dist/cjs/context/ThemeContext.js +25 -0
- package/dist/cjs/hooks/useControllableState.js +31 -0
- package/dist/cjs/hooks/useDialog.js +35 -0
- package/dist/cjs/hooks/useId.js +13 -0
- package/dist/cjs/hooks/useMenu.js +64 -0
- package/dist/cjs/hooks/usePopover.js +32 -0
- package/dist/cjs/hooks/useTabs.js +51 -0
- package/dist/cjs/index.js +102 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/utils/cn.js +10 -0
- package/dist/components/accordion/index.d.ts +19 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/accordion/index.js +34 -0
- package/dist/components/accordion/index.js.map +1 -0
- package/dist/components/alert/index.d.ts +11 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +12 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/app-bar/index.d.ts +17 -0
- package/dist/components/app-bar/index.d.ts.map +1 -0
- package/dist/components/app-bar/index.js +7 -0
- package/dist/components/app-bar/index.js.map +1 -0
- package/dist/components/avatar/index.d.ts +33 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +28 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +3 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/bottom-nav/index.d.ts +18 -0
- package/dist/components/bottom-nav/index.d.ts.map +1 -0
- package/dist/components/bottom-nav/index.js +10 -0
- package/dist/components/bottom-nav/index.js.map +1 -0
- package/dist/components/breadcrumbs/index.d.ts +19 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.js +17 -0
- package/dist/components/breadcrumbs/index.js.map +1 -0
- package/dist/components/button/ButtonIcon.d.ts +8 -0
- package/dist/components/button/ButtonIcon.d.ts.map +1 -0
- package/dist/components/button/ButtonIcon.js +6 -0
- package/dist/components/button/ButtonIcon.js.map +1 -0
- package/dist/components/button/ButtonLabel.d.ts +6 -0
- package/dist/components/button/ButtonLabel.d.ts.map +1 -0
- package/dist/components/button/ButtonLabel.js +6 -0
- package/dist/components/button/ButtonLabel.js.map +1 -0
- package/dist/components/button/ButtonRoot.d.ts +15 -0
- package/dist/components/button/ButtonRoot.d.ts.map +1 -0
- package/dist/components/button/ButtonRoot.js +21 -0
- package/dist/components/button/ButtonRoot.js.map +1 -0
- package/dist/components/button/index.d.ts +9 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +5 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button/useButton.d.ts +16 -0
- package/dist/components/button/useButton.d.ts.map +1 -0
- package/dist/components/button/useButton.js +12 -0
- package/dist/components/button/useButton.js.map +1 -0
- package/dist/components/card/index.d.ts +17 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +23 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/charts/index.d.ts +60 -0
- package/dist/components/charts/index.d.ts.map +1 -0
- package/dist/components/charts/index.js +209 -0
- package/dist/components/charts/index.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +17 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +16 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/chip/index.d.ts +3 -0
- package/dist/components/chip/index.d.ts.map +1 -0
- package/dist/components/chip/index.js +3 -0
- package/dist/components/chip/index.js.map +1 -0
- package/dist/components/circular-progress/index.d.ts +15 -0
- package/dist/components/circular-progress/index.d.ts.map +1 -0
- package/dist/components/circular-progress/index.js +26 -0
- package/dist/components/circular-progress/index.js.map +1 -0
- package/dist/components/codeblock/CodeBlock.d.ts +13 -0
- package/dist/components/codeblock/CodeBlock.d.ts.map +1 -0
- package/dist/components/codeblock/CodeBlock.js +32 -0
- package/dist/components/codeblock/CodeBlock.js.map +1 -0
- package/dist/components/codeblock/index.d.ts +3 -0
- package/dist/components/codeblock/index.d.ts.map +1 -0
- package/dist/components/codeblock/index.js +2 -0
- package/dist/components/codeblock/index.js.map +1 -0
- package/dist/components/command-palette/index.d.ts +22 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/command-palette/index.js +82 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/confirm-dialog/index.d.ts +17 -0
- package/dist/components/confirm-dialog/index.d.ts.map +1 -0
- package/dist/components/confirm-dialog/index.js +8 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/context-menu/index.d.ts +19 -0
- package/dist/components/context-menu/index.d.ts.map +1 -0
- package/dist/components/context-menu/index.js +47 -0
- package/dist/components/context-menu/index.js.map +1 -0
- package/dist/components/dialog/index.d.ts +16 -0
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +41 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/divider/index.d.ts +3 -0
- package/dist/components/divider/index.d.ts.map +1 -0
- package/dist/components/divider/index.js +3 -0
- package/dist/components/divider/index.js.map +1 -0
- package/dist/components/drawer/index.d.ts +16 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +35 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown/index.d.ts +16 -0
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +69 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/emptystate/index.d.ts +13 -0
- package/dist/components/emptystate/index.d.ts.map +1 -0
- package/dist/components/emptystate/index.js +7 -0
- package/dist/components/emptystate/index.js.map +1 -0
- package/dist/components/extended/index.d.ts +163 -0
- package/dist/components/extended/index.d.ts.map +1 -0
- package/dist/components/extended/index.js +267 -0
- package/dist/components/extended/index.js.map +1 -0
- package/dist/components/hover-card/index.d.ts +14 -0
- package/dist/components/hover-card/index.d.ts.map +1 -0
- package/dist/components/hover-card/index.js +72 -0
- package/dist/components/hover-card/index.js.map +1 -0
- package/dist/components/infinite-scroll/index.d.ts +16 -0
- package/dist/components/infinite-scroll/index.d.ts.map +1 -0
- package/dist/components/infinite-scroll/index.js +19 -0
- package/dist/components/infinite-scroll/index.js.map +1 -0
- package/dist/components/input/index.d.ts +19 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +25 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/layout/index.d.ts +39 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +32 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/link/index.d.ts +3 -0
- package/dist/components/link/index.d.ts.map +1 -0
- package/dist/components/link/index.js +3 -0
- package/dist/components/link/index.js.map +1 -0
- package/dist/components/list/index.d.ts +13 -0
- package/dist/components/list/index.d.ts.map +1 -0
- package/dist/components/list/index.js +12 -0
- package/dist/components/list/index.js.map +1 -0
- package/dist/components/menu/index.d.ts +19 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/menu/index.js +85 -0
- package/dist/components/menu/index.js.map +1 -0
- package/dist/components/nav-rail/index.d.ts +20 -0
- package/dist/components/nav-rail/index.d.ts.map +1 -0
- package/dist/components/nav-rail/index.js +10 -0
- package/dist/components/nav-rail/index.js.map +1 -0
- package/dist/components/pagination/index.d.ts +9 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +44 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/popover/index.d.ts +16 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +79 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/portal/index.d.ts +7 -0
- package/dist/components/portal/index.d.ts.map +1 -0
- package/dist/components/portal/index.js +8 -0
- package/dist/components/portal/index.js.map +1 -0
- package/dist/components/progress/index.d.ts +25 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +19 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/radio/index.d.ts +25 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +24 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/result/index.d.ts +14 -0
- package/dist/components/result/index.d.ts.map +1 -0
- package/dist/components/result/index.js +23 -0
- package/dist/components/result/index.js.map +1 -0
- package/dist/components/search-field/index.d.ts +15 -0
- package/dist/components/search-field/index.d.ts.map +1 -0
- package/dist/components/search-field/index.js +28 -0
- package/dist/components/search-field/index.js.map +1 -0
- package/dist/components/select/index.d.ts +23 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +86 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/slider/index.d.ts +18 -0
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/slider/index.js +71 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/snackbar/index.d.ts +27 -0
- package/dist/components/snackbar/index.d.ts.map +1 -0
- package/dist/components/snackbar/index.js +38 -0
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/components/spinner/index.d.ts +3 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +3 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/statistic/index.d.ts +13 -0
- package/dist/components/statistic/index.d.ts.map +1 -0
- package/dist/components/statistic/index.js +15 -0
- package/dist/components/statistic/index.js.map +1 -0
- package/dist/components/stepper/index.d.ts +17 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/stepper/index.js +22 -0
- package/dist/components/stepper/index.js.map +1 -0
- package/dist/components/switch/index.d.ts +16 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +17 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/table/index.d.ts +17 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +24 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/tabs/index.d.ts +19 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/index.js +42 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tag/index.d.ts +3 -0
- package/dist/components/tag/index.d.ts.map +1 -0
- package/dist/components/tag/index.js +3 -0
- package/dist/components/tag/index.js.map +1 -0
- package/dist/components/timeline/index.d.ts +16 -0
- package/dist/components/timeline/index.d.ts.map +1 -0
- package/dist/components/timeline/index.js +10 -0
- package/dist/components/timeline/index.js.map +1 -0
- package/dist/components/toggle/index.d.ts +32 -0
- package/dist/components/toggle/index.d.ts.map +1 -0
- package/dist/components/toggle/index.js +29 -0
- package/dist/components/toggle/index.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +11 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +81 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/treeview/index.d.ts +19 -0
- package/dist/components/treeview/index.d.ts.map +1 -0
- package/dist/components/treeview/index.js +87 -0
- package/dist/components/treeview/index.js.map +1 -0
- package/dist/components/typography/index.d.ts +11 -0
- package/dist/components/typography/index.d.ts.map +1 -0
- package/dist/components/typography/index.js +18 -0
- package/dist/components/typography/index.js.map +1 -0
- package/dist/components/virtual-list/index.d.ts +15 -0
- package/dist/components/virtual-list/index.d.ts.map +1 -0
- package/dist/components/virtual-list/index.js +23 -0
- package/dist/components/virtual-list/index.js.map +1 -0
- package/dist/context/ConfigProvider.d.ts +12 -0
- package/dist/context/ConfigProvider.d.ts.map +1 -0
- package/dist/context/ConfigProvider.js +18 -0
- package/dist/context/ConfigProvider.js.map +1 -0
- package/dist/context/ThemeContext.d.ts +15 -0
- package/dist/context/ThemeContext.d.ts.map +1 -0
- package/dist/context/ThemeContext.js +21 -0
- package/dist/context/ThemeContext.js.map +1 -0
- package/dist/hooks/useControllableState.d.ts +10 -0
- package/dist/hooks/useControllableState.d.ts.map +1 -0
- package/dist/hooks/useControllableState.js +29 -0
- package/dist/hooks/useControllableState.js.map +1 -0
- package/dist/hooks/useDialog.d.ts +24 -0
- package/dist/hooks/useDialog.d.ts.map +1 -0
- package/dist/hooks/useDialog.js +33 -0
- package/dist/hooks/useDialog.js.map +1 -0
- package/dist/hooks/useId.d.ts +7 -0
- package/dist/hooks/useId.d.ts.map +1 -0
- package/dist/hooks/useId.js +11 -0
- package/dist/hooks/useId.js.map +1 -0
- package/dist/hooks/useMenu.d.ts +21 -0
- package/dist/hooks/useMenu.d.ts.map +1 -0
- package/dist/hooks/useMenu.js +62 -0
- package/dist/hooks/useMenu.js.map +1 -0
- package/dist/hooks/usePopover.d.ts +22 -0
- package/dist/hooks/usePopover.d.ts.map +1 -0
- package/dist/hooks/usePopover.js +30 -0
- package/dist/hooks/usePopover.js.map +1 -0
- package/dist/hooks/useTabs.d.ts +22 -0
- package/dist/hooks/useTabs.d.ts.map +1 -0
- package/dist/hooks/useTabs.js +49 -0
- package/dist/hooks/useTabs.js.map +1 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/cn.d.ts +6 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +8 -0
- package/dist/utils/cn.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect, useId } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
export function Checkbox({ label, description, checked, defaultChecked, indeterminate = false, disabled = false, onChange, id, name, value, className, 'aria-label': ariaLabel, }) {
|
|
5
|
+
const autoId = useId();
|
|
6
|
+
const inputId = id ?? `checkbox-${autoId}`;
|
|
7
|
+
const descId = description ? `${inputId}-desc` : undefined;
|
|
8
|
+
const inputRef = useRef(null);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (inputRef.current) {
|
|
11
|
+
inputRef.current.indeterminate = indeterminate;
|
|
12
|
+
}
|
|
13
|
+
}, [indeterminate]);
|
|
14
|
+
return (_jsxs("label", { className: cn('tokis-checkbox-root', className), "data-disabled": disabled || undefined, htmlFor: inputId, children: [_jsx("input", { ref: inputRef, type: "checkbox", id: inputId, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: (e) => onChange?.(e.target.checked), className: "tokis-checkbox-native", "aria-label": !label ? ariaLabel : undefined, "aria-describedby": descId }), _jsx("span", { "aria-hidden": "true", className: "tokis-checkbox-control", "data-checked": checked && !indeterminate ? 'true' : undefined, "data-indeterminate": indeterminate ? 'true' : undefined }), (label || description) && (_jsxs("div", { children: [label && _jsx("span", { className: "tokis-checkbox-label", children: label }), description && _jsx("p", { id: descId, className: "tokis-checkbox-description", children: description })] }))] }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/checkbox/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAiBvC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,GAAG,KAAK,EAClE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GACjE;IACd,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBAChC,QAAQ,IAAI,SAAS,EACpC,OAAO,EAAE,OAAO,aAEhB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7C,SAAS,EAAC,uBAAuB,gBACrB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,sBACxB,MAAM,GACxB,EACF,8BACc,MAAM,EAClB,SAAS,EAAC,wBAAwB,kBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,wBACxC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GACtD,EACD,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,0BACG,KAAK,IAAI,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,EAC9D,WAAW,IAAI,YAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACnF,CACP,IACK,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/chip/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/chip/index.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type CircularProgressSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
3
|
+
export interface CircularProgressProps {
|
|
4
|
+
value?: number;
|
|
5
|
+
size?: CircularProgressSize;
|
|
6
|
+
strokeWidth?: number;
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
variant?: 'default' | 'success' | 'warning' | 'error';
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function CircularProgress({ value, size, strokeWidth, label, variant, className, }: CircularProgressProps): JSX.Element;
|
|
12
|
+
export declare namespace CircularProgress {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/circular-progress/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAW,EACX,WAAW,EACX,KAAK,EACL,OAAmB,EACnB,SAAS,GACV,EAAE,qBAAqB,GAAG,GAAG,CAAC,OAAO,CA2CrC;yBAlDe,gBAAgB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../utils/cn.js';
|
|
3
|
+
const sizeMap = {
|
|
4
|
+
sm: 32,
|
|
5
|
+
md: 48,
|
|
6
|
+
lg: 64,
|
|
7
|
+
xl: 80,
|
|
8
|
+
};
|
|
9
|
+
const strokeWidthMap = {
|
|
10
|
+
sm: 3,
|
|
11
|
+
md: 4,
|
|
12
|
+
lg: 5,
|
|
13
|
+
xl: 6,
|
|
14
|
+
};
|
|
15
|
+
export function CircularProgress({ value, size = 'md', strokeWidth, label, variant = 'default', className, }) {
|
|
16
|
+
const svgSize = sizeMap[size];
|
|
17
|
+
const sw = strokeWidth ?? strokeWidthMap[size];
|
|
18
|
+
const radius = (svgSize - sw) / 2;
|
|
19
|
+
const circumference = 2 * Math.PI * radius;
|
|
20
|
+
const isIndeterminate = value === undefined;
|
|
21
|
+
const clampedValue = Math.min(100, Math.max(0, value ?? 0));
|
|
22
|
+
const offset = circumference * (1 - clampedValue / 100);
|
|
23
|
+
return (_jsxs("div", { className: cn('tokis-circular-progress', `tokis-circular-progress--${size}`, `tokis-circular-progress--${variant}`, isIndeterminate && 'tokis-circular-progress--indeterminate', className), role: "progressbar", "aria-valuenow": isIndeterminate ? undefined : clampedValue, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": isIndeterminate ? 'Loading…' : `${clampedValue}%`, children: [_jsxs("svg", { width: svgSize, height: svgSize, viewBox: `0 0 ${svgSize} ${svgSize}`, fill: "none", children: [_jsx("circle", { className: "tokis-circular-progress__track", cx: svgSize / 2, cy: svgSize / 2, r: radius, strokeWidth: sw }), _jsx("circle", { className: "tokis-circular-progress__fill", cx: svgSize / 2, cy: svgSize / 2, r: radius, strokeWidth: sw, strokeDasharray: circumference, strokeDashoffset: isIndeterminate ? circumference * 0.75 : offset, strokeLinecap: "round", transform: `rotate(-90 ${svgSize / 2} ${svgSize / 2})` })] }), label && _jsx("div", { className: "tokis-circular-progress__label", children: label })] }));
|
|
24
|
+
}
|
|
25
|
+
CircularProgress.displayName = 'CircularProgress';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/circular-progress/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAavC,MAAM,OAAO,GAAyC;IACpD,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,cAAc,GAAyC;IAC3D,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;CACN,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,GAAG,IAAI,EACX,WAAW,EACX,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,SAAS,GACa;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,eAAe,GAAG,KAAK,KAAK,SAAS,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;IAExD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,4BAA4B,IAAI,EAAE,EAAE,4BAA4B,OAAO,EAAE,EAAE,eAAe,IAAI,wCAAwC,EAAE,SAAS,CAAC,EAC3L,IAAI,EAAC,aAAa,mBACH,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,mBAC1C,CAAC,mBACD,GAAG,gBACN,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,aAE7D,eAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,IAAI,OAAO,EAAE,EAAE,IAAI,EAAC,MAAM,aAErF,iBACE,SAAS,EAAC,gCAAgC,EAC1C,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,EAAE,GACf,EAEF,iBACE,SAAS,EAAC,+BAA+B,EACzC,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,EAAE,EACf,eAAe,EAAE,aAAa,EAC9B,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EACjE,aAAa,EAAC,OAAO,EACrB,SAAS,EAAE,cAAc,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,GACtD,IACE,EACL,KAAK,IAAI,cAAK,SAAS,EAAC,gCAAgC,YAAE,KAAK,GAAO,IACnE,CACP,CAAC;AACJ,CAAC;AAED,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type CodeBlockTheme = 'dark' | 'light' | 'auto';
|
|
3
|
+
export interface CodeBlockProps {
|
|
4
|
+
code: string;
|
|
5
|
+
language?: string;
|
|
6
|
+
filename?: string;
|
|
7
|
+
highlightedHtml?: string;
|
|
8
|
+
showLineNumbers?: boolean;
|
|
9
|
+
theme?: CodeBlockTheme;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const CodeBlock: React.FC<CodeBlockProps>;
|
|
13
|
+
//# sourceMappingURL=CodeBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../src/components/codeblock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2E9C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
const CopyIcon = () => (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "4", y: "4", width: "8", height: "8", rx: "1.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M10 4V2.5A1.5 1.5 0 0 0 8.5 1h-6A1.5 1.5 0 0 0 1 2.5v6A1.5 1.5 0 0 0 2.5 10H4", stroke: "currentColor", strokeWidth: "1.5" })] }));
|
|
5
|
+
const CheckIcon = () => (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M2 7l3.5 3.5L12 4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
6
|
+
export const CodeBlock = ({ code, language, filename, highlightedHtml, showLineNumbers = false, theme = 'auto', className, }) => {
|
|
7
|
+
const [copied, setCopied] = useState(false);
|
|
8
|
+
const handleCopy = useCallback(async () => {
|
|
9
|
+
try {
|
|
10
|
+
await navigator.clipboard.writeText(code);
|
|
11
|
+
setCopied(true);
|
|
12
|
+
setTimeout(() => setCopied(false), 2000);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Fallback for browsers without clipboard API
|
|
16
|
+
const textarea = document.createElement('textarea');
|
|
17
|
+
textarea.value = code;
|
|
18
|
+
textarea.style.position = 'fixed';
|
|
19
|
+
textarea.style.opacity = '0';
|
|
20
|
+
document.body.appendChild(textarea);
|
|
21
|
+
textarea.select();
|
|
22
|
+
document.execCommand('copy');
|
|
23
|
+
document.body.removeChild(textarea);
|
|
24
|
+
setCopied(true);
|
|
25
|
+
setTimeout(() => setCopied(false), 2000);
|
|
26
|
+
}
|
|
27
|
+
}, [code]);
|
|
28
|
+
const lines = code.split('\n');
|
|
29
|
+
return (_jsxs("div", { className: cn('tokis-codeblock', className), "data-codeblock-theme": theme !== 'auto' ? theme : undefined, children: [_jsxs("div", { className: "tokis-codeblock__header", children: [_jsx("span", { className: "tokis-codeblock__lang", children: filename ?? language ?? 'code' }), _jsxs("button", { type: "button", className: cn('tokis-codeblock__copy', copied && 'tokis-codeblock__copy--copied'), onClick: handleCopy, "aria-label": copied ? 'Copied!' : 'Copy code', children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), _jsx("span", { children: copied ? 'Copied!' : 'Copy' })] })] }), _jsxs("div", { className: "tokis-codeblock__body", children: [showLineNumbers && (_jsx("div", { className: "tokis-codeblock__lines", "aria-hidden": "true", children: lines.map((_, i) => (_jsx("span", { className: "tokis-codeblock__line-num", children: i + 1 }, i))) })), _jsx("pre", { className: "tokis-codeblock__pre", children: highlightedHtml ? (_jsx("code", { className: cn('tokis-codeblock__code', language && `language-${language}`), dangerouslySetInnerHTML: { __html: highlightedHtml } })) : (_jsx("code", { className: cn('tokis-codeblock__code', language && `language-${language}`), children: code })) })] })] }));
|
|
30
|
+
};
|
|
31
|
+
CodeBlock.displayName = 'CodeBlock';
|
|
32
|
+
//# sourceMappingURL=CodeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../src/components/codeblock/CodeBlock.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAcvC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CACrB,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aAC5E,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,GAAG,EAC1F,eAAM,CAAC,EAAC,+EAA+E,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,GAAG,IAC9H,CACP,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CACtB,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,YAC5E,eAAM,CAAC,EAAC,mBAAmB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,GAC/G,CACP,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAClD,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,eAAe,GAAG,KAAK,EACvB,KAAK,GAAG,MAAM,EACd,SAAS,GACV,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;YACtB,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,0BACrB,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,aAE1D,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,uBAAuB,YACpC,QAAQ,IAAI,QAAQ,IAAI,MAAM,GAC1B,EACP,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,MAAM,IAAI,+BAA+B,CAAC,EACjF,OAAO,EAAE,UAAU,gBACP,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,aAE3C,MAAM,CAAC,CAAC,CAAC,KAAC,SAAS,KAAG,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,EACtC,yBAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAQ,IACnC,IACL,EACN,eAAK,SAAS,EAAC,uBAAuB,aACnC,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,wBAAwB,iBAAa,MAAM,YACvD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,eAAc,SAAS,EAAC,2BAA2B,YAAE,CAAC,GAAG,CAAC,IAA/C,CAAC,CAAsD,CACnE,CAAC,GACE,CACP,EACD,cAAK,SAAS,EAAC,sBAAsB,YAClC,eAAe,CAAC,CAAC,CAAC,CACjB,eACE,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,QAAQ,IAAI,YAAY,QAAQ,EAAE,CAAC,EAC1E,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GACpD,CACH,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,QAAQ,IAAI,YAAY,QAAQ,EAAE,CAAC,YAC7E,IAAI,GACA,CACR,GACG,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/codeblock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/codeblock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CommandItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
icon?: React.ReactNode;
|
|
7
|
+
shortcut?: string[];
|
|
8
|
+
category?: string;
|
|
9
|
+
onSelect: () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface CommandPaletteProps {
|
|
12
|
+
open: boolean;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
items: CommandItem[];
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function CommandPalette({ open, onClose, items, placeholder, className, }: CommandPaletteProps): JSX.Element | null;
|
|
19
|
+
export declare namespace CommandPalette {
|
|
20
|
+
var displayName: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAKjF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,WAAgC,EAChC,SAAS,GACV,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAsJ1C;yBA5Je,cAAc"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useRef, useMemo, useCallback } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
import { Portal } from '../portal/index.js';
|
|
5
|
+
import { trapFocus } from '@tokis/core';
|
|
6
|
+
export function CommandPalette({ open, onClose, items, placeholder = 'Search commands…', className, }) {
|
|
7
|
+
const [query, setQuery] = useState('');
|
|
8
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
9
|
+
const containerRef = useRef(null);
|
|
10
|
+
const inputRef = useRef(null);
|
|
11
|
+
const filtered = useMemo(() => {
|
|
12
|
+
const q = query.trim().toLowerCase();
|
|
13
|
+
if (!q)
|
|
14
|
+
return items;
|
|
15
|
+
return items.filter((item) => item.label.toLowerCase().includes(q) ||
|
|
16
|
+
item.description?.toLowerCase().includes(q) ||
|
|
17
|
+
item.category?.toLowerCase().includes(q));
|
|
18
|
+
}, [query, items]);
|
|
19
|
+
const grouped = useMemo(() => {
|
|
20
|
+
const map = new Map();
|
|
21
|
+
for (const item of filtered) {
|
|
22
|
+
const cat = item.category ?? '';
|
|
23
|
+
if (!map.has(cat))
|
|
24
|
+
map.set(cat, []);
|
|
25
|
+
map.get(cat).push(item);
|
|
26
|
+
}
|
|
27
|
+
return map;
|
|
28
|
+
}, [filtered]);
|
|
29
|
+
const flatFiltered = filtered;
|
|
30
|
+
const handleSelect = useCallback((item) => {
|
|
31
|
+
item.onSelect();
|
|
32
|
+
onClose();
|
|
33
|
+
setQuery('');
|
|
34
|
+
setActiveIndex(0);
|
|
35
|
+
}, [onClose]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (!open) {
|
|
38
|
+
setQuery('');
|
|
39
|
+
setActiveIndex(0);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const cleanup = containerRef.current ? trapFocus(containerRef.current) : undefined;
|
|
43
|
+
inputRef.current?.focus();
|
|
44
|
+
return () => cleanup?.();
|
|
45
|
+
}, [open]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!open)
|
|
48
|
+
return;
|
|
49
|
+
const onKey = (e) => {
|
|
50
|
+
if (e.key === 'Escape') {
|
|
51
|
+
onClose();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (e.key === 'ArrowDown') {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
setActiveIndex((i) => Math.min(i + 1, flatFiltered.length - 1));
|
|
57
|
+
}
|
|
58
|
+
else if (e.key === 'ArrowUp') {
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
setActiveIndex((i) => Math.max(i - 1, 0));
|
|
61
|
+
}
|
|
62
|
+
else if (e.key === 'Enter') {
|
|
63
|
+
const item = flatFiltered[activeIndex];
|
|
64
|
+
if (item)
|
|
65
|
+
handleSelect(item);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
document.addEventListener('keydown', onKey);
|
|
69
|
+
return () => document.removeEventListener('keydown', onKey);
|
|
70
|
+
}, [open, flatFiltered, activeIndex, handleSelect, onClose]);
|
|
71
|
+
useEffect(() => { setActiveIndex(0); }, [query]);
|
|
72
|
+
if (!open)
|
|
73
|
+
return null;
|
|
74
|
+
let globalIndex = 0;
|
|
75
|
+
return (_jsxs(Portal, { children: [_jsx("div", { className: "tokis-command-palette-backdrop", "aria-hidden": "true", onClick: onClose }), _jsxs("div", { ref: containerRef, className: cn('tokis-command-palette', className), role: "dialog", "aria-label": "Command palette", "aria-modal": "true", children: [_jsxs("div", { className: "tokis-command-palette__search", children: [_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", className: "tokis-command-palette__search-icon", children: [_jsx("circle", { cx: "7", cy: "7", r: "4.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M11 11l3 3", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }), _jsx("input", { ref: inputRef, type: "text", className: "tokis-command-palette__input", placeholder: placeholder, value: query, onChange: (e) => setQuery(e.target.value), "aria-label": placeholder, autoComplete: "off", spellCheck: false })] }), _jsx("div", { className: "tokis-command-palette__list", role: "listbox", children: filtered.length === 0 ? (_jsx("div", { className: "tokis-command-palette__empty", children: "No commands found" })) : (Array.from(grouped.entries()).map(([category, categoryItems]) => (_jsxs("div", { className: "tokis-command-palette__group", children: [category && (_jsx("div", { className: "tokis-command-palette__group-label", children: category })), categoryItems.map((item) => {
|
|
76
|
+
const idx = globalIndex++;
|
|
77
|
+
const isActive = activeIndex === idx;
|
|
78
|
+
return (_jsxs("button", { role: "option", "aria-selected": isActive, className: cn('tokis-command-palette__item', isActive && 'tokis-command-palette__item--active'), onClick: () => handleSelect(item), onMouseEnter: () => setActiveIndex(idx), children: [item.icon && (_jsx("span", { className: "tokis-command-palette__item-icon", "aria-hidden": "true", children: item.icon })), _jsxs("span", { className: "tokis-command-palette__item-content", children: [_jsx("span", { className: "tokis-command-palette__item-label", children: item.label }), item.description && (_jsx("span", { className: "tokis-command-palette__item-desc", children: item.description }))] }), item.shortcut && (_jsx("span", { className: "tokis-command-palette__shortcut", "aria-label": `Shortcut: ${item.shortcut.join('+')}`, children: item.shortcut.map((k, ki) => (_jsx("kbd", { className: "tokis-command-palette__kbd", children: k }, ki))) }))] }, item.id));
|
|
79
|
+
})] }, category)))) })] })] }));
|
|
80
|
+
}
|
|
81
|
+
CommandPalette.displayName = 'CommandPalette';
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/command-palette/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ConfirmDialogProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onConfirm: () => void;
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
confirmLabel?: string;
|
|
8
|
+
cancelLabel?: string;
|
|
9
|
+
destructive?: boolean;
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function ConfirmDialog({ open, onClose, onConfirm, title, description, confirmLabel, cancelLabel, destructive, loading, className, }: ConfirmDialogProps): JSX.Element;
|
|
14
|
+
export declare namespace ConfirmDialog {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,EACf,SAAS,GACV,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAmClC;yBA9Ce,aAAa"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog } from '../dialog/index.js';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
export function ConfirmDialog({ open, onClose, onConfirm, title, description, confirmLabel = 'Confirm', cancelLabel = 'Cancel', destructive = false, loading = false, className, }) {
|
|
5
|
+
return (_jsx(Dialog, { open: open, onClose: onClose, title: title, description: description, size: "sm", className: cn('tokis-confirm-dialog', className), footer: _jsxs("div", { className: "tokis-confirm-dialog__actions", children: [_jsx("button", { type: "button", className: "tokis-confirm-dialog__cancel", onClick: onClose, disabled: loading, children: cancelLabel }), _jsxs("button", { type: "button", className: cn('tokis-confirm-dialog__confirm', destructive && 'tokis-confirm-dialog__confirm--destructive'), onClick: onConfirm, disabled: loading, "aria-busy": loading, children: [loading ? (_jsx("span", { className: "tokis-confirm-dialog__spinner", "aria-hidden": "true" })) : null, confirmLabel] })] }) }));
|
|
6
|
+
}
|
|
7
|
+
ConfirmDialog.displayName = 'ConfirmDialog';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAevC,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GACU;IACnB,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAChD,MAAM,EACJ,eAAK,SAAS,EAAC,+BAA+B,aAC5C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,8BAA8B,EACxC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,YAEhB,WAAW,GACL,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,WAAW,IAAI,4CAA4C,CAAC,EAC3G,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,OAAO,eACN,OAAO,aAEjB,OAAO,CAAC,CAAC,CAAC,CACT,eAAM,SAAS,EAAC,+BAA+B,iBAAa,MAAM,GAAG,CACtE,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,IACN,IACL,GAER,CACH,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ContextMenuItem {
|
|
3
|
+
type: 'item' | 'separator' | 'label';
|
|
4
|
+
label?: string;
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
destructive?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ContextMenuProps {
|
|
11
|
+
items: ContextMenuItem[];
|
|
12
|
+
children: React.ReactElement;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function ContextMenu({ items, children, className }: ContextMenuProps): JSX.Element;
|
|
16
|
+
export declare namespace ContextMenu {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/context-menu/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAyEzF;yBAzEe,WAAW"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
import { Portal } from '../portal/index.js';
|
|
5
|
+
export function ContextMenu({ items, children, className }) {
|
|
6
|
+
const [visible, setVisible] = useState(false);
|
|
7
|
+
const [pos, setPos] = useState({ x: 0, y: 0 });
|
|
8
|
+
const menuRef = useRef(null);
|
|
9
|
+
const close = useCallback(() => setVisible(false), []);
|
|
10
|
+
const handleContextMenu = useCallback((e) => {
|
|
11
|
+
e.preventDefault();
|
|
12
|
+
setPos({ x: e.clientX, y: e.clientY });
|
|
13
|
+
setVisible(true);
|
|
14
|
+
}, []);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!visible)
|
|
17
|
+
return;
|
|
18
|
+
const onKey = (e) => { if (e.key === 'Escape')
|
|
19
|
+
close(); };
|
|
20
|
+
const onClick = (e) => {
|
|
21
|
+
if (menuRef.current && !menuRef.current.contains(e.target))
|
|
22
|
+
close();
|
|
23
|
+
};
|
|
24
|
+
document.addEventListener('keydown', onKey);
|
|
25
|
+
document.addEventListener('mousedown', onClick);
|
|
26
|
+
return () => {
|
|
27
|
+
document.removeEventListener('keydown', onKey);
|
|
28
|
+
document.removeEventListener('mousedown', onClick);
|
|
29
|
+
};
|
|
30
|
+
}, [visible, close]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!visible || !menuRef.current)
|
|
33
|
+
return;
|
|
34
|
+
menuRef.current.focus();
|
|
35
|
+
}, [visible]);
|
|
36
|
+
return (_jsxs(_Fragment, { children: [React.cloneElement(children, { onContextMenu: handleContextMenu }), visible && (_jsx(Portal, { children: _jsx("div", { ref: menuRef, className: cn('tokis-context-menu', className), role: "menu", tabIndex: -1, style: { position: 'fixed', top: pos.y, left: pos.x }, children: items.map((item, i) => {
|
|
37
|
+
if (item.type === 'separator') {
|
|
38
|
+
return _jsx("div", { className: "tokis-context-menu__separator", role: "separator" }, i);
|
|
39
|
+
}
|
|
40
|
+
if (item.type === 'label') {
|
|
41
|
+
return _jsx("div", { className: "tokis-context-menu__label", children: item.label }, i);
|
|
42
|
+
}
|
|
43
|
+
return (_jsxs("button", { role: "menuitem", className: cn('tokis-context-menu__item', item.destructive && 'tokis-context-menu__item--destructive', item.disabled && 'tokis-context-menu__item--disabled'), disabled: item.disabled, onClick: () => { item.onClick?.(); close(); }, children: [item.icon && _jsx("span", { className: "tokis-context-menu__icon", "aria-hidden": "true", children: item.icon }), item.label] }, i));
|
|
44
|
+
}) }) }))] }));
|
|
45
|
+
}
|
|
46
|
+
ContextMenu.displayName = 'ContextMenu';
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/context-menu/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiB5C,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAoB;IAC1E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvD,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAmB,EAAE,EAAE;QAC5D,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,CAAC,CAAa,EAAE,EAAE;YAChC,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE,KAAK,EAAE,CAAC;QAC9E,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QACzC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,8BACG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,EAClE,OAAO,IAAI,CACV,KAAC,MAAM,cACL,cACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAC9C,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,YAEpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACrB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;4BAC9B,OAAO,cAAa,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,WAAW,IAA7D,CAAC,CAA+D,CAAC;wBACpF,CAAC;wBACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC1B,OAAO,cAAa,SAAS,EAAC,2BAA2B,YAAE,IAAI,CAAC,KAAK,IAApD,CAAC,CAA0D,CAAC;wBAC/E,CAAC;wBACD,OAAO,CACL,kBAEE,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,EAAE,CACX,0BAA0B,EAC1B,IAAI,CAAC,WAAW,IAAI,uCAAuC,EAC3D,IAAI,CAAC,QAAQ,IAAI,oCAAoC,CACtD,EACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,aAE5C,IAAI,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,0BAA0B,iBAAa,MAAM,YAAE,IAAI,CAAC,IAAI,GAAQ,EAC7F,IAAI,CAAC,KAAK,KAXN,CAAC,CAYC,CACV,CAAC;oBACJ,CAAC,CAAC,GACE,GACC,CACV,IACA,CACJ,CAAC;AACJ,CAAC;AAED,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface DialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title?: React.ReactNode;
|
|
6
|
+
description?: React.ReactNode;
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
footer?: React.ReactNode;
|
|
9
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
10
|
+
closeOnBackdrop?: boolean;
|
|
11
|
+
closeOnEsc?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
'aria-label'?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function Dialog({ open, onClose, title, description, children, footer, size, closeOnBackdrop, closeOnEsc, className, 'aria-label': ariaLabel, }: DialogProps): import("react/jsx-runtime").JSX.Element | null;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EACnD,IAAW,EAAE,eAAsB,EAAE,UAAiB,EACtD,SAAS,EAAE,YAAY,EAAE,SAAS,GACnC,EAAE,WAAW,kDAuEb"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useId } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
import { Portal } from '../portal/index.js';
|
|
5
|
+
import { trapFocus } from '@tokis/core';
|
|
6
|
+
export function Dialog({ open, onClose, title, description, children, footer, size = 'md', closeOnBackdrop = true, closeOnEsc = true, className, 'aria-label': ariaLabel, }) {
|
|
7
|
+
const contentRef = useRef(null);
|
|
8
|
+
const uid = useId();
|
|
9
|
+
const titleId = title ? `dialog-title-${uid}` : undefined;
|
|
10
|
+
const descId = description ? `dialog-desc-${uid}` : undefined;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!open)
|
|
13
|
+
return;
|
|
14
|
+
const cleanup = contentRef.current ? trapFocus(contentRef.current) : undefined;
|
|
15
|
+
const prev = document.activeElement;
|
|
16
|
+
contentRef.current?.focus();
|
|
17
|
+
return () => {
|
|
18
|
+
cleanup?.();
|
|
19
|
+
prev?.focus();
|
|
20
|
+
};
|
|
21
|
+
}, [open]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (!open || !closeOnEsc)
|
|
24
|
+
return;
|
|
25
|
+
const handle = (e) => { if (e.key === 'Escape')
|
|
26
|
+
onClose(); };
|
|
27
|
+
document.addEventListener('keydown', handle);
|
|
28
|
+
return () => document.removeEventListener('keydown', handle);
|
|
29
|
+
}, [open, closeOnEsc, onClose]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (open) {
|
|
32
|
+
const prev = document.body.style.overflow;
|
|
33
|
+
document.body.style.overflow = 'hidden';
|
|
34
|
+
return () => { document.body.style.overflow = prev; };
|
|
35
|
+
}
|
|
36
|
+
}, [open]);
|
|
37
|
+
if (!open)
|
|
38
|
+
return null;
|
|
39
|
+
return (_jsx(Portal, { children: _jsx("div", { className: "tokis-dialog-backdrop", "aria-hidden": "true", onClick: closeOnBackdrop ? onClose : undefined, children: _jsxs("div", { ref: contentRef, role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": descId, "aria-label": !title ? ariaLabel : undefined, tabIndex: -1, className: cn('tokis-dialog-content', size !== 'md' && `tokis-dialog-content--${size}`, className), onClick: (e) => e.stopPropagation(), children: [(title || description) && (_jsxs("div", { className: "tokis-dialog-header", children: [_jsxs("div", { children: [title && _jsx("h2", { id: titleId, className: "tokis-dialog-title", children: title }), description && _jsx("p", { id: descId, className: "tokis-dialog-description", children: description })] }), _jsx("button", { className: "tokis-dialog-close", onClick: onClose, "aria-label": "Close dialog", children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3l10 10M13 3L3 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })] })), children && _jsx("div", { className: "tokis-dialog-body", children: children }), footer && _jsx("div", { className: "tokis-dialog-footer", children: footer })] }) }) }));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dialog/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/divider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/divider/index.tsx"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type DrawerSide = 'left' | 'right' | 'top' | 'bottom';
|
|
3
|
+
export interface DrawerProps {
|
|
4
|
+
open: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
side?: DrawerSide;
|
|
7
|
+
title?: React.ReactNode;
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
footer?: React.ReactNode;
|
|
11
|
+
closeOnBackdrop?: boolean;
|
|
12
|
+
closeOnEsc?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function Drawer({ open, onClose, side, title, description, children, footer, closeOnBackdrop, closeOnEsc, className }: DrawerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAc,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAsB,EAAE,UAAiB,EAAE,SAAS,EAAE,EAAE,WAAW,kDAuDhK"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
import { Portal } from '../portal/index.js';
|
|
5
|
+
import { trapFocus } from '@tokis/core';
|
|
6
|
+
export function Drawer({ open, onClose, side = 'right', title, description, children, footer, closeOnBackdrop = true, closeOnEsc = true, className }) {
|
|
7
|
+
const contentRef = useRef(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (!open)
|
|
10
|
+
return;
|
|
11
|
+
const cleanup = contentRef.current ? trapFocus(contentRef.current) : undefined;
|
|
12
|
+
const prev = document.activeElement;
|
|
13
|
+
contentRef.current?.focus();
|
|
14
|
+
return () => { cleanup?.(); prev?.focus(); };
|
|
15
|
+
}, [open]);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (!open || !closeOnEsc)
|
|
18
|
+
return;
|
|
19
|
+
const h = (e) => { if (e.key === 'Escape')
|
|
20
|
+
onClose(); };
|
|
21
|
+
document.addEventListener('keydown', h);
|
|
22
|
+
return () => document.removeEventListener('keydown', h);
|
|
23
|
+
}, [open, closeOnEsc, onClose]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (open) {
|
|
26
|
+
const prev = document.body.style.overflow;
|
|
27
|
+
document.body.style.overflow = 'hidden';
|
|
28
|
+
return () => { document.body.style.overflow = prev; };
|
|
29
|
+
}
|
|
30
|
+
}, [open]);
|
|
31
|
+
if (!open)
|
|
32
|
+
return null;
|
|
33
|
+
return (_jsxs(Portal, { children: [_jsx("div", { className: "tokis-drawer-backdrop", "aria-hidden": "true", onClick: closeOnBackdrop ? onClose : undefined }), _jsxs("div", { ref: contentRef, role: "dialog", "aria-modal": "true", tabIndex: -1, className: cn(`tokis-drawer-content tokis-drawer-content--${side}`, className), onClick: (e) => e.stopPropagation(), children: [(title || description) && (_jsxs("div", { className: "tokis-drawer-header", children: [title && _jsx("h2", { className: "tokis-drawer-title", children: title }), description && _jsx("p", { className: "tokis-drawer-description", children: description }), _jsx("button", { className: "tokis-drawer-close", onClick: onClose, "aria-label": "Close drawer", children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3l10 10M13 3L3 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })] })), _jsx("div", { className: "tokis-drawer-body", children: children }), footer && _jsx("div", { className: "tokis-drawer-footer", children: footer })] })] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/drawer/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
3
|
+
export interface DropdownProps {
|
|
4
|
+
trigger: React.ReactElement;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
placement?: DropdownPlacement;
|
|
7
|
+
open?: boolean;
|
|
8
|
+
defaultOpen?: boolean;
|
|
9
|
+
onOpenChange?: (open: boolean) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function Dropdown({ trigger, children, placement, open: controlledOpen, defaultOpen, onOpenChange, className, }: DropdownProps): JSX.Element;
|
|
13
|
+
export declare namespace Dropdown {
|
|
14
|
+
var displayName: string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|