do-ui-design-system 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -0
- package/dist/atoms/Button/Button.svelte +33 -0
- package/dist/atoms/Button/Button.svelte.d.ts +38 -0
- package/dist/atoms/Button/iProps.d.ts +11 -0
- package/dist/atoms/Button/iProps.js +1 -0
- package/dist/atoms/Icons/Icon.svelte +22 -0
- package/dist/atoms/Icons/Icon.svelte.d.ts +32 -0
- package/dist/atoms/Icons/iProps.d.ts +7 -0
- package/dist/atoms/Icons/iProps.js +1 -0
- package/dist/do-theme/border.css +0 -0
- package/dist/do-theme/button.css +57 -0
- package/dist/do-theme/color.css +0 -0
- package/dist/do-theme/icomoon/backup-icons.json +1 -0
- package/dist/do-theme/icomoon/generate-icon-list.cjs +29 -0
- package/dist/do-theme/icomoon/generate-icon-list.d.cts +1 -0
- package/dist/do-theme/icomoon/icomoon.eot +0 -0
- package/dist/do-theme/icomoon/icomoon.svg +23 -0
- package/dist/do-theme/icomoon/icomoon.ttf +0 -0
- package/dist/do-theme/icomoon/icomoon.woff +0 -0
- package/dist/do-theme/icomoon/iconList.d.ts +3 -0
- package/dist/do-theme/icomoon/iconList.js +18 -0
- package/dist/do-theme/icomoon/icons.css +66 -0
- package/dist/do-theme/index.css +29 -0
- package/dist/do-theme/post-compiled.css +1376 -0
- package/dist/do-theme/var-dark.css +34 -0
- package/dist/do-theme/var-hybrid.css +47 -0
- package/dist/do-theme/var-light.css +29 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -0
- package/dist/molecules/IconButton/IconButton.svelte +51 -0
- package/dist/molecules/IconButton/IconButton.svelte.d.ts +48 -0
- package/dist/molecules/IconButton/iProps.d.ts +14 -0
- package/dist/molecules/IconButton/iProps.js +1 -0
- package/package.json +95 -0
- package/src/lib/do-theme/index.css +29 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@plugin "daisyui/theme" {
|
|
2
|
+
name: "dark";
|
|
3
|
+
prefersdark: true;
|
|
4
|
+
color-scheme: dark;
|
|
5
|
+
--color-base-100: oklch(98% 0.02 240);
|
|
6
|
+
--color-base-200: oklch(95% 0.03 240);
|
|
7
|
+
--color-base-300: oklch(92% 0.04 240);
|
|
8
|
+
--color-base-content: oklch(20% 0.05 240);
|
|
9
|
+
--color-primary: red;
|
|
10
|
+
--color-primary-content: oklch(98% 0.01 240);
|
|
11
|
+
--color-secondary: oklch(70% 0.25 200);
|
|
12
|
+
--color-secondary-content: oklch(98% 0.01 200);
|
|
13
|
+
--color-accent: oklch(65% 0.25 160);
|
|
14
|
+
--color-accent-content: oklch(98% 0.01 160);
|
|
15
|
+
--color-neutral: oklch(50% 0.05 240);
|
|
16
|
+
--color-neutral-content: oklch(98% 0.01 240);
|
|
17
|
+
--color-info: oklch(70% 0.2 220);
|
|
18
|
+
--color-info-content: oklch(98% 0.01 220);
|
|
19
|
+
--color-success: oklch(65% 0.25 140);
|
|
20
|
+
--color-success-content: oklch(98% 0.01 140);
|
|
21
|
+
--color-warning: oklch(80% 0.25 80);
|
|
22
|
+
--color-warning-content: oklch(20% 0.05 80);
|
|
23
|
+
--color-error: oklch(65% 0.3 30);
|
|
24
|
+
--color-error-content: oklch(98% 0.01 30);
|
|
25
|
+
|
|
26
|
+
/* base sizes */
|
|
27
|
+
--size-selector: 0.25rem;
|
|
28
|
+
--size-field: 0.25rem;
|
|
29
|
+
|
|
30
|
+
/* border radius */
|
|
31
|
+
--radius-selector: 0.25rem;
|
|
32
|
+
--radius-field: 0.25rem;
|
|
33
|
+
--radius-box: 0.25rem;
|
|
34
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "hybrid";
|
|
4
|
+
default: true;
|
|
5
|
+
color-scheme: light;
|
|
6
|
+
--color-primary: #27272A;
|
|
7
|
+
--color-primary-content: #FAFAFA;
|
|
8
|
+
--color-secondary: #FAFAFA;
|
|
9
|
+
--color-secondary-content: #27272A;
|
|
10
|
+
--color-neutral: #FAFAFA;
|
|
11
|
+
--color-neutral-content: none;
|
|
12
|
+
--color-accent: #1D4ED8;
|
|
13
|
+
--color-accent-content: #EFF6FF;
|
|
14
|
+
--color-info: oklch(70% 0.2 220);
|
|
15
|
+
--color-info-content: oklch(98% 0.01 220);
|
|
16
|
+
--color-success: oklch(65% 0.25 140);
|
|
17
|
+
--color-success-content: oklch(98% 0.01 140);
|
|
18
|
+
--color-warning: oklch(80% 0.25 80);
|
|
19
|
+
--color-warning-content: oklch(20% 0.05 80);
|
|
20
|
+
--color-error: oklch(65% 0.3 30);
|
|
21
|
+
--color-error-content: oklch(98% 0.01 30);
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/* base sizes */
|
|
25
|
+
--size-selector: 0.25rem;
|
|
26
|
+
--size-field: 0.25rem;
|
|
27
|
+
|
|
28
|
+
/* border radius */
|
|
29
|
+
--radius-selector: 0.25rem;
|
|
30
|
+
--radius-field: 0.25rem;
|
|
31
|
+
--radius-box: 0.25rem;
|
|
32
|
+
|
|
33
|
+
/*variables DO*/
|
|
34
|
+
/*hover color*/
|
|
35
|
+
--do-color-primary-hover: #f5f5f5;
|
|
36
|
+
--do-color-secondary-hover: #3e3e45;
|
|
37
|
+
/*disabled color*/
|
|
38
|
+
--do-color-primary-disabled: #a4a4a6;
|
|
39
|
+
--do-color-accent-disabled: #a4b6ed;
|
|
40
|
+
/*buttons border color*/
|
|
41
|
+
--do-color-border-primary: #3F3F46;
|
|
42
|
+
--do-color-border-secondary: #F4F4F5;
|
|
43
|
+
--do-color-border-accent: #2563EB;
|
|
44
|
+
--do-color-border-accent-hover: #3B82F6;
|
|
45
|
+
/*styles*/
|
|
46
|
+
--do-transparent: transparent;
|
|
47
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "light";
|
|
4
|
+
default: true;
|
|
5
|
+
color-scheme: light;
|
|
6
|
+
--color-primary: hsl(240, 6%, 10%);
|
|
7
|
+
--color-primary-content: hsl(0, 0%, 100%);
|
|
8
|
+
--color-secondary: oklch(70% 0.25 200);
|
|
9
|
+
--color-secondary-content: oklch(98% 0.01 200);
|
|
10
|
+
--color-accent: oklch(65% 0.25 160);
|
|
11
|
+
--color-accent-content: oklch(98% 0.01 160);
|
|
12
|
+
--color-info: oklch(70% 0.2 220);
|
|
13
|
+
--color-info-content: oklch(98% 0.01 220);
|
|
14
|
+
--color-success: oklch(65% 0.25 140);
|
|
15
|
+
--color-success-content: oklch(98% 0.01 140);
|
|
16
|
+
--color-warning: oklch(80% 0.25 80);
|
|
17
|
+
--color-warning-content: oklch(20% 0.05 80);
|
|
18
|
+
--color-error: oklch(65% 0.3 30);
|
|
19
|
+
--color-error-content: oklch(98% 0.01 30);
|
|
20
|
+
|
|
21
|
+
/* base sizes */
|
|
22
|
+
--size-selector: 0.25rem;
|
|
23
|
+
--size-field: 0.25rem;
|
|
24
|
+
|
|
25
|
+
/* border radius */
|
|
26
|
+
--radius-selector: 0.25rem;
|
|
27
|
+
--radius-field: 0.25rem;
|
|
28
|
+
--radius-box: 0.25rem;
|
|
29
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//css export
|
|
2
|
+
import './do-theme/index.css';
|
|
3
|
+
//export atoms
|
|
4
|
+
export { default as Button } from './atoms/Button/Button.svelte';
|
|
5
|
+
export { default as Icon } from './atoms/Icons/Icon.svelte';
|
|
6
|
+
//export molecules
|
|
7
|
+
export { default as IconButton } from './molecules/IconButton/IconButton.svelte';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Icon from '../../atoms/Icons/Icon.svelte';
|
|
3
|
+
import type { iProps } from './iProps.ts';
|
|
4
|
+
|
|
5
|
+
export let variant: iProps['variant'] = 'primary';
|
|
6
|
+
export let size: iProps['size'] = 'md';
|
|
7
|
+
export let label: iProps['label'] = '';
|
|
8
|
+
export let disabled: iProps['disabled'] = false;
|
|
9
|
+
export let onClick: iProps['onClick'];
|
|
10
|
+
export let loading: iProps['loading'] = false;
|
|
11
|
+
export let iconName: iProps['iconName'] = '';
|
|
12
|
+
export let iconSize: iProps['iconSize'] = 'text-md';
|
|
13
|
+
export let iconColor: iProps['iconColor'] = 'inherit';
|
|
14
|
+
export let iconPosition: iProps['iconPosition'] = 'end';
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<!-- @component
|
|
18
|
+
```Svelte
|
|
19
|
+
<Button variant='primary' size='md' label="Click me!" onClick={onClick} disabled={false} />
|
|
20
|
+
```
|
|
21
|
+
- `variant`: 'primary' | 'secondary' | 'accent' | 'neutral'
|
|
22
|
+
- `size`: 'sm' | 'md' | 'lg'
|
|
23
|
+
- `label`: string
|
|
24
|
+
- `onClick`: () => void
|
|
25
|
+
- `disabled`: boolean
|
|
26
|
+
- `loading`: boolean
|
|
27
|
+
- `iconName`: string
|
|
28
|
+
- `iconSize`: 'text-sm' | 'text-md' | 'text-lg' | 'text-xl' | 'text-2xl'
|
|
29
|
+
- `iconColor`: string
|
|
30
|
+
- `iconPosition`: 'left' | 'right'
|
|
31
|
+
```
|
|
32
|
+
@endcomponent
|
|
33
|
+
-->
|
|
34
|
+
|
|
35
|
+
<button {...$$restProps} class={['btn', `btn-${size}`, `btn-${variant}`].join(' ')} disabled={disabled} on:click={onClick}>
|
|
36
|
+
{#if loading}
|
|
37
|
+
<span
|
|
38
|
+
class="loading loading-spinner {iconPosition === 'start' ? 'order-1' : 'order-2'}"
|
|
39
|
+
class:!inline={loading}
|
|
40
|
+
role="status"
|
|
41
|
+
style="width: 16px; height: 16px;"> </span
|
|
42
|
+
>
|
|
43
|
+
{:else}
|
|
44
|
+
<div class={iconPosition === 'start' ? 'order-1' : 'order-2'}>
|
|
45
|
+
<Icon name={iconName} size={iconSize} color={iconColor} />
|
|
46
|
+
</div>
|
|
47
|
+
{/if}
|
|
48
|
+
{#if label}
|
|
49
|
+
<span class={iconPosition === 'start' ? 'order-2' : 'order-1'}>{label}</span>
|
|
50
|
+
{/if}
|
|
51
|
+
</button>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { iProps } from './iProps.ts';
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* ```Svelte
|
|
17
|
+
* <Button variant='primary' size='md' label="Click me!" onClick={onClick} disabled={false} />
|
|
18
|
+
* ```
|
|
19
|
+
* - `variant`: 'primary' | 'secondary' | 'accent' | 'neutral'
|
|
20
|
+
* - `size`: 'sm' | 'md' | 'lg'
|
|
21
|
+
* - `label`: string
|
|
22
|
+
* - `onClick`: () => void
|
|
23
|
+
* - `disabled`: boolean
|
|
24
|
+
* - `loading`: boolean
|
|
25
|
+
* - `iconName`: string
|
|
26
|
+
* - `iconSize`: 'text-sm' | 'text-md' | 'text-lg' | 'text-xl' | 'text-2xl'
|
|
27
|
+
* - `iconColor`: string
|
|
28
|
+
* - `iconPosition`: 'left' | 'right'
|
|
29
|
+
* ```
|
|
30
|
+
* @endcomponent
|
|
31
|
+
*/
|
|
32
|
+
declare const IconButton: $$__sveltets_2_IsomorphicComponent<{
|
|
33
|
+
[x: string]: any;
|
|
34
|
+
variant?: "primary" | "secondary" | "neutral" | "accent" | undefined;
|
|
35
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
36
|
+
label?: string | undefined;
|
|
37
|
+
disabled?: boolean | undefined;
|
|
38
|
+
onClick: iProps["onClick"];
|
|
39
|
+
loading?: boolean | undefined;
|
|
40
|
+
iconName?: iProps["iconName"];
|
|
41
|
+
iconSize?: string | undefined;
|
|
42
|
+
iconColor?: string | undefined;
|
|
43
|
+
iconPosition?: "start" | "end" | undefined;
|
|
44
|
+
}, {
|
|
45
|
+
[evt: string]: CustomEvent<any>;
|
|
46
|
+
}, {}, {}, string>;
|
|
47
|
+
type IconButton = InstanceType<typeof IconButton>;
|
|
48
|
+
export default IconButton;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IconNames } from '../../atoms/Icons/icon-list.ts';
|
|
2
|
+
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
3
|
+
export interface iProps extends HTMLButtonAttributes {
|
|
4
|
+
variant?: 'primary' | 'secondary' | 'neutral' | 'accent';
|
|
5
|
+
size?: 'sm' | 'md' | 'lg';
|
|
6
|
+
label?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
onClick?: () => void | undefined;
|
|
9
|
+
loading?: boolean;
|
|
10
|
+
iconName: IconNames | '';
|
|
11
|
+
iconSize?: string;
|
|
12
|
+
iconColor?: string;
|
|
13
|
+
iconPosition?: 'start' | 'end';
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "do-ui-design-system",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Design system en Svelte + Tailwind + DaisyUI",
|
|
5
|
+
"author": "Data Observatory",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "vite dev",
|
|
9
|
+
"build": "postcss src/app.css -o src/lib/do-theme/post-compiled.css && vite build && npm run prepack",
|
|
10
|
+
"preview": "vite preview",
|
|
11
|
+
"prepare": "svelte-kit sync || echo ''",
|
|
12
|
+
"prepack": "svelte-kit sync && svelte-package && publint",
|
|
13
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
14
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
15
|
+
"test:unit": "vitest",
|
|
16
|
+
"test": "npm run test:unit -- --run",
|
|
17
|
+
"lint": "eslint . && prettier --check .",
|
|
18
|
+
"format": "prettier --write .",
|
|
19
|
+
"storybook": "storybook dev -p 6006",
|
|
20
|
+
"build-storybook": "storybook build",
|
|
21
|
+
"deploy:sb": "aws s3 sync ./storybook-static/ \"s3://doui-douis334ee98a3-exurk2nzipoy\" --delete --profile aplicaciones",
|
|
22
|
+
"invalidate:sb": "aws cloudfront create-invalidation --distribution-id EV3SCINCO86TM --paths \"/*\" --profile aplicaciones",
|
|
23
|
+
"full-deploy:sb": "npm run build-storybook && npm run deploy:sb && npm run invalidate:sb"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"src/lib/do-theme/index.css",
|
|
28
|
+
"!dist/**/*.test.*",
|
|
29
|
+
"!dist/**/*.spec.*",
|
|
30
|
+
"!dist/**/*.stories.*",
|
|
31
|
+
"!dist/**/*.mdx*",
|
|
32
|
+
"!dist/**/*.iProps*"
|
|
33
|
+
],
|
|
34
|
+
"svelte": "./dist/index.js",
|
|
35
|
+
"types": "./dist/index.d.ts",
|
|
36
|
+
"type": "module",
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"svelte": "./dist/index.js",
|
|
41
|
+
"import": "./dist/index.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"svelte": "^5.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@chromatic-com/storybook": "^3",
|
|
49
|
+
"@eslint/compat": "^1.2.5",
|
|
50
|
+
"@eslint/js": "^9.18.0",
|
|
51
|
+
"@storybook/addon-docs": "^8.6.12",
|
|
52
|
+
"@storybook/addon-essentials": "^8.6.11",
|
|
53
|
+
"@storybook/addon-svelte-csf": "^5.0.0-next.0",
|
|
54
|
+
"@storybook/blocks": "^8.6.11",
|
|
55
|
+
"@storybook/experimental-addon-test": "^8.6.11",
|
|
56
|
+
"@storybook/svelte": "^8.6.12",
|
|
57
|
+
"@storybook/sveltekit": "^8.6.11",
|
|
58
|
+
"@storybook/test": "^8.6.11",
|
|
59
|
+
"@sveltejs/adapter-auto": "^4.0.0",
|
|
60
|
+
"@sveltejs/kit": "^2.16.0",
|
|
61
|
+
"@sveltejs/package": "^2.0.0",
|
|
62
|
+
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
63
|
+
"@tailwindcss/vite": "^4.0.0",
|
|
64
|
+
"@tailwindcss/postcss": "^4.1.4",
|
|
65
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
66
|
+
"@testing-library/svelte": "^5.2.4",
|
|
67
|
+
"@vitest/browser": "^3.1.1",
|
|
68
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
69
|
+
"autoprefixer": "^10.4.21",
|
|
70
|
+
"daisyui": "^5.0.9",
|
|
71
|
+
"eslint": "^9.18.0",
|
|
72
|
+
"eslint-config-prettier": "^10.0.1",
|
|
73
|
+
"eslint-plugin-svelte": "^3.0.0",
|
|
74
|
+
"globals": "^16.0.0",
|
|
75
|
+
"jsdom": "^26.0.0",
|
|
76
|
+
"playwright": "^1.51.1",
|
|
77
|
+
"postcss": "^8.5.3",
|
|
78
|
+
"postcss-cli": "^11.0.1",
|
|
79
|
+
"prettier": "^3.4.2",
|
|
80
|
+
"prettier-plugin-svelte": "^3.3.3",
|
|
81
|
+
"prettier-plugin-tailwindcss": "^0.6.11",
|
|
82
|
+
"publint": "^0.3.2",
|
|
83
|
+
"storybook": "^8.6.11",
|
|
84
|
+
"svelte": "^5.25.10",
|
|
85
|
+
"svelte-check": "^4.0.0",
|
|
86
|
+
"tailwindcss": "^4.1.4",
|
|
87
|
+
"typescript": "^5.8.3",
|
|
88
|
+
"typescript-eslint": "^8.20.0",
|
|
89
|
+
"vite": "^6.0.0",
|
|
90
|
+
"vitest": "^3.0.0"
|
|
91
|
+
},
|
|
92
|
+
"keywords": [
|
|
93
|
+
"svelte"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
@plugin "daisyui";
|
|
2
|
+
|
|
3
|
+
@import "./var-light.css";
|
|
4
|
+
@import "./var-dark.css";
|
|
5
|
+
@import "./var-hybrid.css";
|
|
6
|
+
@import "./button.css";
|
|
7
|
+
@import "./border.css";
|
|
8
|
+
@import "./color.css";
|
|
9
|
+
@import "./icomoon/icons.css";
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
There are 2 ways to modify themes (light [default] and dark):
|
|
13
|
+
|
|
14
|
+
Specifying variables for each theme:
|
|
15
|
+
@plugin "daisyui/theme" {
|
|
16
|
+
name: "light" | "dark";
|
|
17
|
+
default: true;
|
|
18
|
+
--daisy-variable: some value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Specifying classes for each theme:
|
|
22
|
+
[data-theme="dark"] {
|
|
23
|
+
.daisy-class {
|
|
24
|
+
background-color: red;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
For more info and variables: https://daisyui.com/docs/themes/
|
|
29
|
+
*/
|