astryx-dracula 0.5.0 → 0.6.2

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 (129) hide show
  1. package/BRAND.md +3 -3
  2. package/README.md +7 -4
  3. package/USAGE.md +49 -49
  4. package/astryx-dracula.d.ts +2 -2
  5. package/astryx-dracula.js +25 -9
  6. package/astryx-dracula.variants.d.ts +2 -2
  7. package/astryx.integration.mjs +1 -1
  8. package/icons.mjs +21 -17
  9. package/icons.tsx +69 -62
  10. package/package.json +125 -120
  11. package/shared/auth-chrome-config.ts +6 -6
  12. package/shared/auth-chrome.tsx +143 -144
  13. package/shared/auth-copy.ts +14 -14
  14. package/shared/chaptered-doc-config.ts +48 -51
  15. package/shared/chaptered-doc.tsx +267 -289
  16. package/shared/chart-hues.ts +25 -10
  17. package/shared/chart-labels.tsx +31 -30
  18. package/shared/chart-legend.tsx +55 -56
  19. package/shared/chart-panel-style.ts +3 -3
  20. package/shared/data-bar.tsx +97 -102
  21. package/shared/format-money.ts +1 -1
  22. package/shared/gallery-image.ts +6 -6
  23. package/shared/login-demo.ts +1 -1
  24. package/shared/metric-card.tsx +101 -105
  25. package/shared/metric-delta.tsx +28 -27
  26. package/shared/order-desk.tsx +205 -216
  27. package/shared/revenue-chart.tsx +145 -165
  28. package/shared/scene-castle.tsx +206 -291
  29. package/shared/scene-frame.tsx +33 -32
  30. package/shared/scene-hues.ts +17 -17
  31. package/shared/scene-tile.tsx +88 -92
  32. package/shared/settings-data.ts +119 -125
  33. package/shared/settings-rows.tsx +122 -159
  34. package/shared/sparkline.tsx +75 -88
  35. package/shared/sso-icons.tsx +10 -22
  36. package/shared/stars.tsx +16 -25
  37. package/templates/ai-chat-landing.template.mjs +5 -4
  38. package/templates/ai-chat-landing.tsx +473 -460
  39. package/templates/ai-chat.template.mjs +5 -4
  40. package/templates/ai-chat.tsx +543 -612
  41. package/templates/blank.template.mjs +5 -4
  42. package/templates/blank.tsx +18 -14
  43. package/templates/centered-hero.template.mjs +5 -4
  44. package/templates/centered-hero.tsx +55 -68
  45. package/templates/classic-gallery.template.mjs +5 -4
  46. package/templates/classic-gallery.tsx +97 -104
  47. package/templates/contact-form.template.mjs +5 -4
  48. package/templates/contact-form.tsx +247 -282
  49. package/templates/dashboard-portfolio.template.mjs +5 -4
  50. package/templates/dashboard-portfolio.tsx +717 -548
  51. package/templates/dashboard.template.mjs +5 -4
  52. package/templates/dashboard.tsx +596 -567
  53. package/templates/detail-page.template.mjs +5 -4
  54. package/templates/detail-page.tsx +546 -603
  55. package/templates/documentation-design.template.mjs +5 -4
  56. package/templates/documentation-design.tsx +231 -243
  57. package/templates/documentation-technical.template.mjs +5 -4
  58. package/templates/documentation-technical.tsx +236 -239
  59. package/templates/documentation.template.mjs +5 -4
  60. package/templates/documentation.tsx +267 -279
  61. package/templates/editor.template.mjs +5 -4
  62. package/templates/editor.tsx +844 -877
  63. package/templates/file-explorer.template.mjs +5 -4
  64. package/templates/file-explorer.tsx +566 -590
  65. package/templates/form-two-column.template.mjs +5 -4
  66. package/templates/form-two-column.tsx +195 -210
  67. package/templates/gallery-hero.template.mjs +5 -4
  68. package/templates/gallery-hero.tsx +93 -114
  69. package/templates/ide.template.mjs +5 -4
  70. package/templates/ide.tsx +407 -453
  71. package/templates/incident-console.template.mjs +5 -4
  72. package/templates/incident-console.tsx +593 -575
  73. package/templates/kanban-board.template.mjs +5 -4
  74. package/templates/kanban-board.tsx +665 -683
  75. package/templates/library.template.mjs +5 -4
  76. package/templates/library.tsx +409 -430
  77. package/templates/login-card.template.mjs +5 -4
  78. package/templates/login-card.tsx +63 -72
  79. package/templates/login-split.template.mjs +5 -4
  80. package/templates/login-split.tsx +192 -193
  81. package/templates/login-sso.template.mjs +5 -4
  82. package/templates/login-sso.tsx +257 -258
  83. package/templates/login.template.mjs +5 -4
  84. package/templates/login.tsx +53 -49
  85. package/templates/messaging-shell.template.mjs +5 -4
  86. package/templates/messaging-shell.tsx +556 -574
  87. package/templates/mixed-gallery.template.mjs +5 -4
  88. package/templates/mixed-gallery.tsx +60 -58
  89. package/templates/payment-form.template.mjs +5 -4
  90. package/templates/payment-form.tsx +882 -991
  91. package/templates/product-detail.template.mjs +5 -4
  92. package/templates/product-detail.tsx +261 -272
  93. package/templates/product-gallery.template.mjs +5 -4
  94. package/templates/product-gallery.tsx +126 -137
  95. package/templates/product-tour.template.mjs +5 -4
  96. package/templates/product-tour.tsx +741 -773
  97. package/templates/settings-dialog.template.mjs +5 -4
  98. package/templates/settings-dialog.tsx +688 -717
  99. package/templates/settings-sidebar.template.mjs +5 -4
  100. package/templates/settings-sidebar.tsx +762 -807
  101. package/templates/settings.template.mjs +5 -4
  102. package/templates/settings.tsx +289 -304
  103. package/templates/shell-nav.template.mjs +5 -4
  104. package/templates/shell-nav.tsx +212 -219
  105. package/templates/shell-side-nav.template.mjs +5 -4
  106. package/templates/shell-side-nav.tsx +135 -157
  107. package/templates/shell-top-nav.template.mjs +5 -4
  108. package/templates/shell-top-nav.tsx +182 -203
  109. package/templates/side-gallery.template.mjs +5 -4
  110. package/templates/side-gallery.tsx +85 -90
  111. package/templates/table-grouped.template.mjs +5 -4
  112. package/templates/table-grouped.tsx +1000 -1053
  113. package/templates/table-page-chart.template.mjs +5 -4
  114. package/templates/table-page-chart.tsx +400 -398
  115. package/templates/table-page-heatmap-status.template.mjs +5 -4
  116. package/templates/table-page-heatmap-status.tsx +483 -512
  117. package/templates/table-page-shoe-store-heatmap.template.mjs +5 -4
  118. package/templates/table-page-shoe-store-heatmap.tsx +748 -746
  119. package/templates/table-page.template.mjs +5 -4
  120. package/templates/table-page.tsx +396 -405
  121. package/templates/table.template.mjs +5 -4
  122. package/templates/table.tsx +92 -93
  123. package/templates/tech-report.template.mjs +5 -4
  124. package/templates/tech-report.tsx +1316 -1304
  125. package/templates/theme-showcase.template.mjs +5 -4
  126. package/templates/theme-showcase.tsx +871 -951
  127. package/theme.css +35 -77
  128. package/theme.css.d.ts +9 -0
  129. package/tokens.css +373 -380
