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.
Files changed (35) hide show
  1. package/README.md +58 -0
  2. package/dist/atoms/Button/Button.svelte +33 -0
  3. package/dist/atoms/Button/Button.svelte.d.ts +38 -0
  4. package/dist/atoms/Button/iProps.d.ts +11 -0
  5. package/dist/atoms/Button/iProps.js +1 -0
  6. package/dist/atoms/Icons/Icon.svelte +22 -0
  7. package/dist/atoms/Icons/Icon.svelte.d.ts +32 -0
  8. package/dist/atoms/Icons/iProps.d.ts +7 -0
  9. package/dist/atoms/Icons/iProps.js +1 -0
  10. package/dist/do-theme/border.css +0 -0
  11. package/dist/do-theme/button.css +57 -0
  12. package/dist/do-theme/color.css +0 -0
  13. package/dist/do-theme/icomoon/backup-icons.json +1 -0
  14. package/dist/do-theme/icomoon/generate-icon-list.cjs +29 -0
  15. package/dist/do-theme/icomoon/generate-icon-list.d.cts +1 -0
  16. package/dist/do-theme/icomoon/icomoon.eot +0 -0
  17. package/dist/do-theme/icomoon/icomoon.svg +23 -0
  18. package/dist/do-theme/icomoon/icomoon.ttf +0 -0
  19. package/dist/do-theme/icomoon/icomoon.woff +0 -0
  20. package/dist/do-theme/icomoon/iconList.d.ts +3 -0
  21. package/dist/do-theme/icomoon/iconList.js +18 -0
  22. package/dist/do-theme/icomoon/icons.css +66 -0
  23. package/dist/do-theme/index.css +29 -0
  24. package/dist/do-theme/post-compiled.css +1376 -0
  25. package/dist/do-theme/var-dark.css +34 -0
  26. package/dist/do-theme/var-hybrid.css +47 -0
  27. package/dist/do-theme/var-light.css +29 -0
  28. package/dist/index.d.ts +4 -0
  29. package/dist/index.js +7 -0
  30. package/dist/molecules/IconButton/IconButton.svelte +51 -0
  31. package/dist/molecules/IconButton/IconButton.svelte.d.ts +48 -0
  32. package/dist/molecules/IconButton/iProps.d.ts +14 -0
  33. package/dist/molecules/IconButton/iProps.js +1 -0
  34. package/package.json +95 -0
  35. 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
+ }
@@ -0,0 +1,4 @@
1
+ import './do-theme/index.css';
2
+ export { default as Button } from './atoms/Button/Button.svelte';
3
+ export { default as Icon } from './atoms/Icons/Icon.svelte';
4
+ export { default as IconButton } from './molecules/IconButton/IconButton.svelte';
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;">&nbsp;</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
+ */