astryx-dracula 0.4.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 -116
  5. package/shared/auth-chrome-config.ts +6 -6
  6. package/shared/auth-chrome.tsx +168 -19
  7. package/shared/auth-copy.ts +14 -14
  8. package/shared/chaptered-doc-config.ts +48 -51
  9. package/shared/chaptered-doc.tsx +270 -292
  10. package/shared/chart-hues.ts +10 -15
  11. package/shared/chart-labels.tsx +31 -30
  12. package/shared/chart-legend.tsx +55 -57
  13. package/shared/chart-panel-style.ts +3 -3
  14. package/shared/data-bar.tsx +97 -102
  15. package/shared/format-money.ts +3 -0
  16. package/shared/gallery-image.ts +6 -6
  17. package/shared/login-demo.ts +1 -1
  18. package/shared/metric-card.tsx +123 -0
  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 -25
  25. package/shared/scene-tile.tsx +88 -100
  26. package/shared/settings-data.ts +132 -104
  27. package/shared/settings-rows.tsx +143 -163
  28. package/shared/sparkline.tsx +75 -88
  29. package/shared/sso-icons.tsx +10 -22
  30. package/shared/stars.tsx +19 -0
  31. package/templates/ai-chat-landing.template.mjs +4 -4
  32. package/templates/ai-chat-landing.tsx +468 -447
  33. package/templates/ai-chat.template.mjs +4 -4
  34. package/templates/ai-chat.tsx +561 -645
  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 +723 -634
  45. package/templates/dashboard.template.mjs +4 -4
  46. package/templates/dashboard.tsx +592 -682
  47. package/templates/detail-page.template.mjs +4 -4
  48. package/templates/detail-page.tsx +537 -598
  49. package/templates/documentation-design.template.mjs +4 -4
  50. package/templates/documentation-design.tsx +242 -709
  51. package/templates/documentation-technical.template.mjs +4 -4
  52. package/templates/documentation-technical.tsx +233 -258
  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 +847 -899
  57. package/templates/file-explorer.template.mjs +4 -4
  58. package/templates/file-explorer.tsx +562 -602
  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 +405 -462
  65. package/templates/incident-console.template.mjs +4 -4
  66. package/templates/incident-console.tsx +559 -581
  67. package/templates/kanban-board.template.mjs +4 -4
  68. package/templates/kanban-board.tsx +660 -729
  69. package/templates/library.template.mjs +4 -4
  70. package/templates/library.tsx +405 -452
  71. package/templates/login-card.template.mjs +4 -4
  72. package/templates/login-card.tsx +59 -163
  73. package/templates/login-split.template.mjs +4 -4
  74. package/templates/login-split.tsx +196 -232
  75. package/templates/login-sso.template.mjs +4 -4
  76. package/templates/login-sso.tsx +253 -277
  77. package/templates/login.template.mjs +4 -4
  78. package/templates/login.tsx +51 -149
  79. package/templates/messaging-shell.template.mjs +4 -4
  80. package/templates/messaging-shell.tsx +596 -624
  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 -990
  85. package/templates/product-detail.template.mjs +4 -4
  86. package/templates/product-detail.tsx +251 -302
  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 +737 -794
  91. package/templates/settings-dialog.template.mjs +4 -4
  92. package/templates/settings-dialog.tsx +694 -747
  93. package/templates/settings-sidebar.template.mjs +4 -4
  94. package/templates/settings-sidebar.tsx +768 -848
  95. package/templates/settings.template.mjs +4 -4
  96. package/templates/settings.tsx +306 -230
  97. package/templates/shell-nav.template.mjs +4 -4
  98. package/templates/shell-nav.tsx +217 -277
  99. package/templates/shell-side-nav.template.mjs +4 -4
  100. package/templates/shell-side-nav.tsx +130 -231
  101. package/templates/shell-top-nav.template.mjs +4 -4
  102. package/templates/shell-top-nav.tsx +192 -248
  103. package/templates/side-gallery.template.mjs +4 -4
  104. package/templates/side-gallery.tsx +87 -94
  105. package/templates/table-grouped.template.mjs +4 -4
  106. package/templates/table-grouped.tsx +999 -1201
  107. package/templates/table-page-chart.template.mjs +4 -4
  108. package/templates/table-page-chart.tsx +398 -397
  109. package/templates/table-page-heatmap-status.template.mjs +4 -4
  110. package/templates/table-page-heatmap-status.tsx +479 -527
  111. package/templates/table-page-shoe-store-heatmap.template.mjs +4 -4
  112. package/templates/table-page-shoe-store-heatmap.tsx +746 -746
  113. package/templates/table-page.template.mjs +4 -4
  114. package/templates/table-page.tsx +393 -431
  115. package/templates/table.template.mjs +4 -4
  116. package/templates/table.tsx +93 -99
  117. package/templates/tech-report.template.mjs +4 -4
  118. package/templates/tech-report.tsx +1320 -1324
  119. package/templates/theme-showcase.template.mjs +4 -4
  120. package/templates/theme-showcase.tsx +869 -1246
  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,118 +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/sso-icons": "./shared/sso-icons.tsx",