@@ -1,16 +1,18 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
- // XLE (canonical structure, validated with `bunx astryx layout check`):
3
- // L > LC[p=6] > V[g=10] > (V[g=6 a=center] > (V[g=3 a=center] > Hd"Little haunts, everywhere you roam"[level=1 t=display-2] + Tx"Sometimes all it takes"[t=body]) + (H[j=center g=3] > B.primary"Enter the gallery" + B.secondary"Read the lore")) + (G[c={min:200} g=4] > AR*3)
2
+ // XLE (canonical structure of the tree below; the CLI had no XLE validator
3
+ // after `astryx layout` was removed in 0.7.0, so this is a reading aid and a
4
+ // human drift check — update it with the file, never alone):
5
+ // L[h=auto] > LC[p=6] > V[g=10] > (V[g=6 a=center] > (V[g=3 a=center] > Hd"Little haunts, everywhere you roam"[level=1 t=display-2] + Tx"Sometimes all it takes"[t=body]) + (H[j=center g=3] > B.primary"Enter the gallery" + B.secondary"Read the lore")) + (G[c={min:200} g=4] > AR[ratio=4/5] > Scene{SceneCastle}*3)
4
6
 
5
- import {VStack, HStack, Layout, LayoutContent} from '@astryxdesign/core/Layout';
6
- import {Text, Heading} from '@astryxdesign/core/Text';
7
- import {Button} from '@astryxdesign/core/Button';
8
- import {Icon} from '@astryxdesign/core/Icon';
9
- import {Grid} from '@astryxdesign/core/Grid';
10
- import {AspectRatio} from '@astryxdesign/core/AspectRatio';
11
- import {ArrowRight} from 'lucide-react';
12
- import {galleryImage, galleryImageClip} from 'astryx-dracula/shared/gallery-image';
13
- import {SceneCastle} from 'astryx-dracula/shared/scene-castle';
7
+ import { AspectRatio } from "@astryxdesign/core/AspectRatio";
8
+ import { Button } from "@astryxdesign/core/Button";
9
+ import { Grid } from "@astryxdesign/core/Grid";
10
+ import { Icon } from "@astryxdesign/core/Icon";
11
+ import { HStack, Layout, LayoutContent, VStack } from "@astryxdesign/core/Layout";
12
+ import { Heading, Text } from "@astryxdesign/core/Text";
13
+ import { galleryImage, galleryImageClip } from "astryx-dracula/shared/gallery-image";
14
+ import { SceneCastle } from "astryx-dracula/shared/scene-castle";
15
+ import { ArrowRight } from "lucide-react";
14
16
 
