css-is-awesome 1.1.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/AGENTS.md +343 -0
- package/CHANGELOG.md +1036 -0
- package/CLAUDE.md +9 -0
- package/CONTRACT.md +580 -0
- package/GEMINI.md +9 -0
- package/LICENSE +21 -0
- package/LICENSE-third-party +88 -0
- package/MIGRATION.md +312 -0
- package/README.md +380 -0
- package/ROADMAP.md +714 -0
- package/THEMING.md +290 -0
- package/THREE-TIERS.md +158 -0
- package/VERSIONING.md +200 -0
- package/_index.scss +34 -0
- package/api.scss +16 -0
- package/bin/README.md +57 -0
- package/bin/cia.cjs +114 -0
- package/bin/migrate-bootstrap.cjs +427 -0
- package/bin/migrate-tailwind.cjs +832 -0
- package/css-is-awesome.instructions.md +533 -0
- package/dist/css-is-awesome.core.css +598 -0
- package/dist/css-is-awesome.core.min.css +1 -0
- package/dist/css-is-awesome.css +3733 -0
- package/dist/css-is-awesome.min.css +1 -0
- package/dist/css-is-awesome.utilities.css +2445 -0
- package/dist/css-is-awesome.utilities.min.css +1 -0
- package/dist/tokens.css +508 -0
- package/dist/tokens.d.ts +266 -0
- package/dist/tokens.min.css +1 -0
- package/figma-tokens/README.md +57 -0
- package/figma-tokens/primitives-brand.scss +121 -0
- package/figma-tokens/semantic-dark.scss +61 -0
- package/figma-tokens/semantic-light.scss +61 -0
- package/figma-tokens/tokens.json +144 -0
- package/llm.txt +183 -0
- package/mcp/server.cjs +1495 -0
- package/package.json +199 -0
- package/public/icons/README.md +278 -0
- package/public/icons/arrow-right.svg +4 -0
- package/public/icons/check.svg +4 -0
- package/public/icons/chevron-down.svg +4 -0
- package/public/icons/close.svg +4 -0
- package/public/icons/core/arrow-down.svg +13 -0
- package/public/icons/core/arrow-left.svg +13 -0
- package/public/icons/core/arrow-right.svg +13 -0
- package/public/icons/core/arrow-up.svg +13 -0
- package/public/icons/core/bell.svg +13 -0
- package/public/icons/core/calendar.svg +15 -0
- package/public/icons/core/check.svg +12 -0
- package/public/icons/core/chevron-down.svg +12 -0
- package/public/icons/core/chevron-left.svg +12 -0
- package/public/icons/core/chevron-right.svg +12 -0
- package/public/icons/core/chevron-up.svg +12 -0
- package/public/icons/core/clock.svg +13 -0
- package/public/icons/core/close.svg +13 -0
- package/public/icons/core/copy.svg +13 -0
- package/public/icons/core/download.svg +14 -0
- package/public/icons/core/edit.svg +13 -0
- package/public/icons/core/error.svg +14 -0
- package/public/icons/core/external-link.svg +14 -0
- package/public/icons/core/eye-off.svg +15 -0
- package/public/icons/core/eye.svg +13 -0
- package/public/icons/core/filter.svg +12 -0
- package/public/icons/core/heart.svg +12 -0
- package/public/icons/core/help.svg +14 -0
- package/public/icons/core/home.svg +13 -0
- package/public/icons/core/info.svg +14 -0
- package/public/icons/core/loading.svg +12 -0
- package/public/icons/core/lock.svg +13 -0
- package/public/icons/core/mail.svg +13 -0
- package/public/icons/core/menu.svg +14 -0
- package/public/icons/core/message.svg +12 -0
- package/public/icons/core/minus.svg +12 -0
- package/public/icons/core/more-horizontal.svg +14 -0
- package/public/icons/core/pause.svg +13 -0
- package/public/icons/core/play.svg +12 -0
- package/public/icons/core/plus.svg +13 -0
- package/public/icons/core/refresh.svg +15 -0
- package/public/icons/core/save.svg +14 -0
- package/public/icons/core/search.svg +13 -0
- package/public/icons/core/settings.svg +13 -0
- package/public/icons/core/share.svg +14 -0
- package/public/icons/core/sort.svg +15 -0
- package/public/icons/core/star.svg +12 -0
- package/public/icons/core/success.svg +13 -0
- package/public/icons/core/trash.svg +16 -0
- package/public/icons/core/unlock.svg +13 -0
- package/public/icons/core/upload.svg +14 -0
- package/public/icons/core/user.svg +13 -0
- package/public/icons/core/users.svg +15 -0
- package/public/icons/core/warning.svg +14 -0
- package/public/icons/download.svg +4 -0
- package/public/icons/edit.svg +4 -0
- package/public/icons/menu.svg +4 -0
- package/public/icons/search.svg +4 -0
- package/public/theme.css +4179 -0
- package/public/themes/README.md +102 -0
- package/public/themes/boilerplate/theme.css +154 -0
- package/public/themes/boilerplate-dark/theme.css +171 -0
- package/public/themes/boilerplate-light/theme.css +171 -0
- package/public/themes/cupertino/theme.css +165 -0
- package/public/themes/cupertino-dark/theme.css +200 -0
- package/public/themes/cupertino-light/theme.css +227 -0
- package/public/themes/glass/theme.css +190 -0
- package/public/themes/glass-dark/theme.css +201 -0
- package/public/themes/glass-light/theme.css +229 -0
- package/public/themes/graphite/theme.css +155 -0
- package/public/themes/graphite-dark/theme.css +223 -0
- package/public/themes/graphite-light/theme.css +191 -0
- package/public/themes/press/theme.css +189 -0
- package/public/themes/press-dark/theme.css +199 -0
- package/public/themes/press-light/theme.css +235 -0
- package/public/themes/prism/theme.css +159 -0
- package/public/themes/prism-dark/theme.css +185 -0
- package/public/themes/prism-light/theme.css +188 -0
- package/public/themes/sketchbook/theme.css +152 -0
- package/public/themes/sketchbook-dark/theme.css +194 -0
- package/public/themes/sketchbook-light/theme.css +188 -0
- package/public/themes/terminal/theme.css +159 -0
- package/public/themes/terminal-dark/theme.css +229 -0
- package/public/themes/terminal-light/theme.css +152 -0
- package/scripts/README.md +70 -0
- package/scripts/icon-contract.json +67 -0
- package/scripts/icon-validator.js +205 -0
- package/scripts/prepare-dist.mjs +65 -0
- package/scripts/theme-a11y.js +415 -0
- package/scripts/theme-contract.json +171 -0
- package/scripts/theme-validator.js +674 -0
- package/scss/README.md +55 -0
- package/scss/_animations-utilities.scss +107 -0
- package/scss/_animations.scss +248 -0
- package/scss/_app-styles.scss +15 -0
- package/scss/_generator.scss +174 -0
- package/scss/_icons.scss +475 -0
- package/scss/_index.scss +17 -0
- package/scss/_layout.scss +597 -0
- package/scss/_mixins.scss +1036 -0
- package/scss/_system.scss +291 -0
- package/scss/_utilities.scss +377 -0
- package/scss/api.scss +61 -0
- package/scss/components/_accordion.scss +72 -0
- package/scss/components/_buttons.scss +171 -0
- package/scss/components/_copy-button.scss +69 -0
- package/scss/components/_data.scss +190 -0
- package/scss/components/_feedback.scss +197 -0
- package/scss/components/_forms.scss +272 -0
- package/scss/components/_index.scss +17 -0
- package/scss/components/_navigation.scss +186 -0
- package/scss/components/_overlay.scss +259 -0
- package/scss/components/_stepper.scss +159 -0
- package/scss/components/_tabs.scss +72 -0
- package/scss/core.scss +54 -0
- package/scss/examples/_theming.scss +107 -0
- package/scss/examples/_usage.scss +317 -0
- package/scss/main.scss +64 -0
- package/scss/recipes/README.md +110 -0
- package/scss/recipes/_bare-tags.scss +232 -0
- package/scss/recipes/_recipe-template.md +119 -0
- package/scss/recipes/combobox.md +509 -0
- package/scss/recipes/dialog.md +265 -0
- package/scss/recipes/print-to-pdf.md +263 -0
- package/scss/theme/README.md +67 -0
- package/scss/theme/_brand.scss +18 -0
- package/scss/theme/_colors-dark.scss +68 -0
- package/scss/theme/_colors-light.scss +70 -0
- package/scss/theme/_components.scss +94 -0
- package/scss/theme/_icons.scss +104 -0
- package/scss/theme/_index.scss +62 -0
- package/scss/theme/_shadows.scss +65 -0
- package/scss/theme/_shape.scss +13 -0
- package/scss/theme/_typography.scss +9 -0
- package/scss/theme/registry.json +447 -0
- package/scss/themes/boilerplate-dark.scss +212 -0
- package/scss/themes/boilerplate-light.scss +209 -0
- package/scss/themes/boilerplate.scss +181 -0
- package/scss/themes/cupertino-dark.scss +238 -0
- package/scss/themes/cupertino-light.scss +266 -0
- package/scss/themes/cupertino.scss +194 -0
- package/scss/themes/glass-dark.scss +238 -0
- package/scss/themes/glass-light.scss +266 -0
- package/scss/themes/glass.scss +220 -0
- package/scss/themes/graphite-dark.scss +260 -0
- package/scss/themes/graphite-light.scss +228 -0
- package/scss/themes/graphite.scss +182 -0
- package/scss/themes/press-dark.scss +237 -0
- package/scss/themes/press-light.scss +273 -0
- package/scss/themes/press.scss +241 -0
- package/scss/themes/prism-dark.scss +217 -0
- package/scss/themes/prism-light.scss +220 -0
- package/scss/themes/prism.scss +190 -0
- package/scss/themes/sketchbook-dark.scss +231 -0
- package/scss/themes/sketchbook-light.scss +231 -0
- package/scss/themes/sketchbook.scss +178 -0
- package/scss/themes/terminal-dark.scss +267 -0
- package/scss/themes/terminal-light.scss +175 -0
- package/scss/themes/terminal.scss +185 -0
- package/scss/tokens.scss +23 -0
- package/scss/utilities-only.scss +4 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// SEMANTIC COLORS - Dark Mode
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
$colors-dark: (
|
|
6
|
+
// Backgrounds
|
|
7
|
+
background-default: #0a0a0a,
|
|
8
|
+
background-subtle: #151515,
|
|
9
|
+
background-navbar: #1a1a1a,
|
|
10
|
+
|
|
11
|
+
// Surfaces
|
|
12
|
+
surface-default: #151515,
|
|
13
|
+
surface-subtle: #1f1f1f,
|
|
14
|
+
surface-muted: #2a2a2a,
|
|
15
|
+
surface-emphasis: #353535,
|
|
16
|
+
|
|
17
|
+
// Text
|
|
18
|
+
text-primary: #FFF,
|
|
19
|
+
text-secondary: #b8b8b8,
|
|
20
|
+
text-muted: #768194,
|
|
21
|
+
text-inverse: #0a0a0a,
|
|
22
|
+
text-link: #09f,
|
|
23
|
+
text-link-hover: #5ebbff,
|
|
24
|
+
|
|
25
|
+
// Borders
|
|
26
|
+
border-default: #2a2a2a,
|
|
27
|
+
border-subtle: #1f1f1f,
|
|
28
|
+
border-emphasis: #404040,
|
|
29
|
+
border-focus: #09f,
|
|
30
|
+
|
|
31
|
+
// Interactive states
|
|
32
|
+
interactive-hover: rgba(255, 255, 255, 0.05),
|
|
33
|
+
interactive-active: rgba(255, 255, 255, 0.1),
|
|
34
|
+
|
|
35
|
+
// Action - Primary
|
|
36
|
+
action-primary-default: #6B8FE8,
|
|
37
|
+
action-primary-hover: #8BABF5,
|
|
38
|
+
action-primary-active: #3A5FCD,
|
|
39
|
+
|
|
40
|
+
// Action - Secondary
|
|
41
|
+
action-secondary-default: #FF8A8A,
|
|
42
|
+
action-secondary-hover: #FFACAC,
|
|
43
|
+
action-secondary-active: #FF6B6B,
|
|
44
|
+
|
|
45
|
+
// Status - Success
|
|
46
|
+
success-default: #34d399,
|
|
47
|
+
success-hover: #10b981,
|
|
48
|
+
success-subtle: #064e3b,
|
|
49
|
+
success-text: #6ee7b7,
|
|
50
|
+
|
|
51
|
+
// Status - Warning
|
|
52
|
+
warning-default: #fbbf24,
|
|
53
|
+
warning-hover: #f59e0b,
|
|
54
|
+
warning-subtle: #451a03,
|
|
55
|
+
warning-text: #fcd34d,
|
|
56
|
+
|
|
57
|
+
// Status - Error
|
|
58
|
+
error-default: #f87171,
|
|
59
|
+
error-hover: #ef4444,
|
|
60
|
+
error-subtle: #450a0a,
|
|
61
|
+
error-text: #fca5a5,
|
|
62
|
+
|
|
63
|
+
// Status - Info
|
|
64
|
+
info-default: #60a5fa,
|
|
65
|
+
info-hover: #3b82f6,
|
|
66
|
+
info-subtle: #172554,
|
|
67
|
+
info-text: #93c5fd,
|
|
68
|
+
) !default;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// SEMANTIC COLORS - Light Mode
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Inspired by zeroheight + Trueform: warm, professional, accessible
|
|
5
|
+
// ============================================================================
|
|
6
|
+
|
|
7
|
+
$colors-light: (
|
|
8
|
+
// Backgrounds
|
|
9
|
+
background-default: #FFF,
|
|
10
|
+
background-subtle: #F8F6F0,
|
|
11
|
+
background-navbar: #FAFAFA,
|
|
12
|
+
|
|
13
|
+
// Surfaces
|
|
14
|
+
surface-default: #FFF,
|
|
15
|
+
surface-subtle: #F8F6F0,
|
|
16
|
+
surface-muted: #F5F5F5,
|
|
17
|
+
surface-emphasis: #E5E5E5,
|
|
18
|
+
|
|
19
|
+
// Text
|
|
20
|
+
text-primary: #0f0f0f,
|
|
21
|
+
text-secondary: #525252,
|
|
22
|
+
text-muted: #6b6b6b,
|
|
23
|
+
text-inverse: #fff,
|
|
24
|
+
text-link: #384fff,
|
|
25
|
+
text-link-hover: #2a3acc,
|
|
26
|
+
|
|
27
|
+
// Borders
|
|
28
|
+
border-default: #e5e5e5,
|
|
29
|
+
border-subtle: #f5f5f5,
|
|
30
|
+
border-emphasis: #d4d4d4,
|
|
31
|
+
border-focus: #384fff,
|
|
32
|
+
|
|
33
|
+
// Interactive states
|
|
34
|
+
interactive-hover: rgba(0, 0, 0, 0.03),
|
|
35
|
+
interactive-active: rgba(0, 0, 0, 0.06),
|
|
36
|
+
|
|
37
|
+
// Action - Primary
|
|
38
|
+
action-primary-default: #3A5FCD,
|
|
39
|
+
action-primary-hover: #2E4A99,
|
|
40
|
+
action-primary-active: #1E3A8A,
|
|
41
|
+
|
|
42
|
+
// Action - Secondary
|
|
43
|
+
action-secondary-default: #FF6B6B,
|
|
44
|
+
action-secondary-hover: #E85555,
|
|
45
|
+
action-secondary-active: #C55,
|
|
46
|
+
|
|
47
|
+
// Status - Success
|
|
48
|
+
success-default: #10b981,
|
|
49
|
+
success-hover: #059669,
|
|
50
|
+
success-subtle: #ecfdf5,
|
|
51
|
+
success-text: #065f46,
|
|
52
|
+
|
|
53
|
+
// Status - Warning
|
|
54
|
+
warning-default: #f59e0b,
|
|
55
|
+
warning-hover: #d97706,
|
|
56
|
+
warning-subtle: #fffbeb,
|
|
57
|
+
warning-text: #92400e,
|
|
58
|
+
|
|
59
|
+
// Status - Error
|
|
60
|
+
error-default: #DC2626,
|
|
61
|
+
error-hover: #B91C1C,
|
|
62
|
+
error-subtle: #FEF2F2,
|
|
63
|
+
error-text: #991B1B,
|
|
64
|
+
|
|
65
|
+
// Status - Info
|
|
66
|
+
info-default: #3A5FCD,
|
|
67
|
+
info-hover: #2E4A99,
|
|
68
|
+
info-subtle: #EFF6FF,
|
|
69
|
+
info-text: #1E3A8A,
|
|
70
|
+
) !default;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// COMPONENT TOKENS — Per-component runtime overrides (Epic 1 Feature 1.3)
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// Every entry in this map is emitted by _generator.scss as a CSS custom
|
|
5
|
+
// property on :root, using the raw CSS value recorded here as its default.
|
|
6
|
+
// Library mixins read the same tokens via `var(--key, <default>)`, so a
|
|
7
|
+
// theme can override a single property (e.g. `--btn-radius: 0`) on its
|
|
8
|
+
// own :root without touching the library SCSS or rebuilding.
|
|
9
|
+
//
|
|
10
|
+
// VALUE FORMAT
|
|
11
|
+
// Each value is a RAW CSS string — already wrapped in `var(…)` when it
|
|
12
|
+
// references another library token. That value is
|
|
13
|
+
// 1. emitted as the CSS variable default on :root, AND
|
|
14
|
+
// 2. used as the fallback inside `var(--key, …)` in the component mixin.
|
|
15
|
+
// Keep these in sync with the mixin defaults in scss/_mixins.scss and
|
|
16
|
+
// scss/components/*.scss so library output is semantically identical
|
|
17
|
+
// when no theme override is present.
|
|
18
|
+
// ============================================================================
|
|
19
|
+
|
|
20
|
+
$components: (
|
|
21
|
+
// ----------------------------------------------------------
|
|
22
|
+
// Buttons
|
|
23
|
+
// ----------------------------------------------------------
|
|
24
|
+
btn-padding-y: var(--space-1, 0.5rem),
|
|
25
|
+
btn-padding-x: var(--space-4, 1rem),
|
|
26
|
+
btn-radius: var(--radius-md, 0.25rem),
|
|
27
|
+
btn-font-weight: var(--font-weight-medium, 500),
|
|
28
|
+
btn-font-size: var(--font-size-base, 1rem),
|
|
29
|
+
btn-border-width: 1px,
|
|
30
|
+
|
|
31
|
+
// ----------------------------------------------------------
|
|
32
|
+
// Cards
|
|
33
|
+
// ----------------------------------------------------------
|
|
34
|
+
card-padding: var(--space-4, 1rem),
|
|
35
|
+
card-radius: var(--radius-lg, 0.5rem),
|
|
36
|
+
card-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)),
|
|
37
|
+
card-border: 1px solid var(--border-default),
|
|
38
|
+
|
|
39
|
+
// ----------------------------------------------------------
|
|
40
|
+
// Inputs
|
|
41
|
+
// ----------------------------------------------------------
|
|
42
|
+
input-padding-y: var(--space-1, 0.5rem),
|
|
43
|
+
input-padding-x: var(--space-2, 0.75rem),
|
|
44
|
+
input-radius: var(--radius-md, 0.25rem),
|
|
45
|
+
input-border-width: 1px,
|
|
46
|
+
|
|
47
|
+
// ----------------------------------------------------------
|
|
48
|
+
// Alerts
|
|
49
|
+
// ----------------------------------------------------------
|
|
50
|
+
alert-padding-y: var(--space-2, 0.75rem),
|
|
51
|
+
alert-padding-x: var(--space-4, 1rem),
|
|
52
|
+
alert-radius: var(--radius-md, 0.25rem),
|
|
53
|
+
|
|
54
|
+
// ----------------------------------------------------------
|
|
55
|
+
// Badges
|
|
56
|
+
// ----------------------------------------------------------
|
|
57
|
+
badge-padding-y: var(--space-1, 0.5rem),
|
|
58
|
+
badge-padding-x: var(--space-1, 0.5rem),
|
|
59
|
+
badge-radius: var(--radius-full, 9999px),
|
|
60
|
+
|
|
61
|
+
// ----------------------------------------------------------
|
|
62
|
+
// Tags / Chips
|
|
63
|
+
// ----------------------------------------------------------
|
|
64
|
+
tag-padding-y: var(--space-2xs, 0.25rem),
|
|
65
|
+
tag-padding-x: var(--space-2, 0.75rem),
|
|
66
|
+
tag-radius: var(--radius-md, 0.25rem),
|
|
67
|
+
|
|
68
|
+
// ----------------------------------------------------------
|
|
69
|
+
// Modals
|
|
70
|
+
// ----------------------------------------------------------
|
|
71
|
+
modal-padding: var(--space-5, 1.5rem),
|
|
72
|
+
modal-radius: var(--radius-xl, 0.75rem),
|
|
73
|
+
modal-shadow: var(--shadow-2xl, 0 25px 50px -12px rgb(0 0 0 / 0.25)),
|
|
74
|
+
|
|
75
|
+
// ----------------------------------------------------------
|
|
76
|
+
// Popovers
|
|
77
|
+
// ----------------------------------------------------------
|
|
78
|
+
popover-padding: var(--space-4, 1rem),
|
|
79
|
+
popover-radius: var(--radius-lg, 0.5rem),
|
|
80
|
+
popover-shadow: var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1)),
|
|
81
|
+
|
|
82
|
+
// ----------------------------------------------------------
|
|
83
|
+
// Tooltips
|
|
84
|
+
// ----------------------------------------------------------
|
|
85
|
+
tooltip-padding-y: var(--space-1, 0.5rem),
|
|
86
|
+
tooltip-padding-x: var(--space-1, 0.5rem),
|
|
87
|
+
tooltip-radius: var(--radius-md, 0.25rem),
|
|
88
|
+
|
|
89
|
+
// ----------------------------------------------------------
|
|
90
|
+
// Dropdowns
|
|
91
|
+
// ----------------------------------------------------------
|
|
92
|
+
dropdown-radius: var(--radius-md, 0.25rem),
|
|
93
|
+
dropdown-shadow: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1)),
|
|
94
|
+
) !default;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// ICONS - SVG + Font Awesome Configuration
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
// SVG Icons
|
|
6
|
+
//
|
|
7
|
+
// The default `core` icon pack ships at /icons/core/. Glyphs are vendored
|
|
8
|
+
// from Lucide (ISC + MIT, see LICENSE-third-party). Per-theme overrides
|
|
9
|
+
// resolve at runtime through CSS custom properties — see `m.svg` for the
|
|
10
|
+
// resolver pattern and CONTRACT.md → "Icons contract" for the full story.
|
|
11
|
+
$icon-path: '/icons' !default;
|
|
12
|
+
$icon-pack: 'core' !default;
|
|
13
|
+
$icon-size: 24px !default;
|
|
14
|
+
|
|
15
|
+
$icon-svg-alias: (
|
|
16
|
+
delete: 'trash',
|
|
17
|
+
close: 'x',
|
|
18
|
+
) !default;
|
|
19
|
+
|
|
20
|
+
// Font Awesome
|
|
21
|
+
$fa-path: '/webfonts' !default;
|
|
22
|
+
$fa-style: solid !default;
|
|
23
|
+
|
|
24
|
+
// Set to `true` if you've licensed Font Awesome 6 Pro and want the Pro
|
|
25
|
+
// families wired in automatically. When enabled, `fa-load` emits
|
|
26
|
+
// @font-face rules for Light / Thin / Duotone alongside Solid / Regular /
|
|
27
|
+
// Brands, and `fa()` resolves to the Pro family name. Drop the woff2 files
|
|
28
|
+
// for whichever weights you ship at $fa-path — missing files are harmless,
|
|
29
|
+
// they just won't render until you add them.
|
|
30
|
+
$fa-pro: false !default;
|
|
31
|
+
|
|
32
|
+
$icon-fa-map: (
|
|
33
|
+
// Navigation
|
|
34
|
+
menu: '\f0c9',
|
|
35
|
+
close: '\f00d',
|
|
36
|
+
search: '\f002',
|
|
37
|
+
home: '\f015',
|
|
38
|
+
|
|
39
|
+
// Actions
|
|
40
|
+
plus: '\f067',
|
|
41
|
+
minus: '\f068',
|
|
42
|
+
edit: '\f044',
|
|
43
|
+
delete: '\f1f8',
|
|
44
|
+
save: '\f0c7',
|
|
45
|
+
download: '\f019',
|
|
46
|
+
upload: '\f093',
|
|
47
|
+
copy: '\f0c5',
|
|
48
|
+
|
|
49
|
+
// Arrows
|
|
50
|
+
arrow-up: '\f062',
|
|
51
|
+
arrow-down: '\f063',
|
|
52
|
+
arrow-left: '\f060',
|
|
53
|
+
arrow-right: '\f061',
|
|
54
|
+
chevron-up: '\f077',
|
|
55
|
+
chevron-down: '\f078',
|
|
56
|
+
chevron-left: '\f053',
|
|
57
|
+
chevron-right: '\f054',
|
|
58
|
+
|
|
59
|
+
// Status
|
|
60
|
+
check: '\f00c',
|
|
61
|
+
info: '\f129',
|
|
62
|
+
warning: '\f071',
|
|
63
|
+
error: '\f06a',
|
|
64
|
+
|
|
65
|
+
// UI
|
|
66
|
+
user: '\f007',
|
|
67
|
+
settings: '\f013',
|
|
68
|
+
bell: '\f0f3',
|
|
69
|
+
calendar: '\f133',
|
|
70
|
+
clock: '\f017',
|
|
71
|
+
lock: '\f023',
|
|
72
|
+
unlock: '\f09c',
|
|
73
|
+
eye: '\f06e',
|
|
74
|
+
eye-off: '\f070',
|
|
75
|
+
star: '\f005',
|
|
76
|
+
heart: '\f004',
|
|
77
|
+
filter: '\f0b0',
|
|
78
|
+
sort: '\f0dc',
|
|
79
|
+
|
|
80
|
+
// Media
|
|
81
|
+
play: '\f04b',
|
|
82
|
+
pause: '\f04c',
|
|
83
|
+
stop: '\f04d',
|
|
84
|
+
|
|
85
|
+
// Communication
|
|
86
|
+
mail: '\f0e0',
|
|
87
|
+
phone: '\f095',
|
|
88
|
+
|
|
89
|
+
// Misc
|
|
90
|
+
spinner: '\f110',
|
|
91
|
+
external: '\f35d',
|
|
92
|
+
link: '\f0c1',
|
|
93
|
+
refresh: '\f021',
|
|
94
|
+
more: '\f142',
|
|
95
|
+
grip: '\f58e',
|
|
96
|
+
|
|
97
|
+
// Brands
|
|
98
|
+
github: '\f09b',
|
|
99
|
+
twitter: '\f099',
|
|
100
|
+
facebook: '\f09a',
|
|
101
|
+
linkedin: '\f0e1',
|
|
102
|
+
youtube: '\f167',
|
|
103
|
+
instagram: '\f16d',
|
|
104
|
+
) !default;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// THEME BARREL - Re-exports all theme parts
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// This file is what _generator.scss, _mixins.scss, and _icons.scss import.
|
|
5
|
+
// Variable names here match what the rest of the system expects.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
@use 'sass:map';
|
|
8
|
+
@use '../system' as s;
|
|
9
|
+
@use './brand' as *;
|
|
10
|
+
@use './colors-light' as *;
|
|
11
|
+
@use './colors-dark' as *;
|
|
12
|
+
@use './typography' as *;
|
|
13
|
+
@use './shape' as *;
|
|
14
|
+
@use './shadows' as *;
|
|
15
|
+
@use './components' as *;
|
|
16
|
+
@use './icons' as *;
|
|
17
|
+
|
|
18
|
+
// Theme identity
|
|
19
|
+
$theme-name: 'royal-blue' !default;
|
|
20
|
+
|
|
21
|
+
// Re-export with expected names
|
|
22
|
+
$theme-brand: $brand !default;
|
|
23
|
+
$theme-light: $colors-light !default;
|
|
24
|
+
$theme-dark: $colors-dark !default;
|
|
25
|
+
$theme-fonts: $fonts !default;
|
|
26
|
+
$theme-radius: $radius !default;
|
|
27
|
+
$theme-shadows-light: $shadows-light !default;
|
|
28
|
+
$theme-shadows-dark: $shadows-dark !default;
|
|
29
|
+
$theme-components: $components !default;
|
|
30
|
+
|
|
31
|
+
// Spacing tokens (theme-level) — deferred to scss/_system.scss as the
|
|
32
|
+
// single source of truth. Theme authors override via the system layer.
|
|
33
|
+
$space-scale: s.$spacing-scale !default;
|
|
34
|
+
$space-aliases: s.$spacing-aliases !default;
|
|
35
|
+
$space: s.$spacing !default;
|
|
36
|
+
|
|
37
|
+
// Semantic spacing aliases
|
|
38
|
+
$gap: (
|
|
39
|
+
normal: map.get($space, 4),
|
|
40
|
+
compact: map.get($space, 2),
|
|
41
|
+
) !default;
|
|
42
|
+
|
|
43
|
+
$padding: (
|
|
44
|
+
compact: map.get($space, 2),
|
|
45
|
+
normal: map.get($space, 4),
|
|
46
|
+
relaxed: map.get($space, 5),
|
|
47
|
+
) !default;
|
|
48
|
+
|
|
49
|
+
$margin: (
|
|
50
|
+
section: map.get($space, 8),
|
|
51
|
+
) !default;
|
|
52
|
+
|
|
53
|
+
// Icon re-exports (no !default — must override the @use 'icons' as * import)
|
|
54
|
+
$theme-icon-path: $icon-path;
|
|
55
|
+
$theme-icon-pack: $icon-pack;
|
|
56
|
+
$theme-icon-size: $icon-size;
|
|
57
|
+
$theme-icon-svg-alias: $icon-svg-alias;
|
|
58
|
+
$theme-fa-path: $fa-path;
|
|
59
|
+
$theme-fa-style: $fa-style;
|
|
60
|
+
$theme-fa-pro: $fa-pro;
|
|
61
|
+
$theme-icon-fa-map: $icon-fa-map;
|
|
62
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// SHADOWS - Light & Dark
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Numbered scale 1..5 is the source of truth; t-shirt aliases layer on top.
|
|
5
|
+
// The semantic values `inner` and `none` aren't on the numbered scale — they
|
|
6
|
+
// stay as named entries.
|
|
7
|
+
//
|
|
8
|
+
// Mapping:
|
|
9
|
+
// sm -> 1
|
|
10
|
+
// md -> 2
|
|
11
|
+
// lg -> 3
|
|
12
|
+
// xl -> 4
|
|
13
|
+
// 2xl -> 5
|
|
14
|
+
// ============================================================================
|
|
15
|
+
@use 'sass:map';
|
|
16
|
+
|
|
17
|
+
$shadows-aliases: (
|
|
18
|
+
sm: 1,
|
|
19
|
+
md: 2,
|
|
20
|
+
lg: 3,
|
|
21
|
+
xl: 4,
|
|
22
|
+
2xl: 5,
|
|
23
|
+
) !default;
|
|
24
|
+
|
|
25
|
+
$shadows-light-scale: (
|
|
26
|
+
1: (0 1px 2px 0 rgb(0 0 0 / 0.05)),
|
|
27
|
+
2: (0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)),
|
|
28
|
+
3: (0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)),
|
|
29
|
+
4: (0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)),
|
|
30
|
+
5: (0 25px 50px -12px rgb(0 0 0 / 0.25)),
|
|
31
|
+
) !default;
|
|
32
|
+
|
|
33
|
+
$shadows-light: map.merge(
|
|
34
|
+
$shadows-light-scale,
|
|
35
|
+
(
|
|
36
|
+
sm: map.get($shadows-light-scale, map.get($shadows-aliases, sm)),
|
|
37
|
+
md: map.get($shadows-light-scale, map.get($shadows-aliases, md)),
|
|
38
|
+
lg: map.get($shadows-light-scale, map.get($shadows-aliases, lg)),
|
|
39
|
+
xl: map.get($shadows-light-scale, map.get($shadows-aliases, xl)),
|
|
40
|
+
2xl: map.get($shadows-light-scale, map.get($shadows-aliases, 2xl)),
|
|
41
|
+
inner: (inset 0 2px 4px 0 rgb(0 0 0 / 0.05)),
|
|
42
|
+
none: none,
|
|
43
|
+
)
|
|
44
|
+
) !default;
|
|
45
|
+
|
|
46
|
+
$shadows-dark-scale: (
|
|
47
|
+
1: (0 1px 2px 0 rgb(0 0 0 / 0.3)),
|
|
48
|
+
2: (0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3)),
|
|
49
|
+
3: (0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.4)),
|
|
50
|
+
4: (0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.4)),
|
|
51
|
+
5: (0 25px 50px -12px rgb(0 0 0 / 0.6)),
|
|
52
|
+
) !default;
|
|
53
|
+
|
|
54
|
+
$shadows-dark: map.merge(
|
|
55
|
+
$shadows-dark-scale,
|
|
56
|
+
(
|
|
57
|
+
sm: map.get($shadows-dark-scale, map.get($shadows-aliases, sm)),
|
|
58
|
+
md: map.get($shadows-dark-scale, map.get($shadows-aliases, md)),
|
|
59
|
+
lg: map.get($shadows-dark-scale, map.get($shadows-aliases, lg)),
|
|
60
|
+
xl: map.get($shadows-dark-scale, map.get($shadows-aliases, xl)),
|
|
61
|
+
2xl: map.get($shadows-dark-scale, map.get($shadows-aliases, 2xl)),
|
|
62
|
+
inner: (inset 0 2px 4px 0 rgb(0 0 0 / 0.3)),
|
|
63
|
+
none: none,
|
|
64
|
+
)
|
|
65
|
+
) !default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// SHAPE - Border Radii
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
$radius: (
|
|
6
|
+
none: 0,
|
|
7
|
+
sm: 0.25rem,
|
|
8
|
+
md: 0.375rem,
|
|
9
|
+
lg: 0.5rem,
|
|
10
|
+
xl: 0.75rem,
|
|
11
|
+
2xl: 1rem,
|
|
12
|
+
full: 9999px,
|
|
13
|
+
) !default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// TYPOGRAPHY - Font Families
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
$fonts: (
|
|
6
|
+
primary: ('Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif),
|
|
7
|
+
secondary: ('Georgia', 'Times New Roman', serif),
|
|
8
|
+
mono: ('Fira Code', 'Consolas', 'Monaco', monospace),
|
|
9
|
+
) !default;
|