astryx-dracula 0.5.0 → 0.5.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.
Files changed (121) hide show
  1. package/astryx.integration.mjs +1 -1
  2. package/icons.mjs +17 -17
  3. package/icons.tsx +61 -62
  4. package/package.json +120 -120
  5. package/shared/auth-chrome-config.ts +6 -6
  6. package/shared/auth-chrome.tsx +143 -144
  7. package/shared/auth-copy.ts +14 -14
  8. package/shared/chaptered-doc-config.ts +48 -51
  9. package/shared/chaptered-doc.tsx +268 -289
  10. package/shared/chart-hues.ts +10 -10
  11. package/shared/chart-labels.tsx +31 -30
  12. package/shared/chart-legend.tsx +55 -56
  13. package/shared/chart-panel-style.ts +3 -3
  14. package/shared/data-bar.tsx +97 -102
  15. package/shared/format-money.ts +1 -1
  16. package/shared/gallery-image.ts +6 -6
  17. package/shared/login-demo.ts +1 -1
  18. package/shared/metric-card.tsx +101 -105
  19. package/shared/metric-delta.tsx +28 -27
  20. package/shared/order-desk.tsx +205 -216
  21. package/shared/revenue-chart.tsx +145 -165
  22. package/shared/scene-castle.tsx +206 -291
  23. package/shared/scene-frame.tsx +33 -32
  24. package/shared/scene-hues.ts +17 -17
  25. package/shared/scene-tile.tsx +88 -92
  26. package/shared/settings-data.ts +125 -125
  27. package/shared/settings-rows.tsx +142 -157
  28. package/shared/sparkline.tsx +75 -88
  29. package/shared/sso-icons.tsx +10 -22
  30. package/shared/stars.tsx +16 -25
  31. package/templates/ai-chat-landing.template.mjs +4 -4
  32. package/templates/ai-chat-landing.tsx +449 -458
  33. package/templates/ai-chat.template.mjs +4 -4
  34. package/templates/ai-chat.tsx +538 -609
  35. package/templates/blank.template.mjs +4 -4
  36. package/templates/blank.tsx +14 -12
  37. package/templates/centered-hero.template.mjs +4 -4
  38. package/templates/centered-hero.tsx +52 -67
  39. package/templates/classic-gallery.template.mjs +4 -4
  40. package/templates/classic-gallery.tsx +92 -101
  41. package/templates/contact-form.template.mjs +4 -4
  42. package/templates/contact-form.tsx +243 -280
  43. package/templates/dashboard-portfolio.template.mjs +4 -4
  44. package/templates/dashboard-portfolio.tsx +713 -546
  45. package/templates/dashboard.template.mjs +4 -4
  46. package/templates/dashboard.tsx +592 -565
  47. package/templates/detail-page.template.mjs +4 -4
  48. package/templates/detail-page.tsx +537 -594
  49. package/templates/documentation-design.template.mjs +4 -4
  50. package/templates/documentation-design.tsx +227 -241
  51. package/templates/documentation-technical.template.mjs +4 -4
  52. package/templates/documentation-technical.tsx +232 -237
  53. package/templates/documentation.template.mjs +4 -4
  54. package/templates/documentation.tsx +263 -277
  55. package/templates/editor.template.mjs +4 -4
  56. package/templates/editor.tsx +839 -874
  57. package/templates/file-explorer.template.mjs +4 -4
  58. package/templates/file-explorer.tsx +562 -588
  59. package/templates/form-two-column.template.mjs +4 -4
  60. package/templates/form-two-column.tsx +187 -208
  61. package/templates/gallery-hero.template.mjs +4 -4
  62. package/templates/gallery-hero.tsx +89 -112
  63. package/templates/ide.template.mjs +4 -4
  64. package/templates/ide.tsx +400 -451
  65. package/templates/incident-console.template.mjs +4 -4
  66. package/templates/incident-console.tsx +549 -573
  67. package/templates/kanban-board.template.mjs +4 -4
  68. package/templates/kanban-board.tsx +660 -680
  69. package/templates/library.template.mjs +4 -4
  70. package/templates/library.tsx +405 -428
  71. package/templates/login-card.template.mjs +4 -4
  72. package/templates/login-card.tsx +59 -70
  73. package/templates/login-split.template.mjs +4 -4
  74. package/templates/login-split.tsx +188 -192
  75. package/templates/login-sso.template.mjs +4 -4
  76. package/templates/login-sso.tsx +253 -256
  77. package/templates/login.template.mjs +4 -4
  78. package/templates/login.tsx +49 -47
  79. package/templates/messaging-shell.template.mjs +4 -4
  80. package/templates/messaging-shell.tsx +550 -572
  81. package/templates/mixed-gallery.template.mjs +4 -4
  82. package/templates/mixed-gallery.tsx +56 -56
  83. package/templates/payment-form.template.mjs +4 -4
  84. package/templates/payment-form.tsx +877 -988
  85. package/templates/product-detail.template.mjs +4 -4
  86. package/templates/product-detail.tsx +252 -270
  87. package/templates/product-gallery.template.mjs +4 -4
  88. package/templates/product-gallery.tsx +122 -135
  89. package/templates/product-tour.template.mjs +4 -4
  90. package/templates/product-tour.tsx +733 -768
  91. package/templates/settings-dialog.template.mjs +4 -4
  92. package/templates/settings-dialog.tsx +684 -715
  93. package/templates/settings-sidebar.template.mjs +4 -4
  94. package/templates/settings-sidebar.tsx +758 -805
  95. package/templates/settings.template.mjs +4 -4
  96. package/templates/settings.tsx +291 -302
  97. package/templates/shell-nav.template.mjs +4 -4
  98. package/templates/shell-nav.tsx +212 -217
  99. package/templates/shell-side-nav.template.mjs +4 -4
  100. package/templates/shell-side-nav.tsx +128 -155
  101. package/templates/shell-top-nav.template.mjs +4 -4
  102. package/templates/shell-top-nav.tsx +178 -201
  103. package/templates/side-gallery.template.mjs +4 -4
  104. package/templates/side-gallery.tsx +81 -88
  105. package/templates/table-grouped.template.mjs +4 -4
  106. package/templates/table-grouped.tsx +996 -1051
  107. package/templates/table-page-chart.template.mjs +4 -4
  108. package/templates/table-page-chart.tsx +396 -396
  109. package/templates/table-page-heatmap-status.template.mjs +4 -4
  110. package/templates/table-page-heatmap-status.tsx +479 -510
  111. package/templates/table-page-shoe-store-heatmap.template.mjs +4 -4
  112. package/templates/table-page-shoe-store-heatmap.tsx +744 -744
  113. package/templates/table-page.template.mjs +4 -4
  114. package/templates/table-page.tsx +392 -403
  115. package/templates/table.template.mjs +4 -4
  116. package/templates/table.tsx +88 -91
  117. package/templates/tech-report.template.mjs +4 -4
  118. package/templates/tech-report.tsx +1312 -1302
  119. package/templates/theme-showcase.template.mjs +4 -4
  120. package/templates/theme-showcase.tsx +863 -949
  121. package/tokens.css +340 -343
