@starci/grammar 0.4.3 → 0.4.4

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 (103) hide show
  1. package/dist/common/registry.d.ts +2 -2
  2. package/dist/common/styles.css +542 -9
  3. package/dist/core/branch/MarkdownArticle/classNames.d.ts +9 -4
  4. package/dist/core/branch/MarkdownArticle/classNames.d.ts.map +1 -1
  5. package/dist/core/branch/MarkdownArticle/classNames.js +9 -4
  6. package/dist/core/branch/MarkdownArticle/classNames.js.map +1 -1
  7. package/dist/core/branch/Rail/classNames.d.ts +8 -4
  8. package/dist/core/branch/Rail/classNames.d.ts.map +1 -1
  9. package/dist/core/branch/Rail/classNames.js +8 -4
  10. package/dist/core/branch/Rail/classNames.js.map +1 -1
  11. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  12. package/dist/core/branch/Rail/index.js +1 -2
  13. package/dist/core/branch/Rail/index.js.map +1 -1
  14. package/dist/core/branch/Subnav/classNames.d.ts +14 -7
  15. package/dist/core/branch/Subnav/classNames.d.ts.map +1 -1
  16. package/dist/core/branch/Subnav/classNames.js +14 -7
  17. package/dist/core/branch/Subnav/classNames.js.map +1 -1
  18. package/dist/core/branch/Subnav/index.d.ts.map +1 -1
  19. package/dist/core/branch/Subnav/index.js +2 -2
  20. package/dist/core/branch/Subnav/index.js.map +1 -1
  21. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts +16 -8
  22. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts.map +1 -1
  23. package/dist/core/branch/SurfaceAccordionCard/classNames.js +17 -9
  24. package/dist/core/branch/SurfaceAccordionCard/classNames.js.map +1 -1
  25. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
  26. package/dist/core/branch/SurfaceAccordionCard/index.js +1 -1
  27. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
  28. package/dist/core/branch/SurfaceCard/classNames.d.ts +16 -7
  29. package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -1
  30. package/dist/core/branch/SurfaceCard/classNames.js +17 -8
  31. package/dist/core/branch/SurfaceCard/classNames.js.map +1 -1
  32. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  33. package/dist/core/branch/SurfaceCard/index.js +6 -2
  34. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  35. package/dist/core/branch/SurfaceListCard/classNames.d.ts +14 -7
  36. package/dist/core/branch/SurfaceListCard/classNames.d.ts.map +1 -1
  37. package/dist/core/branch/SurfaceListCard/classNames.js +14 -7
  38. package/dist/core/branch/SurfaceListCard/classNames.js.map +1 -1
  39. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  40. package/dist/core/branch/SurfaceListCard/index.js +2 -2
  41. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  42. package/dist/core/classNames.d.ts +3 -5
  43. package/dist/core/classNames.d.ts.map +1 -1
  44. package/dist/core/classNames.js +3 -5
  45. package/dist/core/classNames.js.map +1 -1
  46. package/dist/core/composite/EmptyNotice/index.js +1 -1
  47. package/dist/core/composite/EmptyNotice/index.js.map +1 -1
  48. package/dist/core/composition/ChatWorkspace/classNames.d.ts +16 -9
  49. package/dist/core/composition/ChatWorkspace/classNames.d.ts.map +1 -1
  50. package/dist/core/composition/ChatWorkspace/classNames.js +21 -14
  51. package/dist/core/composition/ChatWorkspace/classNames.js.map +1 -1
  52. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts +13 -8
  53. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts.map +1 -1
  54. package/dist/core/composition/NavigationFeatureNav/classNames.js +13 -8
  55. package/dist/core/composition/NavigationFeatureNav/classNames.js.map +1 -1
  56. package/dist/core/composition/NavigationFeatureNav/index.d.ts +16 -2
  57. package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -1
  58. package/dist/core/composition/NavigationFeatureNav/index.js +2 -2
  59. package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -1
  60. package/dist/core/composition/PrimaryRailLayout/index.d.ts +7 -1
  61. package/dist/core/composition/PrimaryRailLayout/index.d.ts.map +1 -1
  62. package/dist/core/composition/PrimaryRailLayout/index.js +1 -1
  63. package/dist/core/composition/PrimaryRailLayout/index.js.map +1 -1
  64. package/dist/core/index.d.ts +2 -2
  65. package/dist/core/primitive/Button/index.d.ts +10 -0
  66. package/dist/core/primitive/Button/index.d.ts.map +1 -1
  67. package/dist/core/primitive/Button/index.js +3 -3
  68. package/dist/core/primitive/Button/index.js.map +1 -1
  69. package/dist/core/primitive/Divider/index.js +1 -1
  70. package/dist/core/primitive/Divider/index.js.map +1 -1
  71. package/dist/core/primitive/Icon/index.d.ts.map +1 -1
  72. package/dist/core/primitive/Icon/index.js +8 -7
  73. package/dist/core/primitive/Icon/index.js.map +1 -1
  74. package/dist/core/primitive/IconButton/index.d.ts.map +1 -1
  75. package/dist/core/primitive/IconButton/index.js +7 -5
  76. package/dist/core/primitive/IconButton/index.js.map +1 -1
  77. package/dist/core/primitive/IconTile/index.d.ts.map +1 -1
  78. package/dist/core/primitive/IconTile/index.js +7 -12
  79. package/dist/core/primitive/IconTile/index.js.map +1 -1
  80. package/dist/core/primitive/Input/index.d.ts.map +1 -1
  81. package/dist/core/primitive/Input/index.js +4 -4
  82. package/dist/core/primitive/Input/index.js.map +1 -1
  83. package/dist/core/primitive/Label/classNames.d.ts +10 -6
  84. package/dist/core/primitive/Label/classNames.d.ts.map +1 -1
  85. package/dist/core/primitive/Label/classNames.js +10 -6
  86. package/dist/core/primitive/Label/classNames.js.map +1 -1
  87. package/dist/core/primitive/Label/index.js +1 -1
  88. package/dist/core/primitive/Label/index.js.map +1 -1
  89. package/dist/core/primitive/Progress/index.d.ts.map +1 -1
  90. package/dist/core/primitive/Progress/index.js +6 -2
  91. package/dist/core/primitive/Progress/index.js.map +1 -1
  92. package/dist/core/primitive/Text/index.d.ts +8 -1
  93. package/dist/core/primitive/Text/index.d.ts.map +1 -1
  94. package/dist/core/primitive/Text/index.js +16 -20
  95. package/dist/core/primitive/Text/index.js.map +1 -1
  96. package/dist/core/primitive/TextAction/index.d.ts.map +1 -1
  97. package/dist/core/primitive/TextAction/index.js +24 -23
  98. package/dist/core/primitive/TextAction/index.js.map +1 -1
  99. package/dist/core/primitive/actionStyles.d.ts +10 -2
  100. package/dist/core/primitive/actionStyles.d.ts.map +1 -1
  101. package/dist/core/primitive/actionStyles.js +10 -18
  102. package/dist/core/primitive/actionStyles.js.map +1 -1
  103. package/package.json +2 -2
