santycss 1.3.0 → 1.4.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.
- package/README.md +15 -0
- package/dist/santy-components.css +123 -0
- package/dist/santy-core.css +1 -1
- package/dist/santy.css +124 -1
- package/dist/santy.min.css +1 -1
- package/package.json +68 -68
package/README.md
CHANGED
|
@@ -20,6 +20,21 @@ Class names read like sentences. No build step. No configuration. Just link and
|
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## What's New in v1.4
|
|
24
|
+
|
|
25
|
+
### 🧩 VS Code IntelliSense Extension
|
|
26
|
+
|
|
27
|
+
**SantyCSS IntelliSense** is now available as a VS Code extension — similar to Tailwind CSS IntelliSense.
|
|
28
|
+
|
|
29
|
+
- **Autocomplete** — type inside `class=""` or `className=""` and get instant suggestions for all 8,500+ SantyCSS classes
|
|
30
|
+
- **Hover docs** — hover any class to see the CSS it generates
|
|
31
|
+
- **Works in** HTML, JSX, TSX, Vue, Svelte, PHP, ERB
|
|
32
|
+
- **Toggle command** — `SantyCSS: Toggle IntelliSense` in the Command Palette
|
|
33
|
+
|
|
34
|
+
Install: search **SantyCSS IntelliSense** in the Extensions panel.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
23
38
|
## What's New in v1.3
|
|
24
39
|
|
|
25
40
|
### 🎨 70+ SVG Icons (new: Business & Finance)
|
|
@@ -898,3 +898,126 @@
|
|
|
898
898
|
@container (min-width: 800px) { .cq-lg\:grid-cols-4 { grid-template-columns: repeat(4,1fr); } }
|
|
899
899
|
.container-query { container-type: inline-size; }
|
|
900
900
|
.container-query-size { container-type: size; }
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
/* ── Dark Theme CSS Tokens ── */
|
|
904
|
+
:root {
|
|
905
|
+
--color-surface: #0f172a;
|
|
906
|
+
--color-card: #1e293b;
|
|
907
|
+
--color-accent: #38bdf8;
|
|
908
|
+
--color-accent-light: rgba(56,189,248,.13);
|
|
909
|
+
--color-text: #f1f5f9;
|
|
910
|
+
--color-muted: #64748b;
|
|
911
|
+
--color-warning: #facc15;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/* ── Semantic Color Utilities ── */
|
|
915
|
+
.bg-surface { background-color: var(--color-surface); }
|
|
916
|
+
.bg-accent-light { background-color: var(--color-accent-light); }
|
|
917
|
+
.text-accent { color: var(--color-accent); }
|
|
918
|
+
.text-primary { color: var(--color-text); }
|
|
919
|
+
.text-muted { color: var(--color-muted); }
|
|
920
|
+
|
|
921
|
+
/* ── Badge Color Variants ── */
|
|
922
|
+
.badge-green { background-color: rgba(22,163,74,.13); color: #4ade80; }
|
|
923
|
+
.badge-blue { background-color: rgba(37,99,235,.13); color: #60a5fa; }
|
|
924
|
+
.badge-yellow { background-color: rgba(202,138,4,.13); color: #facc15; }
|
|
925
|
+
.badge-red { background-color: rgba(220,38,38,.13); color: #f87171; }
|
|
926
|
+
|
|
927
|
+
/* ── Named Height Utilities ── */
|
|
928
|
+
.h-xs { height: 24px; }
|
|
929
|
+
.h-sm { height: 48px; }
|
|
930
|
+
.h-md { height: 96px; }
|
|
931
|
+
.h-lg { height: 160px; }
|
|
932
|
+
|
|
933
|
+
/* ── Progress Bar Color Variants ── */
|
|
934
|
+
.progress-bar-green { background-color: #22c55e; }
|
|
935
|
+
.progress-bar-red { background-color: #ef4444; }
|
|
936
|
+
.progress-bar-yellow { background-color: #eab308; }
|
|
937
|
+
.progress-bar-purple { background-color: #8b5cf6; }
|
|
938
|
+
.progress-bar-orange { background-color: #f97316; }
|
|
939
|
+
|
|
940
|
+
/* ── Slider (Range — dark-themed) ── */
|
|
941
|
+
.slider { -webkit-appearance: none; appearance: none; width: 100%; height: 4px; border-radius: 2px; background: var(--color-card, #1e293b); outline: none; cursor: pointer; }
|
|
942
|
+
.slider::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--color-accent, #38bdf8); cursor: pointer; box-shadow: 0 0 0 3px rgba(56,189,248,.2); }
|
|
943
|
+
.slider::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--color-accent, #38bdf8); cursor: pointer; border: none; }
|
|
944
|
+
|
|
945
|
+
/* ── Stat Card ── */
|
|
946
|
+
.stat-card {
|
|
947
|
+
background: var(--color-card, #1e293b);
|
|
948
|
+
border-radius: 8px;
|
|
949
|
+
padding: 12px;
|
|
950
|
+
flex: 1;
|
|
951
|
+
display: flex;
|
|
952
|
+
flex-direction: column;
|
|
953
|
+
align-items: center;
|
|
954
|
+
gap: 4px;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
/* ── Button Icon ── */
|
|
958
|
+
.btn-icon {
|
|
959
|
+
width: 44px;
|
|
960
|
+
height: 44px;
|
|
961
|
+
border-radius: 9999px;
|
|
962
|
+
display: inline-flex;
|
|
963
|
+
align-items: center;
|
|
964
|
+
justify-content: center;
|
|
965
|
+
background: var(--color-accent-light, rgba(56,189,248,.13));
|
|
966
|
+
border: none;
|
|
967
|
+
cursor: pointer;
|
|
968
|
+
transition: opacity 0.2s;
|
|
969
|
+
}
|
|
970
|
+
.btn-icon:hover { opacity: 0.8; }
|
|
971
|
+
|
|
972
|
+
/* ── Input Text (dark-theme) ── */
|
|
973
|
+
.input-text {
|
|
974
|
+
flex: 1;
|
|
975
|
+
width: 100%;
|
|
976
|
+
background: var(--color-surface, #0f172a);
|
|
977
|
+
border-radius: 8px;
|
|
978
|
+
padding: 10px 14px;
|
|
979
|
+
color: var(--color-text, #f1f5f9);
|
|
980
|
+
font-size: 15px;
|
|
981
|
+
min-height: 44px;
|
|
982
|
+
border: 1px solid #334155;
|
|
983
|
+
outline: none;
|
|
984
|
+
}
|
|
985
|
+
.input-text:focus { border-color: var(--color-accent, #38bdf8); }
|
|
986
|
+
|
|
987
|
+
/* ── Chat Bubbles ── */
|
|
988
|
+
.chat-bubble-user {
|
|
989
|
+
align-self: flex-end;
|
|
990
|
+
background: var(--color-accent-light, rgba(56,189,248,.13));
|
|
991
|
+
border-radius: 16px 16px 4px 16px;
|
|
992
|
+
padding: 10px 14px;
|
|
993
|
+
max-width: 78%;
|
|
994
|
+
color: var(--color-text, #f1f5f9);
|
|
995
|
+
}
|
|
996
|
+
.chat-bubble-ai {
|
|
997
|
+
align-self: flex-start;
|
|
998
|
+
background: var(--color-card, #1e293b);
|
|
999
|
+
border-radius: 16px 16px 16px 4px;
|
|
1000
|
+
padding: 10px 14px;
|
|
1001
|
+
max-width: 78%;
|
|
1002
|
+
color: var(--color-text, #f1f5f9);
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
/* ── Typing Indicator ── */
|
|
1006
|
+
.typing-indicator { display: flex; gap: 4px; padding: 10px; align-self: flex-start; }
|
|
1007
|
+
.typing-indicator span { width: 8px; height: 8px; border-radius: 50%; background: var(--color-muted, #64748b); animation: santy-blink 1.2s ease-in-out infinite; }
|
|
1008
|
+
.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
|
|
1009
|
+
.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
|
|
1010
|
+
@keyframes santy-blink { 0%, 80%, 100% { opacity: 0; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }
|
|
1011
|
+
|
|
1012
|
+
/* ── Calorie Ring (SVG ring chart wrapper) ── */
|
|
1013
|
+
.calorie-ring { position: relative; display: inline-flex; align-items: center; justify-content: center; }
|
|
1014
|
+
|
|
1015
|
+
/* ── Scan Overlay ── */
|
|
1016
|
+
.scan-overlay { position: absolute; border: 2px solid var(--color-accent, #38bdf8); border-radius: 12px; overflow: hidden; }
|
|
1017
|
+
|
|
1018
|
+
/* ── Scan Line Animated ── */
|
|
1019
|
+
.scan-line-animated { position: absolute; left: 0; right: 0; height: 2px; background: var(--color-accent, #38bdf8); animation: santy-scan-sweep 1.8s ease-in-out infinite alternate; }
|
|
1020
|
+
@keyframes santy-scan-sweep { from { top: 0%; } to { top: 100%; } }
|
|
1021
|
+
|
|
1022
|
+
/* ── Bar Chart Wrapper ── */
|
|
1023
|
+
.bar-chart-wrapper { background: var(--color-card, #1e293b); border-radius: 12px; padding: 16px; overflow: hidden; }
|
package/dist/santy-core.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
|
-
SantyCSS v1.0 — Plain-English Utility CSS Framework
|
|
2
|
+
SantyCSS v1.4.0 — Plain-English Utility CSS Framework
|
|
3
3
|
https://github.com/santybad/santy_css
|
|
4
4
|
============================================================ */
|
|
5
5
|
|
package/dist/santy.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
|
-
SantyCSS v1.0 — Plain-English Utility CSS Framework
|
|
2
|
+
SantyCSS v1.4.0 — Plain-English Utility CSS Framework
|
|
3
3
|
https://github.com/santybad/santy_css
|
|
4
4
|
============================================================ */
|
|
5
5
|
|
|
@@ -13066,3 +13066,126 @@
|
|
|
13066
13066
|
@container (min-width: 800px) { .cq-lg\:grid-cols-4 { grid-template-columns: repeat(4,1fr); } }
|
|
13067
13067
|
.container-query { container-type: inline-size; }
|
|
13068
13068
|
.container-query-size { container-type: size; }
|
|
13069
|
+
|
|
13070
|
+
|
|
13071
|
+
/* ── Dark Theme CSS Tokens ── */
|
|
13072
|
+
:root {
|
|
13073
|
+
--color-surface: #0f172a;
|
|
13074
|
+
--color-card: #1e293b;
|
|
13075
|
+
--color-accent: #38bdf8;
|
|
13076
|
+
--color-accent-light: rgba(56,189,248,.13);
|
|
13077
|
+
--color-text: #f1f5f9;
|
|
13078
|
+
--color-muted: #64748b;
|
|
13079
|
+
--color-warning: #facc15;
|
|
13080
|
+
}
|
|
13081
|
+
|
|
13082
|
+
/* ── Semantic Color Utilities ── */
|
|
13083
|
+
.bg-surface { background-color: var(--color-surface); }
|
|
13084
|
+
.bg-accent-light { background-color: var(--color-accent-light); }
|
|
13085
|
+
.text-accent { color: var(--color-accent); }
|
|
13086
|
+
.text-primary { color: var(--color-text); }
|
|
13087
|
+
.text-muted { color: var(--color-muted); }
|
|
13088
|
+
|
|
13089
|
+
/* ── Badge Color Variants ── */
|
|
13090
|
+
.badge-green { background-color: rgba(22,163,74,.13); color: #4ade80; }
|
|
13091
|
+
.badge-blue { background-color: rgba(37,99,235,.13); color: #60a5fa; }
|
|
13092
|
+
.badge-yellow { background-color: rgba(202,138,4,.13); color: #facc15; }
|
|
13093
|
+
.badge-red { background-color: rgba(220,38,38,.13); color: #f87171; }
|
|
13094
|
+
|
|
13095
|
+
/* ── Named Height Utilities ── */
|
|
13096
|
+
.h-xs { height: 24px; }
|
|
13097
|
+
.h-sm { height: 48px; }
|
|
13098
|
+
.h-md { height: 96px; }
|
|
13099
|
+
.h-lg { height: 160px; }
|
|
13100
|
+
|
|
13101
|
+
/* ── Progress Bar Color Variants ── */
|
|
13102
|
+
.progress-bar-green { background-color: #22c55e; }
|
|
13103
|
+
.progress-bar-red { background-color: #ef4444; }
|
|
13104
|
+
.progress-bar-yellow { background-color: #eab308; }
|
|
13105
|
+
.progress-bar-purple { background-color: #8b5cf6; }
|
|
13106
|
+
.progress-bar-orange { background-color: #f97316; }
|
|
13107
|
+
|
|
13108
|
+
/* ── Slider (Range — dark-themed) ── */
|
|
13109
|
+
.slider { -webkit-appearance: none; appearance: none; width: 100%; height: 4px; border-radius: 2px; background: var(--color-card, #1e293b); outline: none; cursor: pointer; }
|
|
13110
|
+
.slider::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--color-accent, #38bdf8); cursor: pointer; box-shadow: 0 0 0 3px rgba(56,189,248,.2); }
|
|
13111
|
+
.slider::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--color-accent, #38bdf8); cursor: pointer; border: none; }
|
|
13112
|
+
|
|
13113
|
+
/* ── Stat Card ── */
|
|
13114
|
+
.stat-card {
|
|
13115
|
+
background: var(--color-card, #1e293b);
|
|
13116
|
+
border-radius: 8px;
|
|
13117
|
+
padding: 12px;
|
|
13118
|
+
flex: 1;
|
|
13119
|
+
display: flex;
|
|
13120
|
+
flex-direction: column;
|
|
13121
|
+
align-items: center;
|
|
13122
|
+
gap: 4px;
|
|
13123
|
+
}
|
|
13124
|
+
|
|
13125
|
+
/* ── Button Icon ── */
|
|
13126
|
+
.btn-icon {
|
|
13127
|
+
width: 44px;
|
|
13128
|
+
height: 44px;
|
|
13129
|
+
border-radius: 9999px;
|
|
13130
|
+
display: inline-flex;
|
|
13131
|
+
align-items: center;
|
|
13132
|
+
justify-content: center;
|
|
13133
|
+
background: var(--color-accent-light, rgba(56,189,248,.13));
|
|
13134
|
+
border: none;
|
|
13135
|
+
cursor: pointer;
|
|
13136
|
+
transition: opacity 0.2s;
|
|
13137
|
+
}
|
|
13138
|
+
.btn-icon:hover { opacity: 0.8; }
|
|
13139
|
+
|
|
13140
|
+
/* ── Input Text (dark-theme) ── */
|
|
13141
|
+
.input-text {
|
|
13142
|
+
flex: 1;
|
|
13143
|
+
width: 100%;
|
|
13144
|
+
background: var(--color-surface, #0f172a);
|
|
13145
|
+
border-radius: 8px;
|
|
13146
|
+
padding: 10px 14px;
|
|
13147
|
+
color: var(--color-text, #f1f5f9);
|
|
13148
|
+
font-size: 15px;
|
|
13149
|
+
min-height: 44px;
|
|
13150
|
+
border: 1px solid #334155;
|
|
13151
|
+
outline: none;
|
|
13152
|
+
}
|
|
13153
|
+
.input-text:focus { border-color: var(--color-accent, #38bdf8); }
|
|
13154
|
+
|
|
13155
|
+
/* ── Chat Bubbles ── */
|
|
13156
|
+
.chat-bubble-user {
|
|
13157
|
+
align-self: flex-end;
|
|
13158
|
+
background: var(--color-accent-light, rgba(56,189,248,.13));
|
|
13159
|
+
border-radius: 16px 16px 4px 16px;
|
|
13160
|
+
padding: 10px 14px;
|
|
13161
|
+
max-width: 78%;
|
|
13162
|
+
color: var(--color-text, #f1f5f9);
|
|
13163
|
+
}
|
|
13164
|
+
.chat-bubble-ai {
|
|
13165
|
+
align-self: flex-start;
|
|
13166
|
+
background: var(--color-card, #1e293b);
|
|
13167
|
+
border-radius: 16px 16px 16px 4px;
|
|
13168
|
+
padding: 10px 14px;
|
|
13169
|
+
max-width: 78%;
|
|
13170
|
+
color: var(--color-text, #f1f5f9);
|
|
13171
|
+
}
|
|
13172
|
+
|
|
13173
|
+
/* ── Typing Indicator ── */
|
|
13174
|
+
.typing-indicator { display: flex; gap: 4px; padding: 10px; align-self: flex-start; }
|
|
13175
|
+
.typing-indicator span { width: 8px; height: 8px; border-radius: 50%; background: var(--color-muted, #64748b); animation: santy-blink 1.2s ease-in-out infinite; }
|
|
13176
|
+
.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
|
|
13177
|
+
.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
|
|
13178
|
+
@keyframes santy-blink { 0%, 80%, 100% { opacity: 0; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }
|
|
13179
|
+
|
|
13180
|
+
/* ── Calorie Ring (SVG ring chart wrapper) ── */
|
|
13181
|
+
.calorie-ring { position: relative; display: inline-flex; align-items: center; justify-content: center; }
|
|
13182
|
+
|
|
13183
|
+
/* ── Scan Overlay ── */
|
|
13184
|
+
.scan-overlay { position: absolute; border: 2px solid var(--color-accent, #38bdf8); border-radius: 12px; overflow: hidden; }
|
|
13185
|
+
|
|
13186
|
+
/* ── Scan Line Animated ── */
|
|
13187
|
+
.scan-line-animated { position: absolute; left: 0; right: 0; height: 2px; background: var(--color-accent, #38bdf8); animation: santy-scan-sweep 1.8s ease-in-out infinite alternate; }
|
|
13188
|
+
@keyframes santy-scan-sweep { from { top: 0%; } to { top: 100%; } }
|
|
13189
|
+
|
|
13190
|
+
/* ── Bar Chart Wrapper ── */
|
|
13191
|
+
.bar-chart-wrapper { background: var(--color-card, #1e293b); border-radius: 12px; padding: 16px; overflow: hidden; }
|