15
17
  // Castle + pines banners live in shared/scene-castle (`card`/`tall` variants:
16
18
  // harvest-yellow moon, fg-stroke bats, per-scene hill constants). Fill +
@@ -21,113 +23,90 @@ import {SceneCastle} from 'astryx-dracula/shared/scene-castle';
21
23
  // tile instead.
22
24
 
23
25
  function BatFlightScene() {
24
- return (
25
- <svg
26
- style={galleryImage}
27
- viewBox="0 0 400 500"
28
- role="img"
29
- aria-label="Bats crossing a moonless night sky">
30
- <rect width="400" height="500" fill="var(--dracula-bg-dark)" />
31
- <circle cx="200" cy="140" r="60" fill="var(--dracula-comment)" />
32
- <circle
33
- cx="200"
34
- cy="140"
35
- r="60"
36
- fill="none"
37
- stroke="var(--dracula-pink)"
38
- strokeWidth={3}
39
- opacity={0.6}
40
- />
41
- <g fill="var(--dracula-cyan)">
42
- <circle cx="60" cy="70" r="2" />
43
- <circle cx="150" cy="40" r="2.5" />
44
- <circle cx="260" cy="60" r="2" />
45
- <circle cx="340" cy="110" r="2.5" />
46
- <circle cx="100" cy="160" r="2" />
47
- </g>
48
- <g
49
- fill="none"
50
- stroke="var(--dracula-fg)"
51
- strokeWidth={4}
52
- strokeLinecap="round">
53
- <path d="M110 220 q12 -12 24 0 q12 -12 24 0" />
54
- <path d="M200 180 q12 -12 24 0 q12 -12 24 0" />
55
- <path d="M250 260 q9 -9 18 0 q9 -9 18 0" />
56
- <path d="M140 300 q9 -9 18 0 q9 -9 18 0" />
57
- <path d="M290 320 q9 -9 18 0 q9 -9 18 0" />
58
- </g>
59
- <path
60
- d="M0 370 Q140 310 270 355 T400 345 V500 H0 Z"
61
- fill="var(--dracula-bg-lighter)"
62
- />
63
- <path
64
- d="M0 430 Q180 375 400 415 V500 H0 Z"
65
- fill="var(--dracula-selection)"
66
- />
67
- <g fill="var(--dracula-green)">
68
- <circle cx="80" cy="440" r="6" />
69
- <circle cx="200" cy="455" r="6" />
70
- <circle cx="320" cy="445" r="6" />
71
- </g>
72
- </svg>
73
- );
26
+ return (
27
+ <svg
28
+ style={galleryImage}
29
+ viewBox="0 0 400 500"
30
+ role="img"
31
+ aria-label="Bats crossing a moonless night sky"
32
+ >
33
+ <rect width="400" height="500" fill="var(--dracula-bg-dark)" />
34
+ <circle cx="200" cy="140" r="60" fill="var(--dracula-comment)" />
35
+ <circle
36
+ cx="200"
37
+ cy="140"
38
+ r="60"
39
+ fill="none"
40
+ stroke="var(--dracula-pink)"
41
+ strokeWidth={3}
42
+ opacity={0.6}
43
+ />
44
+ <g fill="var(--dracula-cyan)">
45
+ <circle cx="60" cy="70" r="2" />
46
+ <circle cx="150" cy="40" r="2.5" />
47
+ <circle cx="260" cy="60" r="2" />
48
+ <circle cx="340" cy="110" r="2.5" />
49
+ <circle cx="100" cy="160" r="2" />
50
+ </g>
51
+ <g fill="none" stroke="var(--dracula-fg)" strokeWidth={4} strokeLinecap="round">
52
+ <path d="M110 220 q12 -12 24 0 q12 -12 24 0" />
53
+ <path d="M200 180 q12 -12 24 0 q12 -12 24 0" />
54
+ <path d="M250 260 q9 -9 18 0 q9 -9 18 0" />
55
+ <path d="M140 300 q9 -9 18 0 q9 -9 18 0" />
56
+ <path d="M290 320 q9 -9 18 0 q9 -9 18 0" />
57
+ </g>
58
+ <path d="M0 370 Q140 310 270 355 T400 345 V500 H0 Z" fill="var(--dracula-bg-lighter)" />
59
+ <path d="M0 430 Q180 375 400 415 V500 H0 Z" fill="var(--dracula-selection)" />
60
+ <g fill="var(--dracula-green)">
61
+ <circle cx="80" cy="440" r="6" />
62
+ <circle cx="200" cy="455" r="6" />
63
+ <circle cx="320" cy="445" r="6" />
64
+ </g>
65
+ </svg>
66
+ );
74
67
  }
