@shipfox/react-ui 0.3.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 +2 -2
- package/.turbo/turbo-type.log +1 -1
- package/CHANGELOG.md +11 -0
- package/dist/components/alert/alert.d.ts +2 -2
- package/dist/components/alert/alert.js +3 -3
- package/dist/components/alert/alert.js.map +1 -1
- package/dist/components/alert/alert.stories.js +2 -2
- package/dist/components/alert/alert.stories.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +3 -3
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.d.ts +4 -1
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/avatar.js +7 -8
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/avatar/avatar.stories.js +15 -3
- package/dist/components/avatar/avatar.stories.js.map +1 -1
- 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 +2 -0
- package/dist/components/icon/custom/index.d.ts.map +1 -1
- package/dist/components/icon/custom/index.js +2 -0
- package/dist/components/icon/custom/index.js.map +1 -1
- 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 +11 -2
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +12 -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 +9 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +10 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/inline-tips/inline-tips.d.ts +1 -1
- package/dist/components/inline-tips/inline-tips.d.ts.map +1 -1
- package/dist/components/inline-tips/inline-tips.js +1 -1
- package/dist/components/inline-tips/inline-tips.js.map +1 -1
- package/dist/components/inline-tips/inline-tips.stories.js +5 -5
- package/dist/components/inline-tips/inline-tips.stories.js.map +1 -1
- 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 +18 -5
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +63 -3
- package/dist/components/tooltip/tooltip.js.map +1 -1
- 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/index.css +101 -9
- package/package.json +6 -3
- 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 +2 -2
- package/src/components/alert/alert.tsx +3 -3
- package/src/components/avatar/avatar-group.tsx +3 -3
- package/src/components/avatar/avatar.stories.tsx +9 -2
- package/src/components/avatar/avatar.tsx +10 -6
- 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 +2 -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 +19 -1
- package/src/components/index.ts +9 -1
- package/src/components/inline-tips/inline-tips.stories.tsx +3 -3
- package/src/components/inline-tips/inline-tips.tsx +2 -2
- 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 +79 -10
- 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/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"}
|
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);
|
|
@@ -307,9 +308,8 @@
|
|
|
307
308
|
var(--color-neutral-600), 0 0 0 2px var(--color-alpha-white-88), 0 0 0 4px
|
|
308
309
|
var(--color-primary-500);
|
|
309
310
|
--shadow-button-neutral:
|
|
310
|
-
0
|
|
311
|
-
var(--color-
|
|
312
|
-
var(--color-alpha-black-24);
|
|
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
313
|
--shadow-button-neutral-focus:
|
|
314
314
|
0 -1px 0 0 var(--color-alpha-white-6), 0 0 0 1px var(--color-alpha-white-6), 0 0 0 1px
|
|
315
315
|
var(--color-neutral-800), 0 0 0 2px var(--color-alpha-white-88), 0 0 0 4px
|
|
@@ -321,6 +321,41 @@
|
|
|
321
321
|
--shadow-button-danger-focus:
|
|
322
322
|
0 -1px 0 0 var(--color-alpha-white-16), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
323
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);
|
|
324
359
|
}
|
|
325
360
|
|
|
326
361
|
.dark {
|
|
@@ -466,9 +501,8 @@
|
|
|
466
501
|
0 -1px 0 0 var(--color-alpha-white-12), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
467
502
|
var(--color-neutral-600), 0 0 0 2px var(--color-neutral-950), 0 0 0 4px var(--color-primary-500);
|
|
468
503
|
--shadow-button-neutral:
|
|
469
|
-
0 -1px 0 0 var(--color-alpha-white-
|
|
470
|
-
var(--color-
|
|
471
|
-
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);
|
|
472
506
|
--shadow-button-neutral-focus:
|
|
473
507
|
0 -1px 0 0 var(--color-alpha-white-6), 0 0 0 1px var(--color-alpha-white-6), 0 0 0 1px
|
|
474
508
|
var(--color-neutral-800), 0 0 0 2px var(--color-neutral-950), 0 0 0 4px var(--color-primary-500);
|
|
@@ -479,6 +513,45 @@
|
|
|
479
513
|
--shadow-button-danger-focus:
|
|
480
514
|
0 -1px 0 0 var(--color-alpha-white-16), 0 0 0 1px var(--color-alpha-white-12), 0 0 0 1px
|
|
481
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);
|
|
482
555
|
}
|
|
483
556
|
|
|
484
557
|
@theme inline {
|
|
@@ -802,6 +875,25 @@
|
|
|
802
875
|
--shadow-button-neutral-focus: var(--shadow-button-neutral-focus);
|
|
803
876
|
--shadow-button-danger: var(--shadow-button-danger);
|
|
804
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);
|
|
805
897
|
}
|
|
806
898
|
|
|
807
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.3.
|
|
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",
|