@paraxe/design 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.
package/dist/index.js ADDED
@@ -0,0 +1,305 @@
1
+ const o = {
2
+ // Spacing scale
3
+ space0: "--space-0",
4
+ spacePx: "--space-px",
5
+ space1: "--space-1",
6
+ space2: "--space-2",
7
+ space3: "--space-3",
8
+ space4: "--space-4",
9
+ space5: "--space-5",
10
+ space6: "--space-6",
11
+ space7: "--space-7",
12
+ space8: "--space-8",
13
+ space9: "--space-9",
14
+ space10: "--space-10",
15
+ space11: "--space-11",
16
+ space12: "--space-12",
17
+ space14: "--space-14",
18
+ space16: "--space-16",
19
+ space20: "--space-20",
20
+ space24: "--space-24",
21
+ space28: "--space-28",
22
+ space32: "--space-32",
23
+ space36: "--space-36",
24
+ space40: "--space-40",
25
+ space44: "--space-44",
26
+ space48: "--space-48",
27
+ space52: "--space-52",
28
+ space56: "--space-56",
29
+ space60: "--space-60",
30
+ space64: "--space-64",
31
+ space72: "--space-72",
32
+ space80: "--space-80",
33
+ space96: "--space-96",
34
+ // Spacing roles
35
+ sectionSpacing: "--section-spacing",
36
+ containerPadding: "--container-padding",
37
+ containerPaddingLg: "--container-padding-lg",
38
+ cardPadding: "--card-padding",
39
+ cardPaddingSm: "--card-padding-sm",
40
+ cardPaddingLg: "--card-padding-lg",
41
+ stackGap: "--stack-gap",
42
+ stackGapSm: "--stack-gap-sm",
43
+ stackGapLg: "--stack-gap-lg",
44
+ inlineGap: "--inline-gap",
45
+ inlineGapSm: "--inline-gap-sm",
46
+ inlineGapLg: "--inline-gap-lg",
47
+ gridGap: "--grid-gap",
48
+ gridGapSm: "--grid-gap-sm",
49
+ gridGapLg: "--grid-gap-lg",
50
+ // Layout
51
+ containerMaxWidth: "--container-max-width",
52
+ containerNarrow: "--container-narrow",
53
+ containerGutter: "--container-gutter",
54
+ containerGutterLg: "--container-gutter-lg",
55
+ contentWidthNarrow: "--content-width-narrow",
56
+ // Z-index
57
+ zBase: "--z-base",
58
+ zFloor: "--z-floor",
59
+ zSticky: "--z-sticky",
60
+ zNavbar: "--z-navbar",
61
+ zDropdown: "--z-dropdown",
62
+ zOverlay: "--z-overlay",
63
+ zModal: "--z-modal",
64
+ zPopover: "--z-popover",
65
+ zTooltip: "--z-tooltip",
66
+ // Typography
67
+ fontFamilyDisplay: "--font-family-display",
68
+ fontFamilyBody: "--font-family-body",
69
+ fontFamilyMono: "--font-family-mono",
70
+ fontWeightLight: "--font-weight-light",
71
+ fontWeightRegular: "--font-weight-regular",
72
+ fontWeightMedium: "--font-weight-medium",
73
+ fontWeightSemibold: "--font-weight-semibold",
74
+ fontWeightBold: "--font-weight-bold",
75
+ fontWeightExtrabold: "--font-weight-extrabold",
76
+ fontSizeXs: "--font-size-xs",
77
+ fontSizeSm: "--font-size-sm",
78
+ fontSizeBase: "--font-size-base",
79
+ fontSizeLg: "--font-size-lg",
80
+ fontSizeXl: "--font-size-xl",
81
+ fontSize2xl: "--font-size-2xl",
82
+ fontSize3xl: "--font-size-3xl",
83
+ fontSize4xl: "--font-size-4xl",
84
+ fontSize5xl: "--font-size-5xl",
85
+ fontSize6xl: "--font-size-6xl",
86
+ fontSize7xl: "--font-size-7xl",
87
+ fontSize8xl: "--font-size-8xl",
88
+ fontSize9xl: "--font-size-9xl",
89
+ lineHeightTight: "--line-height-tight",
90
+ lineHeightSnug: "--line-height-snug",
91
+ lineHeightNormal: "--line-height-normal",
92
+ lineHeightRelaxed: "--line-height-relaxed",
93
+ lineHeightLoose: "--line-height-loose",
94
+ letterSpacingTight: "--letter-spacing-tight",
95
+ letterSpacingNormal: "--letter-spacing-normal",
96
+ letterSpacingWide: "--letter-spacing-wide",
97
+ letterSpacingWider: "--letter-spacing-wider",
98
+ letterSpacingWidest: "--letter-spacing-widest",
99
+ // Typography — semantic layer
100
+ typographyH1Size: "--typography-h1-size",
101
+ typographyH2Size: "--typography-h2-size",
102
+ typographyH3Size: "--typography-h3-size",
103
+ typographyH4Size: "--typography-h4-size",
104
+ typographyLeadSize: "--typography-lead-size",
105
+ typographyBodySize: "--typography-body-size",
106
+ typographyCaptionSize: "--typography-caption-size",
107
+ typographyOverlineSize: "--typography-overline-size",
108
+ typographyHeadingWeight: "--typography-heading-weight",
109
+ typographyBodyWeight: "--typography-body-weight",
110
+ typographyHeadingLineheight: "--typography-heading-lineheight",
111
+ typographyBodyLineheight: "--typography-body-lineheight",
112
+ typographyHeadingLetterspacing: "--typography-heading-letterspacing",
113
+ typographyBodyLetterspacing: "--typography-body-letterspacing",
114
+ // Radius
115
+ radiusNone: "--radius-none",
116
+ radiusSm: "--radius-sm",
117
+ radiusBase: "--radius-base",
118
+ radiusMd: "--radius-md",
119
+ radiusLg: "--radius-lg",
120
+ radiusXl: "--radius-xl",
121
+ radius2xl: "--radius-2xl",
122
+ radius3xl: "--radius-3xl",
123
+ radiusFull: "--radius-full",
124
+ // Shadows (structural)
125
+ shadowSm: "--shadow-sm",
126
+ shadowBase: "--shadow-base",
127
+ shadowMd: "--shadow-md",
128
+ shadowLg: "--shadow-lg",
129
+ shadowXl: "--shadow-xl",
130
+ shadow2xl: "--shadow-2xl",
131
+ shadowInner: "--shadow-inner",
132
+ // Motion durations
133
+ motionDurationFast: "--motion-duration-fast",
134
+ motionDurationNormal: "--motion-duration-normal",
135
+ motionDurationSlow: "--motion-duration-slow",
136
+ motionDurationSlower: "--motion-duration-slower",
137
+ motionDurationSlowest: "--motion-duration-slowest",
138
+ // Motion easings
139
+ motionEaseIn: "--motion-ease-in",
140
+ motionEaseOut: "--motion-ease-out",
141
+ motionEaseInOut: "--motion-ease-in-out",
142
+ motionEaseSpring: "--motion-ease-spring",
143
+ motionEaseSmooth: "--motion-ease-smooth",
144
+ // Motion combinators
145
+ motionFast: "--motion-fast",
146
+ motionNormal: "--motion-normal",
147
+ motionSlow: "--motion-slow",
148
+ motionSlower: "--motion-slower",
149
+ easeStandard: "--ease-standard",
150
+ easeSmooth: "--ease-smooth",
151
+ easeSpring: "--ease-spring",
152
+ transitionFast: "--transition-fast",
153
+ transitionNormal: "--transition-normal",
154
+ transitionSlow: "--transition-slow",
155
+ // Component structure
156
+ buttonRadius: "--button-radius",
157
+ buttonPaddingX: "--button-padding-x",
158
+ buttonPaddingY: "--button-padding-y",
159
+ buttonGap: "--button-gap",
160
+ cardRadius: "--card-radius",
161
+ badgeRadius: "--badge-radius",
162
+ navHeight: "--nav-height",
163
+ navBlur: "--nav-blur",
164
+ glassBlur: "--glass-blur",
165
+ glassSaturate: "--glass-saturate",
166
+ focusRingWidth: "--focus-ring-width",
167
+ focusRingOffset: "--focus-ring-offset"
168
+ }, t = {
169
+ brandPrimary: "--brand-primary",
170
+ brandPrimaryHover: "--brand-primary-hover",
171
+ brandPrimaryActive: "--brand-primary-active",
172
+ brandPrimaryLight: "--brand-primary-light",
173
+ brandPrimaryMuted: "--brand-primary-muted",
174
+ brandGlow: "--brand-glow",
175
+ textOnBrand: "--text-on-brand",
176
+ colorSuccess: "--color-success",
177
+ colorWarning: "--color-warning",
178
+ colorDanger: "--color-danger",
179
+ colorInfo: "--color-info",
180
+ backgroundPrimary: "--background-primary",
181
+ backgroundSecondary: "--background-secondary",
182
+ surfaceBase: "--surface-base",
183
+ surfaceRaised: "--surface-raised",
184
+ surfaceCard: "--surface-card",
185
+ surfaceHover: "--surface-hover",
186
+ surfaceElevated1: "--surface-elevated-1",
187
+ surfaceElevated2: "--surface-elevated-2",
188
+ surfaceElevated3: "--surface-elevated-3",
189
+ surfaceGlass: "--surface-glass",
190
+ surfaceGlassStrong: "--surface-glass-strong",
191
+ textPrimary: "--text-primary",
192
+ textSecondary: "--text-secondary",
193
+ textMuted: "--text-muted",
194
+ textInverse: "--text-inverse",
195
+ textAccent: "--text-accent",
196
+ textLink: "--text-link",
197
+ textLinkHover: "--text-link-hover",
198
+ borderDefault: "--border-default",
199
+ borderStrong: "--border-strong",
200
+ borderSubtle: "--border-subtle",
201
+ borderFocus: "--border-focus",
202
+ glassBackground: "--glass-background",
203
+ glassBorder: "--glass-border",
204
+ cardHighlight: "--card-highlight",
205
+ cardHighlightInset: "--card-highlight-inset",
206
+ overlayScrim: "--overlay-scrim",
207
+ overlayScrimStrong: "--overlay-scrim-strong",
208
+ focusRingColor: "--focus-ring-color",
209
+ selectionBackground: "--selection-background",
210
+ selectionText: "--selection-text",
211
+ // Buttons
212
+ buttonPrimaryBg: "--button-primary-bg",
213
+ buttonPrimaryText: "--button-primary-text",
214
+ buttonPrimaryBorder: "--button-primary-border",
215
+ buttonPrimaryHoverBg: "--button-primary-hover-bg",
216
+ buttonPrimaryHoverBorder: "--button-primary-hover-border",
217
+ buttonPrimaryActiveBg: "--button-primary-active-bg",
218
+ buttonPrimaryDisabledBg: "--button-primary-disabled-bg",
219
+ buttonPrimaryDisabledText: "--button-primary-disabled-text",
220
+ buttonSecondaryBg: "--button-secondary-bg",
221
+ buttonSecondaryText: "--button-secondary-text",
222
+ buttonSecondaryBorder: "--button-secondary-border",
223
+ buttonSecondaryHoverBg: "--button-secondary-hover-bg",
224
+ buttonSecondaryHoverBorder: "--button-secondary-hover-border",
225
+ buttonSecondaryActiveBg: "--button-secondary-active-bg",
226
+ buttonSecondaryDisabledBg: "--button-secondary-disabled-bg",
227
+ buttonSecondaryDisabledText: "--button-secondary-disabled-text",
228
+ buttonSecondaryDisabledBorder: "--button-secondary-disabled-border",
229
+ buttonGhostBg: "--button-ghost-bg",
230
+ buttonGhostText: "--button-ghost-text",
231
+ buttonGhostBorder: "--button-ghost-border",
232
+ buttonGhostHoverBg: "--button-ghost-hover-bg",
233
+ buttonGhostHoverBorder: "--button-ghost-hover-border",
234
+ buttonGhostActiveBg: "--button-ghost-active-bg",
235
+ buttonGhostDisabledText: "--button-ghost-disabled-text",
236
+ buttonOutlineBg: "--button-outline-bg",
237
+ buttonOutlineText: "--button-outline-text",
238
+ buttonOutlineBorder: "--button-outline-border",
239
+ buttonOutlineHoverBg: "--button-outline-hover-bg",
240
+ buttonOutlineHoverBorder: "--button-outline-hover-border",
241
+ buttonOutlineActiveBg: "--button-outline-active-bg",
242
+ buttonOutlineDisabledText: "--button-outline-disabled-text",
243
+ buttonOutlineDisabledBorder: "--button-outline-disabled-border",
244
+ buttonDangerBg: "--button-danger-bg",
245
+ buttonDangerText: "--button-danger-text",
246
+ buttonDangerBorder: "--button-danger-border",
247
+ buttonDangerHoverBg: "--button-danger-hover-bg",
248
+ buttonDangerHoverBorder: "--button-danger-hover-border",
249
+ buttonDangerActiveBg: "--button-danger-active-bg",
250
+ buttonDangerDisabledBg: "--button-danger-disabled-bg",
251
+ buttonDangerDisabledText: "--button-danger-disabled-text",
252
+ // Cards
253
+ cardBackground: "--card-background",
254
+ cardBackgroundHover: "--card-background-hover",
255
+ cardBorder: "--card-border",
256
+ cardBorderHover: "--card-border-hover",
257
+ cardShadow: "--card-shadow",
258
+ cardShadowHover: "--card-shadow-hover",
259
+ // Nav
260
+ navBackground: "--nav-background",
261
+ navBorder: "--nav-border",
262
+ navLink: "--nav-link",
263
+ navLinkHover: "--nav-link-hover",
264
+ navLinkActive: "--nav-link-active",
265
+ navLinkActiveBorder: "--nav-link-active-border",
266
+ navFocusRing: "--nav-focus-ring",
267
+ // Forms
268
+ formBackground: "--form-background",
269
+ formBorder: "--form-border",
270
+ formBorderHover: "--form-border-hover",
271
+ formBorderFocus: "--form-border-focus",
272
+ formText: "--form-text",
273
+ formTextMuted: "--form-text-muted",
274
+ formPlaceholder: "--form-placeholder",
275
+ formBgDisabled: "--form-bg-disabled",
276
+ formBorderDisabled: "--form-border-disabled",
277
+ formTextDisabled: "--form-text-disabled",
278
+ // Badges
279
+ badgeBackground: "--badge-background",
280
+ badgeBorder: "--badge-border",
281
+ badgeText: "--badge-text",
282
+ // Footer
283
+ footerBackground: "--footer-background",
284
+ footerBorder: "--footer-border",
285
+ footerText: "--footer-text",
286
+ footerLink: "--footer-link",
287
+ footerLinkHover: "--footer-link-hover",
288
+ // Shadow elevation
289
+ shadowElevationLow: "--shadow-elevation-low",
290
+ shadowElevationMedium: "--shadow-elevation-medium",
291
+ shadowElevationHigh: "--shadow-elevation-high",
292
+ shadowElevationModal: "--shadow-elevation-modal"
293
+ }, a = {
294
+ ...o,
295
+ ...t
296
+ };
297
+ function r(e) {
298
+ return `var(${e})`;
299
+ }
300
+ export {
301
+ a as ALL_TOKEN_NAMES,
302
+ t as COLOR_TOKEN_NAMES,
303
+ o as TOKEN_NAMES,
304
+ r as token
305
+ };
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@paraxe/design",
3
+ "version": "1.0.0",
4
+ "description": "Paraxe design system — canonical tokens, themes, and presets. Source of truth for the entire ecosystem.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "style": "./dist/index.css",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./tokens.css": "./src/tokens.css",
16
+ "./theme.css": "./src/themes/default.css",
17
+ "./components.css": "./src/components.css",
18
+ "./themes/*.css": "./src/themes/*.css",
19
+ "./presets/*.css": "./src/presets/*.css",
20
+ "./package.json": "./package.json"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "src"
25
+ ],
26
+ "sideEffects": [
27
+ "**/*.css"
28
+ ],
29
+ "scripts": {
30
+ "build": "vite build",
31
+ "prepack": "npm run build",
32
+ "typecheck": "tsc --noEmit"
33
+ },
34
+ "keywords": [
35
+ "design-tokens",
36
+ "design-system",
37
+ "css-variables",
38
+ "paraxe",
39
+ "themes",
40
+ "presets"
41
+ ],
42
+ "license": "MIT",
43
+ "devDependencies": {
44
+ "@types/node": "^22.10.0",
45
+ "typescript": "^5.7.2",
46
+ "vite": "^6.0.0",
47
+ "vite-plugin-dts": "^4.5.0"
48
+ }
49
+ }
package/src/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # @loba/design
2
+
3
+ Canonical design tokens, themes, and presets for the Loba ecosystem.
4
+ This is the **source of truth** for every token name and default value.
5
+
6
+ ## Import order
7
+
8
+ ```css
9
+ @import "@loba/design/tokens.css"; /* 1. Structural (non-color) */
10
+ @import "@loba/design/presets/default.css"; /* 2. Personality */
11
+ @import "@loba/design/themes/default.css"; /* 3. Colors (dark default) */
12
+ @import "@loba/design/themes/light.css"; /* 3b. Optional light theme */
13
+ @import "@loba/design/components.css"; /* 4. Framework-agnostic component classes (non-@loba/ui) */
14
+ ```
15
+
16
+ ## Structure
17
+
18
+ ```
19
+ src/
20
+ ├── tokens.css # Layer 1 — spacing, typography, motion, radius, z, layout
21
+ ├── themes/ # Layer 2 — colors only
22
+ │ ├── default.css # dark default + [data-theme="light"] overrides
23
+ │ ├── dark.css # deep space blue
24
+ │ ├── light.css # clean light
25
+ │ └── forge.css # warm orange/copper
26
+ ├── presets/ # Layer 3 — personality (~15 vars)
27
+ │ ├── default.css # Plus Jakarta Sans baseline
28
+ │ └── ... # tech, corporate, premium, editorial, etc.
29
+ ├── components.css # Layer 4 — framework-agnostic classes (.btn, .card, .navbar, .container, .stack, .grid, forms, animations)
30
+ ├── tailwind.css # optional Tailwind v4 bridge
31
+ └── index.ts # token manifest + CSS side-effect imports
32
+ ```
33
+
34
+ ## Rendering paths
35
+
36
+ - **`@loba/ui` path** — consume the Vue components (`Button`, `Card`, etc.).
37
+ They read canonical token variables directly. Import `@loba/design` token
38
+ layers + `@loba/ui/style.css`. `components.css` is optional here.
39
+ - **Non-`@loba/ui` path** — render plain HTML/CSS classes (`.btn`,
40
+ `.card`, `.navbar`, `.stack`, `.container`, forms). Import
41
+ `@loba/design/components.css` so those classes are defined against the
42
+ same canonical tokens. Both paths share the exact same design system.
43
+
44
+ Both paths import the same `tokens.css` + `presets/*.css` + `themes/*.css`,
45
+ so the look & feel is identical regardless of which path is used.
46
+
47
+ ## Design language
48
+
49
+ The Loba design system is guided by three documents that sit above the tokens:
50
+
51
+ - **[PHILOSOPHY.md](../PHILOSOPHY.md)** — prescriptive composition principles
52
+ (surfaces by light, accent discipline, typography-led hierarchy, etc.).
53
+ - **[STYLE.md](../STYLE.md)** — the `loba-default` design style spec:
54
+ the visual language expressed by the Loba Studios site, defined independently
55
+ so any future site follows the same language without copying the marketing page.
56
+ - **[PATTERNS.md](../PATTERNS.md)** — optional recipes (glass surface, section
57
+ rhythm, staggered grids, accent checklist) — each is an option, not a mandate.
58
+
59
+ ## Contract
60
+
61
+ See [CONTRACT.md](../CONTRACT.md) — FROZEN v1.0. Token renames are breaking changes.
62
+