@@ -1,3 +1,3 @@
1
1
  export default {
2
- templates: './templates',
2
+ templates: "./templates",
3
3
  };
package/icons.mjs CHANGED
@@ -1,33 +1,33 @@
1
1
  // icons.tsx
2
2
  import {
3
- X,
3
+ AlertTriangle,
4
+ ArrowDown,
5
+ ArrowUp,
6
+ ArrowUpDown,
7
+ Calendar,
8
+ Check,
9
+ CheckCheck,
10
+ CheckCircle,
4
11
  ChevronDown,
5
12
  ChevronLeft,
6
13
  ChevronRight,
7
14
  ChevronsLeft,
8
15
  ChevronsRight,
9
- Check,
10
- CheckCircle,
11
- XCircle,
12
- AlertTriangle,
13
- Info,
14
- Calendar,
15
16
  Clock,
17
+ Columns,
18
+ Copy,
16
19
  ExternalLink,
20
+ EyeOff,
21
+ Filter,
22
+ Info,
17
23
  Menu,
24
+ Mic,
18
25
  MoreHorizontal,
19
26
  Search,
20
- ArrowUp,
21
- ArrowDown,
22
- ArrowUpDown,
23
- Filter,
24
- EyeOff,
25
- Columns,
26
- Copy,
27
- CheckCheck,
28
- Wrench,
29
27
  Square,
30
- Mic
28
+ Wrench,
29
+ X,
30
+ XCircle
31
31
  } from "lucide-react";