@@ -31,7 +31,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
31
31
  readonly OtpInput: (props: import("./renderers.js").OtpInputProps) => import("react").JSX.Element;
32
32
  readonly PageContainer: ({ className, measure, ...props }: import("./renderers.js").PageContainerProps) => import("react").JSX.Element;
33
33
  readonly PressableField: ({ label, placeholder, source, shortcut, isDisabled, onPress }: import("./renderers.js").PressableFieldProps) => import("react").JSX.Element;
34
- readonly PrimaryRailLayout: ({ primary, rail, railWidth, align, className, }: import("./renderers.js").PrimaryRailLayoutProps) => import("react").JSX.Element;
34
+ readonly PrimaryRailLayout: ({ primary, rail, railWidth, align, collapsedOrder, className, }: import("./renderers.js").PrimaryRailLayoutProps) => import("react").JSX.Element;
35
35
  readonly Progress: ({ label, value, isSkeleton }: import("./renderers.js").ProgressProps) => import("react").JSX.Element;
36
36
  readonly Rail: (props: import("./renderers.js").RailProps) => import("react").JSX.Element;
37
37
  readonly RankArtwork: ({ className, kind, label, ...props }: import("./renderers.js").RankArtworkProps) => import("react").JSX.Element;
@@ -45,7 +45,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
45
45
  readonly SurfaceCopyGroup: ({ className, density, ...props }: import("./renderers.js").SurfaceCopyGroupProps) => import("react").JSX.Element;
46
46
  readonly SurfaceListCard: (props: import("./renderers.js").SurfaceListCardProps) => import("react").JSX.Element;
47
47
  readonly Tabs: (props: import("./renderers.js").TabsProps) => import("react").JSX.Element;
48
- readonly Text: ({ as: Element, id, children, startContent, size, tone, weight, live, isSkeleton, isSuperseded, parentEmphasis, }: import("./renderers.js").TextProps) => import("react").JSX.Element;
48
+ readonly Text: ({ as: Element, id, children, startContent, size, tone, weight, live, overflow, isSkeleton, isSuperseded, parentEmphasis, }: import("./renderers.js").TextProps) => import("react").JSX.Element;
49
49
  readonly TextAction: (props: import("./renderers.js").TextActionProps) => import("react").JSX.Element;
50
50
  readonly Tooltip: ({ content, children, placement, }: import("./renderers.js").TooltipProps) => import("react").JSX.Element;
