arekui 1.0.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.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/arekui.css +3279 -0
  4. package/arekui.d.ts +328 -0
  5. package/arekui.js +450 -0
  6. package/dist/arekui.min.css +1 -0
  7. package/dist/arekui.min.js +2 -0
  8. package/package.json +57 -0
  9. package/scripts/build-custom.js +318 -0
  10. package/src/arekui.css +56 -0
  11. package/src/base/neo-overrides.css +317 -0
  12. package/src/base/reset.css +67 -0
  13. package/src/base/tokens.css +304 -0
  14. package/src/components/accordion.css +34 -0
  15. package/src/components/alert.css +26 -0
  16. package/src/components/badge.css +33 -0
  17. package/src/components/breadcrumb.css +33 -0
  18. package/src/components/button.css +103 -0
  19. package/src/components/card.css +24 -0
  20. package/src/components/carousel.css +14 -0
  21. package/src/components/chat.css +78 -0
  22. package/src/components/drawer.css +53 -0
  23. package/src/components/file-upload.css +51 -0
  24. package/src/components/footer.css +26 -0
  25. package/src/components/forms.css +69 -0
  26. package/src/components/hero.css +22 -0
  27. package/src/components/join.css +14 -0
  28. package/src/components/link.css +24 -0
  29. package/src/components/menu.css +56 -0
  30. package/src/components/misc.css +57 -0
  31. package/src/components/modal.css +32 -0
  32. package/src/components/navbar.css +37 -0
  33. package/src/components/pagination.css +46 -0
  34. package/src/components/popover.css +70 -0
  35. package/src/components/progress.css +19 -0
  36. package/src/components/prose.css +80 -0
  37. package/src/components/rating.css +37 -0
  38. package/src/components/scroll-top.css +36 -0
  39. package/src/components/skeleton.css +54 -0
  40. package/src/components/swap.css +45 -0
  41. package/src/components/table.css +22 -0
  42. package/src/components/tabs.css +24 -0
  43. package/src/components/tag.css +101 -0
  44. package/src/components/textured.css +34 -0
  45. package/src/components/timeline.css +34 -0
  46. package/src/components/toast.css +134 -0
  47. package/src/components/tooltip.css +24 -0
  48. package/src/utilities/borders.css +152 -0
  49. package/src/utilities/colors.css +73 -0
  50. package/src/utilities/hover.css +33 -0
  51. package/src/utilities/layout.css +100 -0
  52. package/src/utilities/neo-utilities.css +95 -0
  53. package/src/utilities/responsive.css +128 -0
  54. package/src/utilities/sizing.css +91 -0
  55. package/src/utilities/spacing.css +130 -0
  56. package/src/utilities/typography.css +94 -0