32
32
  import { jsx } from "react/jsx-runtime";
33
33
  var iconProps = {
package/icons.tsx CHANGED
@@ -6,72 +6,71 @@
6
6
  * icon components bundled with the theme, not with @astryxdesign/core.
7
7
  */
8
8
 
9
- import React from 'react';
10
- import type {IconRegistry} from '@astryxdesign/core/Icon';
11
-
9
+ import type { IconRegistry } from "@astryxdesign/core/Icon";
12
10
  import {
13
- X,
14
- ChevronDown,
15
- ChevronLeft,
16
- ChevronRight,
17
- ChevronsLeft,
18
- ChevronsRight,
19
- Check,
20
- CheckCircle,
21
- XCircle,
22
- AlertTriangle,
23
- Info,
24
- Calendar,
25
- Clock,
26
- ExternalLink,
27
- Menu,
28
- MoreHorizontal,
29
- Search,
30
- ArrowUp,
31
- ArrowDown,
32
- ArrowUpDown,
33
- Filter,
34
- EyeOff,
35
- Columns,
36
- Copy,
37
- CheckCheck,
38
- Wrench,
39
- Square,
40
- Mic,
41
- } from 'lucide-react';
11
+ AlertTriangle,
12
+ ArrowDown,
13
+ ArrowUp,
14
+ ArrowUpDown,
15
+ Calendar,
16
+ Check,
17
+ CheckCheck,
18
+ CheckCircle,
19
+ ChevronDown,
20
+ ChevronLeft,
21
+ ChevronRight,
22
+ ChevronsLeft,
23
+ ChevronsRight,
24
+ Clock,
25
+ Columns,
26
+ Copy,
27
+ ExternalLink,
28
+ EyeOff,
29
+ Filter,
30
+ Info,
31
+ Menu,
32
+ Mic,
33
+ MoreHorizontal,
34
+ Search,
35
+ Square,
36
+ Wrench,
37
+ X,
38
+ XCircle,
39
+ } from "lucide-react";
40
+ import React from "react";
42
41
 
43
42
  const iconProps = {
44
- size: '1em',
45
- 'aria-hidden': true as const,
43
+ size: "1em",
44
+ "aria-hidden": true as const,
46
45
  };
47
46
 