51
51
  readonly VerticalScrollRegion: (props: import("./renderers.js").VerticalScrollRegionProps) => import("react").JSX.Element;
@@ -390,6 +390,14 @@
390
390
  .starci-core-label {
391
391
  min-width: 0;
392
392
  margin: 0;
393
+ font-size: 0.875rem;
394
+ font-weight: 600;
395
+ line-height: 1.25rem;
396
+ }
397
+
398
+ .starci-core-label[data-grammar-label-depth="nested"] {
399
+ font-size: 0.75rem;
400
+ line-height: 1rem;
393
401
  }
394
402
 
395
403
  .starci-core-tooltip {
@@ -600,6 +608,7 @@
600
608
  .starci-core-leading-number {
601
609
  display: inline-block;
602
610
  flex: none;
611
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
603
612
  min-width: 1.25rem;
604
613
  color: var(--muted, GrayText);
605
614
  font-size: 0.875rem;
@@ -622,11 +631,19 @@
622
631
  }
623
632
 
624
633
  .starci-core-owned-collection {
634
+ width: 100%;
625
635
  min-width: 0;
626
636
  }
627
637
 
638
+ /* A verdict list is flush inside its shell; the shell already owns the corner. */
639
+ .starci-core-owned-collection[data-grammar-collection="verdict"] {
640
+ border-radius: 0 !important;
641
+ }
642
+
628
643
  .starci-core-surface-footer {
644
+ display: flex;
629
645
  min-width: 0;
646
+ align-items: center;
630
647
  }
631
648
 
632
649
  .starci-core-tabs-frame,
@@ -721,31 +738,50 @@
721
738
  }
722
739
 
723
740
  .starci-core-accordion-row {
741
+ width: 100% !important;
742
+ min-width: 0;
743
+ }
744
+
745
+ /* HeroUI's `Accordion` root sizes itself; the Grammar shell owns the measure. */
746
+ .starci-core-accordion-root {
747
+ width: 100% !important;
748
+ min-width: 0;
749
+ }
750
+
751
+ .starci-core-accordion-scroll-region {
724
752
  width: 100%;
725
753
  min-width: 0;
726
754
  }
727
755
 
756
+ /* Expanded content starts flush beneath its trigger, keeping the bottom and inline insets. */
757
+ .starci-core-accordion-body {
758
+ width: 100% !important;
759
+ min-width: 0;
760
+ padding: 0 1rem 0.75rem 1.5rem !important;
761
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
762
+ }
763
+
728
764
  .starci-core-accordion-row + .starci-core-accordion-row {
729
765
  border-top: 1px solid var(--separator, var(--border, GrayText));
730
766
  }
731
767
 
732
768
  .starci-core-accordion-heading {
733
- margin: 0;
769
+ margin: 0 !important;
734
770
  }
735
771
 
736
772
  .starci-core-accordion-trigger {
737
773
  display: block;
738
- width: 100%;
774
+ width: 100% !important;
739
775
  min-width: 0;
740
776
  min-height: 44px;
741
- padding: var(--starci-core-row-inset, 1rem);
777
+ padding: var(--starci-core-row-inset, 1rem) !important;
742
778
  border: 0;
743
779
  background: transparent;
744
780
  box-shadow: none;
745
781
  color: inherit;
746
782
  cursor: pointer;
747
783
  font: inherit;
748
- text-align: left;
784
+ text-align: left !important;
749
785
  transform: none;
750
786
  transition: none;
751
787
  }
@@ -776,10 +812,11 @@
776
812
  }
777
813
  }
778
814
 
815
+ /* The animated vendor region owns no inset, so a closed panel collapses to zero height. */
779
816
  .starci-core-accordion-panel {
780
- width: 100%;
817
+ width: 100% !important;
781
818
  min-width: 0;
782
- padding: 0 var(--starci-core-row-inset, 1rem) var(--starci-core-row-inset, 1rem);
819
+ padding: 0 !important;
783
820
  }
784
821
 
785
822
  .starci-core-markdown-article {
@@ -875,6 +912,7 @@
875
912
  width: 100%;
876
913
  min-width: 0;
877
914
  margin: 0 0 1rem;
915
+ overflow: auto;
878
916
  }
879
917
 
880
918
  .starci-core-fenced-code-header {
@@ -1019,11 +1057,19 @@
1019
1057
  }
1020
1058
 
1021
1059
  .starci-core-rail-body {
1060
+ min-width: 0;
1022
1061
  min-height: 0;
1062
+ flex: 1 1 0%;
1023
1063
  overflow-y: auto;
1024
1064
  overscroll-behavior: contain;
1025
1065
  }
1026
1066
 
