@adn-ui/styles 0.0.0-canary-20260117164310

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 (49) hide show
  1. package/README.md +3 -0
  2. package/package.json +54 -0
  3. package/src/components/accordion.css +49 -0
  4. package/src/components/alert-dialog.css +52 -0
  5. package/src/components/alert.css +46 -0
  6. package/src/components/autocomplete.css +52 -0
  7. package/src/components/avatar.css +24 -0
  8. package/src/components/button-group.css +16 -0
  9. package/src/components/button.css +78 -0
  10. package/src/components/card.css +31 -0
  11. package/src/components/checkbox-group.css +4 -0
  12. package/src/components/checkbox.css +32 -0
  13. package/src/components/chip.css +40 -0
  14. package/src/components/collapsible.css +36 -0
  15. package/src/components/combobox.css +54 -0
  16. package/src/components/context-menu.css +34 -0
  17. package/src/components/dialog.css +53 -0
  18. package/src/components/drawer.css +84 -0
  19. package/src/components/field.css +12 -0
  20. package/src/components/fieldset.css +9 -0
  21. package/src/components/form.css +4 -0
  22. package/src/components/index.css +44 -0
  23. package/src/components/input.css +35 -0
  24. package/src/components/label.css +9 -0
  25. package/src/components/link.css +18 -0
  26. package/src/components/list.css +4 -0
  27. package/src/components/menu.css +48 -0
  28. package/src/components/meter.css +72 -0
  29. package/src/components/navbar.css +36 -0
  30. package/src/components/navigation-menu.css +45 -0
  31. package/src/components/number-field.css +46 -0
  32. package/src/components/popover.css +51 -0
  33. package/src/components/preview-card.css +16 -0
  34. package/src/components/progress.css +72 -0
  35. package/src/components/radio.css +31 -0
  36. package/src/components/scroll-area.css +3 -0
  37. package/src/components/select.css +82 -0
  38. package/src/components/separator.css +12 -0
  39. package/src/components/sidebar.css +68 -0
  40. package/src/components/slider.css +25 -0
  41. package/src/components/spinner.css +38 -0
  42. package/src/components/switch.css +40 -0
  43. package/src/components/table.css +32 -0
  44. package/src/components/tabs.css +45 -0
  45. package/src/components/text.css +4 -0
  46. package/src/components/toast.css +0 -0
  47. package/src/components/toggle-button.css +8 -0
  48. package/src/components/tooltip.css +41 -0
  49. package/src/styles.css +136 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # FeaUI Styles