48
47
  export const draculaIconRegistry: IconRegistry = {
49
- close: <X {...iconProps} />,
50
- chevronDown: <ChevronDown {...iconProps} />,
51
- chevronLeft: <ChevronLeft {...iconProps} />,
52
- chevronRight: <ChevronRight {...iconProps} />,
53
- chevronsLeft: <ChevronsLeft {...iconProps} />,
54
- chevronsRight: <ChevronsRight {...iconProps} />,
55
- check: <Check {...iconProps} />,
56
- success: <CheckCircle {...iconProps} />,
57
- error: <XCircle {...iconProps} />,
58
- warning: <AlertTriangle {...iconProps} />,
59
- info: <Info {...iconProps} />,
60
- calendar: <Calendar {...iconProps} />,
61
- clock: <Clock {...iconProps} />,
62
- externalLink: <ExternalLink {...iconProps} />,
63
- menu: <Menu {...iconProps} />,
64
- moreHorizontal: <MoreHorizontal {...iconProps} />,
65
- search: <Search {...iconProps} />,
66
- arrowUp: <ArrowUp {...iconProps} />,
67
- arrowDown: <ArrowDown {...iconProps} />,
68
- arrowsUpDown: <ArrowUpDown {...iconProps} />,
69
- funnel: <Filter {...iconProps} />,
70
- eyeSlash: <EyeOff {...iconProps} />,
71
- viewColumns: <Columns {...iconProps} />,
72
- copy: <Copy {...iconProps} />,
73
- checkDouble: <CheckCheck {...iconProps} />,
74
- wrench: <Wrench {...iconProps} />,
75
- stop: <Square {...iconProps} />,
76
- microphone: <Mic {...iconProps} />,
48
+ close: <X {...iconProps} />,
49
+ chevronDown: <ChevronDown {...iconProps} />,
50
+ chevronLeft: <ChevronLeft {...iconProps} />,
51
+ chevronRight: <ChevronRight {...iconProps} />,
52
+ chevronsLeft: <ChevronsLeft {...iconProps} />,
53
+ chevronsRight: <ChevronsRight {...iconProps} />,
54
+ check: <Check {...iconProps} />,
55
+ success: <CheckCircle {...iconProps} />,
56
+ error: <XCircle {...iconProps} />,
57
+ warning: <AlertTriangle {...iconProps} />,
58
+ info: <Info {...iconProps} />,
59
+ calendar: <Calendar {...iconProps} />,
60
+ clock: <Clock {...iconProps} />,
61
+ externalLink: <ExternalLink {...iconProps} />,
62
+ menu: <Menu {...iconProps} />,
63
+ moreHorizontal: <MoreHorizontal {...iconProps} />,
64
+ search: <Search {...iconProps} />,
65
+ arrowUp: <ArrowUp {...iconProps} />,
66
+ arrowDown: <ArrowDown {...iconProps} />,
67
+ arrowsUpDown: <ArrowUpDown {...iconProps} />,
68
+ funnel: <Filter {...iconProps} />,
69
+ eyeSlash: <EyeOff {...iconProps} />,
70
+ viewColumns: <Columns {...iconProps} />,
71
+ copy: <Copy {...iconProps} />,
72
+ checkDouble: <CheckCheck {...iconProps} />,
73
+ wrench: <Wrench {...iconProps} />,
74
+ stop: <Square {...iconProps} />,
75
+ microphone: <Mic {...iconProps} />,
77
76
  };
