@mccustomapps/helaui 0.1.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.
Binary file
Binary file
Binary file
@@ -0,0 +1,40 @@
1
+ .helaui-rain-background {
2
+ position: fixed;
3
+ inset: 0;
4
+ overflow: hidden;
5
+ pointer-events: none;
6
+ z-index: 0;
7
+ }
8
+
9
+ .helaui-rain-background__drop {
10
+ position: absolute;
11
+ top: -20%;
12
+ left: var(--helaui-rain-x, 50%);
13
+ width: var(--helaui-rain-size, 48px);
14
+ height: auto;
15
+ opacity: var(--helaui-rain-opacity, 0.85);
16
+ background:transparent;
17
+ mix-blend-mode: screen;
18
+ will-change: transform;
19
+ animation: helaui-rain-fall var(--helaui-rain-duration, 10s) linear infinite;
20
+ animation-delay: var(--helaui-rain-delay, 0s);
21
+ transform: rotate(var(--helaui-rain-rotation, 0deg));
22
+ }
23
+
24
+ @keyframes helaui-rain-fall {
25
+ from {
26
+ transform: translate3d(0, 0, 0) rotate(var(--helaui-rain-rotation, 0deg));
27
+ }
28
+
29
+ to {
30
+ transform: translate3d(var(--helaui-rain-drift, 0px), 120vh, 0)
31
+ rotate(calc(var(--helaui-rain-rotation, 0deg) + var(--helaui-rain-spin, 180deg)));
32
+ }
33
+ }
34
+
35
+ @media (prefers-reduced-motion: reduce) {
36
+ .helaui-rain-background__drop {
37
+ animation: none;
38
+ display: none;
39
+ }
40
+ }
@@ -0,0 +1,10 @@
1
+ @import '@fontsource/noto-sans-sinhala/400.css';
2
+ @import '@fontsource/noto-sans-sinhala/700.css';
3
+
4
+ :root {
5
+ --helaui-sinhala-font: 'Noto Sans Sinhala', 'Iskoola Pota', 'FM Abhaya', sans-serif;
6
+ }
7
+
8
+ .helaui-sinhala {
9
+ font-family: var(--helaui-sinhala-font);
10
+ }
@@ -0,0 +1,66 @@
1
+ .helaui-sun-mandala {
2
+ --helaui-sun-mandala-size: 280px;
3
+ --helaui-sun-mandala-duration: 36s;
4
+ --helaui-sun-mandala-face-radius: 22%;
5
+
6
+ position: relative;
7
+ width: var(--helaui-sun-mandala-size);
8
+ height: var(--helaui-sun-mandala-size);
9
+ aspect-ratio: 1;
10
+ flex-shrink: 0;
11
+ isolation: isolate;
12
+ user-select: none;
13
+ }
14
+
15
+ .helaui-sun-mandala__spin,
16
+ .helaui-sun-mandala__face {
17
+ position: absolute;
18
+ inset: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ }
22
+
23
+ .helaui-sun-mandala__spin {
24
+ z-index: 0;
25
+ transform-origin: 50% 50%;
26
+ animation: helaui-sun-mandala-rotate var(--helaui-sun-mandala-duration) linear infinite;
27
+ will-change: transform;
28
+ }
29
+
30
+ .helaui-sun-mandala__face {
31
+ z-index: 1;
32
+ /* Same artwork, clipped to the yellow face so eyes/mouth stay upright */
33
+ clip-path: circle(var(--helaui-sun-mandala-face-radius) at 50% 50%);
34
+ -webkit-clip-path: circle(var(--helaui-sun-mandala-face-radius) at 50% 50%);
35
+ pointer-events: none;
36
+ }
37
+
38
+ .helaui-sun-mandala__image {
39
+ display: block;
40
+ width: 100%;
41
+ height: 100%;
42
+ object-fit: contain;
43
+ pointer-events: none;
44
+ }
45
+
46
+ .helaui-sun-mandala--paused .helaui-sun-mandala__spin {
47
+ animation-play-state: paused;
48
+ }
49
+
50
+ @keyframes helaui-sun-mandala-rotate {
51
+ 0% {
52
+ transform: rotate(0deg);
53
+ }
54
+ 100% {
55
+ transform: rotate(360deg);
56
+ }
57
+ }
58
+
59
+ @media (prefers-reduced-motion: reduce) {
60
+ .helaui-sun-mandala:not([data-reduce-motion="false"]) .helaui-sun-mandala__spin {
61
+ animation-duration: calc(var(--helaui-sun-mandala-duration) * 3);
62
+ }
63
+ }
64
+
65
+
66
+
Binary file
@@ -0,0 +1,99 @@
1
+ .helaui-textfield {
2
+
3
+ display: flex;
4
+
5
+ flex-direction: column;
6
+
7
+ gap: 0.375rem;
8
+
9
+ width: 100%;
10
+
11
+ }
12
+
13
+
14
+
15
+ .helaui-textfield__label {
16
+
17
+ font-size: 0.875rem;
18
+
19
+ font-weight: 600;
20
+
21
+ color: var(--helaui-text);
22
+
23
+ }
24
+
25
+
26
+
27
+ .helaui-textfield__input {
28
+
29
+ width: 100%;
30
+
31
+ padding: 0.625rem 0.875rem;
32
+
33
+ font-size: 1rem;
34
+
35
+ line-height: 1.5;
36
+
37
+ color: var(--helaui-text);
38
+
39
+ background: var(--helaui-surface);
40
+
41
+ border: 1.5px solid var(--helaui-border);
42
+
43
+ border-radius: 0.5rem;
44
+
45
+ outline: none;
46
+
47
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
48
+
49
+ box-sizing: border-box;
50
+
51
+ }
52
+
53
+
54
+
55
+ .helaui-textfield__input::placeholder {
56
+
57
+ color: var(--helaui-text-muted);
58
+
59
+ }
60
+
61
+
62
+
63
+ .helaui-textfield__input:hover:not(:disabled) {
64
+
65
+ border-color: var(--helaui-border-hover);
66
+
67
+ }
68
+
69
+
70
+
71
+ .helaui-textfield__input:focus {
72
+
73
+ border-color: var(--helaui-focus);
74
+
75
+ box-shadow: 0 0 0 3px var(--helaui-focus-ring);
76
+
77
+ }
78
+
79
+
80
+
81
+ .helaui-textfield--disabled .helaui-textfield__input {
82
+
83
+ background: var(--helaui-disabled-bg);
84
+
85
+ color: var(--helaui-disabled-text);
86
+
87
+ cursor: not-allowed;
88
+
89
+ }
90
+
91
+
92
+
93
+ .helaui-textfield--disabled .helaui-textfield__label {
94
+
95
+ color: var(--helaui-disabled-text);
96
+
97
+ }
98
+
99
+
package/dist/theme.css ADDED
@@ -0,0 +1,24 @@
1
+ :root,
2
+ .helaui-theme {
3
+ /* Brand palette */
4
+ --helaui-primary: #8d153a;
5
+ --helaui-secondary: #ffbe00;
6
+ --helaui-success: #005b33;
7
+ --helaui-accent: #ff7a00;
8
+ --helaui-black: #000000;
9
+ --helaui-white: #ffffff;
10
+ --helaui-grey: #808080;
11
+
12
+ /* Semantic tokens (derived from palette) */
13
+ --helaui-text: var(--helaui-black);
14
+ --helaui-text-muted: var(--helaui-grey);
15
+ --helaui-text-inverse: var(--helaui-white);
16
+ --helaui-background: var(--helaui-white);
17
+ --helaui-surface: var(--helaui-white);
18
+ --helaui-border: #c8c8c8;
19
+ --helaui-border-hover: var(--helaui-grey);
20
+ --helaui-focus: var(--helaui-primary);
21
+ --helaui-focus-ring: rgba(141, 21, 58, 0.2);
22
+ --helaui-disabled-bg: #f0f0f0;
23
+ --helaui-disabled-text: #a3a3a3;
24
+ }
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@mccustomapps/helaui",
3
+ "version": "0.1.0",
4
+ "description": "HelaUI components with Sinhala font support",
5
+ "author": "mccustomapps",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "helaui",
9
+ "sinhala",
10
+ "font",
11
+ "textfield",
12
+ "sri-lanka"
13
+ ],
14
+ "type": "module",
15
+ "main": "./dist/index.cjs",
16
+ "module": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js",
22
+ "require": "./dist/index.cjs"
23
+ },
24
+ "./sinhala.css": "./dist/sinhala.css",
25
+ "./textfield.css": "./dist/textfield.css",
26
+ "./calendar.css": "./dist/calendar.css",
27
+ "./rain-background.css": "./dist/rain-background.css",
28
+ "./sun-mandala.css": "./dist/sun-mandala.css",
29
+ "./theme.css": "./dist/theme.css",
30
+ "./assets/rain/*": "./dist/assets/rain/*",
31
+ "./assets/sun-mandala/*": "./dist/assets/sun-mandala/*"
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "sideEffects": [
37
+ "**/*.css"
38
+ ],
39
+ "scripts": {
40
+ "dev": "vite",
41
+ "build": "tsup",
42
+ "prepublishOnly": "npm run build"
43
+ },
44
+ "dependencies": {
45
+ "@fontsource/noto-sans-sinhala": "^5.2.5"
46
+ },
47
+ "devDependencies": {
48
+ "tsup": "^8.4.0",
49
+ "typescript": "^5.8.2",
50
+ "vite": "^6.2.0"
51
+ }
52
+ }