2
+
3
+ This package contains the core styles and design tokens for the FeaUI component library. It provides a consistent look and feel across all components and can be easily integrated into your projects.
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@adn-ui/styles",
3
+ "version": "0.0.0-canary-20260117164310",
4
+ "description": "FeaUI Styles - Tailwind CSS styles for FeaUI components",
5
+ "keywords": [
6
+ "adn-ui",
7
+ "components",
8
+ "design-system",
9
+ "react",
10
+ "styles",
11
+ "tailwind",
12
+ "ui"
13
+ ],
14
+ "homepage": "https://ui.aydinthefirst.com",
15
+ "bugs": {
16
+ "url": "https://github.com/aydinthefirst/adn-ui/issues"
17
+ },
18
+ "license": "MIT",
19
+ "author": "Halil Aydın <aydinhalil980@gmail.com>",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/AydinTheFirst/adn-ui.git",
23
+ "directory": "packages/styles"
24
+ },
25
+ "files": [
26
+ "src"
27
+ ],
28
+ "type": "module",
29
+ "sideEffects": false,
30
+ "exports": {
31
+ ".": {
32
+ "style": "./src/styles.css",
33
+ "default": "./src/styles.css"
34
+ }
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "scripts": {
40
+ "build:css": "bunx @tailwindcss/cli -i src/styles.css -o dist/index.css --minify",
41
+ "format": "oxfmt",
42
+ "gen:exports": "bun run scripts/gen-exports.mjs",
43
+ "lint": "oxlint"
44
+ },
45
+ "devDependencies": {
46
+ "@types/bun": "^1.3.5",
47
+ "oxfmt": "^0.24.0",
48
+ "oxlint": "^1.39.0",
49
+ "tailwindcss": "^4.1.18"
50
+ },
51
+ "peerDependencies": {
52
+ "tailwindcss": ">=4.0.0"
53
+ }
54
+ }
@@ -0,0 +1,49 @@
1
+ .accordion {
2
+ @apply flex w-full max-w-md flex-col justify-center;
3
+ @apply bg-surface/10 shadow;
4
+ }
5
+
6
+ .accordion__trigger {
7
+ @apply cursor-pointer;
8
+
9
+ @apply bg-surface border-b px-3 py-2 text-left font-medium;
10
+
11
+ @apply flex w-full items-center justify-between;
12
+
13
+ @apply transition-colors motion-reduce:transition-none;
14
+
15
+ &:hover {
16
+ @apply bg-primary/10;
17
+ }
18
+
19
+ &:focus {
20
+ @apply outline-none;
21
+ }
22
+ }
23
+
24
+ .accordion__trigger-icon {
25
+ @apply text-muted-foreground size-5;
26
+
27
+ @apply transition-transform duration-300 motion-reduce:transition-none;
28
+
29
+ [data-panel-open] > & {
30
+ @apply rotate-180;
31
+ }
32
+ }
33
+
34
+ .accordion__panel {
35
+ height: var(--accordion-panel-height);
36
+
37
+ @apply overflow-hidden;
38
+
39
+ @apply transition-[height] motion-reduce:transition-none;
40
+
41
+ &[data-ending-style],
42
+ &[data-starting-style] {
43
+ @apply h-0;
44
+ }
45
+ }
46
+
47
+ .accordion__content {
48
+ @apply p-4;
49
+ }
@@ -0,0 +1,52 @@
1
+ /** Base Styling */
2
+ .alert-dialog__backdrop {
3
+ @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
4
+
5
+ @apply transition-opacity motion-reduce:transition-none;
6
+
7
+ &[data-starting-style],
8
+ &[data-ending-style] {
9
+ @apply opacity-0;
10
+ }
11
+ }
12
+
13
+ .alert-dialog__popup {
14
+ @apply w-full max-w-lg px-2;
15
+
16
+ @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
17
+
18
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
19
+
20
+ &[data-starting-style],
21
+ &[data-ending-style] {
22
+ @apply scale-95 opacity-0;
23
+ }
24
+ }
25
+
26
+ .alert-dialog__content {
27
+ @apply bg-surface text-surface-foreground rounded border p-4 shadow;
28
+ }
29
+
30
+ .alert-dialog__title {
31
+ @apply text-lg font-semibold;
32
+ }
33
+
34
+ .alert-dialog__description {
35
+ @apply text-muted-foreground text-sm;
36
+ }
37
+
38
+ .alert-dialog__close {
39
+ @apply cursor-pointer;
40
+
41
+ @apply absolute top-3 right-5;
42
+
43
+ svg {
44
+ @apply text-muted-foreground size-5;
45
+
46
+ @apply transition-colors motion-reduce:transition-none;
47
+
48
+ &:hover {
49
+ @apply text-foreground;
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,46 @@
1
+ .alert {
2
+ @apply bg-surface/10 flex items-start justify-between rounded border p-5 shadow;
3
+
4
+ @apply w-full;
5
+ }
6
+
7
+ .alert__indicator {
8
+ @apply mt-1 mr-4 shrink-0;
9
+
10
+ svg {
11
+ @apply size-5;
12
+ }
13
+ }
14
+
15
+ .alert__content {
16
+ @apply flex flex-1 flex-col gap-1;
17
+ }
18
+
19
+ .alert__title {
20
+ @apply font-medium;
21
+ }
22
+
23
+ .alert__description {
24
+ @apply text-muted-foreground text-sm;
25
+ }
26
+
27
+ /* Variants */
28
+ .alert--primary {
29
+ @apply text-primary;
30
+ }
31
+
32
+ .alert--danger {
33
+ @apply text-red-500;
34
+ }
35
+
36
+ .alert--success {
37
+ @apply text-green-500;
38
+ }
39
+
40
+ .alert--warning {
41
+ @apply text-yellow-500;
42
+ }
43
+
44
+ .alert--info {
45
+ @apply text-blue-500;
46
+ }
@@ -0,0 +1,52 @@
1
+ .autocomplete__input {
2
+ @apply bg-input text-input-foreground hover-safe:bg-input/80 rounded border shadow;
3
+ @apply h-10 w-fit px-3 py-2;
4
+
5
+ &::placeholder {
6
+ @apply text-muted-foreground;
7
+ }
8
+
9
+ &:focus-visible {
10
+ @apply status-focused;
11
+ }
12
+ }
13
+
14
+ .autocomplete__positioner {
15
+ @apply outline-0;
16
+ }
17
+
18
+ .autocomplete__popup {
19
+ width: var(--anchor-width);
20
+ max-width: var(--available-width);
21
+
22
+ @apply bg-surface text-surface-foreground rounded border shadow;
23
+
24
+ @apply px-3 py-2;
25
+
26
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
27
+
28
+ &[data-starting-style],
29
+ &[data-ending-style] {
30
+ @apply scale-95 opacity-0;
31
+ }
32
+ }
33
+
34
+ .autocomplete__list {
35
+ @apply max-h-56 scroll-p-2 overflow-y-auto overscroll-contain;
36
+ }
37
+
38
+ .autocomplete__item {
39
+ @apply cursor-pointer;
40
+
41
+ @apply hover-safe:bg-primary hover-safe:text-primary-foreground;
42
+
43
+ @apply rounded px-2 py-1;
44
+ }
45
+
46
+ .autocomplete__separator {
47
+ @apply bg-border my-2 h-px;
48
+ }
49
+
50
+ .autocomplete__empty {
51
+ @apply text-muted-foreground px-2 py-1 text-sm;
52
+ }
@@ -0,0 +1,24 @@
1
+ /** Base Styling */
2
+ .avatar {
3
+ @apply bg-secondary text-secondary-foreground inline-flex items-center justify-center overflow-hidden rounded-full align-middle select-none;
4
+ }
5
+
6
+ .avatar--sm {
7
+ @apply size-10;
8
+ }
9
+
10
+ .avatar--md {
11
+ @apply size-12;
12
+ }
13
+
14
+ .avatar--lg {
15
+ @apply size-14;
16
+ }
17
+
18
+ .avatar__image {
19
+ @apply h-full w-full object-cover;
20
+ }
21
+
22
+ .avatar__fallback {
23
+ @apply flex h-full w-full items-center justify-center;
24
+ }
@@ -0,0 +1,16 @@
1
+ /** Base Styling */
2
+ .button-group {
3
+ @apply inline-flex items-center;
4
+ }
5
+
6
+ .button-group .button {
7
+ @apply rounded-none;
8
+
9
+ &:first-child {
10
+ @apply rounded-l;
11
+ }
12
+
13
+ &:last-child {
14
+ @apply rounded-r;
15
+ }
16
+ }
@@ -0,0 +1,78 @@
1
+ /** Base Styling */
2
+ .button {
3
+ @apply cursor-pointer;
4
+
5
+ @apply border-border inline-flex items-center justify-center gap-2 rounded font-medium text-nowrap;
6
+
7
+ @apply w-fit px-3 py-2;
8
+
9
+ @apply transition-[scale,background-color] motion-reduce:transition-none;
10
+
11
+ &[data-focused] {
12
+ @apply status-focused;
13
+ }
14
+
15
+ &:active {
16
+ @apply scale-95;
17
+ }
18
+
19
+ &[data-disabled] {
20
+ @apply status-disabled;
21
+ }
22
+
23
+ &[data-pending] {
24
+ @apply status-pending;
25
+ }
26
+
27
+ svg {
28
+ @apply size-5 shrink-0;
29
+ }
30
+ }
31
+
32
+ .button--sm {
33
+ @apply h-8 text-sm;
34
+
35
+ svg {
36
+ @apply size-4;
37
+ }
38
+ }
39
+
40
+ .button--md {
41
+ @apply h-10;
42
+ }
43
+
44
+ .button--lg {
45
+ @apply h-12;
46
+ }
47
+
48
+ .button--primary {
49
+ @apply bg-primary text-primary-foreground hover-safe:bg-primary/90;
50
+ }
51
+
52
+ .button--secondary {
53
+ @apply bg-secondary text-secondary-foreground hover-safe:bg-secondary/80;
54
+ }
55
+
56
+ .button--outline {
57
+ @apply bg-background text-foreground hover-safe:bg-secondary;
58
+ }
59
+
60
+ .button--danger {
61
+ @apply bg-danger text-danger-foreground hover-safe:bg-danger/90;
62
+ }
63
+
64
+ .button--ghost {
65
+ @apply text-foreground hover-safe:bg-secondary border-0 bg-transparent;
66
+ }
67
+
68
+ .button--icon-only {
69
+ @apply size-10;
70
+ }
71
+
72
+ .button--icon-only.button--sm {
73
+ @apply size-8;
74
+ }
75
+
76
+ .button--icon-only.button--lg {
77
+ @apply size-12;
78
+ }
@@ -0,0 +1,31 @@
1
+ /** Base Styling */
2
+ .card {
3
+ @apply w-full max-w-md rounded shadow;
4
+ @apply flex flex-col gap-4 p-5;
5
+ }
6
+
7
+ /** Slots */
8
+ .card__header {
9
+ @apply flex flex-col gap-1;
10
+ }
11
+
12
+ .card__title {
13
+ @apply text-xl font-bold;
14
+ }
15
+
16
+ .card__description {
17
+ @apply text-muted-foreground text-base;
18
+ }
19
+
20
+ .card__content {
21
+ @apply flex flex-1 flex-col gap-3;
22
+ }
23
+
24
+ /** Variants */
25
+ .card--default {
26
+ @apply bg-surface text-surface-foreground;
27
+ }
28
+
29
+ .card--transparent {
30
+ @apply bg-transparent;
31
+ }
@@ -0,0 +1,4 @@
1
+ /** Base Styling */
2
+ .checkbox-group {
3
+ @apply flex flex-col gap-4;
4
+ }
@@ -0,0 +1,32 @@
1
+ /** Base Styling */
2
+ .checkbox {
3
+ @apply flex items-center justify-center rounded border;
4
+
5
+ @apply size-6 outline-none;
6
+
7
+ @apply transition-[visibility] motion-reduce:transition-none;
8
+
9
+ &[data-unchecked] {
10
+ @apply bg-input/50;
11
+ }
12
+
13
+ &[data-checked] {
14
+ @apply bg-input;
15
+ }
16
+
17
+ &:focus-visible {
18
+ @apply status-focused;
19
+ }
20
+ }
21
+
22
+ .checkbox__indicator {
23
+ @apply text-input-foreground flex;
24
+
25
+ &[data-unchecked] {
26
+ @apply hidden;
27
+ }
28
+
29
+ & svg {
30
+ @apply size-4;
31
+ }
32
+ }
@@ -0,0 +1,40 @@
1
+ /** Base Styling */
2
+ .chip {
3
+ @apply inline-flex items-center justify-center gap-2 rounded-full border px-2 font-medium text-nowrap;
4
+ }
5
+
6
+ .chip--sm {
7
+ @apply h-4 text-sm;
8
+ }
9
+
10
+ .chip--md {
11
+ @apply h-6;
12
+ }
13
+
14
+ .chip--lg {
15
+ @apply h-8;
16
+ }
17
+
18
+ .chip--primary {
19
+ @apply bg-primary text-primary-foreground;
20
+ }
21
+
22
+ .chip--secondary {
23
+ @apply bg-secondary text-secondary-foreground;
24
+ }
25
+
26
+ .chip--outline {
27
+ @apply bg-transparent;
28
+ }
29
+
30
+ .chip--danger {
31
+ @apply bg-danger text-danger-foreground;
32
+ }
33
+
34
+ .chip--ghost {
35
+ @apply border-none bg-transparent;
36
+ }
37
+
38
+ .chip--success {
39
+ @apply bg-success text-success-foreground;
40
+ }
@@ -0,0 +1,36 @@
1
+ .collapsible {
2
+ @apply w-full max-w-md;
3
+ }
4
+
5
+ .collapsible__trigger {
6
+ @apply cursor-pointer;
7
+
8
+ @apply flex items-center gap-1;
9
+ }
10
+
11
+ .collapsible__trigger-icon {
12
+ @apply text-muted-foreground size-5;
13
+
14
+ @apply transition-transform motion-reduce:transition-none;
15
+
16
+ .collapsible__trigger[data-panel-open] & {
17
+ @apply rotate-90;
18
+ }
19
+ }
20
+
21
+ .collapsible__panel {
22
+ height: var(--collapsible-panel-height);
23
+
24
+ @apply overflow-hidden;
25
+
26
+ @apply transition-[height] motion-reduce:transition-none;
27
+
28
+ &[hidden]:not([hidden="until-found"]) {
29
+ @apply hidden;
30
+ }
31
+
32
+ &[data-starting-style],
33
+ &[data-ending-style] {
34
+ height: 0;
35
+ }
36
+ }
@@ -0,0 +1,54 @@
1
+ .combobox__input {
2
+ @apply bg-input text-input-foreground hover-safe:bg-input/80 rounded border shadow;
3
+ @apply h-10 w-fit px-3 py-2;
4
+
5
+ &::placeholder {
6
+ @apply text-muted-foreground;
7
+ }
8
+
9
+ &:focus-visible {
10
+ @apply status-focused;
11
+ }
12
+ }
13
+
14
+ .combobox__positioner {
15
+ @apply outline-0;
16
+ }
17
+
18
+ .combobox__popup {
19
+ width: var(--anchor-width);
20
+ max-width: var(--available-width);
21
+
22
+ @apply bg-surface text-surface-foreground rounded border shadow;
23
+
24
+ @apply px-3 py-2;
25
+
26
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
27
+
28
+ &[data-starting-style],
29
+ &[data-ending-style] {
30
+ @apply scale-95 opacity-0;
31
+ }
32
+ }
33
+
34
+ .combobox__list {
35
+ @apply max-h-56 scroll-p-2 overflow-y-auto overscroll-contain;
36
+ }
37
+
38
+ .combobox__item {
39
+ @apply cursor-pointer;
40
+
41
+ @apply flex items-center gap-2;
42
+
43
+ @apply hover-safe:bg-primary hover-safe:text-primary-foreground;
44
+
45
+ @apply rounded px-2 py-1;
46
+ }
47
+
48
+ .combobox__separator {
49
+ @apply bg-border my-2 h-px;
50
+ }
51
+
52
+ .autocomplete__empty {
53
+ @apply text-muted-foreground px-2 py-1 text-sm;
54
+ }
@@ -0,0 +1,34 @@
1
+ .context-menu__trigger {
2
+ @apply select-none;
3
+ }
4
+
5
+ .context-menu__positioner {
6
+ @apply outline-0;
7
+ }
8
+
9
+ .context-menu__popup {
10
+ transform-origin: var(--transform-origin);
11
+
12
+ @apply bg-surface text-surface-foreground rounded border p-3 shadow;
13
+
14
+ @apply transition-[transform,scale,opacity] motion-reduce:transition-none;
15
+
16
+ &[data-starting-style],
17
+ &[data-ending-style] {
18
+ @apply scale-90 opacity-0;
19
+ }
20
+ }
21
+
22
+ .context-menu__item {
23
+ @apply cursor-pointer;
24
+
25
+ @apply flex items-center gap-2;
26
+
27
+ @apply hover-safe:bg-primary hover-safe:text-primary-foreground;
28
+
29
+ @apply rounded px-2 py-1;
30
+ }
31
+
32
+ .context-menu__separator {
33
+ @apply bg-border my-2 h-px;
34
+ }
@@ -0,0 +1,53 @@
1
+ /** Base Styling */
2
+
3
+ .dialog__backdrop {
4
+ @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
5
+
6
+ @apply transition-opacity motion-reduce:transition-none;
7
+
8
+ &[data-starting-style],
9
+ &[data-ending-style] {
10
+ @apply opacity-0;
11
+ }
12
+ }
13
+
14
+ .dialog__popup {
15
+ @apply w-full max-w-lg px-2;
16
+
17
+ @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
18
+
19
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
20
+
21
+ &[data-starting-style],
22
+ &[data-ending-style] {
23
+ @apply scale-95 opacity-0;
24
+ }
25
+ }
26
+
27
+ .dialog__content {
28
+ @apply bg-surface text-surface-foreground rounded border p-4 shadow;
29
+ }
30
+
31
+ .dialog__title {
32
+ @apply text-lg font-semibold;
33
+ }
34
+
35
+ .dialog__description {
36
+ @apply text-muted-foreground text-sm;
37
+ }
38
+
39
+ .dialog__close {
40
+ @apply cursor-pointer;
41
+
42
+ @apply absolute top-3 right-5;
43
+
44
+ svg {
45
+ @apply text-muted-foreground size-5;
46
+
47
+ @apply transition-colors motion-reduce:transition-none;
48
+
49
+ &:hover {
50
+ @apply text-foreground;
51
+ }
52
+ }
53
+ }