1067
+ /* Grammar-owned content inset, selected by the attribute the branch already emits. */
1068
+ .starci-core-rail-body[data-grammar-rail-inset="content"] {
1069
+ padding-inline: 0.75rem;
1070
+ padding-block: 1.5rem;
1071
+ }
1072
+
1027
1073
  .starci-core-rail[data-grammar-rail-height="fill"],
1028
1074
  .starci-core-rail[data-grammar-rail-height="fill"] .starci-core-rail-frame,
1029
1075
  .starci-core-rail[data-grammar-rail-height="fill"] .starci-core-rail-body {
@@ -1041,6 +1087,8 @@
1041
1087
  }
1042
1088
 
1043
1089
  .starci-core-rail-footer {
1090
+ display: flex;
1091
+ align-items: center;
1044
1092
  flex: none;
1045
1093
  }
1046
1094
 
@@ -1070,6 +1118,11 @@
1070
1118
  .starci-core-primary-rail-layout {
1071
1119
  grid-template-columns: minmax(0, 1fr);
1072
1120
  }
1121
+
1122
+ /* Collapsed, the rail may lead - a filter or summary a reader needs before the content. */
1123
+ .starci-core-primary-rail-layout[data-grammar-layout-collapsed-order="rail-first"] .starci-core-rail-region {
1124
+ order: -1;
1125
+ }
1073
1126
  }
1074
1127
 
1075
1128
  @container starci-core-primary-rail (max-width: 32rem) {
@@ -1135,6 +1188,14 @@
1135
1188
  display: none !important;
1136
1189
  }
1137
1190
 
1191
+ /*
1192
+ * A bar with no primary destinations renders no `nav` at all, so the grid loses a track rather
1193
+ * than keeping an empty one: identity leads, the remaining row belongs to what is still there.
1194
+ */
1195
+ .starci-core-navigation-feature-nav[data-grammar-navigation-feature-nav-destinations="absent"] .starci-core-navigation-feature-nav-primary {
1196
+ grid-template-columns: minmax(0, 1fr) auto !important;
1197
+ }
1198
+
1138
1199
  .starci-core-navigation-feature-nav-compact-navigation {
1139
1200
  display: block !important;
1140
1201
  }
@@ -1232,20 +1293,35 @@
1232
1293
  white-space: nowrap;
1233
1294
  }
1234
1295
 
1296
+ /*
1297
+ * The toggle is a HeroUI `Button`, whose own fill, corner and shadow live in the vendor's
1298
+ * `components` layer - declared after `starci-grammar-common`, so it wins every normal
1299
+ * declaration here regardless of specificity. These four are the ones the utilities used to
1300
+ * carry, so they are the ones that have to be important.
1301
+ */
1235
1302
  .starci-core-subnav-toggle {
1236
1303
  display: inline-flex;
1237
1304
  width: 2.75rem;
1238
1305
  height: 2.75rem;
1239
1306
  align-items: center;
1240
1307
  justify-content: center;
1241
- border-radius: 0;
1242
- background: transparent;
1243
- box-shadow: none;
1308
+ border-radius: 0 !important;
1309
+ background: transparent !important;
1310
+ box-shadow: none !important;
1244
1311
  color: inherit;
1245
1312
  cursor: pointer;
1246
1313
  }
1247
1314
 
1315
+ .starci-core-subnav-toggle:hover,
1316
+ .starci-core-subnav-toggle[data-hovered="true"] {
1317
+ background: transparent !important;
1318
+ }
1319
+
1248
1320
  @media (min-width: 48rem) {
1321
+ .starci-core-navigation-feature-nav[data-grammar-navigation-feature-nav-destinations="absent"] .starci-core-navigation-feature-nav-primary {
1322
+ grid-template-columns: auto minmax(0, 1fr) !important;
1323
+ }
1324
+
1249
1325
  .starci-core-navigation-feature-nav-primary {
1250
1326
  grid-template-columns: auto minmax(0, 1fr) auto !important;
1251
1327
  }
@@ -1815,5 +1891,462 @@
1815
1891
  scroll-behavior: auto;
1816
1892
  }
1817
1893
  }