package/package.json CHANGED
@@ -1,122 +1,122 @@
1
1
  {
2
- "author": "Yuzu Octopus",
3
- "bugs": {
4
- "url": "https://github.com/yuzu-octopus/astryx-dracula/issues"
5
- },
6
- "dependencies": {
7
- "lucide-react": "^1.45.0"
8
- },
9
- "description": "Pure Dracula brand theme for Astryx React sites. Dark-only tokens, syntax highlighting, and chart colors with prebuilt CSS.",
10
- "devDependencies": {
11
- "@astryxdesign/cli": "0.6.3",
12
- "@astryxdesign/core": "0.6.3",
13
- "@types/bun": "^1.4.2",
14
- "@types/node": "^26.5.1",
15
- "@types/react": "^19.3.0",
16
- "@types/react-dom": "^19.3.0",
17
- "@vitejs/plugin-react": "^6.1.1",
18
- "typescript": "^7.0.2",
19
- "vite": "^8.3.0"
20
- },
21
- "exports": {
22
- "./shared/auth-chrome": "./shared/auth-chrome.tsx",
23
- "./shared/auth-chrome-config": "./shared/auth-chrome-config.ts",
24
- "./shared/auth-copy": "./shared/auth-copy.ts",
25
- "./shared/chaptered-doc": "./shared/chaptered-doc.tsx",
26
- "./shared/chaptered-doc-config": "./shared/chaptered-doc-config.ts",
27
- "./shared/chart-hues": "./shared/chart-hues.ts",
28
- "./shared/chart-labels": "./shared/chart-labels.tsx",
29
- "./shared/chart-legend": "./shared/chart-legend.tsx",
30
- "./shared/chart-panel-style": "./shared/chart-panel-style.ts",
31
- "./shared/data-bar": "./shared/data-bar.tsx",
32
- "./shared/gallery-image": "./shared/gallery-image.ts",
33
- "./shared/login-demo": "./shared/login-demo.ts",
34
- "./shared/metric-delta": "./shared/metric-delta.tsx",
35
- "./shared/order-desk": "./shared/order-desk.tsx",
36
- "./shared/revenue-chart": "./shared/revenue-chart.tsx",
37
- "./shared/scene-castle": "./shared/scene-castle.tsx",
38
- "./shared/scene-frame": "./shared/scene-frame.tsx",
39
- "./shared/scene-hues": "./shared/scene-hues.ts",
40
- "./shared/scene-tile": "./shared/scene-tile.tsx",
41
- "./shared/settings-data": "./shared/settings-data.ts",
42
- "./shared/settings-rows": "./shared/settings-rows.tsx",
43
- "./shared/sparkline": "./shared/sparkline.tsx",
44
- "./shared/format-money": "./shared/format-money.ts",
45
- "./shared/metric-card": "./shared/metric-card.tsx",
46
- "./shared/stars": "./shared/stars.tsx",
47
- "./shared/sso-icons": "./shared/sso-icons.tsx",
48
- ".": {
49
- "types": "./astryx-dracula.d.ts",
50
- "default": "./astryx-dracula.js"
51
- },
52
- "./astryx.integration.mjs": "./astryx.integration.mjs",
53
- "./package.json": "./package.json",
54
- "./templates/*": "./templates/*",
55
- "./theme.css": "./theme.css",
56
- "./tokens.css": "./tokens.css"
57
- },
58
- "files": [
59
- "BRAND.md",
60
- "LICENSE",
61
- "README.md",
62
- "USAGE.md",
63
- "astryx-dracula.d.ts",
64
- "astryx-dracula.js",
65
- "astryx-dracula.variants.d.ts",
66
- "fonts/",
67
- "icons.mjs",
68
- "icons.tsx",
69
- "shared/",
70
- "theme.css",
71
- "tokens.css",
72
- "templates/",
73
- "astryx.integration.mjs"
74
- ],
75
- "keywords": [
76
- "astryx",
77
- "dracula",
78
- "dracula-theme",
79
- "theme",
80
- "design-system",
81
- "dark-theme",
82
- "react",
83
- "tokens"
84
- ],
85
- "license": "MIT",
86
- "name": "astryx-dracula",
87
- "peerDependencies": {
88
- "@astryxdesign/core": "^0.6.3",
89
- "lucide-react": "^1.45.0",
90
- "react": ">=19.0.0",
91
- "react-dom": ">=19.0.0"
92
- },
93
- "repository": {
94
- "type": "git",
95
- "url": "git+https://github.com/yuzu-octopus/astryx-dracula.git"
96
- },
97
- "scripts": {
98
- "audit": "bun run fonts:sync && bun scripts/check.ts",
99
- "fonts:sync": "mkdir -p public/fonts && cp fonts/*.woff2 public/fonts/",
100
- "build": "tsc --noEmit && vite build",
101
- "dev": "vite",
102
- "preview": "vite preview",
103
- "theme:build": "bun run icons:build && bunx astryx theme build astryx-theme.ts -o theme.css --icons-specifier ./icons.mjs",
104
- "icons:build": "bun build icons.tsx --outfile icons.mjs --format esm --external react --external lucide-react",
105
- "theme:check": "bun run icons:check && bunx astryx theme build astryx-theme.ts -o theme.css --icons-specifier ./icons.mjs --check --json | bun -e 'const r = JSON.parse(await Bun.stdin.text()); if (r.type !== \"theme.build.check\") { console.error(\"theme:check: unexpected CLI response \" + JSON.stringify(r).slice(0, 200)); process.exit(1); } const stale = r.data.stale.filter(s => s.path !== \"astryx-dracula.js\"); for (const s of stale) console.error(\"stale: \" + s.path + \" (\" + s.reason + \")\"); if (stale.length) process.exit(1); const entry = await import(\"./astryx-dracula.js\"); if (!entry.astryxDraculaTheme || !entry.draculaIconRegistry) { console.error(\"astryx-dracula.js is missing its theme or icon registry export\"); process.exit(1); } console.log(\"theme outputs up to date; astryx-dracula.js (hand-maintained) loads and exports\");' && bun run entry:check",
106
- "icons:check": "bun build icons.tsx --outfile .tmp-icons.mjs --format esm --external react --external lucide-react; s=$?; cmp -s .tmp-icons.mjs icons.mjs; c=$?; rm -f .tmp-icons.mjs; [ $s -eq 0 ] && [ $c -eq 0 ] || { echo 'stale: icons.mjs (rerun bun run icons:build)'; exit 1; }",
107
- "entry:check": "node -e \"const{pathToFileURL}=require('url');const{resolve}=require('path');import(pathToFileURL(resolve('astryx-dracula.js')).href).then(m=>{if(!m.astryxDraculaTheme||!m.draculaIconRegistry){console.error('astryx-dracula.js is missing its theme or icon registry export');process.exit(1)}console.log('astryx-dracula.js loads under plain Node ESM')}).catch(e=>{console.error('astryx-dracula.js is not importable by Node ESM: '+e.message);process.exit(1)})\"",
108
- "prepublishOnly": "bun run theme:check && bun run icons:check && bun run entry:check && bun run audit && tsc --noEmit && bunx react-doctor@latest --score"
109
- },
110
- "sideEffects": [
111
- "**/*.css"
112
- ],
113
- "trustedDependencies": [
114
- "@astryxdesign/core",
115
- "@astryxdesign/cli"
116
- ],
117
- "type": "module",
118
- "version": "0.5.0",
119
- "patchedDependencies": {
120
- "@astryxdesign/core@0.6.3": "patches/@astryxdesign%2Fcore@0.6.3.patch"
121
- }
2
+ "author": "Yuzu Octopus",
3
+ "bugs": {
4
+ "url": "https://github.com/yuzu-octopus/astryx-dracula/issues"
5
+ },
6
+ "dependencies": {
7
+ "lucide-react": "^1.53.0"
8
+ },
9
+ "description": "Pure Dracula brand theme for Astryx React sites. Dark-only tokens, syntax highlighting, and chart colors with prebuilt CSS.",
10
+ "devDependencies": {
11
+ "@astryxdesign/cli": "0.6.3",
12
+ "@astryxdesign/core": "0.6.3",
13
+ "@types/bun": "^1.4.2",
14
+ "@types/node": "^26.6.4",
15
+ "@types/react": "^19.3.0",
16
+ "@types/react-dom": "^19.3.0",
17
+ "@vitejs/plugin-react": "^6.1.2",
18
+ "typescript": "^7.0.2",
19
+ "vite": "^8.3.3"
20
+ },
21
+ "exports": {
22
+ "./shared/auth-chrome": "./shared/auth-chrome.tsx",
23
+ "./shared/auth-chrome-config": "./shared/auth-chrome-config.ts",
24
+ "./shared/auth-copy": "./shared/auth-copy.ts",
25
+ "./shared/chaptered-doc": "./shared/chaptered-doc.tsx",
26
+ "./shared/chaptered-doc-config": "./shared/chaptered-doc-config.ts",
27
+ "./shared/chart-hues": "./shared/chart-hues.ts",
28
+ "./shared/chart-labels": "./shared/chart-labels.tsx",
29
+ "./shared/chart-legend": "./shared/chart-legend.tsx",
30
+ "./shared/chart-panel-style": "./shared/chart-panel-style.ts",
31
+ "./shared/data-bar": "./shared/data-bar.tsx",
32
+ "./shared/gallery-image": "./shared/gallery-image.ts",
33
+ "./shared/login-demo": "./shared/login-demo.ts",
34
+ "./shared/metric-delta": "./shared/metric-delta.tsx",
35
+ "./shared/order-desk": "./shared/order-desk.tsx",
36
+ "./shared/revenue-chart": "./shared/revenue-chart.tsx",
37
+ "./shared/scene-castle": "./shared/scene-castle.tsx",
38
+ "./shared/scene-frame": "./shared/scene-frame.tsx",
39
+ "./shared/scene-hues": "./shared/scene-hues.ts",
40
+ "./shared/scene-tile": "./shared/scene-tile.tsx",
41
+ "./shared/settings-data": "./shared/settings-data.ts",
42
+ "./shared/settings-rows": "./shared/settings-rows.tsx",
43
+ "./shared/sparkline": "./shared/sparkline.tsx",
44
+ "./shared/format-money": "./shared/format-money.ts",
45
+ "./shared/metric-card": "./shared/metric-card.tsx",
46
+ "./shared/stars": "./shared/stars.tsx",
47
+ "./shared/sso-icons": "./shared/sso-icons.tsx",
48
+ ".": {
49
+ "types": "./astryx-dracula.d.ts",
50
+ "default": "./astryx-dracula.js"
51
+ },
52
+ "./astryx.integration.mjs": "./astryx.integration.mjs",
53
+ "./package.json": "./package.json",
54
+ "./templates/*": "./templates/*",
55
+ "./theme.css": "./theme.css",
56
+ "./tokens.css": "./tokens.css"
57
+ },
58
+ "files": [
59
+ "BRAND.md",
60
+ "LICENSE",
61
+ "README.md",
62
+ "USAGE.md",
63
+ "astryx-dracula.d.ts",
64
+ "astryx-dracula.js",
65
+ "astryx-dracula.variants.d.ts",
66
+ "fonts/",
67
+ "icons.mjs",
68
+ "icons.tsx",
69
+ "shared/",
70
+ "theme.css",
71
+ "tokens.css",
72
+ "templates/",
73
+ "astryx.integration.mjs"
74
+ ],
75
+ "keywords": [
76
+ "astryx",
77
+ "dracula",
78
+ "dracula-theme",
79
+ "theme",
80
+ "design-system",
81
+ "dark-theme",
82
+ "react",
83
+ "tokens"
84
+ ],
85
+ "license": "MIT",
86
+ "name": "astryx-dracula",
87
+ "peerDependencies": {
88
+ "@astryxdesign/core": "^0.6.3",
89
+ "lucide-react": "^1.45.0",
90
+ "react": ">=19.0.0",
91
+ "react-dom": ">=19.0.0"
92
+ },
93
+ "repository": {
94
+ "type": "git",
95
+ "url": "git+https://github.com/yuzu-octopus/astryx-dracula.git"
96
+ },
97
+ "scripts": {
98
+ "audit": "bun run fonts:sync && bun scripts/check.ts",
99
+ "fonts:sync": "mkdir -p public/fonts && cp fonts/*.woff2 public/fonts/",
100
+ "build": "tsc --noEmit && vite build",
101
+ "dev": "vite",
102
+ "preview": "vite preview",
103
+ "theme:build": "bun run icons:build && bunx astryx theme build astryx-theme.ts -o theme.css --icons-specifier ./icons.mjs",
104
+ "icons:build": "bun build icons.tsx --outfile icons.mjs --format esm --external react --external lucide-react",
105
+ "theme:check": "bun run icons:check && bunx astryx theme build astryx-theme.ts -o theme.css --icons-specifier ./icons.mjs --check --json | bun -e 'const r = JSON.parse(await Bun.stdin.text()); if (r.type !== \"theme.build.check\") { console.error(\"theme:check: unexpected CLI response \" + JSON.stringify(r).slice(0, 200)); process.exit(1); } const stale = r.data.stale.filter(s => s.path !== \"astryx-dracula.js\"); for (const s of stale) console.error(\"stale: \" + s.path + \" (\" + s.reason + \")\"); if (stale.length) process.exit(1); const entry = await import(\"./astryx-dracula.js\"); if (!entry.astryxDraculaTheme || !entry.draculaIconRegistry) { console.error(\"astryx-dracula.js is missing its theme or icon registry export\"); process.exit(1); } console.log(\"theme outputs up to date; astryx-dracula.js (hand-maintained) loads and exports\");' && bun run entry:check",
106
+ "icons:check": "bun build icons.tsx --outfile .tmp-icons.mjs --format esm --external react --external lucide-react; s=$?; cmp -s .tmp-icons.mjs icons.mjs; c=$?; rm -f .tmp-icons.mjs; [ $s -eq 0 ] && [ $c -eq 0 ] || { echo 'stale: icons.mjs (rerun bun run icons:build)'; exit 1; }",
107
+ "entry:check": "node -e \"const{pathToFileURL}=require('url');const{resolve}=require('path');import(pathToFileURL(resolve('astryx-dracula.js')).href).then(m=>{if(!m.astryxDraculaTheme||!m.draculaIconRegistry){console.error('astryx-dracula.js is missing its theme or icon registry export');process.exit(1)}console.log('astryx-dracula.js loads under plain Node ESM')}).catch(e=>{console.error('astryx-dracula.js is not importable by Node ESM: '+e.message);process.exit(1)})\"",
108
+ "prepublishOnly": "bun run theme:check && bun run icons:check && bun run entry:check && bun run audit && tsc --noEmit && bunx react-doctor@latest --score"
109
+ },
110
+ "sideEffects": [
111
+ "**/*.css"
112
+ ],
113
+ "trustedDependencies": [
114
+ "@astryxdesign/core",
115
+ "@astryxdesign/cli"
116
+ ],
117
+ "type": "module",
118
+ "version": "0.5.1",
119
+ "patchedDependencies": {
120
+ "@astryxdesign/core@0.6.3": "patches/@astryxdesign%2Fcore@0.6.3.patch"
121
+ }
122
122
  }
