@mdxui/named 8.0.0 → 8.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/dist/styles.css +303 -1
- package/dist/view/index.d.ts +1 -1
- package/dist/view/index.js +597 -2
- package/dist/view/index.js.map +1 -1
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -810,4 +810,306 @@ html:has([data-dialect='named']) {
|
|
|
810
810
|
left: 0;
|
|
811
811
|
right: 0;
|
|
812
812
|
border-top: 1px solid var(--color-border);
|
|
813
|
-
}
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
/**
|
|
816
|
+
* @mdxui/named — GALLERY template envelope ("The Evening Gallery")
|
|
817
|
+
* ============================================================================
|
|
818
|
+
*
|
|
819
|
+
* The museum register of the named dialect: the page is an exhibition
|
|
820
|
+
* catalogue for a singular talent. Scene: an evening visitor moving alone
|
|
821
|
+
* through a dim gallery — warm near-black walls, each capability hung as a
|
|
822
|
+
* spot-lit work with its bone placard beside it, one Klein-blue wall at the
|
|
823
|
+
* end of the walk.
|
|
824
|
+
*
|
|
825
|
+
* LIGHT MODE IS THE DAY GALLERY, not an inversion: bone plaster walls under
|
|
826
|
+
* even daylight, the SAME placard system (placards are physical bone cards —
|
|
827
|
+
* they keep their material in both modes), the vitrines keep their dark
|
|
828
|
+
* velvet interiors, and the ultramarine holds. Dark mode dims the walls to
|
|
829
|
+
* warm near-black; the placards and vitrines read as lit objects by contrast
|
|
830
|
+
* alone.
|
|
831
|
+
*
|
|
832
|
+
* Color strategy: RESTRAINED — vast warm-neutral emptiness; one saturated
|
|
833
|
+
* accent (electric ultramarine, the International-Klein-Blue register of
|
|
834
|
+
* gallery walls) held under ~10% of the surface: catalogue numbers, the
|
|
835
|
+
* primary action, and the single painted wall of the closing room.
|
|
836
|
+
* Deliberately NOT gold/amber, NOT neon, NOT terminal-dark.
|
|
837
|
+
*
|
|
838
|
+
* SCOPING — rides on top of the studio envelope exactly like executive: the
|
|
839
|
+
* view renders `data-dialect="named" data-template="gallery"`, so studio's
|
|
840
|
+
* bare `[data-dialect='named']` block still matches and this two-attribute
|
|
841
|
+
* selector re-points every token the gallery subtree reads. The dark block
|
|
842
|
+
* below (3 selectors) outranks both this block and studio's `.dark` block.
|
|
843
|
+
*/
|
|
844
|
+
|
|
845
|
+
/* Display face — Bricolage Grotesque (variable 200–800, optical sizes 12–96):
|
|
846
|
+
a grotesque with flare cuts and real presence at exhibition-title sizes,
|
|
847
|
+
nothing like Halant's serif or Anton's condensed shout. Inter body ships
|
|
848
|
+
from the studio block of the same stylesheet. */
|
|
849
|
+
@font-face {
|
|
850
|
+
font-family: 'Bricolage Grotesque';
|
|
851
|
+
font-style: normal;
|
|
852
|
+
font-weight: 200 800;
|
|
853
|
+
font-stretch: 100%;
|
|
854
|
+
font-display: swap;
|
|
855
|
+
src: url('https://fonts.gstatic.com/s/bricolagegrotesque/v9/3y9K6as8bTXq_nANBjzKo3IeZx8z6up5BeSl9D4dj_x9PpZBMlGIInHWVyNJ.woff2')
|
|
856
|
+
format('woff2');
|
|
857
|
+
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
|
858
|
+
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
|
|
859
|
+
U+2212, U+2215, U+FEFF, U+FFFD;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
[data-dialect='named'][data-template='gallery'] {
|
|
863
|
+
/* ---- semantic layer — the day gallery -------------------------------- */
|
|
864
|
+
/* walls: bone plaster (warm hue, whisper of chroma — never #fff) */
|
|
865
|
+
--color-surface: oklch(0.957 0.007 80);
|
|
866
|
+
--color-surface-raised: oklch(0.978 0.005 82);
|
|
867
|
+
--color-surface-sunken: oklch(0.928 0.009 78);
|
|
868
|
+
|
|
869
|
+
/* ink: warm umber, never pure black */
|
|
870
|
+
--color-fg: oklch(0.21 0.012 55);
|
|
871
|
+
--color-fg-soft: oklch(0.34 0.012 55);
|
|
872
|
+
--color-fg-muted: oklch(0.47 0.014 60);
|
|
873
|
+
|
|
874
|
+
/* hairlines — frame edges and rule lines */
|
|
875
|
+
--color-border: oklch(0.21 0.012 55 / 0.14);
|
|
876
|
+
--color-border-strong: oklch(0.21 0.012 55 / 0.42);
|
|
877
|
+
--color-ring: oklch(0.45 0.2 264 / 0.5);
|
|
878
|
+
--color-hover: oklch(0.21 0.012 55 / 0.05);
|
|
879
|
+
|
|
880
|
+
/* the one accent: electric ultramarine (Klein blue). `field` paints the
|
|
881
|
+
large surfaces (the closing-room wall, the featured edition); `strong`
|
|
882
|
+
is blue TYPE and small marks (catalogue numbers, diamonds). They share
|
|
883
|
+
a value in daylight; after dark they split — fields stay deep and
|
|
884
|
+
saturated, type lifts to stay legible on near-black. */
|
|
885
|
+
--color-accent-field: oklch(0.45 0.28 264);
|
|
886
|
+
--color-accent-strong: oklch(0.45 0.26 264);
|
|
887
|
+
--color-accent: oklch(0.5 0.24 264);
|
|
888
|
+
--color-accent-soft: oklch(0.93 0.035 264);
|
|
889
|
+
--color-accent-fg: oklch(0.975 0.006 85);
|
|
890
|
+
|
|
891
|
+
/* placards: physical bone cards — same material in BOTH modes */
|
|
892
|
+
--color-placard: oklch(0.982 0.005 85);
|
|
893
|
+
--color-placard-fg: oklch(0.21 0.012 55);
|
|
894
|
+
--color-placard-soft: oklch(0.36 0.012 55);
|
|
895
|
+
--color-placard-muted: oklch(0.48 0.014 58);
|
|
896
|
+
--color-placard-border: oklch(0.21 0.012 55 / 0.12);
|
|
897
|
+
|
|
898
|
+
/* vitrines: dark velvet interiors — display cases stay dark by day too */
|
|
899
|
+
--color-vitrine: oklch(0.15 0.012 48);
|
|
900
|
+
--color-vitrine-fg: oklch(0.92 0.008 80);
|
|
901
|
+
--color-vitrine-border: oklch(0.21 0.012 55 / 0.35);
|
|
902
|
+
|
|
903
|
+
/* primary action: solid ultramarine (the studio gradient collapses flat) */
|
|
904
|
+
--color-btn-primary-from: oklch(0.45 0.28 264);
|
|
905
|
+
--color-btn-primary-to: oklch(0.45 0.28 264);
|
|
906
|
+
--color-btn-primary-fg: oklch(0.975 0.006 85);
|
|
907
|
+
|
|
908
|
+
--color-destructive: oklch(0.55 0.19 28);
|
|
909
|
+
--color-destructive-fg: oklch(0.975 0.006 85);
|
|
910
|
+
|
|
911
|
+
/* ---- neo shared names, re-pointed (keeps shared primitives correct) -- */
|
|
912
|
+
--background: oklch(0.957 0.007 80);
|
|
913
|
+
--foreground: oklch(0.21 0.012 55);
|
|
914
|
+
--card: oklch(0.978 0.005 82);
|
|
915
|
+
--card-foreground: oklch(0.21 0.012 55);
|
|
916
|
+
--popover: oklch(0.978 0.005 82);
|
|
917
|
+
--popover-foreground: oklch(0.21 0.012 55);
|
|
918
|
+
--muted: oklch(0.928 0.009 78);
|
|
919
|
+
--muted-foreground: oklch(0.47 0.014 60);
|
|
920
|
+
--primary: oklch(0.45 0.28 264);
|
|
921
|
+
--primary-foreground: oklch(0.975 0.006 85);
|
|
922
|
+
--secondary: oklch(0.928 0.009 78);
|
|
923
|
+
--secondary-foreground: oklch(0.21 0.012 55);
|
|
924
|
+
--accent: oklch(0.5 0.24 264);
|
|
925
|
+
--accent-foreground: oklch(0.975 0.006 85);
|
|
926
|
+
--border: oklch(0.21 0.012 55 / 0.14);
|
|
927
|
+
--input: oklch(0.21 0.012 55 / 0.14);
|
|
928
|
+
--ring: oklch(0.45 0.2 264 / 0.5);
|
|
929
|
+
--destructive: oklch(0.55 0.19 28);
|
|
930
|
+
--destructive-foreground: oklch(0.975 0.006 85);
|
|
931
|
+
|
|
932
|
+
/* ---- geometry: crisp frames, gently eased placard corners ------------ */
|
|
933
|
+
/* 4px base (--radius anchors the host's @theme-inline multipliers; see
|
|
934
|
+
the studio block for the mechanism). Frames and vitrines are sharp by
|
|
935
|
+
component class; placards take the soft 4px of a die-cut card. */
|
|
936
|
+
--radius: 0.25rem;
|
|
937
|
+
--radius-xs: 0.125rem;
|
|
938
|
+
--radius-sm: 0.1875rem;
|
|
939
|
+
--radius-md: 0.25rem;
|
|
940
|
+
--radius-lg: 0.25rem;
|
|
941
|
+
--radius-xl: 0.375rem;
|
|
942
|
+
--radius-2xl: 0.5rem;
|
|
943
|
+
--radius-3xl: 0.5rem;
|
|
944
|
+
--radius-4xl: 0.5rem;
|
|
945
|
+
--radius-section: 0px;
|
|
946
|
+
--radius-image: 4px;
|
|
947
|
+
|
|
948
|
+
/* ---- elevation: museum light --------------------------------------- */
|
|
949
|
+
/* Placards and vitrines cast soft warm shadows (objects under daylight);
|
|
950
|
+
warm-black tint so the shadow belongs to the room, not to a screen. */
|
|
951
|
+
--shadow-2xs: 0 1px 1px oklch(0.15 0.012 48 / 0.05);
|
|
952
|
+
--shadow-xs: 0 1px 2px oklch(0.15 0.012 48 / 0.06);
|
|
953
|
+
--shadow-sm: 0 1px 3px oklch(0.15 0.012 48 / 0.08),
|
|
954
|
+
0 1px 2px -1px oklch(0.15 0.012 48 / 0.08);
|
|
955
|
+
--shadow-md: 0 6px 16px -6px oklch(0.15 0.012 48 / 0.14),
|
|
956
|
+
0 2px 4px -2px oklch(0.15 0.012 48 / 0.08);
|
|
957
|
+
--shadow-lg: 0 18px 40px -16px oklch(0.15 0.012 48 / 0.2),
|
|
958
|
+
0 4px 10px -6px oklch(0.15 0.012 48 / 0.1);
|
|
959
|
+
--shadow-xl: 0 28px 56px -20px oklch(0.15 0.012 48 / 0.26);
|
|
960
|
+
--shadow-2xl: 0 36px 72px -24px oklch(0.15 0.012 48 / 0.32);
|
|
961
|
+
|
|
962
|
+
/* ---- type ------------------------------------------------------------ */
|
|
963
|
+
/* Display = Bricolage Grotesque (exhibition titles, catalogue numbers,
|
|
964
|
+
prices). Body stays on the inherited Inter. */
|
|
965
|
+
--font-display: 'Bricolage Grotesque', 'Avenir Next', system-ui, sans-serif;
|
|
966
|
+
|
|
967
|
+
background: var(--color-surface);
|
|
968
|
+
color: var(--color-fg);
|
|
969
|
+
font-family: var(--font-inter, 'Inter'), system-ui, -apple-system, sans-serif;
|
|
970
|
+
-webkit-font-smoothing: antialiased;
|
|
971
|
+
-moz-osx-font-smoothing: grayscale;
|
|
972
|
+
text-rendering: optimizeLegibility;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
/* The hero's light wash — dark mode only, FULL WIDTH of the hero (inset 0,
|
|
976
|
+
never a negative-offset box): one warm pool falling from the top of the
|
|
977
|
+
wall, fading out before the ticker rule. */
|
|
978
|
+
[data-dialect='named'][data-template='gallery'] .gal-wash {
|
|
979
|
+
position: relative;
|
|
980
|
+
}
|
|
981
|
+
.dark [data-dialect='named'][data-template='gallery'] .gal-wash::before,
|
|
982
|
+
[data-dialect='named'][data-template='gallery'].dark .gal-wash::before {
|
|
983
|
+
content: '';
|
|
984
|
+
position: absolute;
|
|
985
|
+
inset: 0;
|
|
986
|
+
pointer-events: none;
|
|
987
|
+
background: radial-gradient(
|
|
988
|
+
120% 100% at 50% 0%,
|
|
989
|
+
oklch(0.93 0.01 80 / 0.08),
|
|
990
|
+
transparent 58%
|
|
991
|
+
);
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
/* ──────────────────────────────────────────────────────────────────
|
|
995
|
+
DARK MODE — the evening gallery, the design's namesake. Warm near-black
|
|
996
|
+
walls (NOT cool terminal black), bone type. The placard keeps its
|
|
997
|
+
bone card material — a lit object on a dark wall — and the vitrine keeps
|
|
998
|
+
its velvet interior, now a step deeper than the room. Ultramarine splits
|
|
999
|
+
by role: painted fields stay deep IKB, type lifts to read on the dark.
|
|
1000
|
+
Activated by the host's `.dark` class (DialectShell's <Site mode="dark">).
|
|
1001
|
+
────────────────────────────────────────────────────────────────── */
|
|
1002
|
+
.dark [data-dialect='named'][data-template='gallery'],
|
|
1003
|
+
[data-dialect='named'][data-template='gallery'].dark {
|
|
1004
|
+
/* ---- semantic layer — after hours ------------------------------------ */
|
|
1005
|
+
--color-surface: oklch(0.168 0.012 45);
|
|
1006
|
+
--color-surface-raised: oklch(0.205 0.014 45);
|
|
1007
|
+
--color-surface-sunken: oklch(0.13 0.01 45);
|
|
1008
|
+
|
|
1009
|
+
--color-fg: oklch(0.93 0.01 80);
|
|
1010
|
+
--color-fg-soft: oklch(0.82 0.01 80);
|
|
1011
|
+
--color-fg-muted: oklch(0.66 0.012 75);
|
|
1012
|
+
|
|
1013
|
+
--color-border: oklch(0.93 0.01 80 / 0.13);
|
|
1014
|
+
--color-border-strong: oklch(0.93 0.01 80 / 0.4);
|
|
1015
|
+
--color-ring: oklch(0.64 0.19 266 / 0.55);
|
|
1016
|
+
--color-hover: oklch(0.93 0.01 80 / 0.06);
|
|
1017
|
+
|
|
1018
|
+
/* ultramarine after dark: fields hold deep IKB, type lifts */
|
|
1019
|
+
--color-accent-field: oklch(0.43 0.27 264);
|
|
1020
|
+
--color-accent-strong: oklch(0.66 0.19 266);
|
|
1021
|
+
--color-accent: oklch(0.58 0.22 265);
|
|
1022
|
+
--color-accent-soft: oklch(0.26 0.08 264);
|
|
1023
|
+
--color-accent-fg: oklch(0.965 0.008 85);
|
|
1024
|
+
|
|
1025
|
+
/* the placard stays a bone card — now a lit object on the dark wall */
|
|
1026
|
+
--color-placard: oklch(0.936 0.012 82);
|
|
1027
|
+
--color-placard-fg: oklch(0.22 0.012 50);
|
|
1028
|
+
--color-placard-soft: oklch(0.37 0.012 52);
|
|
1029
|
+
--color-placard-muted: oklch(0.46 0.014 55);
|
|
1030
|
+
--color-placard-border: oklch(0.22 0.012 50 / 0.14);
|
|
1031
|
+
|
|
1032
|
+
/* vitrine: a step deeper than the walls */
|
|
1033
|
+
--color-vitrine: oklch(0.115 0.01 45);
|
|
1034
|
+
--color-vitrine-fg: oklch(0.92 0.008 80);
|
|
1035
|
+
--color-vitrine-border: oklch(0.93 0.01 80 / 0.22);
|
|
1036
|
+
|
|
1037
|
+
/* primary action: ultramarine lifted half a step for the dark room */
|
|
1038
|
+
--color-btn-primary-from: oklch(0.48 0.26 264);
|
|
1039
|
+
--color-btn-primary-to: oklch(0.48 0.26 264);
|
|
1040
|
+
--color-btn-primary-fg: oklch(0.965 0.008 85);
|
|
1041
|
+
|
|
1042
|
+
--color-destructive: oklch(0.62 0.18 28);
|
|
1043
|
+
--color-destructive-fg: oklch(0.168 0.012 45);
|
|
1044
|
+
|
|
1045
|
+
/* ---- neo shared names, re-pointed ----------------------------------- */
|
|
1046
|
+
--background: oklch(0.168 0.012 45);
|
|
1047
|
+
--foreground: oklch(0.93 0.01 80);
|
|
1048
|
+
--card: oklch(0.205 0.014 45);
|
|
1049
|
+
--card-foreground: oklch(0.93 0.01 80);
|
|
1050
|
+
--popover: oklch(0.205 0.014 45);
|
|
1051
|
+
--popover-foreground: oklch(0.93 0.01 80);
|
|
1052
|
+
--muted: oklch(0.13 0.01 45);
|
|
1053
|
+
--muted-foreground: oklch(0.66 0.012 75);
|
|
1054
|
+
--primary: oklch(0.48 0.26 264);
|
|
1055
|
+
--primary-foreground: oklch(0.965 0.008 85);
|
|
1056
|
+
--secondary: oklch(0.205 0.014 45);
|
|
1057
|
+
--secondary-foreground: oklch(0.93 0.01 80);
|
|
1058
|
+
--accent: oklch(0.58 0.22 265);
|
|
1059
|
+
--accent-foreground: oklch(0.965 0.008 85);
|
|
1060
|
+
--border: oklch(0.93 0.01 80 / 0.13);
|
|
1061
|
+
--input: oklch(0.93 0.01 80 / 0.13);
|
|
1062
|
+
--ring: oklch(0.64 0.19 266 / 0.55);
|
|
1063
|
+
--destructive: oklch(0.62 0.18 28);
|
|
1064
|
+
--destructive-foreground: oklch(0.168 0.012 45);
|
|
1065
|
+
|
|
1066
|
+
/* shadows deepen after dark — spotlit objects throw real penumbrae */
|
|
1067
|
+
--shadow-sm: 0 1px 3px oklch(0.08 0.008 45 / 0.3),
|
|
1068
|
+
0 1px 2px -1px oklch(0.08 0.008 45 / 0.3);
|
|
1069
|
+
--shadow-md: 0 8px 20px -8px oklch(0.08 0.008 45 / 0.5),
|
|
1070
|
+
0 2px 6px -2px oklch(0.08 0.008 45 / 0.35);
|
|
1071
|
+
--shadow-lg: 0 22px 48px -18px oklch(0.08 0.008 45 / 0.6),
|
|
1072
|
+
0 6px 14px -8px oklch(0.08 0.008 45 / 0.4);
|
|
1073
|
+
--shadow-xl: 0 32px 64px -22px oklch(0.08 0.008 45 / 0.65);
|
|
1074
|
+
--shadow-2xl: 0 40px 80px -26px oklch(0.08 0.008 45 / 0.7);
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
/* Display headings: the shared h1/h2 rule supplies var(--font-display) →
|
|
1078
|
+
Bricolage Grotesque here. Exhibition titles set tight and confident —
|
|
1079
|
+
medium weight (the variable cut around 560 has the flare without the
|
|
1080
|
+
shout), near-solid leading, a breath of negative tracking. Title case,
|
|
1081
|
+
never uppercase — placards do the small-caps work. */
|
|
1082
|
+
[data-dialect='named'][data-template='gallery'] h1,
|
|
1083
|
+
[data-dialect='named'][data-template='gallery'] h2 {
|
|
1084
|
+
font-weight: 560;
|
|
1085
|
+
letter-spacing: -0.02em;
|
|
1086
|
+
line-height: 0.98;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
/* The display voice, on demand (prices, the wordmark, catalogue numbers). */
|
|
1090
|
+
[data-dialect='named'][data-template='gallery'] .gal-display {
|
|
1091
|
+
font-family: var(--font-display);
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
/* Museum placard label — small-caps register built from uppercase + wide
|
|
1095
|
+
tracking (Inter carries no true smcp; synthesis reads cheap). */
|
|
1096
|
+
[data-dialect='named'][data-template='gallery'] .gal-label {
|
|
1097
|
+
font-size: 0.6875rem;
|
|
1098
|
+
font-weight: 500;
|
|
1099
|
+
letter-spacing: 0.18em;
|
|
1100
|
+
text-transform: uppercase;
|
|
1101
|
+
line-height: 1.5;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
/* Catalogue number — "No. 3" in the display face, lining figures. */
|
|
1105
|
+
[data-dialect='named'][data-template='gallery'] .gal-no {
|
|
1106
|
+
font-family: var(--font-display);
|
|
1107
|
+
font-weight: 500;
|
|
1108
|
+
letter-spacing: 0.02em;
|
|
1109
|
+
font-variant-numeric: lining-nums tabular-nums;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
/* The spotlight pool — the dark gallery's lighting model. By day the room
|
|
1113
|
+
is evenly lit, so the class renders nothing; after dark a soft bone wash
|
|
1114
|
+
falls from above each work. A lighting effect on the wall, not a panel
|
|
1115
|
+
treatment (no blur, no glass). */
|
package/dist/view/index.d.ts
CHANGED
|
@@ -106,7 +106,7 @@ type NamedAgentLandingContent = {
|
|
|
106
106
|
cta: NamedAgentCta;
|
|
107
107
|
};
|
|
108
108
|
|
|
109
|
-
type NamedAgentTemplate = 'studio' | 'executive';
|
|
109
|
+
type NamedAgentTemplate = 'studio' | 'executive' | 'gallery';
|
|
110
110
|
type NamedAgentViewProps = DialectViewProps<NamedAgentLandingContent> & {
|
|
111
111
|
/** Design language for the page. Defaults to the named-agents baseline. */
|
|
112
112
|
template?: NamedAgentTemplate;
|