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,6 +1,7 @@
1
1
  export default {
2
- type: 'page',
3
- name: 'Mixed Gallery',
4
- description: 'Masonry image gallery with varying tile sizes',
5
- category: 'marketing',
2
+ type: "page",
3
+ name: "Mixed Gallery",
4
+ description: "Masonry image gallery with varying tile sizes",
5
+ keywords: ["gallery", "mixed", "grid", "collection", "showcase", "images"],
6
+ category: "marketing",
6
7
  };
@@ -1,14 +1,16 @@
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=8] > ((V[g=2 a=center] > Hd"Every corner of the castle, caught after dark."[level=1] + Tx"Relics, sketches, and moonlit views from the coven archives, collected over one long Transylvanian night."[t=body]) + (V[g=3] > (V[g=2] > AR[ratio=3/1] + Tx"The castle at moonrise"[t=body]) + (G[c={min:280} g=4] > (V[g=2] > AR[ratio=3/2] + Tx"Coven gathering"[t=body]) + (V[g=2] > AR[ratio=3/2] + Tx"Belfry view"[t=body]) + (V[g=2] > AR[ratio=3/2] + Tx"Crypt archives"[t=body]) + (V[g=2] > AR[ratio=3/2] + Tx"Midnight garden"[t=body]))))
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=fill] > LC[p=6] > V[g=8] > ((V[g=2 a=center] > Hd"Every corner of the castle, caught after dark."[level=1] + Tx"Relics, sketches, and moonlit views from the coven archives, collected over one long Transylvanian night."[t=body]) + (V[g=3] > (V[g=2] > (AR[ratio=3/1] > Scene{SceneTile}) + Tx"The castle at moonrise"[t=body]) + (G[c={min:280} g=4] > (V[g=2] > (AR[ratio=3/2] > Scene{SceneTile}) + Tx"Coven gathering"[t=body]) + (V[g=2] > (AR[ratio=3/2] > Scene{SceneTile}) + Tx"Belfry view"[t=body]) + (V[g=2] > (AR[ratio=3/2] > Scene{SceneTile}) + Tx"Crypt archives"[t=body]) + (V[g=2] > (AR[ratio=3/2] > Scene{SceneTile}) + Tx"Midnight garden"[t=body]))))
4
6
 
5
- import {VStack, Layout, LayoutContent} from '@astryxdesign/core/Layout';
6
- import {Text, Heading} from '@astryxdesign/core/Text';
7
- import {AspectRatio} from '@astryxdesign/core/AspectRatio';
8
- import {Grid} from '@astryxdesign/core/Grid';
9
- import {galleryImageClip} from 'astryx-dracula/shared/gallery-image';
10
- import {SceneTile} from 'astryx-dracula/shared/scene-tile';
11
- import type {SceneHue} from 'astryx-dracula/shared/scene-hues';
7
+ import { AspectRatio } from "@astryxdesign/core/AspectRatio";
8
+ import { Grid } from "@astryxdesign/core/Grid";
9
+ import { Layout, LayoutContent, VStack } from "@astryxdesign/core/Layout";
10
+ import { Heading, Text } from "@astryxdesign/core/Text";
11
+ import { galleryImageClip } from "astryx-dracula/shared/gallery-image";
12
+ import type { SceneHue } from "astryx-dracula/shared/scene-hues";
13
+ import { SceneTile } from "astryx-dracula/shared/scene-tile";
12
14
 
13
15
  // ─── Styles ────────────────────────────────────────────────────────────────
14
16
  // Image fill + radius live in shared/gallery-image (no Image primitive in
@@ -17,18 +19,18 @@ import type {SceneHue} from 'astryx-dracula/shared/scene-hues';
17
19
  // ─── Gallery Data ───────────────────────────────────────────────────────────
18
20
 
19
21
  interface GalleryImage {
20
- title: string;
21
- hue: SceneHue;
22
+ title: string;
23
+ hue: SceneHue;
22
24
  }
23
25
 
24
26
  // One accent per tile from the fixed badge vocabulary; the SVG scenes below
25
27
  // resolve to Dracula tokens so tiles stay on-brand in the dark-only theme.
26
28
  const IMAGES: GalleryImage[] = [
27
- {title: 'The castle at moonrise', hue: 'var(--dracula-orange)'},
28
- {title: 'Coven gathering', hue: 'var(--dracula-cyan)'},
29
- {title: 'Belfry view', hue: 'var(--dracula-pink)'},
30
- {title: 'Crypt archives', hue: 'var(--dracula-yellow)'},
31
- {title: 'Midnight garden', hue: 'var(--dracula-green)'},
29
+ { title: "The castle at moonrise", hue: "var(--dracula-orange)" },
30
+ { title: "Coven gathering", hue: "var(--dracula-cyan)" },
31
+ { title: "Belfry view", hue: "var(--dracula-pink)" },
32
+ { title: "Crypt archives", hue: "var(--dracula-yellow)" },
33
+ { title: "Midnight garden", hue: "var(--dracula-green)" },
32
34
  ];
