dolphincss 1.0.1 → 1.0.2

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.
@@ -0,0 +1,108 @@
1
+ /* ===== Global Glowing Effects ===== */
2
+ .glow {
3
+ --glow-color: var(--color-primary);
4
+ --glow-intensity: 0.2;
5
+ --glow-spread: 15px;
6
+ --glow-blur: 8px;
7
+ @apply transition-all duration-300;
8
+ }
9
+
10
+ /* Glow on hover */
11
+ .glow:hover {
12
+ box-shadow: 0 0 var(--glow-spread) var(--glow-blur) color-mix(in oklch, var(--glow-color) calc(var(--glow-intensity) * 100%), transparent);
13
+ }
14
+
15
+ /* Glow on focus */
16
+ .glow:focus {
17
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--glow-color) 20%, transparent);
18
+ }
19
+
20
+ /* Color variants */
21
+ .glow.primary {
22
+ --glow-color: var(--color-primary);
23
+ }
24
+
25
+ .glow.secondary {
26
+ --glow-color: var(--color-secondary);
27
+ }
28
+
29
+ .glow.success {
30
+ --glow-color: var(--color-success);
31
+ }
32
+
33
+ .glow.warning {
34
+ --glow-color: var(--color-warning);
35
+ }
36
+
37
+ .glow.danger {
38
+ --glow-color: var(--color-danger);
39
+ }
40
+
41
+ .glow.info {
42
+ --glow-color: var(--color-info);
43
+ }
44
+
45
+ /* Intensity variants */
46
+ .glow.strong {
47
+ --glow-intensity: 0.4;
48
+ --glow-spread: 25px;
49
+ }
50
+
51
+ .glow.subtle {
52
+ --glow-intensity: 0.15;
53
+ --glow-spread: 10px;
54
+ }
55
+
56
+ /* Pulsing glow */
57
+ .glow.pulse {
58
+ animation: dolphin-glow-pulse 3s ease-in-out infinite;
59
+ }
60
+
61
+ @keyframes dolphin-glow-pulse {
62
+ 0%, 100% {
63
+ box-shadow: 0 0 5px 2px color-mix(in oklch, var(--glow-color) 15%, transparent);
64
+ }
65
+ 50% {
66
+ box-shadow: 0 0 20px 8px color-mix(in oklch, var(--glow-color) 25%, transparent);
67
+ }
68
+ }
69
+
70
+ /* Wave glow */
71
+ .glow.wave {
72
+ animation: ocean-wave 4s ease-in-out infinite;
73
+ }
74
+
75
+ @keyframes ocean-wave {
76
+ 0%, 100% {
77
+ box-shadow:
78
+ 0 0 10px 3px color-mix(in oklch, var(--color-primary) 20%, transparent),
79
+ 0 0 20px 6px color-mix(in oklch, var(--color-info) 15%, transparent);
80
+ }
81
+ 50% {
82
+ box-shadow:
83
+ 0 0 15px 5px color-mix(in oklch, var(--color-primary) 25%, transparent),
84
+ 0 0 25px 8px color-mix(in oklch, var(--color-info) 20%, transparent);
85
+ }
86
+ }
87
+
88
+ /* For inputs, we want to override the focus glow if the input has the glow class */
89
+ .floatinglabel-input.glow:focus {
90
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--glow-color) 20%, transparent);
91
+ }
92
+
93
+ /* Ensure that the glow effect is not applied to disabled elements */
94
+ .glow:disabled {
95
+ box-shadow: none !important;
96
+ }
97
+
98
+ /* Responsive glow - reduce on mobile */
99
+ @media (max-width: 768px) {
100
+ .glow:hover {
101
+ --glow-spread: 12px;
102
+ --glow-blur: 6px;
103
+ }
104
+
105
+ .glow:focus {
106
+ box-shadow: 0 0 0 2px color-mix(in oklch, var(--glow-color) 20%, transparent);
107
+ }
108
+ }
@@ -0,0 +1,13 @@
1
+
2
+ /* ===== Gradient Background ===== */
3
+ @layer components {
4
+ .gradient-bg {
5
+ @apply transition-all duration-500 rounded-md bg-no-repeat text-(--color-text);
6
+ background-size: 200% 200%;
7
+ }
8
+ .gradient-bg.primary { background-image: var(--gradient-primary) !important; }
9
+ .gradient-bg.success { background-image: var(--gradient-success) !important; }
10
+ .gradient-bg.warning { background-image: var(--gradient-warning) !important; }
11
+ .gradient-bg.danger { background-image: var(--gradient-danger) !important; }
12
+ .gradient-bg.info { background-image: var(--gradient-info) !important; }
13
+ }
@@ -0,0 +1,41 @@
1
+ /* Inputs with left icon */
2
+ @layer components {
3
+ .input-icon-left {
4
+ @apply relative w-full;
5
+ }
6
+ .input-icon-left > svg {
7
+ @apply absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-(--color-text-muted);
8
+ }
9
+ .input-icon-left > input,
10
+ .input-icon-left > select {
11
+ @apply w-full pl-10 pr-3 py-2 rounded-md transition-all duration-200;
12
+ }
13
+
14
+ /* Inputs with right icon */
15
+ .input-icon-right {
16
+ @apply relative w-full;
17
+ }
18
+ .input-icon-right > svg {
19
+ @apply absolute right-3 top-1/2 -translate-y-1/2 w-5 h-5 text-(--color-text-muted);
20
+ }
21
+ .input-icon-right > input,
22
+ .input-icon-right > select {
23
+ @apply w-full pl-3 pr-10 py-2 rounded-md transition-all duration-200;
24
+ }
25
+
26
+ /* Buttons with left icon */
27
+ .button-icon-left {
28
+ @apply relative inline-flex items-center justify-center gap-2;
29
+ }
30
+ .button-icon-left > svg {
31
+ @apply w-5 h-5;
32
+ }
33
+
34
+ /* Buttons with right icon */
35
+ .button-icon-right {
36
+ @apply relative inline-flex items-center justify-center gap-2;
37
+ }
38
+ .button-icon-right > svg {
39
+ @apply w-5 h-5 order-last;
40
+ }
41
+ }
@@ -0,0 +1,27 @@
1
+ /* ===== KPI Card System ===== */
2
+ @layer components {
3
+ .kpi-card {
4
+ @apply flex items-center justify-between p-4 rounded-xl shadow-md transition-all duration-300 hover:shadow-xl bg-(--color-surface) text-(--color-text);
5
+ }
6
+ .kpi-card .kpi-text { @apply flex flex-col; }
7
+ .kpi-card .kpi-text .kpi-title { @apply text-sm text-(--color-text-muted); }
8
+ .kpi-card .kpi-text .kpi-value { @apply text-2xl font-bold text-(--color-text); }
9
+ .kpi-card .kpi-text .kpi-change { @apply text-sm font-medium mt-1; }
10
+ .kpi-card .kpi-text .kpi-change.positive { @apply text-(--color-success); }
11
+ .kpi-card .kpi-text .kpi-change.negative { @apply text-(--color-danger); }
12
+ .kpi-card .kpi-chart {
13
+ @apply w-16 h-16 rounded-xl flex items-center justify-center transition-all duration-300 shadow-inner bg-(--color-primary) text-(--color-text);
14
+ position: relative;
15
+ overflow: hidden;
16
+ }
17
+ .kpi-card .kpi-chart::before {
18
+ content: '';
19
+ @apply absolute bottom-1 left-1 w-[calc(100%-0.5rem)] h-1/2 bg-gradient-to-r from-(--color-gradient-start) to-(--color-gradient-end) rounded-sm;
20
+ }
21
+ .kpi-card:hover .kpi-chart { @apply shadow-lg; }
22
+ @media (max-width: 768px) {
23
+ .kpi-card { @apply flex-col items-start gap-3; }
24
+ .kpi-card .kpi-chart { @apply w-12 h-12; }
25
+ }
26
+ }
27
+
@@ -0,0 +1,32 @@
1
+
2
+ /* ===== Layout System ===== */
3
+ @layer components {
4
+ .row { @apply flex flex-wrap gap-4; }
5
+ .col { @apply flex-1 min-w-[200px]; }
6
+ .col-1 { @apply flex-[1_1_8%]; }
7
+ .col-2 { @apply flex-[1_1_16%]; }
8
+ .col-3 { @apply flex-[1_1_25%]; }
9
+ .col-4 { @apply flex-[1_1_33%]; }
10
+ .col-5 { @apply flex-[1_1_41%]; }
11
+ .col-6 { @apply flex-[1_1_50%]; }
12
+ .col-7 { @apply flex-[1_1_58%]; }
13
+ .col-8 { @apply flex-[1_1_66%]; }
14
+ .col-9 { @apply flex-[1_1_75%]; }
15
+ .col-10 { @apply flex-[1_1_83%]; }
16
+ .col-11 { @apply flex-[1_1_91%]; }
17
+ .col-12 { @apply flex-[1_1_100%]; }
18
+ @media (max-width: 1024px) {
19
+ .col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6,
20
+ .col-7, .col-8, .col-9, .col-10, .col-11, .col-12 { @apply flex-[1_1_45%]; }
21
+ }
22
+ @media (max-width: 768px) {
23
+ .col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6,
24
+ .col-7, .col-8, .col-9, .col-10, .col-11, .col-12 { @apply flex-[1_1_100%]; }
25
+ }
26
+ .gap-0 { @apply gap-0; }
27
+ .gap-1 { @apply gap-1; }
28
+ .gap-2 { @apply gap-2; }
29
+ .gap-3 { @apply gap-3; }
30
+ .gap-4 { @apply gap-4; }
31
+ .gap-5 { @apply gap-5; }
32
+ }
@@ -0,0 +1,39 @@
1
+ /* ===== Navigation System ===== */
2
+ @layer components {
3
+ .nav-container {
4
+ @apply w-full flex items-center justify-between px-4 py-3 bg-(--color-surface) shadow-md transition-all duration-200;
5
+ }
6
+ .nav-brand { @apply text-lg font-bold text-(--color-text) select-none; }
7
+ .nav-ul { @apply flex gap-4 list-none m-0 p-0; }
8
+ .nav-ul-left { @apply flex-1 flex items-center; }
9
+ .nav-ul-right { @apply flex gap-4 items-center; }
10
+ .nav-li { @apply relative cursor-pointer transition-colors duration-200; }
11
+ .nav-li a {
12
+ @apply px-3 py-2 rounded-md text-(--color-text) hover:bg-(--color-primary) hover:text-(--color-text) transition-all duration-200;
13
+ }
14
+ .nav-li.active a { @apply bg-(--color-primary) text-(--color-text); }
15
+ .nav-dropdown {
16
+ @apply absolute top-full left-0 mt-1 bg-(--color-surface) shadow-lg rounded-md min-w-[8rem] opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50;
17
+ }
18
+ .nav-dropdown li {
19
+ @apply px-4 py-2 whitespace-nowrap hover:bg-(--color-primary) hover:text-(--color-text);
20
+ }
21
+ .nav-toggle { @apply block md:hidden cursor-pointer p-2 rounded-md hover:bg-(--color-border) transition-all duration-200; }
22
+ .nav-mobile { @apply hidden flex-col gap-2 mt-2 md:hidden; }
23
+ .nav-mobile.show { @apply flex; }
24
+ .nav-search-container { @apply relative flex items-center w-full max-w-xs transition-all duration-300; }
25
+ .nav-search-input {
26
+ @apply w-full pl-10 pr-10 py-2 rounded-full bg-(--color-surface) border border-(--color-border) text-(--color-text) focus:outline-none focus:ring-2 focus:ring-(--color-primary) focus:border-transparent transition-all duration-300 placeholder:text-(--color-text-muted);
27
+ }
28
+ .nav-search-icon {
29
+ @apply absolute left-3 top-1/2 -translate-y-1/2 text-(--color-text-muted) w-5 h-5;
30
+ }
31
+ .nav-search-clear {
32
+ @apply absolute right-3 top-1/2 -translate-y-1/2 text-(--color-text-muted) w-5 h-5 cursor-pointer opacity-0 transition-opacity duration-200 hover:text-(--color-primary);
33
+ }
34
+ .nav-search-input:not(:placeholder-shown) + .nav-search-clear { @apply opacity-100; }
35
+ @media (max-width: 768px) {
36
+ .nav-search-container { @apply max-w-full mt-2; }
37
+ .nav-search-input { @apply py-1.5 text-sm; }
38
+ }
39
+ }
File without changes
@@ -0,0 +1,6 @@
1
+ /* ===== Button Sizes ===== */
2
+ @layer components {
3
+ .sm { @apply text-xs px-3 py-1.5; }
4
+ .md { @apply text-sm px-4 py-2; }
5
+ .lg { @apply text-base px-5 py-3; }
6
+ }
@@ -0,0 +1,29 @@
1
+ /*===== Table System ===== */
2
+ @layer components {
3
+ .table {
4
+ @apply w-full border-collapse transition-all duration-200 text-(--color-text);
5
+ }
6
+ .table th, .table td {
7
+ @apply px-4 py-2 border border-(--color-border) text-left font-medium transition-all duration-200;
8
+ }
9
+ .table.filled th, .table.filled td { background-color: var(--color-surface); color: var(--color-text); }
10
+ .table.outlined th, .table.outlined td {
11
+ @apply border-2 border-(--color-border) bg-transparent text-(--color-text);
12
+ }
13
+ .table.primary.filled th, .table.primary.filled td { background-color: var(--color-primary); color: var(--color-text); border-color: var(--color-primary); }
14
+ .table.secondary.filled th, .table.secondary.filled td { background-color: var(--color-secondary); color: var(--color-text); border-color: var(--color-secondary); }
15
+ .table.success.filled th, .table.success.filled td { background-color: var(--color-success); color: var(--color-text); border-color: var(--color-success); }
16
+ .table.warning.filled th, .table.warning.filled td { background-color: var(--color-warning); color: var(--color-text); border-color: var(--color-warning); }
17
+ .table.danger.filled th, .table.danger.filled td { background-color: var(--color-danger); color: var(--color-text); border-color: var(--color-danger); }
18
+ .table.info.filled th, .table.info.filled td { background-color: var(--color-info); color: var(--color-text); border-color: var(--color-info); }
19
+ .table.striped tbody tr:nth-child(even) { background-color: color-mix(in oklch, var(--color-surface), 10% oklch(0% 0 0)); }
20
+ .table tbody tr:hover { opacity: 0.95; }
21
+ .table.filled.primary tbody tr:hover { background-color: color-mix(in oklch, var(--color-primary), 10% oklch(0% 0 0)); }
22
+ .table.filled.success tbody tr:hover { background-color: color-mix(in oklch, var(--color-success), 10% oklch(0% 0 0)); }
23
+ .table.filled.warning tbody tr:hover { background-color: color-mix(in oklch, var(--color-warning), 10% oklch(0% 0 0)); }
24
+ .table.filled.danger tbody tr:hover { background-color: color-mix(in oklch, var(--color-danger), 10% oklch(0% 0 0)); }
25
+ .table.filled.info tbody tr:hover { background-color: color-mix(in oklch, var(--color-info), 10% oklch(0% 0 0)); }
26
+ [data-theme="dark"] .table th, [data-theme="dark"] .table td { border-color: var(--color-border); color: var(--color-text); }
27
+ [data-theme="dark"] .table.filled th, [data-theme="dark"] .table.filled td { background-color: var(--color-surface); color: var(--color-text); }
28
+ .table-responsive { @apply overflow-x-auto w-full; }
29
+ }
@@ -0,0 +1,61 @@
1
+ @import "tailwindcss";
2
+
3
+ :root {
4
+ /* Primary Colors - Sea Blue */
5
+ --color-primary: oklch(55% 0.12 200); /* light sea blue */
6
+ --color-primary-dark: oklch(45% 0.14 200);
7
+ --color-secondary: oklch(60% 0.08 190); /* turquoise-ish */
8
+
9
+ /* Semantic Colors - Ocean Inspired */
10
+ --color-success: oklch(65% 0.12 160); /* sea green */
11
+ --color-warning: oklch(75% 0.15 80); /* coral-ish */
12
+ --color-danger: oklch(60% 0.15 10); /* reddish coral */
13
+ --color-info: oklch(70% 0.10 220); /* sky blue */
14
+
15
+ /* Neutral Colors */
16
+ --color-surface: oklch(96% 0.01 210); /* almost white sand */
17
+ --color-text: oklch(22% 0.03 210); /* deep ocean text */
18
+ --color-text-muted: oklch(45% 0.04 210); /* slightly softer but readable */
19
+ --color-border: oklch(85% 0.02 210);
20
+ --color-shadow: oklch(0% 0 0 / 0.2);
21
+
22
+ /* Gradients */
23
+ --gradient-primary: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
24
+ --gradient-success: linear-gradient(135deg, var(--color-success), oklch(60% 0.12 160));
25
+ --gradient-warning: linear-gradient(135deg, var(--color-warning), oklch(70% 0.15 80));
26
+ --gradient-danger: linear-gradient(135deg, var(--color-danger), oklch(55% 0.15 10));
27
+ --gradient-info: linear-gradient(135deg, var(--color-info), oklch(65% 0.11 220));
28
+
29
+ /* ===== Dolphin Specific Utility Classes ===== */
30
+ .dolphin-glow { box-shadow: var(--glow-primary); }
31
+ .dolphin-glow-success { box-shadow: var(--glow-success); }
32
+ .dolphin-glow-warning { box-shadow: var(--glow-warning); }
33
+ .dolphin-glow-danger { box-shadow: var(--glow-danger); }
34
+ .dolphin-glow-info { box-shadow: var(--glow-info); }
35
+ .dolphin-glow-secondary { box-shadow: var(--glow-secondary); }
36
+
37
+ .ocean-gradient { background: var(--gradient-ocean); }
38
+ .dolphin-gradient { background: var(--gradient-primary); }
39
+ .sea-foam { background-color: var(--color-surface); }
40
+ .deep-ocean { background-color: var(--color-surface-alt); }
41
+ }
42
+
43
+ [data-theme="dark"] {
44
+ /* Primary Colors */
45
+ --color-primary: oklch(45% 0.12 200); /* darker sea blue */
46
+ --color-primary-dark: oklch(35% 0.14 200);
47
+ --color-secondary: oklch(48% 0.08 190);
48
+
49
+ /* Semantic Colors */
50
+ --color-success: oklch(55% 0.12 160);
51
+ --color-warning: oklch(65% 0.15 80);
52
+ --color-danger: oklch(55% 0.15 10);
53
+ --color-info: oklch(60% 0.10 220);
54
+
55
+ /* Neutral Colors */
56
+ --color-surface: oklch(18% 0.02 210); /* dark ocean */
57
+ --color-text: oklch(98% 0 0); /* almost pure white text */
58
+ --color-text-muted: oklch(80% 0.02 210); /* dimmer, still visible */
59
+ --color-border: oklch(35% 0.03 210);
60
+ --color-shadow: oklch(0% 0 0 / 0.35);
61
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dolphincss",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "DolphinCSS - World-class TailwindCSS + React component library",
6
6
  "main": "dolphin-css.css",
@@ -23,6 +23,7 @@
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
25
  "@tailwindcss/vite": "^4.1.16",
26
+ "lucide-react": "^0.547.0",
26
27
  "react": "^19.1.1",
27
28
  "react-dom": "^19.1.1",
28
29
  "tailwindcss": "^4.1.16"