zodiacfonts 1.0.0 → 1.1.1

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/CHANGELOG.md ADDED
@@ -0,0 +1,44 @@
1
+ # Changelog
2
+
3
+ All notable changes to the `zodiacfonts` package are documented here.
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+ Versioning follows [Semantic Versioning](https://semver.org/).
6
+
7
+ ---
8
+
9
+ ## [1.1.0] — 2026-06-20
10
+
11
+ ### Added
12
+ - **Icon font layer** — the FREE family (`ZodiacFontFREE.woff2`) is now included in
13
+ the npm tarball and can be used as a web icon font alongside the SVGs.
14
+ - `css/zodiac-fonts.css` — `@font-face` + `.zf` base class + all 55 FREE glyph rules +
15
+ 46 PRO class stubs (codepoints published; PRO glyphs require a Pro license and
16
+ `ZodiacFontPRO.woff2` to render).
17
+ - `css/zodiac-fonts.min.css` — minified version, recommended for production.
18
+ - `js/zodiac-fonts.js` — ES module companion script; auto-runs on `DOMContentLoaded`
19
+ in plain HTML and exports `checkZodiacGlyphs()` for SPA frameworks.
20
+ - `js/zodiac-fonts.min.js` — minified version.
21
+ - `scss/zodiac-fonts.scss` — Sass source with `$zf-font-path` and `$zf-font-family`
22
+ `!default` variables for easy customisation before `@use`.
23
+ - `package.json` `exports` map — subpath imports (`zodiacfonts/css`, `zodiacfonts/scss`,
24
+ `zodiacfonts/js`) now resolve correctly in all bundlers.
25
+ - `unicode-range` descriptor in `@font-face` — scopes the FREE font to only its 55
26
+ codepoints; prevents fallback interference for unmapped PRO slots.
27
+
28
+ ### Changed
29
+ - Repo structure reorganised: generated files moved from root into `css/`, `js/`, and
30
+ `scss/` subdirectories. `fonts/` continues to hold the WOFF2.
31
+ - `sideEffects` in `package.json` updated to `["**/*.css", "**/*.scss"]` so bundlers
32
+ do not tree-shake stylesheet imports.
33
+
34
+ ---
35
+
36
+ ## [1.0.0] — 2026-06-06
37
+
38
+ ### Added
39
+ - 55 free astrology SVG symbols across 8 categories: zodiac signs, main planets,
40
+ lunar phases, celestial points, dwarf planets & asteroids, houses, major aspects,
41
+ and movements.
42
+ - `glyphs.json` — machine-readable manifest with `name`, `slug`, `reference`,
43
+ `codepoint`, and `file` for every symbol.
44
+ - SIL Open Font License 1.1 (`OFL.txt`).
package/README.md CHANGED
@@ -27,6 +27,7 @@ Zodiac signs, planets, lunar phases, houses, aspects and more — free for perso
27
27
  - [What's inside](#whats-inside)
28
28
  - [Installation](#installation)
29
29
  - [Usage](#usage)
30
+ - [Icon font](#icon-font)
30
31
  - [Theming with `currentColor`](#theming-with-currentcolor)
31
32
  - [Folder structure](#folder-structure)
32
33
  - [The manifest (`glyphs.json`)](#the-manifest-glyphsjson)
@@ -59,7 +60,21 @@ Every SVG is normalized to a `0 0 512 512` viewBox and drawn with
59
60
 
60
61
  ```bash
61
62
  npm install zodiacfonts
62
- # symbols are then available under node_modules/zodiacfonts/icons/<category>/<name>.svg
63
+ ```
64
+
65
+ Then reference icons by their package path — no manual file copying needed:
66
+
67
+ ```js
68
+ // Vite / webpack / Rollup
69
+ import ariesUrl from 'zodiacfonts/icons/signs/aries.svg';
70
+
71
+ // React + SVGR (renders as a component)
72
+ import AriesIcon from 'zodiacfonts/icons/signs/aries.svg?react';
73
+
74
+ // Node.js / SSR (resolve the file path)
75
+ import { createRequire } from 'node:module';
76
+ const require = createRequire(import.meta.url);
77
+ const ariesPath = require.resolve('zodiacfonts/icons/signs/aries.svg');
63
78
  ```
64
79
 
65
80
  **Download / clone** (recommended for static sites)
@@ -74,6 +89,9 @@ from [`icons/`](./icons).
74
89
 
75
90
  ## Usage
76
91
 
92
+ > Paths below use the repo-relative form (`icons/signs/aries.svg`) — substitute
93
+ > `zodiacfonts/icons/signs/aries.svg` when referencing from an npm install.
94
+
77
95
  ### As an image
78
96
 
79
97
  ```html
@@ -110,9 +128,82 @@ export const Aries = () => <img src={ariesUrl} alt="Aries" width={48} height={48
110
128
  <img src="assets/zodiac/signs/aries.svg" alt="Aries" width="48" height="48" />
111
129
  ```
112
130
 
113
- ## Theming with `currentColor`
131
+ ## Icon font
132
+
133
+ Zodiac Fonts ships an optional icon font layer alongside the SVGs, letting you render glyphs with
134
+ a single HTML class — no image files or inline SVG required.
135
+
136
+ ### Quick start (CDN)
137
+
138
+ ```html
139
+ <!-- Add to your <head> — the font + all glyph classes load automatically -->
140
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/zodiacfonts@latest/css/zodiac-fonts.min.css" />
141
+
142
+ <!-- Render a glyph -->
143
+ <i class="zf zf-aries" aria-hidden="true"></i>
144
+ <span class="zf zf-moon" aria-label="Moon"></span>
145
+ ```
146
+
147
+ ### Quick start (npm / self-hosted)
148
+
149
+ ```bash
150
+ npm install zodiacfonts
151
+ ```
152
+
153
+ ```js
154
+ // Bundler (Vite, webpack, etc.) — plain CSS
155
+ import 'zodiacfonts/css';
114
156
 
115
- Because the strokes use `currentColor`, an **inlined** SVG follows the CSS `color` property:
157
+ // Sass / SCSS projects — override font path if needed
158
+ // $zf-font-path: '/your/assets/ZodiacFontFREE.woff2';
159
+ @use 'zodiacfonts/scss';
160
+ ```
161
+
162
+ Or copy `css/zodiac-fonts.min.css` and the `fonts/` folder to your project and link the CSS manually.
163
+
164
+ ### FREE vs PRO glyphs
165
+
166
+ The stylesheet ships CSS classes for **all 101 glyphs** — the 55 FREE ones and the 46 PRO stubs.
167
+ FREE classes render immediately. PRO classes (marked `/* PRO */` in the source CSS) require
168
+ a Pro license and `ZodiacFontPRO.woff2` to be self-hosted alongside `ZodiacFontFREE.woff2`.
169
+
170
+ See [zodiacfonts.com/documentation](https://www.zodiacfonts.com/documentation) for the Pro
171
+ integration guide, character map, and live preview of all 101 glyphs.
172
+
173
+ ### PRO usage detector
174
+
175
+ Include the optional checker script to get a browser console warning whenever a PRO glyph
176
+ class is used without the PRO font loaded. **No code needed** — it runs automatically.
177
+
178
+ ```html
179
+ <!-- plain HTML / SSG — add after your CSS link, runs on DOMContentLoaded -->
180
+ <script type="module" src="https://cdn.jsdelivr.net/npm/zodiacfonts@latest/js/zodiac-fonts.min.js"></script>
181
+ ```
182
+
183
+ ```js
184
+ // SPA (React, Vue, Angular) — call inside your mount lifecycle
185
+ import { checkZodiacGlyphs } from 'zodiacfonts/js';
186
+
187
+ // React
188
+ useEffect(() => { checkZodiacGlyphs(); }, []);
189
+
190
+ // Vue
191
+ onMounted(() => checkZodiacGlyphs());
192
+
193
+ // Angular
194
+ ngOnInit() { checkZodiacGlyphs(); }
195
+ ```
196
+
197
+ When a PRO glyph is detected the console shows:
198
+
199
+ ```
200
+ [Zodiac Fonts] PRO glyph detected: .zf-ophiuchus
201
+ This glyph requires a Pro license — it will not render with the FREE font.
202
+ Self-host ZodiacFontPRO.woff2 after purchasing a Pro license.
203
+ → https://www.zodiacfonts.com/documentation
204
+ ```
205
+
206
+ ## Theming with `currentColor`
116
207
 
117
208
  ```css
118
209
  .zodiac-icon { color: rebeccapurple; }
@@ -138,6 +229,8 @@ Sizing is just `width` / `height` (or `font-size` when inlined and using `1em` d
138
229
 
139
230
  ```
140
231
  zodiacfonts/
232
+ ├── fonts/
233
+ │ └── ZodiacFontFREE.woff2 icon font (FREE codepoints only)
141
234
  ├── icons/
142
235
  │ ├── signs/ aries.svg, taurus.svg, … (12)
143
236
  │ ├── main-planets/ sun.svg, moon.svg, … (11)
@@ -147,6 +240,14 @@ zodiacfonts/
147
240
  │ ├── houses/ house-one.svg … medium-coeli.svg (14)
148
241
  │ ├── major-aspects/ conjunction.svg, trine.svg, … (5)
149
242
  │ └── movements/ retrograde.svg (1)
243
+ ├── css/
244
+ │ ├── zodiac-fonts.css icon font CSS (FREE rules + PRO stubs)
245
+ │ └── zodiac-fonts.min.css minified (recommended for production)
246
+ ├── js/
247
+ │ ├── zodiac-fonts.js ES module companion script
248
+ │ └── zodiac-fonts.min.js minified
249
+ ├── scss/
250
+ │ └── zodiac-fonts.scss Sass source with $zf-* override variables
150
251
  ├── glyphs.json machine-readable manifest of all 55 symbols
151
252
  ├── OFL.txt SIL Open Font License 1.1
152
253
  ├── package.json
@@ -0,0 +1,150 @@
1
+ /*!
2
+ * Zodiac Fonts — free astrology icon font (55 free + 46 PRO stubs)
3
+ * SIL Open Font License 1.1 · https://www.zodiacfonts.com
4
+ * Generated from glyphs.json — do not edit by hand.
5
+ */
6
+ @font-face {
7
+ font-family: 'Zodiac Fonts';
8
+ src: url('../fonts/ZodiacFontFREE.woff2') format('woff2');
9
+ font-weight: 400;
10
+ font-style: normal;
11
+ font-display: block;
12
+ unicode-range: U+E000, U+E001, U+E002, U+E004, U+E005, U+E006, U+E007, U+E008, U+E009, U+E00A, U+E00B, U+E00C, U+E100, U+E101, U+E102, U+E103, U+E104, U+E105, U+E106, U+E107, U+E108, U+E10A, U+E10B, U+E204, U+E205, U+E206, U+E207, U+E208, U+E209, U+E20A, U+E20B, U+E300, U+E301, U+E302, U+E401, U+E500, U+E501, U+E502, U+E503, U+E504, U+E505, U+E506, U+E507, U+E508, U+E509, U+E50A, U+E50B, U+E50C, U+E50D, U+E600, U+E601, U+E602, U+E603, U+E604, U+E901;
13
+ }
14
+
15
+ .zf {
16
+ font-family: 'Zodiac Fonts';
17
+ font-style: normal;
18
+ font-weight: 400;
19
+ font-variant: normal;
20
+ text-transform: none;
21
+ line-height: 1;
22
+ display: inline-block;
23
+ -webkit-font-smoothing: antialiased;
24
+ -moz-osx-font-smoothing: grayscale;
25
+ }
26
+
27
+ .zf-aries::before { content: "\e000"; }
28
+ .zf-cancer::before { content: "\e001"; }
29
+ .zf-libra::before { content: "\e002"; }
30
+ .zf-capricorn::before { content: "\e004"; }
31
+ .zf-taurus::before { content: "\e005"; }
32
+ .zf-leo::before { content: "\e006"; }
33
+ .zf-scorpio::before { content: "\e007"; }
34
+ .zf-aquarius::before { content: "\e008"; }
35
+ .zf-gemini::before { content: "\e009"; }
36
+ .zf-virgo::before { content: "\e00a"; }
37
+ .zf-sagittarius::before { content: "\e00b"; }
38
+ .zf-pisces::before { content: "\e00c"; }
39
+
40
+ .zf-earth::before { content: "\e100"; }
41
+ .zf-sun::before { content: "\e101"; }
42
+ .zf-moon::before { content: "\e102"; }
43
+ .zf-mercury::before { content: "\e103"; }
44
+ .zf-venus::before { content: "\e104"; }
45
+ .zf-mars::before { content: "\e105"; }
46
+ .zf-jupiter::before { content: "\e106"; }
47
+ .zf-saturn::before { content: "\e107"; }
48
+ .zf-uranus::before { content: "\e108"; }
49
+ .zf-neptune::before { content: "\e10a"; }
50
+ .zf-pluto::before { content: "\e10b"; }
51
+
52
+ .zf-new-moon::before { content: "\e204"; }
53
+ .zf-waxing-crescent::before { content: "\e205"; }
54
+ .zf-first-quarter::before { content: "\e206"; }
55
+ .zf-waxing-gibbous::before { content: "\e207"; }
56
+ .zf-full-moon::before { content: "\e208"; }
57
+ .zf-waning-gibbous::before { content: "\e209"; }
58
+ .zf-last-quarter::before { content: "\e20a"; }
59
+ .zf-waning-crescent::before { content: "\e20b"; }
60
+
61
+ .zf-north-node::before { content: "\e300"; }
62
+ .zf-south-node::before { content: "\e301"; }
63
+ .zf-lilith::before { content: "\e302"; }
64
+
65
+ .zf-chiron::before { content: "\e401"; }
66
+
67
+ .zf-house-one::before { content: "\e500"; }
68
+ .zf-house-two::before { content: "\e501"; }
69
+ .zf-house-three::before { content: "\e502"; }
70
+ .zf-house-four::before { content: "\e503"; }
71
+ .zf-house-five::before { content: "\e504"; }
72
+ .zf-house-six::before { content: "\e505"; }
73
+ .zf-house-seven::before { content: "\e506"; }
74
+ .zf-house-eight::before { content: "\e507"; }
75
+ .zf-house-nine::before { content: "\e508"; }
76
+ .zf-house-ten::before { content: "\e509"; }
77
+ .zf-house-eleven::before { content: "\e50a"; }
78
+ .zf-house-twelve::before { content: "\e50b"; }
79
+ .zf-ascendant::before { content: "\e50c"; }
80
+ .zf-medium-coeli::before { content: "\e50d"; }
81
+
82
+ .zf-conjunction::before { content: "\e600"; }
83
+ .zf-opposition::before { content: "\e601"; }
84
+ .zf-square::before { content: "\e602"; }
85
+ .zf-trine::before { content: "\e603"; }
86
+ .zf-sextile::before { content: "\e604"; }
87
+
88
+ .zf-retrograde::before { content: "\e901"; }
89
+
90
+ /* ─── PRO glyphs ─────────────────────────────────────────────────────────────
91
+ These classes are part of the full Zodiac Fonts API. They will NOT render
92
+ with the free font — the FREE font only covers the 55 codepoints above.
93
+ To display PRO glyphs, purchase a Pro license and self-host ZodiacFontPRO.woff2.
94
+ → https://www.zodiacfonts.com/documentation
95
+ ─────────────────────────────────────────────────────────────────────────── */
96
+
97
+ .zf-capricorn-1::before { content: "\e003"; } /* PRO */
98
+ .zf-ophiuchus::before { content: "\e00d"; } /* PRO */
99
+ .zf-sign-cardinal::before { content: "\e00e"; } /* PRO */
100
+ .zf-sign-fixed::before { content: "\e00f"; } /* PRO */
101
+ .zf-sign-mutable::before { content: "\e010"; } /* PRO */
102
+
103
+ .zf-uranus-2::before { content: "\e109"; } /* PRO */
104
+ .zf-pluto-2::before { content: "\e10c"; } /* PRO */
105
+
106
+ .zf-solar-eclipse-1::before { content: "\e200"; } /* PRO */
107
+ .zf-lunar-eclipse-1::before { content: "\e201"; } /* PRO */
108
+ .zf-solar-eclipse-2::before { content: "\e202"; } /* PRO */
109
+ .zf-lunar-eclipse-2::before { content: "\e203"; } /* PRO */
110
+
111
+ .zf-wheel-of-fortune::before { content: "\e303"; } /* PRO */
112
+ .zf-vertex::before { content: "\e304"; } /* PRO */
113
+
114
+ .zf-ceres::before { content: "\e400"; } /* PRO */
115
+ .zf-pallas::before { content: "\e402"; } /* PRO */
116
+ .zf-juno::before { content: "\e403"; } /* PRO */
117
+ .zf-vesta-1::before { content: "\e404"; } /* PRO */
118
+ .zf-vesta-2::before { content: "\e405"; } /* PRO */
119
+ .zf-comet::before { content: "\e406"; } /* PRO */
120
+ .zf-sedna::before { content: "\e407"; } /* PRO */
121
+ .zf-makemake::before { content: "\e408"; } /* PRO */
122
+ .zf-haumea::before { content: "\e409"; } /* PRO */
123
+ .zf-proserpine::before { content: "\e40a"; } /* PRO */
124
+ .zf-hygiea::before { content: "\e40b"; } /* PRO */
125
+ .zf-eris-1::before { content: "\e40c"; } /* PRO */
126
+ .zf-eris-2::before { content: "\e40d"; } /* PRO */
127
+
128
+ .zf-imum-coeli::before { content: "\e50e"; } /* PRO */
129
+ .zf-descendant::before { content: "\e50f"; } /* PRO */
130
+
131
+ .zf-semi-sextile::before { content: "\e700"; } /* PRO */
132
+ .zf-inconjunct::before { content: "\e701"; } /* PRO */
133
+ .zf-semi-square::before { content: "\e702"; } /* PRO */
134
+ .zf-septile::before { content: "\e703"; } /* PRO */
135
+ .zf-sesquiquadrate::before { content: "\e704"; } /* PRO */
136
+ .zf-quintile-2::before { content: "\e705"; } /* PRO */
137
+ .zf-quintile::before { content: "\e706"; } /* PRO */
138
+ .zf-biquintile::before { content: "\e707"; } /* PRO */
139
+ .zf-biquintile-2::before { content: "\e708"; } /* PRO */
140
+ .zf-novile::before { content: "\e709"; } /* PRO */
141
+ .zf-parallel::before { content: "\e70a"; } /* PRO */
142
+ .zf-contra-parallel::before { content: "\e70b"; } /* PRO */
143
+ .zf-decile::before { content: "\e70c"; } /* PRO */
144
+
145
+ .zf-element-fire::before { content: "\e800"; } /* PRO */
146
+ .zf-element-air::before { content: "\e801"; } /* PRO */
147
+ .zf-element-earth::before { content: "\e802"; } /* PRO */
148
+ .zf-element-water::before { content: "\e803"; } /* PRO */
149
+
150
+ .zf-direct::before { content: "\e900"; } /* PRO */
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Zodiac Fonts — free astrology icon font (55 free + 46 PRO stubs)
3
+ * SIL Open Font License 1.1 · https://www.zodiacfonts.com
4
+ * Generated from glyphs.json — do not edit by hand.
5
+ */@font-face{font-family:Zodiac Fonts;src:url(../fonts/ZodiacFontFREE.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block;unicode-range:U+E000,U+E001,U+E002,U+E004,U+E005,U+E006,U+E007,U+E008,U+E009,U+E00A,U+E00B,U+E00C,U+E100,U+E101,U+E102,U+E103,U+E104,U+E105,U+E106,U+E107,U+E108,U+E10A,U+E10B,U+E204,U+E205,U+E206,U+E207,U+E208,U+E209,U+E20A,U+E20B,U+E300,U+E301,U+E302,U+E401,U+E500,U+E501,U+E502,U+E503,U+E504,U+E505,U+E506,U+E507,U+E508,U+E509,U+E50A,U+E50B,U+E50C,U+E50D,U+E600,U+E601,U+E602,U+E603,U+E604,U+E901}.zf{font-family:Zodiac Fonts;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.zf-aries:before{content:"\e000"}.zf-cancer:before{content:"\e001"}.zf-libra:before{content:"\e002"}.zf-capricorn:before{content:"\e004"}.zf-taurus:before{content:"\e005"}.zf-leo:before{content:"\e006"}.zf-scorpio:before{content:"\e007"}.zf-aquarius:before{content:"\e008"}.zf-gemini:before{content:"\e009"}.zf-virgo:before{content:"\e00a"}.zf-sagittarius:before{content:"\e00b"}.zf-pisces:before{content:"\e00c"}.zf-earth:before{content:"\e100"}.zf-sun:before{content:"\e101"}.zf-moon:before{content:"\e102"}.zf-mercury:before{content:"\e103"}.zf-venus:before{content:"\e104"}.zf-mars:before{content:"\e105"}.zf-jupiter:before{content:"\e106"}.zf-saturn:before{content:"\e107"}.zf-uranus:before{content:"\e108"}.zf-neptune:before{content:"\e10a"}.zf-pluto:before{content:"\e10b"}.zf-new-moon:before{content:"\e204"}.zf-waxing-crescent:before{content:"\e205"}.zf-first-quarter:before{content:"\e206"}.zf-waxing-gibbous:before{content:"\e207"}.zf-full-moon:before{content:"\e208"}.zf-waning-gibbous:before{content:"\e209"}.zf-last-quarter:before{content:"\e20a"}.zf-waning-crescent:before{content:"\e20b"}.zf-north-node:before{content:"\e300"}.zf-south-node:before{content:"\e301"}.zf-lilith:before{content:"\e302"}.zf-chiron:before{content:"\e401"}.zf-house-one:before{content:"\e500"}.zf-house-two:before{content:"\e501"}.zf-house-three:before{content:"\e502"}.zf-house-four:before{content:"\e503"}.zf-house-five:before{content:"\e504"}.zf-house-six:before{content:"\e505"}.zf-house-seven:before{content:"\e506"}.zf-house-eight:before{content:"\e507"}.zf-house-nine:before{content:"\e508"}.zf-house-ten:before{content:"\e509"}.zf-house-eleven:before{content:"\e50a"}.zf-house-twelve:before{content:"\e50b"}.zf-ascendant:before{content:"\e50c"}.zf-medium-coeli:before{content:"\e50d"}.zf-conjunction:before{content:"\e600"}.zf-opposition:before{content:"\e601"}.zf-square:before{content:"\e602"}.zf-trine:before{content:"\e603"}.zf-sextile:before{content:"\e604"}.zf-retrograde:before{content:"\e901"}.zf-capricorn-1:before{content:"\e003"}.zf-ophiuchus:before{content:"\e00d"}.zf-sign-cardinal:before{content:"\e00e"}.zf-sign-fixed:before{content:"\e00f"}.zf-sign-mutable:before{content:"\e010"}.zf-uranus-2:before{content:"\e109"}.zf-pluto-2:before{content:"\e10c"}.zf-solar-eclipse-1:before{content:"\e200"}.zf-lunar-eclipse-1:before{content:"\e201"}.zf-solar-eclipse-2:before{content:"\e202"}.zf-lunar-eclipse-2:before{content:"\e203"}.zf-wheel-of-fortune:before{content:"\e303"}.zf-vertex:before{content:"\e304"}.zf-ceres:before{content:"\e400"}.zf-pallas:before{content:"\e402"}.zf-juno:before{content:"\e403"}.zf-vesta-1:before{content:"\e404"}.zf-vesta-2:before{content:"\e405"}.zf-comet:before{content:"\e406"}.zf-sedna:before{content:"\e407"}.zf-makemake:before{content:"\e408"}.zf-haumea:before{content:"\e409"}.zf-proserpine:before{content:"\e40a"}.zf-hygiea:before{content:"\e40b"}.zf-eris-1:before{content:"\e40c"}.zf-eris-2:before{content:"\e40d"}.zf-imum-coeli:before{content:"\e50e"}.zf-descendant:before{content:"\e50f"}.zf-semi-sextile:before{content:"\e700"}.zf-inconjunct:before{content:"\e701"}.zf-semi-square:before{content:"\e702"}.zf-septile:before{content:"\e703"}.zf-sesquiquadrate:before{content:"\e704"}.zf-quintile-2:before{content:"\e705"}.zf-quintile:before{content:"\e706"}.zf-biquintile:before{content:"\e707"}.zf-biquintile-2:before{content:"\e708"}.zf-novile:before{content:"\e709"}.zf-parallel:before{content:"\e70a"}.zf-contra-parallel:before{content:"\e70b"}.zf-decile:before{content:"\e70c"}.zf-element-fire:before{content:"\e800"}.zf-element-air:before{content:"\e801"}.zf-element-earth:before{content:"\e802"}.zf-element-water:before{content:"\e803"}.zf-direct:before{content:"\e900"}
Binary file
@@ -0,0 +1,49 @@
1
+ /**
2
+ * zodiac-fonts.js — Zodiac Fonts companion script
3
+ * Part of Zodiac Fonts · https://www.zodiacfonts.com
4
+ * Generated — do not edit by hand.
5
+ *
6
+ * Usage (plain HTML / SSG — runs automatically on DOMContentLoaded):
7
+ * <script type="module" src="zodiac-fonts.js"></script>
8
+ *
9
+ * Usage (SPA — React, Vue, Angular — call inside your mount lifecycle):
10
+ * import { checkZodiacGlyphs } from './zodiac-fonts.js';
11
+ * checkZodiacGlyphs();
12
+ */
13
+
14
+ /** Slugs of all PRO glyphs (generated from glyphs-list.json). */
15
+ const PRO_SLUGS = new Set(["capricorn-1", "ophiuchus", "sign-cardinal", "sign-fixed", "sign-mutable", "uranus-2", "pluto-2", "solar-eclipse-1", "lunar-eclipse-1", "solar-eclipse-2", "lunar-eclipse-2", "wheel-of-fortune", "vertex", "ceres", "pallas", "juno", "vesta-1", "vesta-2", "comet", "sedna", "makemake", "haumea", "proserpine", "hygiea", "eris-1", "eris-2", "imum-coeli", "descendant", "semi-sextile", "inconjunct", "semi-square", "septile", "sesquiquadrate", "quintile-2", "quintile", "biquintile", "biquintile-2", "novile", "parallel", "contra-parallel", "decile", "element-fire", "element-air", "element-earth", "element-water", "direct"]);
16
+ const DOCS_URL = 'https://www.zodiacfonts.com/documentation';
17
+
18
+ /**
19
+ * Scans the document for elements using PRO glyph classes and emits a
20
+ * console warning for each one found. Safe to call multiple times.
21
+ * No-op in SSR / non-browser environments.
22
+ */
23
+ export function checkZodiacGlyphs() {
24
+ if (typeof document === 'undefined') return; // SSR guard
25
+ document.querySelectorAll('.zf').forEach(function (el) {
26
+ el.classList.forEach(function (cls) {
27
+ if (cls.startsWith('zf-') && PRO_SLUGS.has(cls.slice(3))) {
28
+ console.warn(
29
+ '[Zodiac Fonts] PRO glyph detected: .' + cls + '\n' +
30
+ ' This glyph requires a Pro license — it will not render with the FREE font.\n' +
31
+ ' Self-host ZodiacFontPRO.woff2 after purchasing a Pro license.\n' +
32
+ ' \u2192 ' + DOCS_URL,
33
+ );
34
+ }
35
+ });
36
+ });
37
+ }
38
+
39
+ // Auto-run on plain HTML pages — no adaptor effort needed.
40
+ // In bundled SPA apps, call checkZodiacGlyphs() manually inside your
41
+ // framework's mount lifecycle (useEffect, onMounted, ngOnInit, etc.).
42
+ if (typeof document !== 'undefined') {
43
+ var run = function () { checkZodiacGlyphs(); };
44
+ if (document.readyState === 'loading') {
45
+ document.addEventListener('DOMContentLoaded', run);
46
+ } else {
47
+ run(); // script loaded after DOM is ready (e.g. deferred or dynamic import)
48
+ }
49
+ }
@@ -0,0 +1,4 @@
1
+ const i=new Set(["capricorn-1","ophiuchus","sign-cardinal","sign-fixed","sign-mutable","uranus-2","pluto-2","solar-eclipse-1","lunar-eclipse-1","solar-eclipse-2","lunar-eclipse-2","wheel-of-fortune","vertex","ceres","pallas","juno","vesta-1","vesta-2","comet","sedna","makemake","haumea","proserpine","hygiea","eris-1","eris-2","imum-coeli","descendant","semi-sextile","inconjunct","semi-square","septile","sesquiquadrate","quintile-2","quintile","biquintile","biquintile-2","novile","parallel","contra-parallel","decile","element-fire","element-air","element-earth","element-water","direct"]),a="https://www.zodiacfonts.com/documentation";export function checkZodiacGlyphs(){typeof document>"u"||document.querySelectorAll(".zf").forEach(function(t){t.classList.forEach(function(e){e.startsWith("zf-")&&i.has(e.slice(3))&&console.warn("[Zodiac Fonts] PRO glyph detected: ."+e+`
2
+ This glyph requires a Pro license \u2014 it will not render with the FREE font.
3
+ Self-host ZodiacFontPRO.woff2 after purchasing a Pro license.
4
+ \u2192 `+a)})})}if(typeof document<"u"){var n=function(){checkZodiacGlyphs()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n):n()}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zodiacfonts",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "Free astrology icons & symbols — 55 hand-crafted, currentColor-ready SVG glyphs (zodiac signs, planets, houses, aspects, lunar phases). Part of Zodiac Fonts.",
5
5
  "keywords": [
6
6
  "astrology",
@@ -28,10 +28,27 @@
28
28
  "author": "Zodiac Fonts (https://www.zodiacfonts.com)",
29
29
  "type": "module",
30
30
  "files": [
31
+ "fonts",
31
32
  "icons",
33
+ "css",
34
+ "js",
35
+ "scss",
32
36
  "glyphs.json",
33
37
  "OFL.txt",
38
+ "CHANGELOG.md",
34
39
  "README.md"
35
40
  ],
36
- "sideEffects": false
41
+ "exports": {
42
+ "./css": "./css/zodiac-fonts.css",
43
+ "./css/min": "./css/zodiac-fonts.min.css",
44
+ "./js": "./js/zodiac-fonts.js",
45
+ "./scss": "./scss/zodiac-fonts.scss",
46
+ "./glyphs.json": "./glyphs.json",
47
+ "./icons/*": "./icons/*",
48
+ "./fonts/*": "./fonts/*"
49
+ },
50
+ "sideEffects": [
51
+ "**/*.css",
52
+ "**/*.scss"
53
+ ]
37
54
  }
@@ -0,0 +1,162 @@
1
+ // zodiac-fonts.scss — Zodiac Fonts Sass source
2
+ // Part of Zodiac Fonts · https://www.zodiacfonts.com
3
+ // Generated from glyphs.json — do not edit by hand.
4
+ //
5
+ // Usage with a bundler (Vite, webpack, Angular CLI, etc.):
6
+ // @use 'zodiacfonts/scss'; // default font path
7
+ //
8
+ // Override the font path before importing:
9
+ // $zf-font-path: '/your/assets/ZodiacFontFREE.woff2';
10
+ // @use 'zodiacfonts/scss';
11
+ //
12
+ // Available variables (all `!default`, override before @use):
13
+ // $zf-font-path Path to ZodiacFontFREE.woff2 (default: relative to this file)
14
+ // $zf-font-family Font-family name registered with @font-face
15
+
16
+ $zf-font-path: '../fonts/ZodiacFontFREE.woff2' !default;
17
+ $zf-font-family: 'Zodiac Fonts' !default;
18
+
19
+ @font-face {
20
+ font-family: $zf-font-family;
21
+ src: url(#{$zf-font-path}) format('woff2');
22
+ font-weight: 400;
23
+ font-style: normal;
24
+ font-display: block;
25
+ unicode-range: U+E000, U+E001, U+E002, U+E004, U+E005, U+E006, U+E007, U+E008, U+E009, U+E00A, U+E00B, U+E00C, U+E100, U+E101, U+E102, U+E103, U+E104, U+E105, U+E106, U+E107, U+E108, U+E10A, U+E10B, U+E204, U+E205, U+E206, U+E207, U+E208, U+E209, U+E20A, U+E20B, U+E300, U+E301, U+E302, U+E401, U+E500, U+E501, U+E502, U+E503, U+E504, U+E505, U+E506, U+E507, U+E508, U+E509, U+E50A, U+E50B, U+E50C, U+E50D, U+E600, U+E601, U+E602, U+E603, U+E604, U+E901;
26
+ }
27
+
28
+ .zf {
29
+ font-family: $zf-font-family;
30
+ font-style: normal;
31
+ font-weight: 400;
32
+ font-variant: normal;
33
+ text-transform: none;
34
+ line-height: 1;
35
+ display: inline-block;
36
+ -webkit-font-smoothing: antialiased;
37
+ -moz-osx-font-smoothing: grayscale;
38
+ }
39
+
40
+ .zf-aries::before { content: "\e000"; }
41
+ .zf-cancer::before { content: "\e001"; }
42
+ .zf-libra::before { content: "\e002"; }
43
+ .zf-capricorn::before { content: "\e004"; }
44
+ .zf-taurus::before { content: "\e005"; }
45
+ .zf-leo::before { content: "\e006"; }
46
+ .zf-scorpio::before { content: "\e007"; }
47
+ .zf-aquarius::before { content: "\e008"; }
48
+ .zf-gemini::before { content: "\e009"; }
49
+ .zf-virgo::before { content: "\e00a"; }
50
+ .zf-sagittarius::before { content: "\e00b"; }
51
+ .zf-pisces::before { content: "\e00c"; }
52
+
53
+ .zf-earth::before { content: "\e100"; }
54
+ .zf-sun::before { content: "\e101"; }
55
+ .zf-moon::before { content: "\e102"; }
56
+ .zf-mercury::before { content: "\e103"; }
57
+ .zf-venus::before { content: "\e104"; }
58
+ .zf-mars::before { content: "\e105"; }
59
+ .zf-jupiter::before { content: "\e106"; }
60
+ .zf-saturn::before { content: "\e107"; }
61
+ .zf-uranus::before { content: "\e108"; }
62
+ .zf-neptune::before { content: "\e10a"; }
63
+ .zf-pluto::before { content: "\e10b"; }
64
+
65
+ .zf-new-moon::before { content: "\e204"; }
66
+ .zf-waxing-crescent::before { content: "\e205"; }
67
+ .zf-first-quarter::before { content: "\e206"; }
68
+ .zf-waxing-gibbous::before { content: "\e207"; }
69
+ .zf-full-moon::before { content: "\e208"; }
70
+ .zf-waning-gibbous::before { content: "\e209"; }
71
+ .zf-last-quarter::before { content: "\e20a"; }
72
+ .zf-waning-crescent::before { content: "\e20b"; }
73
+
74
+ .zf-north-node::before { content: "\e300"; }
75
+ .zf-south-node::before { content: "\e301"; }
76
+ .zf-lilith::before { content: "\e302"; }
77
+
78
+ .zf-chiron::before { content: "\e401"; }
79
+
80
+ .zf-house-one::before { content: "\e500"; }
81
+ .zf-house-two::before { content: "\e501"; }
82
+ .zf-house-three::before { content: "\e502"; }
83
+ .zf-house-four::before { content: "\e503"; }
84
+ .zf-house-five::before { content: "\e504"; }
85
+ .zf-house-six::before { content: "\e505"; }
86
+ .zf-house-seven::before { content: "\e506"; }
87
+ .zf-house-eight::before { content: "\e507"; }
88
+ .zf-house-nine::before { content: "\e508"; }
89
+ .zf-house-ten::before { content: "\e509"; }
90
+ .zf-house-eleven::before { content: "\e50a"; }
91
+ .zf-house-twelve::before { content: "\e50b"; }
92
+ .zf-ascendant::before { content: "\e50c"; }
93
+ .zf-medium-coeli::before { content: "\e50d"; }
94
+
95
+ .zf-conjunction::before { content: "\e600"; }
96
+ .zf-opposition::before { content: "\e601"; }
97
+ .zf-square::before { content: "\e602"; }
98
+ .zf-trine::before { content: "\e603"; }
99
+ .zf-sextile::before { content: "\e604"; }
100
+
101
+ .zf-retrograde::before { content: "\e901"; }
102
+
103
+ // ─── PRO glyphs ────────────────────────────────────────────────────────────
104
+ // These classes are part of the full Zodiac Fonts API. They will NOT render
105
+ // with the free font. Purchase a Pro license and self-host ZodiacFontPRO.woff2.
106
+ // → https://www.zodiacfonts.com/documentation
107
+ // ──────────────────────────────────────────────────────────────────────────
108
+
109
+ .zf-capricorn-1::before { content: "\e003"; } // PRO
110
+ .zf-ophiuchus::before { content: "\e00d"; } // PRO
111
+ .zf-sign-cardinal::before { content: "\e00e"; } // PRO
112
+ .zf-sign-fixed::before { content: "\e00f"; } // PRO
113
+ .zf-sign-mutable::before { content: "\e010"; } // PRO
114
+
115
+ .zf-uranus-2::before { content: "\e109"; } // PRO
116
+ .zf-pluto-2::before { content: "\e10c"; } // PRO
117
+
118
+ .zf-solar-eclipse-1::before { content: "\e200"; } // PRO
119
+ .zf-lunar-eclipse-1::before { content: "\e201"; } // PRO
120
+ .zf-solar-eclipse-2::before { content: "\e202"; } // PRO
121
+ .zf-lunar-eclipse-2::before { content: "\e203"; } // PRO
122
+
123
+ .zf-wheel-of-fortune::before { content: "\e303"; } // PRO
124
+ .zf-vertex::before { content: "\e304"; } // PRO
125
+
126
+ .zf-ceres::before { content: "\e400"; } // PRO
127
+ .zf-pallas::before { content: "\e402"; } // PRO
128
+ .zf-juno::before { content: "\e403"; } // PRO
129
+ .zf-vesta-1::before { content: "\e404"; } // PRO
130
+ .zf-vesta-2::before { content: "\e405"; } // PRO
131
+ .zf-comet::before { content: "\e406"; } // PRO
132
+ .zf-sedna::before { content: "\e407"; } // PRO
133
+ .zf-makemake::before { content: "\e408"; } // PRO
134
+ .zf-haumea::before { content: "\e409"; } // PRO
135
+ .zf-proserpine::before { content: "\e40a"; } // PRO
136
+ .zf-hygiea::before { content: "\e40b"; } // PRO
137
+ .zf-eris-1::before { content: "\e40c"; } // PRO
138
+ .zf-eris-2::before { content: "\e40d"; } // PRO
139
+
140
+ .zf-imum-coeli::before { content: "\e50e"; } // PRO
141
+ .zf-descendant::before { content: "\e50f"; } // PRO
142
+
143
+ .zf-semi-sextile::before { content: "\e700"; } // PRO
144
+ .zf-inconjunct::before { content: "\e701"; } // PRO
145
+ .zf-semi-square::before { content: "\e702"; } // PRO
146
+ .zf-septile::before { content: "\e703"; } // PRO
147
+ .zf-sesquiquadrate::before { content: "\e704"; } // PRO
148
+ .zf-quintile-2::before { content: "\e705"; } // PRO
149
+ .zf-quintile::before { content: "\e706"; } // PRO
150
+ .zf-biquintile::before { content: "\e707"; } // PRO
151
+ .zf-biquintile-2::before { content: "\e708"; } // PRO
152
+ .zf-novile::before { content: "\e709"; } // PRO
153
+ .zf-parallel::before { content: "\e70a"; } // PRO
154
+ .zf-contra-parallel::before { content: "\e70b"; } // PRO
155
+ .zf-decile::before { content: "\e70c"; } // PRO
156
+
157
+ .zf-element-fire::before { content: "\e800"; } // PRO
158
+ .zf-element-air::before { content: "\e801"; } // PRO
159
+ .zf-element-earth::before { content: "\e802"; } // PRO
160
+ .zf-element-water::before { content: "\e803"; } // PRO
161
+
162
+ .zf-direct::before { content: "\e900"; } // PRO