@shipfox/react-ui 0.2.0 → 0.4.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/.storybook/preview.tsx +1 -1
- package/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-check.log +3 -3
- package/.turbo/turbo-type.log +1 -1
- package/CHANGELOG.md +17 -0
- package/dist/components/alert/alert.d.ts +18 -0
- package/dist/components/alert/alert.d.ts.map +1 -0
- package/dist/components/alert/alert.js +123 -0
- package/dist/components/alert/alert.js.map +1 -0
- package/dist/components/alert/alert.stories.js +112 -0
- package/dist/components/alert/alert.stories.js.map +1 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +3 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/avatar/avatar-group.d.ts +18 -0
- package/dist/components/avatar/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar/avatar-group.js +132 -0
- package/dist/components/avatar/avatar-group.js.map +1 -0
- package/dist/components/avatar/avatar.d.ts +24 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -0
- package/dist/components/avatar/avatar.js +165 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/avatar.stories.js +267 -0
- package/dist/components/avatar/avatar.stories.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +4 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/badge.d.ts +48 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +72 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.stories.js +802 -0
- package/dist/components/badge/badge.stories.js.map +1 -0
- package/dist/components/badge/icon-badge.d.ts +9 -0
- package/dist/components/badge/icon-badge.d.ts.map +1 -0
- package/dist/components/badge/icon-badge.js +32 -0
- package/dist/components/badge/icon-badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +5 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +6 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/badge/status-badge.d.ts +9 -0
- package/dist/components/badge/status-badge.d.ts.map +1 -0
- package/dist/components/badge/status-badge.js +29 -0
- package/dist/components/badge/status-badge.js.map +1 -0
- package/dist/components/badge/user-badge.d.ts +8 -0
- package/dist/components/badge/user-badge.d.ts.map +1 -0
- package/dist/components/badge/user-badge.js +24 -0
- package/dist/components/badge/user-badge.js.map +1 -0
- package/dist/components/{button.d.ts → button/button.d.ts} +1 -1
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/{button.js → button/button.js} +2 -2
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/{button.stories.js → button/button.stories.js} +1 -1
- package/dist/components/button/button.stories.js.map +1 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +3 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/checkbox/checkbox-label.d.ts +14 -0
- package/dist/components/checkbox/checkbox-label.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox-label.js +82 -0
- package/dist/components/checkbox/checkbox-label.js.map +1 -0
- package/dist/components/checkbox/checkbox-links.d.ts +18 -0
- package/dist/components/checkbox/checkbox-links.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox-links.js +58 -0
- package/dist/components/checkbox/checkbox-links.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +9 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +49 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.stories.js +566 -0
- package/dist/components/checkbox/checkbox.stories.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +4 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +5 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/code-block/code-block-footer.d.ts +26 -0
- package/dist/components/code-block/code-block-footer.d.ts.map +1 -0
- package/dist/components/code-block/code-block-footer.js +86 -0
- package/dist/components/code-block/code-block-footer.js.map +1 -0
- package/dist/components/code-block/code-block.d.ts +50 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/code-block/code-block.js +142 -0
- package/dist/components/code-block/code-block.js.map +1 -0
- package/dist/components/code-block/code-block.stories.js +341 -0
- package/dist/components/code-block/code-block.stories.js.map +1 -0
- package/dist/components/code-block/code-content.d.ts +11 -0
- package/dist/components/code-block/code-content.d.ts.map +1 -0
- package/dist/components/code-block/code-content.js +29 -0
- package/dist/components/code-block/code-content.js.map +1 -0
- package/dist/components/code-block/code-copy-button.d.ts +11 -0
- package/dist/components/code-block/code-copy-button.d.ts.map +1 -0
- package/dist/components/code-block/code-copy-button.js +49 -0
- package/dist/components/code-block/code-copy-button.js.map +1 -0
- package/dist/components/code-block/code-tabs.d.ts +16 -0
- package/dist/components/code-block/code-tabs.d.ts.map +1 -0
- package/dist/components/code-block/code-tabs.js +98 -0
- package/dist/components/code-block/code-tabs.js.map +1 -0
- package/dist/components/code-block/index.d.ts +4 -0
- package/dist/components/code-block/index.d.ts.map +1 -0
- package/dist/components/code-block/index.js +5 -0
- package/dist/components/code-block/index.js.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.d.ts +13 -0
- package/dist/components/dynamic-item/dynamic-item.d.ts.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.js +43 -0
- package/dist/components/dynamic-item/dynamic-item.js.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.stories.js +375 -0
- package/dist/components/dynamic-item/dynamic-item.stories.js.map +1 -0
- package/dist/components/dynamic-item/index.d.ts +2 -0
- package/dist/components/dynamic-item/index.d.ts.map +1 -0
- package/dist/components/dynamic-item/index.js +3 -0
- package/dist/components/dynamic-item/index.js.map +1 -0
- package/dist/components/icon/custom/index.d.ts +3 -0
- package/dist/components/icon/custom/index.d.ts.map +1 -1
- package/dist/components/icon/custom/index.js +3 -0
- package/dist/components/icon/custom/index.js.map +1 -1
- package/dist/components/icon/custom/shipfox-logo.d.ts +8 -0
- package/dist/components/icon/custom/shipfox-logo.d.ts.map +1 -0
- package/dist/components/icon/custom/shipfox-logo.js +22 -0
- package/dist/components/icon/custom/shipfox-logo.js.map +1 -0
- package/dist/components/icon/custom/slack-logo.d.ts +6 -0
- package/dist/components/icon/custom/slack-logo.d.ts.map +1 -0
- package/dist/components/icon/custom/slack-logo.js +34 -0
- package/dist/components/icon/custom/slack-logo.js.map +1 -0
- package/dist/components/icon/custom/stripe-logo.d.ts +8 -0
- package/dist/components/icon/custom/stripe-logo.d.ts.map +1 -0
- package/dist/components/icon/custom/stripe-logo.js +24 -0
- package/dist/components/icon/custom/stripe-logo.js.map +1 -0
- package/dist/components/icon/icon.d.ts +13 -1
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +15 -3
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon/icon.stories.js +6 -3
- package/dist/components/icon/icon.stories.js.map +1 -1
- package/dist/components/index.d.ts +12 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +13 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/inline-tips/index.d.ts +2 -0
- package/dist/components/inline-tips/index.d.ts.map +1 -0
- package/dist/components/inline-tips/index.js +3 -0
- package/dist/components/inline-tips/index.js.map +1 -0
- package/dist/components/inline-tips/inline-tips.d.ts +19 -0
- package/dist/components/inline-tips/inline-tips.d.ts.map +1 -0
- package/dist/components/inline-tips/inline-tips.js +98 -0
- package/dist/components/inline-tips/inline-tips.js.map +1 -0
- package/dist/components/inline-tips/inline-tips.stories.js +214 -0
- package/dist/components/inline-tips/inline-tips.stories.js.map +1 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +3 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.d.ts.map +1 -0
- package/dist/components/{input.js → input/input.js} +2 -2
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/{input.stories.js → input/input.stories.js} +1 -1
- package/dist/components/input/input.stories.js.map +1 -0
- package/dist/components/item/index.d.ts +2 -0
- package/dist/components/item/index.d.ts.map +1 -0
- package/dist/components/item/index.js +3 -0
- package/dist/components/item/index.js.map +1 -0
- package/dist/components/item/item.d.ts +32 -0
- package/dist/components/item/item.d.ts.map +1 -0
- package/dist/components/item/item.js +120 -0
- package/dist/components/item/item.js.map +1 -0
- package/dist/components/item/item.stories.js +232 -0
- package/dist/components/item/item.stories.js.map +1 -0
- package/dist/components/label/index.d.ts +2 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/index.js +3 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts +7 -0
- package/dist/components/label/label.d.ts.map +1 -0
- package/dist/components/label/label.js +13 -0
- package/dist/components/label/label.js.map +1 -0
- package/dist/components/label/label.stories.js +105 -0
- package/dist/components/label/label.stories.js.map +1 -0
- package/dist/components/moving-border/moving-border.d.ts +9 -0
- package/dist/components/moving-border/moving-border.d.ts.map +1 -0
- package/dist/components/moving-border/moving-border.js +54 -0
- package/dist/components/moving-border/moving-border.js.map +1 -0
- package/dist/components/textarea/textarea.js +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/theme/index.d.ts +2 -0
- package/dist/components/theme/index.d.ts.map +1 -0
- package/dist/components/theme/index.js +3 -0
- package/dist/components/theme/index.js.map +1 -0
- package/dist/components/{theme-provider.d.ts → theme/theme-provider.d.ts} +1 -1
- package/dist/components/theme/theme-provider.d.ts.map +1 -0
- package/dist/components/{theme-provider.js → theme/theme-provider.js} +1 -1
- package/dist/components/theme/theme-provider.js.map +1 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +4 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast-custom.d.ts +19 -0
- package/dist/components/toast/toast-custom.d.ts.map +1 -0
- package/dist/components/toast/toast-custom.js +134 -0
- package/dist/components/toast/toast-custom.js.map +1 -0
- package/dist/components/toast/toast.d.ts +5 -0
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +40 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.stories.js +326 -0
- package/dist/components/toast/toast.stories.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +3 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +20 -0
- package/dist/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip/tooltip.js +98 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/tooltip/tooltip.stories.js +560 -0
- package/dist/components/tooltip/tooltip.stories.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useResolvedTheme.d.ts +2 -0
- package/dist/hooks/useResolvedTheme.d.ts.map +1 -0
- package/dist/hooks/useResolvedTheme.js +24 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useShikiHighlight.d.ts +28 -0
- package/dist/hooks/useShikiHighlight.d.ts.map +1 -0
- package/dist/hooks/useShikiHighlight.js +106 -0
- package/dist/hooks/useShikiHighlight.js.map +1 -0
- package/dist/hooks/useShikiStyleInjection.d.ts +2 -0
- package/dist/hooks/useShikiStyleInjection.d.ts.map +1 -0
- package/dist/hooks/useShikiStyleInjection.js +34 -0
- package/dist/hooks/useShikiStyleInjection.js.map +1 -0
- package/dist/utils/avatar.d.ts +3 -0
- package/dist/utils/avatar.d.ts.map +1 -0
- package/dist/utils/avatar.js +32 -0
- package/dist/utils/avatar.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/index.css +130 -7
- package/package.json +7 -4
- package/src/assets/illustration-1.svg +92 -0
- package/src/assets/illustration-2.svg +14 -0
- package/src/assets/illustration-gradient.svg +7049 -0
- package/src/components/alert/alert.stories.tsx +77 -0
- package/src/components/alert/alert.tsx +144 -0
- package/src/components/alert/index.ts +1 -0
- package/src/components/avatar/avatar-group.tsx +186 -0
- package/src/components/avatar/avatar.stories.tsx +179 -0
- package/src/components/avatar/avatar.tsx +219 -0
- package/src/components/avatar/index.ts +2 -0
- package/src/components/badge/badge.stories.tsx +468 -0
- package/src/components/badge/badge.tsx +147 -0
- package/src/components/badge/icon-badge.tsx +43 -0
- package/src/components/badge/index.ts +4 -0
- package/src/components/badge/status-badge.tsx +43 -0
- package/src/components/badge/user-badge.tsx +34 -0
- package/src/components/{button.tsx → button/button.tsx} +1 -1
- package/src/components/button/index.ts +1 -0
- package/src/components/checkbox/checkbox-label.tsx +125 -0
- package/src/components/checkbox/checkbox-links.tsx +90 -0
- package/src/components/checkbox/checkbox.stories.tsx +375 -0
- package/src/components/checkbox/checkbox.tsx +71 -0
- package/src/components/checkbox/index.ts +3 -0
- package/src/components/code-block/code-block-footer.tsx +173 -0
- package/src/components/code-block/code-block.stories.tsx +323 -0
- package/src/components/code-block/code-block.tsx +283 -0
- package/src/components/code-block/code-content.tsx +60 -0
- package/src/components/code-block/code-copy-button.tsx +73 -0
- package/src/components/code-block/code-tabs.tsx +170 -0
- package/src/components/code-block/index.ts +3 -0
- package/src/components/dynamic-item/dynamic-item.stories.tsx +261 -0
- package/src/components/dynamic-item/dynamic-item.tsx +68 -0
- package/src/components/dynamic-item/index.ts +1 -0
- package/src/components/icon/custom/index.ts +3 -0
- package/src/components/icon/custom/shipfox-logo.tsx +20 -0
- package/src/components/icon/custom/slack-logo.tsx +35 -0
- package/src/components/icon/custom/stripe-logo.tsx +27 -0
- package/src/components/icon/icon.stories.tsx +3 -1
- package/src/components/icon/icon.tsx +29 -1
- package/src/components/index.ts +12 -1
- package/src/components/inline-tips/index.ts +1 -0
- package/src/components/inline-tips/inline-tips.stories.tsx +126 -0
- package/src/components/inline-tips/inline-tips.tsx +132 -0
- package/src/components/input/index.ts +1 -0
- package/src/components/{input.tsx → input/input.tsx} +1 -1
- package/src/components/item/index.ts +1 -0
- package/src/components/item/item.stories.tsx +150 -0
- package/src/components/item/item.tsx +182 -0
- package/src/components/label/index.ts +1 -0
- package/src/components/label/label.stories.tsx +67 -0
- package/src/components/label/label.tsx +15 -0
- package/src/components/moving-border/moving-border.tsx +67 -0
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/theme/index.ts +1 -0
- package/src/components/toast/index.ts +2 -0
- package/src/components/toast/toast-custom.tsx +154 -0
- package/src/components/toast/toast.stories.tsx +369 -0
- package/src/components/toast/toast.tsx +41 -0
- package/src/components/tooltip/index.ts +1 -0
- package/src/components/tooltip/tooltip.stories.tsx +284 -0
- package/src/components/tooltip/tooltip.tsx +121 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useResolvedTheme.ts +34 -0
- package/src/hooks/useShikiHighlight.ts +140 -0
- package/src/hooks/useShikiStyleInjection.ts +34 -0
- package/src/utils/avatar.ts +27 -0
- package/src/utils/index.ts +1 -0
- package/dist/components/button.d.ts.map +0 -1
- package/dist/components/button.js.map +0 -1
- package/dist/components/button.stories.js.map +0 -1
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/input.js.map +0 -1
- package/dist/components/input.stories.js.map +0 -1
- package/dist/components/theme-provider.d.ts.map +0 -1
- package/dist/components/theme-provider.js.map +0 -1
- /package/dist/components/{input.d.ts → input/input.d.ts} +0 -0
- /package/src/components/{button.stories.tsx → button/button.stories.tsx} +0 -0
- /package/src/components/{input.stories.tsx → input/input.stories.tsx} +0 -0
- /package/src/components/{theme-provider.tsx → theme/theme-provider.tsx} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResolvedTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useResolvedTheme.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,MAAM,CA8BnD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useSyncExternalStore } from 'react';
|
|
2
|
+
import { useTheme } from './useTheme.js';
|
|
3
|
+
export function useResolvedTheme() {
|
|
4
|
+
const { theme } = useTheme();
|
|
5
|
+
const systemTheme = useSyncExternalStore((callback)=>{
|
|
6
|
+
if (typeof window === 'undefined' || theme !== 'system') {
|
|
7
|
+
return ()=>{
|
|
8
|
+
// No-op unsubscribe
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const mql = window.matchMedia('(prefers-color-scheme: dark)');
|
|
12
|
+
mql.addEventListener('change', callback);
|
|
13
|
+
return ()=>{
|
|
14
|
+
mql.removeEventListener('change', callback);
|
|
15
|
+
};
|
|
16
|
+
}, ()=>typeof window !== 'undefined' && theme === 'system' ? window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light', ()=>'light');
|
|
17
|
+
if (theme === 'system') {
|
|
18
|
+
return systemTheme;
|
|
19
|
+
}
|
|
20
|
+
// TypeScript should narrow theme to 'light' | 'dark' here
|
|
21
|
+
return theme;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=useResolvedTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useResolvedTheme.ts"],"sourcesContent":["import {useSyncExternalStore} from 'react';\nimport {useTheme} from './useTheme';\n\nexport function useResolvedTheme(): 'light' | 'dark' {\n const {theme} = useTheme();\n\n const systemTheme = useSyncExternalStore<'light' | 'dark'>(\n (callback) => {\n if (typeof window === 'undefined' || theme !== 'system') {\n return () => {\n // No-op unsubscribe\n };\n }\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n mql.addEventListener('change', callback);\n return () => {\n mql.removeEventListener('change', callback);\n };\n },\n (): 'light' | 'dark' =>\n typeof window !== 'undefined' && theme === 'system'\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : 'light',\n (): 'light' | 'dark' => 'light', // Server snapshot\n );\n\n if (theme === 'system') {\n return systemTheme;\n }\n // TypeScript should narrow theme to 'light' | 'dark' here\n return theme as 'light' | 'dark';\n}\n"],"names":["useSyncExternalStore","useTheme","useResolvedTheme","theme","systemTheme","callback","window","mql","matchMedia","addEventListener","removeEventListener","matches"],"mappings":"AAAA,SAAQA,oBAAoB,QAAO,QAAQ;AAC3C,SAAQC,QAAQ,QAAO,aAAa;AAEpC,OAAO,SAASC;IACd,MAAM,EAACC,KAAK,EAAC,GAAGF;IAEhB,MAAMG,cAAcJ,qBAClB,CAACK;QACC,IAAI,OAAOC,WAAW,eAAeH,UAAU,UAAU;YACvD,OAAO;YACL,oBAAoB;YACtB;QACF;QACA,MAAMI,MAAMD,OAAOE,UAAU,CAAC;QAC9BD,IAAIE,gBAAgB,CAAC,UAAUJ;QAC/B,OAAO;YACLE,IAAIG,mBAAmB,CAAC,UAAUL;QACpC;IACF,GACA,IACE,OAAOC,WAAW,eAAeH,UAAU,WACvCG,OAAOE,UAAU,CAAC,gCAAgCG,OAAO,GACvD,SACA,UACF,SACN,IAAwB;IAG1B,IAAIR,UAAU,UAAU;QACtB,OAAOC;IACT;IACA,0DAA0D;IAC1D,OAAOD;AACT"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
type ShikiThemes = {
|
|
2
|
+
light: string;
|
|
3
|
+
dark: string;
|
|
4
|
+
};
|
|
5
|
+
type UseShikiHighlightOptions = {
|
|
6
|
+
code: string;
|
|
7
|
+
lang: string;
|
|
8
|
+
themes: ShikiThemes;
|
|
9
|
+
resolvedTheme: 'light' | 'dark';
|
|
10
|
+
syntaxHighlighting: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function useShikiHighlight({ code, lang, themes, resolvedTheme, syntaxHighlighting, }: UseShikiHighlightOptions): {
|
|
13
|
+
highlightedCode: string;
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
};
|
|
16
|
+
type UseShikiHighlightMultipleOptions = {
|
|
17
|
+
codes: Record<string, string>;
|
|
18
|
+
lang: string;
|
|
19
|
+
themes: ShikiThemes;
|
|
20
|
+
resolvedTheme: 'light' | 'dark';
|
|
21
|
+
syntaxHighlighting: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare function useShikiHighlightMultiple({ codes, lang, themes, resolvedTheme, syntaxHighlighting, }: UseShikiHighlightMultipleOptions): {
|
|
24
|
+
highlightedCodes: Record<string, string>;
|
|
25
|
+
isLoading: boolean;
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=useShikiHighlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShikiHighlight.d.ts","sourceRoot":"","sources":["../../src/hooks/useShikiHighlight.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,aAAa,EACb,kBAAkB,GACnB,EAAE,wBAAwB,GAAG;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,CA6C1E;AAED,KAAK,gCAAgC,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,IAAI,EACJ,MAAM,EACN,aAAa,EACb,kBAAkB,GACnB,EAAE,gCAAgC,GAAG;IACpC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB,CAsDA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export function useShikiHighlight({ code, lang, themes, resolvedTheme, syntaxHighlighting }) {
|
|
3
|
+
const [highlightedCode, setHighlightedCode] = useState('');
|
|
4
|
+
const [isLoading, setIsLoading] = useState(syntaxHighlighting);
|
|
5
|
+
useEffect(()=>{
|
|
6
|
+
if (!syntaxHighlighting) {
|
|
7
|
+
setIsLoading(false);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
setIsLoading(true);
|
|
11
|
+
let cancelled = false;
|
|
12
|
+
const loadHighlightedCode = async ()=>{
|
|
13
|
+
try {
|
|
14
|
+
const { codeToHtml } = await import('shiki');
|
|
15
|
+
const html = await codeToHtml(code, {
|
|
16
|
+
lang,
|
|
17
|
+
themes: {
|
|
18
|
+
light: themes.light,
|
|
19
|
+
dark: themes.dark
|
|
20
|
+
},
|
|
21
|
+
defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light'
|
|
22
|
+
});
|
|
23
|
+
if (!cancelled) {
|
|
24
|
+
setHighlightedCode(html);
|
|
25
|
+
setIsLoading(false);
|
|
26
|
+
}
|
|
27
|
+
} catch {
|
|
28
|
+
if (!cancelled) {
|
|
29
|
+
setIsLoading(false);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
loadHighlightedCode();
|
|
34
|
+
return ()=>{
|
|
35
|
+
cancelled = true;
|
|
36
|
+
};
|
|
37
|
+
}, [
|
|
38
|
+
code,
|
|
39
|
+
lang,
|
|
40
|
+
themes.light,
|
|
41
|
+
themes.dark,
|
|
42
|
+
resolvedTheme,
|
|
43
|
+
syntaxHighlighting
|
|
44
|
+
]);
|
|
45
|
+
return {
|
|
46
|
+
highlightedCode,
|
|
47
|
+
isLoading
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function useShikiHighlightMultiple({ codes, lang, themes, resolvedTheme, syntaxHighlighting }) {
|
|
51
|
+
const [highlightedCodes, setHighlightedCodes] = useState({});
|
|
52
|
+
const [isLoading, setIsLoading] = useState(syntaxHighlighting);
|
|
53
|
+
useEffect(()=>{
|
|
54
|
+
if (!syntaxHighlighting) {
|
|
55
|
+
setIsLoading(false);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
setIsLoading(true);
|
|
59
|
+
let cancelled = false;
|
|
60
|
+
const loadHighlightedCode = async ()=>{
|
|
61
|
+
try {
|
|
62
|
+
const { codeToHtml } = await import('shiki');
|
|
63
|
+
const newHighlightedCodes = {};
|
|
64
|
+
for (const [command, val] of Object.entries(codes)){
|
|
65
|
+
if (cancelled) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const highlighted = await codeToHtml(val, {
|
|
69
|
+
lang,
|
|
70
|
+
themes: {
|
|
71
|
+
light: themes.light,
|
|
72
|
+
dark: themes.dark
|
|
73
|
+
},
|
|
74
|
+
defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light'
|
|
75
|
+
});
|
|
76
|
+
newHighlightedCodes[command] = highlighted;
|
|
77
|
+
}
|
|
78
|
+
if (!cancelled) {
|
|
79
|
+
setHighlightedCodes(newHighlightedCodes);
|
|
80
|
+
setIsLoading(false);
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
if (!cancelled) {
|
|
84
|
+
setIsLoading(false);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
loadHighlightedCode();
|
|
89
|
+
return ()=>{
|
|
90
|
+
cancelled = true;
|
|
91
|
+
};
|
|
92
|
+
}, [
|
|
93
|
+
resolvedTheme,
|
|
94
|
+
lang,
|
|
95
|
+
themes.light,
|
|
96
|
+
themes.dark,
|
|
97
|
+
codes,
|
|
98
|
+
syntaxHighlighting
|
|
99
|
+
]);
|
|
100
|
+
return {
|
|
101
|
+
highlightedCodes,
|
|
102
|
+
isLoading
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=useShikiHighlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useShikiHighlight.ts"],"sourcesContent":["import {useEffect, useState} from 'react';\n\ntype ShikiThemes = {\n light: string;\n dark: string;\n};\n\ntype UseShikiHighlightOptions = {\n code: string;\n lang: string;\n themes: ShikiThemes;\n resolvedTheme: 'light' | 'dark';\n syntaxHighlighting: boolean;\n};\n\nexport function useShikiHighlight({\n code,\n lang,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n}: UseShikiHighlightOptions): {highlightedCode: string; isLoading: boolean} {\n const [highlightedCode, setHighlightedCode] = useState<string>('');\n const [isLoading, setIsLoading] = useState(syntaxHighlighting);\n\n useEffect(() => {\n if (!syntaxHighlighting) {\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n let cancelled = false;\n\n const loadHighlightedCode = async () => {\n try {\n const {codeToHtml} = await import('shiki');\n\n const html = await codeToHtml(code, {\n lang,\n themes: {\n light: themes.light,\n dark: themes.dark,\n },\n defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light',\n });\n\n if (!cancelled) {\n setHighlightedCode(html);\n setIsLoading(false);\n }\n } catch {\n if (!cancelled) {\n setIsLoading(false);\n }\n }\n };\n\n loadHighlightedCode();\n\n return () => {\n cancelled = true;\n };\n }, [code, lang, themes.light, themes.dark, resolvedTheme, syntaxHighlighting]);\n\n return {highlightedCode, isLoading};\n}\n\ntype UseShikiHighlightMultipleOptions = {\n codes: Record<string, string>;\n lang: string;\n themes: ShikiThemes;\n resolvedTheme: 'light' | 'dark';\n syntaxHighlighting: boolean;\n};\n\nexport function useShikiHighlightMultiple({\n codes,\n lang,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n}: UseShikiHighlightMultipleOptions): {\n highlightedCodes: Record<string, string>;\n isLoading: boolean;\n} {\n const [highlightedCodes, setHighlightedCodes] = useState<Record<string, string>>({});\n const [isLoading, setIsLoading] = useState(syntaxHighlighting);\n\n useEffect(() => {\n if (!syntaxHighlighting) {\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n let cancelled = false;\n\n const loadHighlightedCode = async () => {\n try {\n const {codeToHtml} = await import('shiki');\n const newHighlightedCodes: Record<string, string> = {};\n\n for (const [command, val] of Object.entries(codes)) {\n if (cancelled) {\n return;\n }\n\n const highlighted = await codeToHtml(val, {\n lang,\n themes: {\n light: themes.light,\n dark: themes.dark,\n },\n defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light',\n });\n\n newHighlightedCodes[command] = highlighted;\n }\n\n if (!cancelled) {\n setHighlightedCodes(newHighlightedCodes);\n setIsLoading(false);\n }\n } catch {\n if (!cancelled) {\n setIsLoading(false);\n }\n }\n };\n\n loadHighlightedCode();\n\n return () => {\n cancelled = true;\n };\n }, [resolvedTheme, lang, themes.light, themes.dark, codes, syntaxHighlighting]);\n\n return {highlightedCodes, isLoading};\n}\n"],"names":["useEffect","useState","useShikiHighlight","code","lang","themes","resolvedTheme","syntaxHighlighting","highlightedCode","setHighlightedCode","isLoading","setIsLoading","cancelled","loadHighlightedCode","codeToHtml","html","light","dark","defaultColor","useShikiHighlightMultiple","codes","highlightedCodes","setHighlightedCodes","newHighlightedCodes","command","val","Object","entries","highlighted"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAe1C,OAAO,SAASC,kBAAkB,EAChCC,IAAI,EACJC,IAAI,EACJC,MAAM,EACNC,aAAa,EACbC,kBAAkB,EACO;IACzB,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGR,SAAiB;IAC/D,MAAM,CAACS,WAAWC,aAAa,GAAGV,SAASM;IAE3CP,UAAU;QACR,IAAI,CAACO,oBAAoB;YACvBI,aAAa;YACb;QACF;QAEAA,aAAa;QACb,IAAIC,YAAY;QAEhB,MAAMC,sBAAsB;YAC1B,IAAI;gBACF,MAAM,EAACC,UAAU,EAAC,GAAG,MAAM,MAAM,CAAC;gBAElC,MAAMC,OAAO,MAAMD,WAAWX,MAAM;oBAClCC;oBACAC,QAAQ;wBACNW,OAAOX,OAAOW,KAAK;wBACnBC,MAAMZ,OAAOY,IAAI;oBACnB;oBACAC,cAAcZ,kBAAkB,SAAS,SAAS;gBACpD;gBAEA,IAAI,CAACM,WAAW;oBACdH,mBAAmBM;oBACnBJ,aAAa;gBACf;YACF,EAAE,OAAM;gBACN,IAAI,CAACC,WAAW;oBACdD,aAAa;gBACf;YACF;QACF;QAEAE;QAEA,OAAO;YACLD,YAAY;QACd;IACF,GAAG;QAACT;QAAMC;QAAMC,OAAOW,KAAK;QAAEX,OAAOY,IAAI;QAAEX;QAAeC;KAAmB;IAE7E,OAAO;QAACC;QAAiBE;IAAS;AACpC;AAUA,OAAO,SAASS,0BAA0B,EACxCC,KAAK,EACLhB,IAAI,EACJC,MAAM,EACNC,aAAa,EACbC,kBAAkB,EACe;IAIjC,MAAM,CAACc,kBAAkBC,oBAAoB,GAAGrB,SAAiC,CAAC;IAClF,MAAM,CAACS,WAAWC,aAAa,GAAGV,SAASM;IAE3CP,UAAU;QACR,IAAI,CAACO,oBAAoB;YACvBI,aAAa;YACb;QACF;QAEAA,aAAa;QACb,IAAIC,YAAY;QAEhB,MAAMC,sBAAsB;YAC1B,IAAI;gBACF,MAAM,EAACC,UAAU,EAAC,GAAG,MAAM,MAAM,CAAC;gBAClC,MAAMS,sBAA8C,CAAC;gBAErD,KAAK,MAAM,CAACC,SAASC,IAAI,IAAIC,OAAOC,OAAO,CAACP,OAAQ;oBAClD,IAAIR,WAAW;wBACb;oBACF;oBAEA,MAAMgB,cAAc,MAAMd,WAAWW,KAAK;wBACxCrB;wBACAC,QAAQ;4BACNW,OAAOX,OAAOW,KAAK;4BACnBC,MAAMZ,OAAOY,IAAI;wBACnB;wBACAC,cAAcZ,kBAAkB,SAAS,SAAS;oBACpD;oBAEAiB,mBAAmB,CAACC,QAAQ,GAAGI;gBACjC;gBAEA,IAAI,CAAChB,WAAW;oBACdU,oBAAoBC;oBACpBZ,aAAa;gBACf;YACF,EAAE,OAAM;gBACN,IAAI,CAACC,WAAW;oBACdD,aAAa;gBACf;YACF;QACF;QAEAE;QAEA,OAAO;YACLD,YAAY;QACd;IACF,GAAG;QAACN;QAAeF;QAAMC,OAAOW,KAAK;QAAEX,OAAOY,IAAI;QAAEG;QAAOb;KAAmB;IAE9E,OAAO;QAACc;QAAkBX;IAAS;AACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShikiStyleInjection.d.ts","sourceRoot":"","sources":["../../src/hooks/useShikiStyleInjection.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,OAAO,GAAG,IAAI,CA+BxE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
export function useShikiStyleInjection(syntaxHighlighting) {
|
|
3
|
+
useEffect(()=>{
|
|
4
|
+
if (!syntaxHighlighting) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const styleId = 'shiki-override-styles';
|
|
8
|
+
if (document.getElementById(styleId)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const style = document.createElement('style');
|
|
12
|
+
style.id = styleId;
|
|
13
|
+
style.textContent = `
|
|
14
|
+
.shiki-override pre,
|
|
15
|
+
.shiki-override code,
|
|
16
|
+
.shiki-override pre *,
|
|
17
|
+
.shiki-override code * {
|
|
18
|
+
background: transparent !important;
|
|
19
|
+
font-family: "Commit Mono", monospace !important;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
document.head.appendChild(style);
|
|
23
|
+
return ()=>{
|
|
24
|
+
const existingStyle = document.getElementById(styleId);
|
|
25
|
+
if (existingStyle) {
|
|
26
|
+
existingStyle.remove();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}, [
|
|
30
|
+
syntaxHighlighting
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=useShikiStyleInjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useShikiStyleInjection.ts"],"sourcesContent":["import {useEffect} from 'react';\n\nexport function useShikiStyleInjection(syntaxHighlighting: boolean): void {\n useEffect(() => {\n if (!syntaxHighlighting) {\n return;\n }\n\n const styleId = 'shiki-override-styles';\n if (document.getElementById(styleId)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .shiki-override pre,\n .shiki-override code,\n .shiki-override pre *,\n .shiki-override code * {\n background: transparent !important;\n font-family: \"Commit Mono\", monospace !important;\n }\n `;\n document.head.appendChild(style);\n\n return () => {\n const existingStyle = document.getElementById(styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n };\n }, [syntaxHighlighting]);\n}\n"],"names":["useEffect","useShikiStyleInjection","syntaxHighlighting","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove"],"mappings":"AAAA,SAAQA,SAAS,QAAO,QAAQ;AAEhC,OAAO,SAASC,uBAAuBC,kBAA2B;IAChEF,UAAU;QACR,IAAI,CAACE,oBAAoB;YACvB;QACF;QAEA,MAAMC,UAAU;QAChB,IAAIC,SAASC,cAAc,CAACF,UAAU;YACpC;QACF;QAEA,MAAMG,QAAQF,SAASG,aAAa,CAAC;QACrCD,MAAME,EAAE,GAAGL;QACXG,MAAMG,WAAW,GAAG,CAAC;;;;;;;;IAQrB,CAAC;QACDL,SAASM,IAAI,CAACC,WAAW,CAACL;QAE1B,OAAO;YACL,MAAMM,gBAAgBR,SAASC,cAAc,CAACF;YAC9C,IAAIS,eAAe;gBACjBA,cAAcC,MAAM;YACtB;QACF;IACF,GAAG;QAACX;KAAmB;AACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/utils/avatar.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAStD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAK1C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const hashString = (str)=>{
|
|
2
|
+
let hash = 0;
|
|
3
|
+
for(let i = 0; i < str.length; i++){
|
|
4
|
+
const char = str.charCodeAt(i);
|
|
5
|
+
hash = (hash << 5) - hash + char;
|
|
6
|
+
hash = hash & hash;
|
|
7
|
+
}
|
|
8
|
+
return Math.abs(hash);
|
|
9
|
+
};
|
|
10
|
+
export const getPlaceholderImageUrl = (name)=>{
|
|
11
|
+
const backgroundColors = [
|
|
12
|
+
'BFDFFF',
|
|
13
|
+
'BFEAFF',
|
|
14
|
+
'CFBFFF',
|
|
15
|
+
'FFBFC3',
|
|
16
|
+
'FFEABF',
|
|
17
|
+
'E3E6EA',
|
|
18
|
+
'EAEAEA'
|
|
19
|
+
];
|
|
20
|
+
const seed = name?.trim() || 'avatar';
|
|
21
|
+
const colorIndex = hashString(seed) % backgroundColors.length;
|
|
22
|
+
const backgroundColor = backgroundColors[colorIndex];
|
|
23
|
+
return `https://api.dicebear.com/9.x/micah/svg?backgroundColor=${backgroundColor}&seed=${encodeURIComponent(seed)}`;
|
|
24
|
+
};
|
|
25
|
+
export const getInitial = (name)=>{
|
|
26
|
+
if (name) {
|
|
27
|
+
return name.trim()[0]?.toUpperCase() ?? 'L';
|
|
28
|
+
}
|
|
29
|
+
return 'L';
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/avatar.ts"],"sourcesContent":["const hashString = (str: string): number => {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return Math.abs(hash);\n};\n\nexport const getPlaceholderImageUrl = (name?: string): string => {\n const backgroundColors = ['BFDFFF', 'BFEAFF', 'CFBFFF', 'FFBFC3', 'FFEABF', 'E3E6EA', 'EAEAEA'];\n\n const seed = name?.trim() || 'avatar';\n\n const colorIndex = hashString(seed) % backgroundColors.length;\n const backgroundColor = backgroundColors[colorIndex];\n\n return `https://api.dicebear.com/9.x/micah/svg?backgroundColor=${backgroundColor}&seed=${encodeURIComponent(seed)}`;\n};\n\nexport const getInitial = (name?: string): string => {\n if (name) {\n return name.trim()[0]?.toUpperCase() ?? 'L';\n }\n return 'L';\n};\n"],"names":["hashString","str","hash","i","length","char","charCodeAt","Math","abs","getPlaceholderImageUrl","name","backgroundColors","seed","trim","colorIndex","backgroundColor","encodeURIComponent","getInitial","toUpperCase"],"mappings":"AAAA,MAAMA,aAAa,CAACC;IAClB,IAAIC,OAAO;IACX,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAIG,MAAM,EAAED,IAAK;QACnC,MAAME,OAAOJ,IAAIK,UAAU,CAACH;QAC5BD,OAAO,AAACA,CAAAA,QAAQ,CAAA,IAAKA,OAAOG;QAC5BH,OAAOA,OAAOA;IAChB;IACA,OAAOK,KAAKC,GAAG,CAACN;AAClB;AAEA,OAAO,MAAMO,yBAAyB,CAACC;IACrC,MAAMC,mBAAmB;QAAC;QAAU;QAAU;QAAU;QAAU;QAAU;QAAU;KAAS;IAE/F,MAAMC,OAAOF,MAAMG,UAAU;IAE7B,MAAMC,aAAad,WAAWY,QAAQD,iBAAiBP,MAAM;IAC7D,MAAMW,kBAAkBJ,gBAAgB,CAACG,WAAW;IAEpD,OAAO,CAAC,uDAAuD,EAAEC,gBAAgB,MAAM,EAAEC,mBAAmBJ,OAAO;AACrH,EAAE;AAEF,OAAO,MAAMK,aAAa,CAACP;IACzB,IAAIA,MAAM;QACR,OAAOA,KAAKG,IAAI,EAAE,CAAC,EAAE,EAAEK,iBAAiB;IAC1C;IACA,OAAO;AACT,EAAE"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './clipboard';\nexport * from './cn';\nexport * from './date';\nexport * from './format';\n"],"names":[],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB,cAAc,SAAS;AACvB,cAAc,WAAW"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './avatar';\nexport * from './clipboard';\nexport * from './cn';\nexport * from './date';\nexport * from './format';\n"],"names":[],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB,cAAc,SAAS;AACvB,cAAc,WAAW"}
|
package/index.css
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
@import "tailwindcss";
|
|
5
5
|
@import "tw-animate-css";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/* Commented because it breaks default Tailwind theme with breakpoints */
|
|
8
|
+
/* @theme {
|
|
8
9
|
--\*: initial;
|
|
9
|
-
}
|
|
10
|
+
} */
|
|
10
11
|
|
|
11
12
|
@custom-variant hover (&:hover);
|
|
12
13
|
|
|
@@ -267,7 +268,7 @@
|
|
|
267
268
|
--tag-error-icon: var(--color-red-500);
|
|
268
269
|
--tag-error-text: var(--color-red-800);
|
|
269
270
|
--tag-warning-icon: var(--color-orange-400);
|
|
270
|
-
--tag-warning-text: var(--color-orange-
|
|
271
|
+
--tag-warning-text: var(--color-orange-800);
|
|
271
272
|
--tag-success-bg: var(--color-green-100);
|
|
272
273
|
--tag-success-border: var(--color-green-200);
|
|
273
274
|
--tag-success-text: var(--color-green-800);
|
|
@@ -290,6 +291,71 @@
|
|
|
290
291
|
/* Alpha */
|
|
291
292
|
--alpha-250: var(--color-alpha-black-10);
|
|
292
293
|
--alpha-400: var(--color-alpha-black-24);
|
|
294
|
+
|
|
295
|
+
/* Shadow */
|
|
296
|
+
--shadow-border-base:
|
|
297
|
+
0 -1px 0 0 var(--color-alpha-white-6), 0 0 0 1px var(--color-alpha-white-6), 0 0 0 1px
|
|
298
|
+
var(--color-neutral-800), 0 0 1px 1.5px var(--color-alpha-black-24), 0 2px 2px 0
|
|
299
|
+
var(--color-alpha-black-24);
|
|
300
|
+
--shadow-border-interactive-with-active: 0 0 0 1px #ff8b16, 0 0 0 4px rgba(255, 49, 0, 0.25);
|
|
301
|
+
--shadow-border-error: 0 0 0 1px #ff1f5a, 0 0 0 3px rgba(246, 0, 67, 0.25);
|
|
302
|
+
--shadow-button-inverted:
|
|
303
|
+
0 -1px 0 0 var(--color-alpha-white-12), 0 0 0 1px var(--color-alpha-white-10), 0 0 0 1px
|
|
304
|
+
var(--color-neutral-600), 0 0 1px 1.5px var(--color-alpha-black-24), 0 2px 2px 0
|
|
305
|
+
var(--color-alpha-black-24);
|
|
306
|
+
--shadow-button-inverted-focus:
|
|
307
|
+
0 -1px 0 0 var(--color-alpha-white-12), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
308
|
+
var(--color-neutral-600), 0 0 0 2px var(--color-alpha-white-88), 0 0 0 4px
|
|
309
|
+
var(--color-primary-500);
|
|
310
|
+
--shadow-button-neutral:
|
|
311
|
+
0 0 0 1px var(--color-alpha-black-8), 0 2px 4px 0 var(--color-alpha-black-8), 0 4px 8px 0
|
|
312
|
+
var(--color-alpha-black-8);
|
|
313
|
+
--shadow-button-neutral-focus:
|
|
314
|
+
0 -1px 0 0 var(--color-alpha-white-6), 0 0 0 1px var(--color-alpha-white-6), 0 0 0 1px
|
|
315
|
+
var(--color-neutral-800), 0 0 0 2px var(--color-alpha-white-88), 0 0 0 4px
|
|
316
|
+
var(--color-primary-500);
|
|
317
|
+
--shadow-button-danger:
|
|
318
|
+
0 -1px 0 0 var(--color-alpha-white-16), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
319
|
+
var(--color-red-700), 0 0 1px 1.5px var(--color-alpha-black-24), 0 2px 2px 0
|
|
320
|
+
var(--color-alpha-black-24);
|
|
321
|
+
--shadow-button-danger-focus:
|
|
322
|
+
0 -1px 0 0 var(--color-alpha-white-16), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
323
|
+
var(--color-red-700), 0 0 0 2px var(--color-alpha-white-88), 0 0 0 4px var(--color-primary-500);
|
|
324
|
+
|
|
325
|
+
/* Checkbox */
|
|
326
|
+
/* Checkbox - Unchecked States */
|
|
327
|
+
--checkbox-unchecked-bg: var(--background-components-base);
|
|
328
|
+
--checkbox-unchecked-bg-hover: var(--background-components-hover);
|
|
329
|
+
--checkbox-unchecked-border: var(--color-alpha-black-8);
|
|
330
|
+
--checkbox-unchecked-shadow:
|
|
331
|
+
0px 1px 2px 0px var(--color-alpha-black-12), 0px 0px 0px 1px var(--color-alpha-black-8);
|
|
332
|
+
--checkbox-unchecked-focus-shadow:
|
|
333
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px #ff4b00, 0px 0px 0px 2px
|
|
334
|
+
var(--color-neutral-0), 0px 0px 0px 4px rgba(255, 75, 0, 0.6);
|
|
335
|
+
|
|
336
|
+
/* Checkbox - Checked States */
|
|
337
|
+
--checkbox-checked-bg: var(--foreground-highlight-interactive);
|
|
338
|
+
--checkbox-checked-bg-hover: var(--foreground-highlight-interactive-hover);
|
|
339
|
+
--checkbox-checked-border: rgba(255, 75, 0, 0.69);
|
|
340
|
+
--checkbox-checked-shadow:
|
|
341
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px rgba(255, 75, 0, 0.69);
|
|
342
|
+
--checkbox-checked-focus-shadow:
|
|
343
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px #ff4b00, 0px 0px 0px 2px
|
|
344
|
+
var(--color-neutral-0), 0px 0px 0px 4px rgba(255, 75, 0, 0.6);
|
|
345
|
+
|
|
346
|
+
/* Checkbox - Indeterminate States */
|
|
347
|
+
--checkbox-indeterminate-bg: var(--foreground-highlight-interactive);
|
|
348
|
+
--checkbox-indeterminate-bg-hover: var(--foreground-highlight-interactive-hover);
|
|
349
|
+
--checkbox-indeterminate-border: rgba(255, 75, 0, 0.69);
|
|
350
|
+
--checkbox-indeterminate-shadow:
|
|
351
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px rgba(255, 75, 0, 0.69);
|
|
352
|
+
--checkbox-indeterminate-focus-shadow:
|
|
353
|
+
0px 0px 0px 1px var(--color-neutral-0), 0px 0px 0px 3px rgba(255, 75, 0, 0.6);
|
|
354
|
+
--shadow-tooltip:
|
|
355
|
+
0 0 0 1px var(--color-alpha-black-8), 0 2px 4px 0 var(--color-alpha-black-8), 0 4px 8px 0
|
|
356
|
+
var(--color-alpha-black-8);
|
|
357
|
+
--shadow-separator-inset:
|
|
358
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 0 rgba(0, 0, 0, 0.06);
|
|
293
359
|
}
|
|
294
360
|
|
|
295
361
|
.dark {
|
|
@@ -307,7 +373,7 @@
|
|
|
307
373
|
--background-highlight-base: var(--color-primary-950);
|
|
308
374
|
--background-neutral-hover: var(--color-neutral-800);
|
|
309
375
|
--background-neutral-overlay: var(--color-neutral-800);
|
|
310
|
-
--background-components-base: var(--color-neutral-
|
|
376
|
+
--background-components-base: var(--color-neutral-800);
|
|
311
377
|
--background-field-component: var(--color-neutral-900);
|
|
312
378
|
--background-switch-off-hover: var(--color-neutral-600);
|
|
313
379
|
--background-field-component-hover: var(--color-neutral-800);
|
|
@@ -435,9 +501,8 @@
|
|
|
435
501
|
0 -1px 0 0 var(--color-alpha-white-12), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
436
502
|
var(--color-neutral-600), 0 0 0 2px var(--color-neutral-950), 0 0 0 4px var(--color-primary-500);
|
|
437
503
|
--shadow-button-neutral:
|
|
438
|
-
0 -1px 0 0 var(--color-alpha-white-
|
|
439
|
-
var(--color-
|
|
440
|
-
var(--color-alpha-black-24);
|
|
504
|
+
0 -1px 0 0 var(--color-alpha-white-4), 0 2px 4px 0 var(--color-alpha-black-40), 0 0 0 1px
|
|
505
|
+
var(--color-alpha-white-10), 0 4px 8px 0 var(--color-alpha-black-40);
|
|
441
506
|
--shadow-button-neutral-focus:
|
|
442
507
|
0 -1px 0 0 var(--color-alpha-white-6), 0 0 0 1px var(--color-alpha-white-6), 0 0 0 1px
|
|
443
508
|
var(--color-neutral-800), 0 0 0 2px var(--color-neutral-950), 0 0 0 4px var(--color-primary-500);
|
|
@@ -448,6 +513,45 @@
|
|
|
448
513
|
--shadow-button-danger-focus:
|
|
449
514
|
0 -1px 0 0 var(--color-alpha-white-16), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
450
515
|
var(--color-red-700), 0 0 0 2px var(--color-neutral-950), 0 0 0 4px var(--color-primary-500);
|
|
516
|
+
|
|
517
|
+
/* Checkbox */
|
|
518
|
+
/* Checkbox - Unchecked States */
|
|
519
|
+
--checkbox-unchecked-bg: var(--background-components-base);
|
|
520
|
+
--checkbox-unchecked-bg-hover: var(--background-components-hover);
|
|
521
|
+
--checkbox-unchecked-border: var(--color-alpha-white-10);
|
|
522
|
+
--checkbox-unchecked-shadow:
|
|
523
|
+
0px 1px 2px 0px var(--color-alpha-black-12), 0px 0px 0px 1px var(--color-alpha-white-10);
|
|
524
|
+
--checkbox-unchecked-focus-shadow:
|
|
525
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px #ff4b00, 0px 0px 0px 2px var(
|
|
526
|
+
--color-alpha-black-80
|
|
527
|
+
),
|
|
528
|
+
0px 0px 0px 4px rgba(255, 75, 0, 0.6);
|
|
529
|
+
|
|
530
|
+
/* Checkbox - Checked States */
|
|
531
|
+
--checkbox-checked-bg: var(--foreground-highlight-interactive);
|
|
532
|
+
--checkbox-checked-bg-hover: var(--foreground-highlight-interactive-hover);
|
|
533
|
+
--checkbox-checked-border: rgba(255, 75, 0, 0.69);
|
|
534
|
+
--checkbox-checked-shadow:
|
|
535
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px rgba(255, 75, 0, 0.69);
|
|
536
|
+
--checkbox-checked-focus-shadow:
|
|
537
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px #ff4b00, 0px 0px 0px 2px var(
|
|
538
|
+
--color-alpha-black-80
|
|
539
|
+
),
|
|
540
|
+
0px 0px 0px 4px rgba(255, 75, 0, 0.6);
|
|
541
|
+
|
|
542
|
+
/* Checkbox - Indeterminate States */
|
|
543
|
+
--checkbox-indeterminate-bg: var(--foreground-highlight-interactive);
|
|
544
|
+
--checkbox-indeterminate-bg-hover: var(--foreground-highlight-interactive-hover);
|
|
545
|
+
--checkbox-indeterminate-border: rgba(255, 75, 0, 0.69);
|
|
546
|
+
--checkbox-indeterminate-shadow:
|
|
547
|
+
0px 1px 2px 0px rgba(30, 58, 138, 0.5), 0px 0px 0px 1px rgba(255, 75, 0, 0.69);
|
|
548
|
+
--checkbox-indeterminate-focus-shadow:
|
|
549
|
+
0px 0px 0px 1px var(--color-alpha-black-80), 0px 0px 0px 3px rgba(255, 75, 0, 0.6);
|
|
550
|
+
--shadow-tooltip:
|
|
551
|
+
0 -1px 0 0 var(--color-alpha-white-4), 0 2px 4px 0 var(--color-alpha-black-40), 0 0 0 1px
|
|
552
|
+
var(--color-alpha-white-10), 0 4px 8px 0 var(--color-alpha-black-40);
|
|
553
|
+
--shadow-separator-inset:
|
|
554
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.06), inset 0 -1px 0 0 rgba(0, 0, 0, 0.1);
|
|
451
555
|
}
|
|
452
556
|
|
|
453
557
|
@theme inline {
|
|
@@ -771,6 +875,25 @@
|
|
|
771
875
|
--shadow-button-neutral-focus: var(--shadow-button-neutral-focus);
|
|
772
876
|
--shadow-button-danger: var(--shadow-button-danger);
|
|
773
877
|
--shadow-button-danger-focus: var(--shadow-button-danger-focus);
|
|
878
|
+
|
|
879
|
+
/* Checkbox */
|
|
880
|
+
--color-checkbox-unchecked-bg: var(--checkbox-unchecked-bg);
|
|
881
|
+
--color-checkbox-unchecked-bg-hover: var(--checkbox-unchecked-bg-hover);
|
|
882
|
+
--color-checkbox-unchecked-border: var(--checkbox-unchecked-border);
|
|
883
|
+
--shadow-checkbox-unchecked: var(--checkbox-unchecked-shadow);
|
|
884
|
+
--shadow-checkbox-unchecked-focus: var(--checkbox-unchecked-focus-shadow);
|
|
885
|
+
--color-checkbox-checked-bg: var(--checkbox-checked-bg);
|
|
886
|
+
--color-checkbox-checked-bg-hover: var(--checkbox-checked-bg-hover);
|
|
887
|
+
--color-checkbox-checked-border: var(--checkbox-checked-border);
|
|
888
|
+
--shadow-checkbox-checked: var(--checkbox-checked-shadow);
|
|
889
|
+
--shadow-checkbox-checked-focus: var(--checkbox-checked-focus-shadow);
|
|
890
|
+
--color-checkbox-indeterminate-bg: var(--checkbox-indeterminate-bg);
|
|
891
|
+
--color-checkbox-indeterminate-bg-hover: var(--checkbox-indeterminate-bg-hover);
|
|
892
|
+
--color-checkbox-indeterminate-border: var(--checkbox-indeterminate-border);
|
|
893
|
+
--shadow-checkbox-indeterminate: var(--checkbox-indeterminate-shadow);
|
|
894
|
+
--shadow-checkbox-indeterminate-focus: var(--checkbox-indeterminate-focus-shadow);
|
|
895
|
+
--shadow-tooltip: var(--shadow-tooltip);
|
|
896
|
+
--shadow-separator-inset: var(--shadow-separator-inset);
|
|
774
897
|
}
|
|
775
898
|
|
|
776
899
|
@layer base {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shipfox/react-ui",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -22,12 +22,15 @@
|
|
|
22
22
|
"@radix-ui/react-slot": "^1.2.3",
|
|
23
23
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
24
24
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
25
|
+
"@radix-ui/react-use-controllable-state": "^1.2.2",
|
|
25
26
|
"@remixicon/react": "^4.6.0",
|
|
26
27
|
"class-variance-authority": "^0.7.1",
|
|
27
28
|
"clsx": "^2.1.1",
|
|
28
|
-
"
|
|
29
|
+
"framer-motion": "^12.23.24",
|
|
30
|
+
"lucide-react": "^0.553.0",
|
|
29
31
|
"react-day-picker": "^9.5.1",
|
|
30
32
|
"recharts": "^3.1.0",
|
|
33
|
+
"shiki": "^3.15.0",
|
|
31
34
|
"sonner": "^2.0.7",
|
|
32
35
|
"tailwind-merge": "^3.2.0"
|
|
33
36
|
},
|
|
@@ -56,7 +59,7 @@
|
|
|
56
59
|
"storybook-addon-pseudo-states": "^9.1.8",
|
|
57
60
|
"tailwindcss": "^4.1.13",
|
|
58
61
|
"tw-animate-css": "^1.4.0",
|
|
59
|
-
"@shipfox/biome": "1.
|
|
62
|
+
"@shipfox/biome": "1.3.1",
|
|
60
63
|
"@shipfox/swc": "1.2.1",
|
|
61
64
|
"@shipfox/ts-config": "1.3.5",
|
|
62
65
|
"@shipfox/typescript": "1.1.2",
|
|
@@ -65,7 +68,7 @@
|
|
|
65
68
|
},
|
|
66
69
|
"scripts": {
|
|
67
70
|
"build": "swc",
|
|
68
|
-
"check": "biome",
|
|
71
|
+
"check": "biome-check",
|
|
69
72
|
"storybook": "storybook dev",
|
|
70
73
|
"storybook:build": "storybook build -o storybook-static",
|
|
71
74
|
"test": "vitest-run",
|