33
35
 
34
36
  // ─── Gallery Card ─────────────────────────────────────────────────────────
@@ -37,55 +39,55 @@ const IMAGES: GalleryImage[] = [
37
39
  // definite, self-contained height from its ratio, so images can't overflow
38
40
  // their grid cell and no tile depends on a neighbour's caption height.
39
41
 
40
- function GalleryCard({image, ratio}: {image: GalleryImage; ratio: number}) {
41
- return (
42
- <VStack gap={2}>
43
- <AspectRatio ratio={ratio} style={galleryImageClip}>
44
- <SceneTile label={image.title} hue={image.hue} size="lg" />
45
- </AspectRatio>
46
- <Text type="body" color="secondary" justify="center">
47
- {image.title}
48
- </Text>
49
- </VStack>
50
- );
42
+ function GalleryCard({ image, ratio }: { image: GalleryImage; ratio: number }) {
43
+ return (
44
+ <VStack gap={2}>
45
+ <AspectRatio ratio={ratio} style={galleryImageClip}>
46
+ <SceneTile label={image.title} hue={image.hue} size="lg" />
47
+ </AspectRatio>
48
+ <Text type="body" color="secondary" justify="center">
49
+ {image.title}
50
+ </Text>
51
+ </VStack>
52
+ );
51
53
  }
52
54
 
53
55
  // ─── Main Page ──────────────────────────────────────────────────────────────
54
56
 
55
57
  export default function MixedGallery() {
56
- return (
57
- <Layout
58
- height="fill"
59
- contentWidth={1400}
60
- content={
61
- <LayoutContent padding={6}>
62
- <VStack gap={8}>
63
- {/* Header */}
64
- <VStack gap={2} hAlign="center">
65
- <Heading level={1} justify="center">
66
- Every corner of the castle, caught after dark.
67
- </Heading>
68
- <Text type="body" color="secondary" justify="center">
69
- Relics, sketches, and moonlit views from the coven archives,
70
- collected over one long Transylvanian night.
71
- </Text>
72
- </VStack>
58
+ return (
59
+ <Layout
60
+ height="fill"
61
+ contentWidth={1400}
62
+ content={
63
+ <LayoutContent padding={6}>
64
+ <VStack gap={8}>
65
+ {/* Header */}
66
+ <VStack gap={2} hAlign="center">
67
+ <Heading level={1} justify="center">
68
+ Every corner of the castle, caught after dark.
69
+ </Heading>
70
+ <Text type="body" color="secondary" justify="center">
71
+ Relics, sketches, and moonlit views from the coven archives, collected over one long
72
+ Transylvanian night.
73
+ </Text>
74
+ </VStack>
73
75
 
74
- {/* Featured layout: the wide 3:1 hero heads the page, then the rest
76
+ {/* Featured layout: the wide 3:1 hero heads the page, then the rest
75
77
  of the set reflows as a grid (4 → 2 → 1 columns). Every tile
76
78
  keeps its own ratio, so no tile's height depends on another's
77
79
  caption wrapping. */}
78
- <VStack gap={3}>
79
- <GalleryCard image={IMAGES[0]} ratio={3 / 1} />
80
- <Grid columns={{minWidth: 280}} gap={4}>
81
- {IMAGES.slice(1).map(image => (
82
- <GalleryCard key={image.title} image={image} ratio={3 / 2} />
83
- ))}
84
- </Grid>
85
- </VStack>
86
- </VStack>
87
- </LayoutContent>
88
- }
89
- />
90
- );
80
+ <VStack gap={3}>
81
+ <GalleryCard image={IMAGES[0]} ratio={3 / 1} />
82
+ <Grid columns={{ minWidth: 280 }} gap={4}>
83
+ {IMAGES.slice(1).map((image) => (
84
+ <GalleryCard key={image.title} image={image} ratio={3 / 2} />
85
+ ))}
86
+ </Grid>
87
+ </VStack>
88
+ </VStack>
89
+ </LayoutContent>
90
+ }
91
+ />
92
+ );
91
93
  }
@@ -1,6 +1,7 @@
1
1
  export default {
2
- type: 'page',
3
- name: 'Checkout Form',
4
- description: 'Billing info, card details, and order summary',
5
- category: 'commerce',
2
+ type: "page",
3
+ name: "Checkout Form",
4
+ description: "Billing info, card details, and order summary",
5
+ keywords: ["checkout", "payment", "billing", "cart", "buyer", "purchase", "order"],
6
+ category: "commerce",
6
7
  };