diff --git a/bun.lock b/bun.lock index 679cee6..81f6d05 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,7 @@ "name": "@svelte-atoms/core", "dependencies": { "@floating-ui/dom": "^1.7.0", + "@qrcode-js/browser": "^1.2.0", "clsx": "^2.1.1", "date-fns": "^4.1.0", "es-toolkit": "^1.37.2", @@ -188,6 +189,10 @@ "@publint/pack": ["@publint/pack@0.1.2", "", {}, "sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw=="], + "@qrcode-js/browser": ["@qrcode-js/browser@1.2.0", "", { "dependencies": { "@qrcode-js/core": "^1.2.0" } }, "sha512-Xea0Rp7UgN9FdocAyY8/0HhBBY7T4F8r/ww8OsoVcC1ftj1XwD9wn5n2yWCwzuYW3rNmBweJGMaYp5hTvwFscQ=="], + + "@qrcode-js/core": ["@qrcode-js/core@1.2.0", "", {}, "sha512-ebwoLU3DPne43moTpApKxSnbpGa9MBsGiKObhDKSw/7nKOhc5OkfLYQA7o8OBUaiRvls1ejsmQzBYIoMMedLKQ=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.4", "", { "os": "android", "cpu": "arm" }, "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA=="], "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.4", "", { "os": "android", "cpu": "arm64" }, "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w=="], diff --git a/package.json b/package.json index e7795f3..e8eb3cf 100644 --- a/package.json +++ b/package.json @@ -452,6 +452,7 @@ }, "dependencies": { "@floating-ui/dom": "^1.7.0", + "@qrcode-js/browser": "^1.2.0", "clsx": "^2.1.1", "date-fns": "^4.1.0", "es-toolkit": "^1.37.2", diff --git a/src/lib/components/qr-code/index.ts b/src/lib/components/qr-code/index.ts index f91b062..628a622 100644 --- a/src/lib/components/qr-code/index.ts +++ b/src/lib/components/qr-code/index.ts @@ -1 +1,2 @@ export { default as QRCode } from './qr-code.svelte'; +export * from './types'; diff --git a/src/lib/components/qr-code/qr-code.stories.svelte b/src/lib/components/qr-code/qr-code.stories.svelte index 9031d28..46999a8 100644 --- a/src/lib/components/qr-code/qr-code.stories.svelte +++ b/src/lib/components/qr-code/qr-code.stories.svelte @@ -16,7 +16,10 @@ {#snippet children({})}
- +
{/snippet}
diff --git a/src/lib/components/qr-code/qr-code.svelte b/src/lib/components/qr-code/qr-code.svelte index e3d7cd8..2393fed 100644 --- a/src/lib/components/qr-code/qr-code.svelte +++ b/src/lib/components/qr-code/qr-code.svelte @@ -1,25 +1,75 @@ - - {#if code} - {@html code} - {/if} - + +
+ { + canvasElement = node; + isReady = true; + }} + width={clientWidth} + height={clientWidth} + > +
+
diff --git a/src/lib/components/qr-code/types.ts b/src/lib/components/qr-code/types.ts new file mode 100644 index 0000000..c4a9a4e --- /dev/null +++ b/src/lib/components/qr-code/types.ts @@ -0,0 +1,15 @@ +import type { QRCodeBrowser } from '@qrcode-js/browser'; + +type QRCodeOptions = Parameters['setOptions']>[0]; + +export type QRCodeProps = { + class?: string; + value: string; + finder?: QRCodeOptions['finder']; + dots?: QRCodeOptions['dots']; + drawFunction?: QRCodeOptions['drawFunction']; + gradient?: QRCodeOptions['gradient']; + logo?: QRCodeOptions['logo']; + margin?: QRCodeOptions['margin']; + qr?: QRCodeOptions['qr']; +};