@@ -0,0 +1,80 @@
1
+ /* PROSE (article typography) */
2
+ .ar-prose {
3
+ font-size: 1rem;
4
+ line-height: 1.75;
5
+ max-width: 65ch;
6
+ }
7
+ .ar-prose > * + * {
8
+ margin-top: 1rem;
9
+ }
10
+ .ar-prose h1,
11
+ .ar-prose h2,
12
+ .ar-prose h3,
13
+ .ar-prose h4 {
14
+ margin-top: 1.5rem;
15
+ font-weight: 700;
16
+ }
17
+ .ar-prose h1 {
18
+ font-size: 1.75rem;
19
+ }
20
+ .ar-prose h2 {
21
+ font-size: 1.375rem;
22
+ }
23
+ .ar-prose h3 {
24
+ font-size: 1.125rem;
25
+ }
26
+ .ar-prose h4 {
27
+ font-size: 1rem;
28
+ }
29
+ .ar-prose img {
30
+ margin: 1rem auto;
31
+ border-radius: var(--ar-radius-box);
32
+ }
33
+ .ar-prose a {
34
+ text-decoration: underline;
35
+ }
36
+ .ar-prose blockquote {
37
+ margin: 1rem 0;
38
+ border-left: 4px solid var(--ar-base-300);
39
+ padding-left: 1rem;
40
+ font-style: italic;
41
+ color: var(--ar-gray-600);
42
+ }
43
+ .ar-prose ul,
44
+ .ar-prose ol {
45
+ padding-left: 1.5rem;
46
+ }
47
+ .ar-prose pre {
48
+ background: var(--ar-base-200);
49
+ border-radius: var(--ar-radius-box);
50
+ padding: 1rem;
51
+ overflow-x: auto;
52
+ }
53
+ .ar-prose code {
54
+ font-size: 0.875em;
55
+ background: var(--ar-base-200);
56
+ border-radius: var(--ar-radius-field);
57
+ padding: 0.125rem 0.375rem;
58
+ }
59
+ .ar-prose pre code {
60
+ background: transparent;
61
+ padding: 0;
62
+ }
63
+ .ar-prose table {
64
+ width: 100%;
65
+ border-collapse: collapse;
66
+ font-size: 0.875rem;
67
+ }
68
+ .ar-prose th,
69
+ .ar-prose td {
70
+ border: var(--ar-border-width) solid var(--ar-base-300);
71
+ padding: 0.5rem 0.75rem;
72
+ }
73
+ .ar-prose th {
74
+ background: var(--ar-base-200);
75
+ }
76
+ .ar-prose hr {
77
+ border: 0;
78
+ border-top: var(--ar-border-width) solid var(--ar-base-300);
79
+ margin: 1.5rem 0;
80
+ }
@@ -0,0 +1,37 @@
1
+ /* RATING */
2
+ .ar-rating {
3
+ display: inline-flex;
4
+ gap: var(--ar-s-1);
5
+ direction: rtl;
6
+ }
7
+ .ar-rating input {
8
+ display: none;
9
+ }
10
+ .ar-rating label {
11
+ cursor: pointer;
12
+ color: var(--ar-gray-300);
13
+ transition:
14
+ color 0.15s ease,
15
+ transform 0.15s ease;
16
+ }
17
+ .ar-rating label:hover,
18
+ .ar-rating label:hover ~ label,
19
+ .ar-rating input:checked ~ label {
20
+ color: var(--ar-warning);
21
+ }
22
+ .ar-rating label:hover {
23
+ transform: scale(1.15);
24
+ }
25
+ .ar-rating svg {
26
+ width: 1.5rem;
27
+ height: 1.5rem;
28
+ fill: currentColor;
29
+ }
30
+ .ar-rating-readonly label {
31
+ cursor: default;
32
+ }
33
+ .ar-rating-readonly label:hover,
34
+ .ar-rating-readonly label:hover ~ label,
35
+ .ar-rating-readonly input:checked ~ label {
36
+ transform: none;
37
+ }
@@ -0,0 +1,36 @@
1
+ /* SCROLL TO TOP */
2
+ .ar-scroll-top {
3
+ position: fixed;
4
+ bottom: var(--ar-s-6);
5
+ right: var(--ar-s-6);
6
+ z-index: 40;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ width: 2.75rem;
11
+ height: 2.75rem;
12
+ border-radius: var(--ar-radius-pill);
13
+ background: var(--ar-primary);
14
+ color: var(--ar-primary-content);
15
+ border: 0;
16
+ cursor: pointer;
17
+ box-shadow: var(--ar-shadow-lg);
18
+ opacity: 0;
19
+ visibility: hidden;
20
+ transform: translateY(0.5rem);
21
+ transition: all 0.3s ease;
22
+ }
23
+ .ar-scroll-top-visible {
24
+ opacity: 1;
25
+ visibility: visible;
26
+ transform: translateY(0);
27
+ }
28
+ .ar-scroll-top:hover {
29
+ background: var(--ar-neutral);
30
+ color: var(--ar-neutral-content);
31
+ transform: translateY(-0.125rem);
32
+ }
33
+ .ar-scroll-top svg {
34
+ width: 1.25rem;
35
+ height: 1.25rem;
36
+ }
@@ -0,0 +1,54 @@
1
+ /* SKELETON LOADER */
2
+ .ar-skeleton {
3
+ background: var(--ar-base-300);
4
+ border-radius: var(--ar-radius-field);
5
+ position: relative;
6
+ overflow: hidden;
7
+ }
8
+ .ar-skeleton::after {
9
+ content: "";
10
+ position: absolute;
11
+ inset: 0;
12
+ background: linear-gradient(
13
+ 90deg,
14
+ transparent 0%,
15
+ oklch(100% 0 0 / 0.08) 50%,
16
+ transparent 100%
17
+ );
18
+ animation: ar-skeleton-shimmer 1.5s ease-in-out infinite;
19
+ }
20
+ .ar-skeleton-text {
21
+ height: 1rem;
22
+ margin-bottom: var(--ar-s-2);
23
+ width: 100%;
24
+ }
25
+ .ar-skeleton-text:last-child {
26
+ width: 70%;
27
+ }
28
+ .ar-skeleton-title {
29
+ height: 1.5rem;
30
+ width: 60%;
31
+ margin-bottom: var(--ar-s-3);
32
+ }
33
+ .ar-skeleton-avatar {
34
+ width: 3rem;
35
+ height: 3rem;
36
+ border-radius: var(--ar-radius-pill);
37
+ }
38
+ .ar-skeleton-thumbnail {
39
+ width: 100%;
40
+ aspect-ratio: 16 / 9;
41
+ }
42
+ .ar-skeleton-btn {
43
+ height: 2.5rem;
44
+ width: 8rem;
45
+ border-radius: var(--ar-radius-field);
46
+ }
47
+ @keyframes ar-skeleton-shimmer {
48
+ 0% {
49
+ transform: translateX(-100%);
50
+ }
51
+ 100% {
52
+ transform: translateX(100%);
53
+ }
54
+ }
@@ -0,0 +1,45 @@
1
+ /* SWAP (theme toggle) */
2
+ .ar-swap {
3
+ position: relative;
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ width: 2rem;
8
+ height: 2rem;
9
+ cursor: pointer;
10
+ }
11
+ .ar-swap > .ar-swap-on,
12
+ .ar-swap > .ar-swap-off {
13
+ position: absolute;
14
+ transition:
15
+ opacity 0.3s ease,
16
+ transform 0.3s ease;
17
+ }
18
+ .ar-swap > .ar-swap-on {
19
+ opacity: 0;
20
+ }
21
+ .ar-swap input:checked ~ .ar-swap-on,
22
+ .ar-swap.ar-swap-active > .ar-swap-on {
23
+ opacity: 1;
24
+ }
25
+ .ar-swap input:checked ~ .ar-swap-off,
26
+ .ar-swap.ar-swap-active > .ar-swap-off {
27
+ opacity: 0;
28
+ }
29
+ .ar-swap input {
30
+ position: absolute;
31
+ opacity: 0;
32
+ pointer-events: none;
33
+ }
34
+ .ar-swap-rotate > .ar-swap-on,
35
+ .ar-swap-rotate > .ar-swap-off {
36
+ transform: rotate(0deg);
37
+ }
38
+ .ar-swap-rotate input:checked ~ .ar-swap-on,
39
+ .ar-swap-rotate.ar-swap-active > .ar-swap-on {
40
+ transform: rotate(360deg);
41
+ }
42
+ .ar-swap-rotate input:checked ~ .ar-swap-off,
43
+ .ar-swap-rotate.ar-swap-active > .ar-swap-off {
44
+ transform: rotate(-360deg);
45
+ }
@@ -0,0 +1,22 @@
1
+ /* TABLE */
2
+ .ar-table {
3
+ width: 100%;
4
+ border-collapse: collapse;
5
+ font-size: 0.875rem;
6
+ }
7
+ .ar-table th,
8
+ .ar-table td {
9
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
10
+ padding: 0.625rem 0.75rem;
11
+ text-align: left;
12
+ }
13
+ .ar-table th {
14
+ font-weight: 700;
15
+ background: var(--ar-base-200);
16
+ }
17
+ .ar-table-striped tbody tr:nth-child(odd) {
18
+ background: var(--ar-base-200);
19
+ }
20
+ .ar-table-hover tbody tr:hover {
21
+ background: var(--ar-base-300);
22
+ }
@@ -0,0 +1,24 @@
1
+ /* TABS */
2
+ .ar-tabs {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ gap: var(--ar-s-1);
6
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
7
+ }
8
+ .ar-tab {
9
+ padding: 0.625rem 1rem;
10
+ cursor: pointer;
11
+ border: 0;
12
+ background: transparent;
13
+ color: var(--ar-gray-600);
14
+ border-bottom: 2px solid transparent;
15
+ font-family: var(--ar-font-sans);
16
+ font-weight: 600;
17
+ }
18
+ .ar-tab:hover {
19
+ color: var(--ar-base-content);
20
+ }
21
+ .ar-tab-active {
22
+ color: var(--ar-primary);
23
+ border-bottom-color: var(--ar-primary);
24
+ }
@@ -0,0 +1,101 @@
1
+ /* TAG / CHIP */
2
+ .ar-tag {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ gap: var(--ar-s-1);
6
+ padding: 0.25rem 0.75rem;
7
+ border-radius: var(--ar-radius-pill);
8
+ background: var(--ar-base-200);
9
+ color: var(--ar-base-content);
10
+ font-size: 0.8125rem;
11
+ font-weight: 500;
12
+ line-height: 1.4;
13
+ white-space: nowrap;
14
+ }
15
+ .ar-tag-primary {
16
+ background: var(--ar-primary);
17
+ color: var(--ar-primary-content);
18
+ }
19
+ .ar-tag-secondary {
20
+ background: var(--ar-secondary);
21
+ color: var(--ar-secondary-content);
22
+ }
23
+ .ar-tag-accent {
24
+ background: var(--ar-accent);
25
+ color: var(--ar-accent-content);
26
+ }
27
+ .ar-tag-neutral {
28
+ background: var(--ar-neutral);
29
+ color: var(--ar-neutral-content);
30
+ }
31
+ .ar-tag-info {
32
+ background: var(--ar-info);
33
+ color: var(--ar-info-content);
34
+ }
35
+ .ar-tag-success {
36
+ background: var(--ar-success);
37
+ color: var(--ar-success-content);
38
+ }
39
+ .ar-tag-warning {
40
+ background: var(--ar-warning);
41
+ color: var(--ar-warning-content);
42
+ }
43
+ .ar-tag-error {
44
+ background: var(--ar-error);
45
+ color: var(--ar-error-content);
46
+ }
47
+ .ar-tag-outline {
48
+ background: transparent;
49
+ border: var(--ar-border-width) solid currentColor;
50
+ }
51
+ .ar-tag-outline.ar-tag-primary {
52
+ color: var(--ar-primary);
53
+ }
54
+ .ar-tag-outline.ar-tag-secondary {
55
+ color: var(--ar-secondary);
56
+ }
57
+ .ar-tag-outline.ar-tag-accent {
58
+ color: var(--ar-accent);
59
+ }
60
+ .ar-tag-outline.ar-tag-neutral {
61
+ color: var(--ar-neutral);
62
+ }
63
+ .ar-tag-outline.ar-tag-info {
64
+ color: var(--ar-info);
65
+ }
66
+ .ar-tag-outline.ar-tag-success {
67
+ color: var(--ar-success);
68
+ }
69
+ .ar-tag-outline.ar-tag-warning {
70
+ color: var(--ar-warning);
71
+ }
72
+ .ar-tag-outline.ar-tag-error {
73
+ color: var(--ar-error);
74
+ }
75
+ .ar-tag-lg {
76
+ padding: 0.375rem 1rem;
77
+ font-size: 0.875rem;
78
+ }
79
+ .ar-tag-sm {
80
+ padding: 0.125rem 0.5rem;
81
+ font-size: 0.75rem;
82
+ }
83
+ .ar-tag-close {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ width: 1rem;
88
+ height: 1rem;
89
+ border-radius: var(--ar-radius-pill);
90
+ background: transparent;
91
+ border: 0;
92
+ color: inherit;
93
+ opacity: 0.6;
94
+ cursor: pointer;
95
+ padding: 0;
96
+ font-size: 0.875rem;
97
+ line-height: 1;
98
+ }
99
+ .ar-tag-close:hover {
100
+ opacity: 1;
101
+ }
@@ -0,0 +1,34 @@
1
+ /* TEXTURED TEXT & ANIMATION */
2
+ .ar-bg-img {
3
+ color: transparent;
4
+ background-image: var(--ar-texture);
5
+ background-size: cover;
6
+ -webkit-background-clip: text;
7
+ background-clip: text;
8
+ -webkit-text-fill-color: var(--ar-bg-img-fill, transparent);
9
+ }
10
+ .ar-bounce {
11
+ animation: ar-bounce 1s infinite;
12
+ }
13
+ @keyframes ar-bounce {
14
+ 0%,
15
+ 100% {
16
+ transform: translateY(0);
17
+ }
18
+ 50% {
19
+ transform: translateY(-0.25rem);
20
+ }
21
+ }
22
+ .ar-animate-fade-in {
23
+ animation: ar-fade-in 0.4s ease-out forwards;
24
+ }
25
+ @keyframes ar-fade-in {
26
+ from {
27
+ opacity: 0;
28
+ transform: translateY(1.25rem);
29
+ }
30
+ to {
31
+ opacity: 1;
32
+ transform: translateY(0);
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ /* TIMELINE */
2
+ .ar-timeline {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--ar-s-4);
6
+ padding-left: 0;
7
+ list-style: none;
8
+ }
9
+ .ar-timeline-item {
10
+ position: relative;
11
+ padding-left: var(--ar-s-8);
12
+ }
13
+ .ar-timeline-item::before {
14
+ content: "";
15
+ position: absolute;
16
+ left: 0.375rem;
17
+ top: 0.25rem;
18
+ width: 0.75rem;
19
+ height: 0.75rem;
20
+ border-radius: var(--ar-radius-pill);
21
+ background: var(--ar-primary);
22
+ }
23
+ .ar-timeline-item::after {
24
+ content: "";
25
+ position: absolute;
26
+ left: 0.65625rem;
27
+ top: 1.25rem;
28
+ bottom: -1.5rem;
29
+ width: 2px;
30
+ background: var(--ar-base-300);
31
+ }
32
+ .ar-timeline-item:last-child::after {
33
+ display: none;
34
+ }
@@ -0,0 +1,134 @@
1
+ /* TOAST / SNACKBAR */
2
+ .ar-toast-container {
3
+ position: fixed;
4
+ z-index: 100;
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--ar-s-2);
8
+ pointer-events: none;
9
+ }
10
+ .ar-toast-container[data-ar-toast-position="top-left"] {
11
+ top: var(--ar-s-4);
12
+ left: var(--ar-s-4);
13
+ }
14
+ .ar-toast-container[data-ar-toast-position="top-center"] {
15
+ top: var(--ar-s-4);
16
+ left: 50%;
17
+ transform: translateX(-50%);
18
+ }
19
+ .ar-toast-container[data-ar-toast-position="top-right"] {
20
+ top: var(--ar-s-4);
21
+ right: var(--ar-s-4);
22
+ }
23
+ .ar-toast-container[data-ar-toast-position="bottom-left"] {
24
+ bottom: var(--ar-s-4);
25
+ left: var(--ar-s-4);
26
+ }
27
+ .ar-toast-container[data-ar-toast-position="bottom-center"] {
28
+ bottom: var(--ar-s-4);
29
+ left: 50%;
30
+ transform: translateX(-50%);
31
+ }
32
+ .ar-toast-container[data-ar-toast-position="bottom-right"] {
33
+ bottom: var(--ar-s-4);
34
+ right: var(--ar-s-4);
35
+ }
36
+ .ar-toast {
37
+ display: flex;
38
+ align-items: center;
39
+ gap: var(--ar-s-3);
40
+ min-width: 18rem;
41
+ max-width: 24rem;
42
+ padding: var(--ar-s-3) var(--ar-s-4);
43
+ border-radius: var(--ar-radius-box);
44
+ background: var(--ar-base-100);
45
+ color: var(--ar-base-content);
46
+ box-shadow: var(--ar-shadow-lg);
47
+ border: var(--ar-border-width) solid var(--ar-base-300);
48
+ pointer-events: auto;
49
+ opacity: 0;
50
+ transform: translateY(-0.5rem);
51
+ animation: ar-toast-in 0.3s ease-out forwards;
52
+ }
53
+ .ar-toast-container[data-ar-toast-position="bottom-left"] .ar-toast,
54
+ .ar-toast-container[data-ar-toast-position="bottom-center"] .ar-toast,
55
+ .ar-toast-container[data-ar-toast-position="bottom-right"] .ar-toast {
56
+ transform: translateY(0.5rem);
57
+ }
58
+ .ar-toast.ar-toast-out {
59
+ animation: ar-toast-out 0.2s ease-in forwards;
60
+ }
61
+ .ar-toast-info {
62
+ background: var(--ar-info);
63
+ color: var(--ar-info-content);
64
+ border-color: var(--ar-info);
65
+ }
66
+ .ar-toast-success {
67
+ background: var(--ar-success);
68
+ color: var(--ar-success-content);
69
+ border-color: var(--ar-success);
70
+ }
71
+ .ar-toast-warning {
72
+ background: var(--ar-warning);
73
+ color: var(--ar-warning-content);
74
+ border-color: var(--ar-warning);
75
+ }
76
+ .ar-toast-error {
77
+ background: var(--ar-error);
78
+ color: var(--ar-error-content);
79
+ border-color: var(--ar-error);
80
+ }
81
+ .ar-toast-icon {
82
+ flex-shrink: 0;
83
+ width: 1.25rem;
84
+ height: 1.25rem;
85
+ }
86
+ .ar-toast-message {
87
+ flex: 1;
88
+ font-size: 0.875rem;
89
+ line-height: 1.4;
90
+ }
91
+ .ar-toast-close {
92
+ flex-shrink: 0;
93
+ background: transparent;
94
+ border: 0;
95
+ color: inherit;
96
+ opacity: 0.6;
97
+ cursor: pointer;
98
+ padding: 0;
99
+ font-size: 1.125rem;
100
+ line-height: 1;
101
+ }
102
+ .ar-toast-close:hover {
103
+ opacity: 1;
104
+ }
105
+ .ar-toast-progress {
106
+ position: absolute;
107
+ bottom: 0;
108
+ left: 0;
109
+ height: 3px;
110
+ background: currentColor;
111
+ opacity: 0.4;
112
+ border-radius: 0 0 var(--ar-radius-box) var(--ar-radius-box);
113
+ animation: ar-toast-progress linear forwards;
114
+ }
115
+ @keyframes ar-toast-in {
116
+ to {
117
+ opacity: 1;
118
+ transform: translateY(0);
119
+ }
120
+ }
121
+ @keyframes ar-toast-out {
122
+ to {
123
+ opacity: 0;
124
+ transform: translateY(-0.5rem);
125
+ }
126
+ }
127
+ @keyframes ar-toast-progress {
128
+ from {
129
+ width: 100%;
130
+ }
131
+ to {
132
+ width: 0%;
133
+ }
134
+ }
@@ -0,0 +1,24 @@
1
+ /* TOOLTIP */
2
+ .ar-tooltip {
3
+ position: relative;
4
+ }
5
+ .ar-tooltip[data-tip]::after {
6
+ content: attr(data-tip);
7
+ position: absolute;
8
+ z-index: 30;
9
+ bottom: calc(100% + 0.5rem);
10
+ left: 50%;
11
+ transform: translateX(-50%);
12
+ padding: 0.25rem 0.625rem;
13
+ border-radius: var(--ar-radius-field);
14
+ background: var(--ar-neutral);
15
+ color: var(--ar-neutral-content);
16
+ font-size: 0.75rem;
17
+ white-space: nowrap;
18
+ opacity: 0;
19
+ pointer-events: none;
20
+ transition: opacity 0.2s;
21
+ }
22
+ .ar-tooltip:hover[data-tip]::after {
23
+ opacity: 1;
24
+ }