@@ -2,17 +2,17 @@
2
2
  // reason as shared/scene-hues.ts: a .tsx exporting non-components breaks React
3
3
  // Fast Refresh. Five templates import these, so they are genuinely shared --
4
4
  // they were only ever co-located by accident of history.
5
- import type {CSSProperties} from 'react';
5
+ import type { CSSProperties } from "react";
6
6
 
7
7
  // Standalone auth pages paint their own body background (no host shell).
8
8
  export const authPageStyle: CSSProperties = {
9
- minHeight: '100%',
10
- backgroundColor: 'var(--color-background-body)',
11
- padding: 'var(--spacing-6)',
9
+ minHeight: "100%",
10
+ backgroundColor: "var(--color-background-body)",
11
+ padding: "var(--spacing-6)",
12
12
  };
13
13
  // Cap the column at 400px but let it shrink to fit narrow screens.
14
- export const authContentStyle: CSSProperties = {width: '100%', maxWidth: 400};
14
+ export const authContentStyle: CSSProperties = { width: "100%", maxWidth: 400 };
15
15
  // WCAG 1.3.5 autocomplete: TextInput forwards unknown props to <input> but its
16
16
  // prop type omits input-only attributes, so spread through a widened record.
17
17
  export const inputAutoComplete = (value: string) =>
18
- ({autoComplete: value}) as Record<string, string>;
18
+ ({ autoComplete: value }) as Record<string, string>;