1894
+
1895
+ /*
1896
+ * ============================================================================================
1897
+ * SHIPPED OBJECT GEOMETRY (0.4.4)
1898
+ * ============================================================================================
1899
+ *
1900
+ * Everything below used to be a Tailwind utility string inside a Grammar component or its
1901
+ * `classNames.ts`. A class only exists if the CONSUMER's Tailwind build scanned the file that
1902
+ * spells it, and almost nobody scans `node_modules/@starci/grammar` - so those objects arrived
1903
+ * in a consuming app with no box at all. The utilities are gone; the box lives here, selected
1904
+ * by the data attributes each component already emits.
1905
+ *
1906
+ * `!important` appears ONLY where the class lands on a HeroUI part - `Card`, `Accordion`,
1907
+ * `Button`, `TextField`, `Input`, `Skeleton`, `ProgressBar`, `ScrollShadow` - whose own rules
1908
+ * live in the vendor's `components` layer. That layer is declared AFTER `starci-grammar-common`
1909
+ * and therefore wins every normal declaration regardless of specificity; an important
1910
+ * declaration in the earlier layer is the only thing that reproduces what the utilities did.
1911
+ * Corners come from the theme radius ramp (`--radius-*`), never from a HeroUI v2 radius name
1912
+ * such as `rounded-large`, which emits nothing anywhere.
1913
+ */
1914
+
1915
+ /* --- Surface card: the card, its label row and its content shell are HeroUI `Card` parts. --- */
1916
+ .starci-core-surface-card {
1917
+ display: flex !important;
1918
+ width: 100% !important;
1919
+ min-width: 0;
1920
+ flex-direction: column !important;
1921
+ gap: var(--starci-core-section-gap, 0.75rem) !important;
1922
+ }
1923
+
1924
+ .starci-core-surface-label {
1925
+ padding: 0 !important;
1926
+ }
1927
+
1928
+ .starci-core-surface {
1929
+ padding: 0 !important;
1930
+ }
1931
+
1932
+ .starci-core-surface-highlight {
1933
+ position: relative;
1934
+ height: 100%;
1935
+ }
1936
+
1937
+ /* --- Surface list --- */
1938
+ .starci-core-surface-fact {
1939
+ color: var(--muted, var(--starci-core-muted, GrayText));
1940
+ font-size: 0.875rem;
1941
+ line-height: 1.25rem;
1942
+ }
1943
+
1944
+ .starci-core-surface-fact[data-grammar-surface-depth="nested"] {
1945
+ font-size: 0.75rem;
1946
+ line-height: 1rem;
1947
+ }
1948
+
1949
+ /* --- Empty notice --- */
1950
+ .starci-core-empty-notice {
1951
+ display: flex;
1952
+ min-width: 0;
1953
+ flex-direction: column;
1954
+ align-items: center;
1955
+ gap: 0.75rem;
1956
+ padding: 1rem;
1957
+ text-align: center;
1958
+ }
1959
+
1960
+ /* --- Divider --- */
1961
+ .starci-core-divider {
1962
+ display: flex;
1963
+ min-width: 0;
1964
+ flex-direction: row;
1965
+ align-items: center;
1966
+ gap: 0.75rem;
1967
+ }
1968
+
1969
+ .starci-core-divider-rule {
1970
+ height: 1px;
1971
+ flex: 1 1 0%;
1972
+ background: var(--border, var(--separator, var(--starci-core-separator, GrayText)));
1973
+ }
1974
+
1975
+ /* --- Icon: an app-owned SVG has no intrinsic box, so usage sizing must ship. --- */
1976
+ .starci-core-icon {
1977
+ flex: none;
1978
+ }
1979
+
1980
+ .starci-core-icon[data-usage="heading"] {
1981
+ width: 1.5rem;
1982
+ height: 1.5rem;
1983
+ }
1984
+
1985
+ .starci-core-icon[data-usage="leading"] {
1986
+ width: 1.25rem;
1987
+ height: 1.25rem;
1988
+ }
1989
+
1990
+ .starci-core-icon[data-usage="chip"] {
1991
+ width: 1rem;
1992
+ height: 1rem;
1993
+ }
1994
+
1995
+ .starci-core-icon-skeleton {
1996
+ display: inline-block;
1997
+ width: 1.25rem !important;
1998
+ height: 1.25rem !important;
1999
+ flex: none;
2000
+ border-radius: var(--starci-core-pill-radius, 999px) !important;
2001
+ }
2002
+
2003
+ /* --- Icon button: a HeroUI `Button` worn as a circle. --- */
2004
+ .starci-core-icon-button {
2005
+ border-radius: var(--starci-core-pill-radius, 999px) !important;
2006
+ }
2007
+
2008
+ /* --- Icon tile --- */
2009
+ .starci-core-icon-tile {
2010
+ display: inline-flex;
2011
+ flex: none;
2012
+ align-items: center;
2013
+ justify-content: center;
2014
+ overflow: hidden;
2015
+ }
2016
+
2017
+ .starci-core-icon-tile[data-size="sm"] {
2018
+ width: 2rem;
2019
+ height: 2rem;
2020
+ border-radius: var(--radius-lg, var(--radius, 0.5rem));
2021
+ }
2022
+
2023
+ .starci-core-icon-tile[data-size="md"] {
2024
+ width: 2.5rem;
2025
+ height: 2.5rem;
2026
+ border-radius: var(--radius-xl, calc(var(--radius, 0.5rem) * 1.5));
2027
+ }
2028
+
2029
+ /* A tone pair is painted only when the plate draws its own glyph. */
2030
+ .starci-core-icon-tile[data-tone="neutral"][data-artwork="false"][data-loading="false"] {
2031
+ background: var(--default, var(--starci-core-surface-secondary, Canvas));
2032
+ color: var(--muted, var(--starci-core-muted, GrayText));
2033
+ }
2034
+
2035
+ .starci-core-icon-tile[data-tone="accent"][data-artwork="false"][data-loading="false"] {
2036
+ background: var(--accent-soft, var(--starci-core-accent, Highlight));
2037
+ color: var(--accent-soft-foreground, var(--starci-core-accent, HighlightText));
2038
+ }
2039
+
2040
+ .starci-core-icon-tile[data-tone="success"][data-artwork="false"][data-loading="false"] {
2041
+ background: var(--success-soft, var(--success, Canvas));
2042
+ color: var(--success-soft-foreground, var(--success-foreground, CanvasText));
2043
+ }
2044
+
2045
+ .starci-core-icon-tile[data-tone="warning"][data-artwork="false"][data-loading="false"] {
2046
+ background: var(--warning-soft, var(--warning, Canvas));
2047
+ color: var(--warning-soft-foreground, var(--warning-foreground, CanvasText));
2048
+ }
2049
+
2050
+ .starci-core-icon-tile[data-tone="danger"][data-artwork="false"][data-loading="false"] {
2051
+ background: var(--danger-soft, var(--danger, Canvas));
2052
+ color: var(--danger-soft-foreground, var(--danger-foreground, CanvasText));
2053
+ }
2054
+
2055
+ /* --- Progress: a HeroUI `ProgressBar`, and a resting bar of the same measure. --- */
2056
+ .starci-core-progress {
2057
+ width: 100% !important;
2058
+ }
2059
+
2060
+ .starci-core-progress[data-loading="true"] {
2061
+ display: block;
2062
+ height: 0.5rem !important;
2063
+ }
2064
+
2065
+ /*
2066
+ * --- Input ---
2067
+ *
2068
+ * The reveal toggle sits on top of the control, so the field RESERVES room for it rather than
2069
+ * letting the value slide underneath. That inset used to be spelled `pr-9`, a utility no app in
2070
+ * this repository writes, so it was generated nowhere and the toggle overlapped the text at
2071
+ * every width.
2072
+ */
2073
+ .starci-core-input {
2074
+ display: grid !important;
2075
+ min-width: 0;
2076
+ gap: 0.5rem !important;
2077
+ }
2078
+
2079
+ .starci-core-input-control {
2080
+ position: relative;
2081
+ display: flex;
2082
+ min-width: 0;
2083
+ align-items: center;
2084
+ }
2085
+
2086
+ .starci-core-input-control[data-reveal="true"] .starci-core-input-field {
2087
+ padding-inline-end: 2.75rem !important;
2088
+ }
2089
+
2090
+ .starci-core-input-reveal {
2091
+ position: absolute;
2092
+ inset-inline-end: 0.5rem;
2093
+ top: 50%;
2094
+ display: inline-flex;
2095
+ align-items: center;
2096
+ justify-content: center;
2097
+ transform: translateY(-50%);
2098
+ border: 0;
2099
+ background: transparent;
2100
+ color: var(--muted, var(--starci-core-muted, GrayText));
2101
+ cursor: pointer;
2102
+ }
2103
+
2104
+ .starci-core-input-reveal:disabled {
2105
+ cursor: default;
2106
+ }
2107
+
2108
+ .starci-core-input-reveal :where(svg),
2109
+ .starci-core-input-reveal-icon {
2110
+ width: 1rem;
2111
+ height: 1rem;
2112
+ }
2113
+
2114
+ .starci-core-input-reveal-label {
2115
+ font-size: 0.75rem;
2116
+ }
2117
+
2118
+ .starci-core-input-resting-label {
2119
+ width: 33.333333% !important;
2120
+ height: 1rem !important;
2121
+ border-radius: var(--radius-md, calc(var(--radius, 0.5rem) * 0.75)) !important;
2122
+ }
2123
+
2124
+ .starci-core-input-resting-control {
2125
+ width: 100% !important;
2126
+ height: 2.5rem !important;
2127
+ border-radius: var(--field-radius, calc(var(--radius, 0.5rem) * 1.5)) !important;
2128
+ }
2129
+
2130
+ /* --- Text: one resolved line of copy, drawn from the attributes it already emits. --- */
2131
+ .starci-core-text {
2132
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2133
+ font-size: 1rem;
2134
+ font-weight: 400;
2135
+ line-height: 1.5rem;
2136
+ }
2137
+
2138
+ .starci-core-text[data-size="xs"] {
2139
+ font-size: 0.75rem;
2140
+ line-height: 1rem;
2141
+ }
2142
+
2143
+ .starci-core-text[data-size="sm"] {
2144
+ font-size: 0.875rem;
2145
+ line-height: 1.25rem;
2146
+ }
2147
+
2148
+ .starci-core-text[data-size="metric-lead"] {
2149
+ font-size: 1.875rem;
2150
+ line-height: 2.25rem;
2151
+ }
2152
+
2153
+ .starci-core-text[data-tone="muted"] {
2154
+ color: var(--muted, var(--starci-core-muted, GrayText));
2155
+ }
2156
+
2157
+ .starci-core-text[data-tone="accent"] {
2158
+ color: var(--accent-soft-foreground, var(--starci-core-accent, HighlightText));
2159
+ }
2160
+
2161
+ .starci-core-text[data-weight="medium"] { font-weight: 500; }
2162
+ .starci-core-text[data-weight="semibold"] { font-weight: 600; }
2163
+
2164
+ .starci-core-text[data-start-content="true"] {
2165
+ display: inline-flex;
2166
+ align-items: center;
2167
+ gap: 0.5rem;
2168
+ }
2169
+
2170
+ .starci-core-text[data-superseded="true"] {
2171
+ text-decoration-line: line-through;
2172
+ }
2173
+
2174
+ :where(.group)[data-selected="true"] .starci-core-text[data-parent-emphasis="accent-soft"] {
2175
+ color: var(--accent-soft-foreground, var(--starci-core-accent, HighlightText));
2176
+ }
2177
+
2178
+ /* Authored overflow behaviour: wrap is the resting answer, the other two are opted into. */
2179
+ .starci-core-text[data-overflow="wrap"] {
2180
+ overflow-wrap: anywhere;
2181
+ word-break: break-word;
2182
+ }
2183
+
2184
+ .starci-core-text[data-overflow="truncate"] {
2185
+ display: block;
2186
+ min-width: 0;
2187
+ overflow: hidden;
2188
+ text-overflow: ellipsis;
2189
+ white-space: nowrap;
2190
+ }
2191
+
2192
+ .starci-core-text[data-overflow="clamp-2"] {
2193
+ display: -webkit-box;
2194
+ overflow: hidden;
2195
+ -webkit-box-orient: vertical;
2196
+ -webkit-line-clamp: 2;
2197
+ line-clamp: 2;
2198
+ }
2199
+
2200
+ /* The resting line keeps its size geometry and hides its copy; no tone is visible to claim. */
2201
+ .starci-core-text[data-loading="true"] {
2202
+ display: inline-block;
2203
+ max-width: 100%;
2204
+ border-radius: var(--radius, 0.25rem);
2205
+ color: transparent;
2206
+ user-select: none;
2207
+ }
2208
+
2209
+ .starci-core-text[data-loading="true"][data-size="xs"] { width: 2.5rem; }
2210
+ .starci-core-text[data-loading="true"][data-size="sm"] { width: 3rem; }
2211
+ .starci-core-text[data-loading="true"][data-size="md"] { width: 10rem; }
2212
+ .starci-core-text[data-loading="true"][data-size="metric-lead"] { width: 10rem; }
2213
+
2214
+ /* --- Text action: one recipe, eight appearances, selected by data attributes. --- */
2215
+ .starci-core-text-action {
2216
+ display: inline-flex;
2217
+ width: fit-content;
2218
+ min-width: 0;
2219
+ flex: none;
2220
+ align-items: center;
2221
+ gap: 0.5rem;
2222
+ outline: none;
2223
+ text-underline-offset: 4px;
2224
+ }
2225
+
2226
+ .starci-core-text-action:disabled {
2227
+ opacity: 0.5;
2228
+ cursor: default;
2229
+ }
2230
+
2231
+ .starci-core-text-action[data-size="xs"] { font-size: 0.75rem; line-height: 1rem; }
2232
+ .starci-core-text-action[data-size="sm"] { font-size: 0.875rem; line-height: 1.25rem; }
2233
+ .starci-core-text-action[data-size="md"] { font-size: 1rem; line-height: 1.5rem; }
2234
+
2235
+ .starci-core-text-action[data-appearance="inline"] {
2236
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2237
+ font-weight: 500;
2238
+ }
2239
+
2240
+ .starci-core-text-action[data-appearance="muted"] {
2241
+ color: var(--muted, var(--starci-core-muted, GrayText));
2242
+ font-weight: 500;
2243
+ }
2244
+
2245
+ .starci-core-text-action[data-appearance="inline"]:hover,
2246
+ .starci-core-text-action[data-appearance="inline"]:focus-visible,
2247
+ .starci-core-text-action[data-appearance="muted"]:hover,
2248
+ .starci-core-text-action[data-appearance="muted"]:focus-visible,
2249
+ .starci-core-text-action[data-appearance="disclosure"]:hover,
2250
+ .starci-core-text-action[data-appearance="disclosure"]:focus-visible {
2251
+ text-decoration-line: underline;
2252
+ }
2253
+
2254
+ .starci-core-text-action[data-appearance="choice"] {
2255
+ border-radius: var(--starci-core-pill-radius, 999px);
2256
+ padding: 0.25rem 0.5rem;
2257
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2258
+ font-weight: 500;
2259
+ }
2260
+
2261
+ .starci-core-text-action[data-appearance="route"] {
2262
+ border-radius: var(--starci-core-pill-radius, 999px);
2263
+ padding: 0.5rem 0.75rem;
2264
+ color: var(--muted, var(--starci-core-muted, GrayText));
2265
+ }
2266
+
2267
+ .starci-core-text-action[data-appearance="section"] {
2268
+ border-radius: var(--radius-xl, calc(var(--radius, 0.5rem) * 1.5));
2269
+ padding: 0.5rem 0.75rem;
2270
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2271
+ }
2272
+
2273
+ .starci-core-text-action[data-appearance="section"]:hover,
2274
+ .starci-core-text-action[data-appearance="section"]:focus-visible {
2275
+ background: var(--default, var(--starci-core-surface-secondary, Canvas));
2276
+ }
2277
+
2278
+ .starci-core-text-action[data-appearance="tab"] {
2279
+ border-block-end: 2px solid transparent;
2280
+ padding-block: 0.75rem;
2281
+ color: var(--muted, var(--starci-core-muted, GrayText));
2282
+ }
2283
+
2284
+ .starci-core-text-action[data-appearance="tab"][data-current="true"] {
2285
+ border-block-end-color: var(--accent, var(--starci-core-accent, Highlight));
2286
+ color: var(--accent, var(--starci-core-accent, Highlight));
2287
+ font-weight: 600;
2288
+ }
2289
+
2290
+ .starci-core-text-action[data-appearance="choice"][data-current="true"],
2291
+ .starci-core-text-action[data-appearance="route"][data-current="true"],
2292
+ .starci-core-text-action[data-appearance="section"][data-current="true"] {
2293
+ background: var(--accent-soft, var(--starci-core-accent, Highlight));
2294
+ color: var(--accent-soft-foreground, var(--starci-core-accent, HighlightText));
2295
+ }
2296
+
2297
+ .starci-core-text-action[data-appearance="route"][data-current="true"],
2298
+ .starci-core-text-action[data-appearance="section"][data-current="true"] {
2299
+ font-weight: 600;
2300
+ }
2301
+
2302
+ .starci-core-text-action[data-appearance="disclosure"] {
2303
+ color: var(--accent-soft-foreground, var(--starci-core-accent, HighlightText));
2304
+ font-weight: 600;
2305
+ }
2306
+
2307
+ .starci-core-text-action[data-appearance="plain"] {
2308
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2309
+ text-decoration-line: none;
2310
+ }
2311
+
2312
+ .starci-core-text-action-resting {
2313
+ display: inline-flex;
2314
+ width: 4rem;
2315
+ flex: none;
2316
+ color: transparent;
2317
+ user-select: none;
2318
+ }
2319
+
2320
+ /*
2321
+ * --- Button: full width ---
2322
+ *
2323
+ * A full-width action stretches to its parent and lets its label wrap onto a second line rather
2324
+ * than overflow, so the vendor's fixed control height is released to the content.
2325
+ */
2326
+ .starci-core-button[data-width="fill"] {
2327
+ width: 100% !important;
2328
+ max-width: 100% !important;
2329
+ height: auto !important;
2330
+ min-height: var(--starci-core-control-min-size, 2.75rem);
2331
+ white-space: normal !important;
2332
+ }
2333
+
2334
+ /* --- Chat workspace: the compact rail trigger's resting paint. --- */
2335
+ .starci-core-chat-workspace-rail-trigger {
2336
+ box-shadow: 0 1px 2px 0 color-mix(in srgb, CanvasText 8%, transparent);
2337
+ outline: none;
2338
+ transition: background-color var(--starci-core-motion-duration, 180ms) var(--starci-core-motion-easing, cubic-bezier(0.2, 0, 0, 1));
2339
+ }
2340
+
2341
+ .starci-core-chat-workspace-rail-trigger:hover {
2342
+ background: var(--default, var(--starci-core-surface-secondary, Canvas));
2343
+ }
2344
+
2345
+ @media (prefers-reduced-motion: reduce) {
2346
+ .starci-core-chat-workspace-rail-trigger {
2347
+ transition: none;
2348
+ }
2349
+ }
2350
+
1818
2351
  }
1819
2352