75
68
 
76
69
  const SCENES = [
77
- {alt: 'Moonlit castle on midnight hills', scene: <SceneCastle variant="card" />},
78
- {alt: 'Harvest moon over midnight pines', scene: <SceneCastle variant="tall" />},
79
- {alt: 'Bats crossing a moonless night sky', scene: <BatFlightScene />},
70
+ { alt: "Moonlit castle on midnight hills", scene: <SceneCastle variant="card" /> },
71
+ { alt: "Harvest moon over midnight pines", scene: <SceneCastle variant="tall" /> },
72
+ { alt: "Bats crossing a moonless night sky", scene: <BatFlightScene /> },
80
73
  ];
81
74
 
82
75
  export default function GalleryHero() {
83
- return (
84
- <Layout
85
- height="auto"
86
- content={
87
- <LayoutContent padding={6}>
88
- <VStack gap={10}>
89
- <VStack gap={6} hAlign="center">
90
- <VStack gap={3} hAlign="center">
91
- <Heading
92
- level={1}
93
- type="display-2"
94
- justify="center"
95
- textWrap="balance">
96
- Little haunts, everywhere you roam
97
- </Heading>
98
- <Text
99
- type="body"
100
- color="secondary"
101
- justify="center"
102
- textWrap="balance">
103
- Sometimes all it takes is one small shadow to turn the whole
104
- night around.
105
- </Text>
106
- </VStack>
107
- <HStack gap={3} wrap="wrap" justify="center">
108
- <Button
109
- label="Enter the gallery"
110
- variant="primary"
111
- endContent={
112
- <Icon icon={ArrowRight} size="sm" color="inherit" />
113
- }
114
- />
115
- <Button label="Read the lore" variant="secondary" />
116
- </HStack>
117
- </VStack>
118
- <Grid columns={{minWidth: 200, repeat: 'fit'}} gap={4}>
119
- {SCENES.map(item => (
120
- <AspectRatio
121
- key={item.alt}
122
- ratio={4 / 5}
123
- style={galleryImageClip}>
124
- {item.scene}
125
- </AspectRatio>
126
- ))}
127
- </Grid>
128
- </VStack>
129
- </LayoutContent>
130
- }
131
- />
132
- );
76
+ return (
77
+ <Layout
78
+ height="auto"
79
+ content={
80
+ <LayoutContent padding={6}>
81
+ <VStack gap={10}>
82
+ <VStack gap={6} hAlign="center">
83
+ <VStack gap={3} hAlign="center">
84
+ <Heading level={1} type="display-2" justify="center" textWrap="balance">
85
+ Little haunts, everywhere you roam
86
+ </Heading>
87
+ <Text type="body" color="secondary" justify="center" textWrap="balance">
88
+ Sometimes all it takes is one small shadow to turn the whole night around.
89
+ </Text>
90
+ </VStack>
91
+ <HStack gap={3} wrap="wrap" justify="center">
92
+ <Button
93
+ label="Enter the gallery"
94
+ variant="primary"
95
+ endContent={<Icon icon={ArrowRight} size="sm" color="inherit" />}
96
+ />
97
+ <Button label="Read the lore" variant="secondary" />
98
+ </HStack>
99
+ </VStack>
100
+ <Grid columns={{ minWidth: 200, repeat: "fit" }} gap={4}>
101
+ {SCENES.map((item) => (
102
+ <AspectRatio key={item.alt} ratio={4 / 5} style={galleryImageClip}>
103
+ {item.scene}
104
+ </AspectRatio>
105
+ ))}
106
+ </Grid>
107
+ </VStack>
108
+ </LayoutContent>
109
+ }
110
+ />
111
+ );
133
112
  }
@@ -1,6 +1,7 @@
1
1
  export default {
2
- type: 'page',
3
- name: 'IDE Workspace',
4
- description: 'Tabbed editor with terminal and properties',
5
- category: 'tooling',
2
+ type: "page",
3
+ name: "IDE Workspace",
4
+ description: "Tabbed editor with terminal and properties",
5
+ keywords: ["ide", "editor", "terminal", "workspace", "code", "developer"],
6
+ category: "tooling",
6
7
  };