45
- ".": {
46
- "types": "./astryx-dracula.d.ts",
47
- "default": "./astryx-dracula.js"
48
- },
49
- "./astryx.integration.mjs": "./astryx.integration.mjs",
50
- "./package.json": "./package.json",
51
- "./templates/*": "./templates/*",
52
- "./theme.css": "./theme.css",
53
- "./tokens.css": "./tokens.css"
54
- },
55
- "files": [
56
- "BRAND.md",
57
- "LICENSE",
58
- "README.md",
59
- "USAGE.md",
60
- "astryx-dracula.d.ts",
61
- "astryx-dracula.js",
62
- "astryx-dracula.variants.d.ts",
63
- "fonts/",
64
- "icons.mjs",
65
- "icons.tsx",
66
- "shared/",
67
- "theme.css",
68
- "tokens.css",
69
- "templates/",
70
- "astryx.integration.mjs"
71
- ],
72
- "keywords": [
73
- "astryx",
74
- "dracula",
75
- "dracula-theme",
76
- "theme",
77
- "design-system",
78
- "dark-theme",
79
- "react",
80
- "tokens"
81
- ],
82
- "license": "MIT",
83
- "name": "astryx-dracula",
84
- "peerDependencies": {
85
- "@astryxdesign/core": "^0.6.3",
86
- "lucide-react": "^1.45.0",
87
- "react": ">=19.0.0",
88
- "react-dom": ">=19.0.0"
89
- },
90
- "repository": {
91
- "type": "git",
92
- "url": "git+https://github.com/yuzu-octopus/astryx-dracula.git"
93
- },
94
- "scripts": {
95
- "audit": "bun scripts/check.ts",
96
- "build": "tsc --noEmit && vite build",
97
- "dev": "vite",
98
- "preview": "vite preview",
99
- "theme:build": "bun run icons:build && bunx astryx theme build astryx-theme.ts -o theme.css --icons-specifier ./icons.mjs",
100
- "icons:build": "bun build icons.tsx --outfile icons.mjs --format esm --external react --external lucide-react",
101
- "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",
102
- "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; }",
103
- "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)})\"",
104
- "prepublishOnly": "bun run theme:check && bun run icons:check && bun run entry:check && bun run audit && tsc --noEmit && bunx react-doctor@latest --score"
105
- },
106
- "sideEffects": [
107
- "**/*.css"
108
- ],
109
- "trustedDependencies": [
110
- "@astryxdesign/core",
111
- "@astryxdesign/cli"
112
- ],
113
- "type": "module",
114
- "version": "0.4.0",
115
- "patchedDependencies": {
116
- "@astryxdesign/core@0.6.3": "patches/@astryxdesign%2Fcore@0.6.3.patch"
117
- }
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
+ }
118
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>;