@misoto22/folio 0.17.0 → 0.18.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.
Files changed (174) hide show
  1. package/dist/agent/Accordion.md +1 -1
  2. package/dist/agent/Actions.md +1 -1
  3. package/dist/agent/Alert.md +1 -1
  4. package/dist/agent/AppShell.md +1 -1
  5. package/dist/agent/ArchitectureFigure.md +1 -1
  6. package/dist/agent/AreaChart.md +1 -1
  7. package/dist/agent/Article.md +1 -1
  8. package/dist/agent/AspectRatio.md +1 -1
  9. package/dist/agent/Avatar.md +1 -1
  10. package/dist/agent/Badge.md +1 -1
  11. package/dist/agent/BarChart.md +1 -1
  12. package/dist/agent/BarList.md +1 -1
  13. package/dist/agent/BigNumber.md +1 -1
  14. package/dist/agent/BoxPlot.md +1 -1
  15. package/dist/agent/Breadcrumb.md +1 -1
  16. package/dist/agent/BulletChart.md +1 -1
  17. package/dist/agent/Button.md +1 -1
  18. package/dist/agent/Calendar.md +1 -1
  19. package/dist/agent/CalendarHeatmap.md +1 -1
  20. package/dist/agent/Card.md +1 -1
  21. package/dist/agent/Checkbox.md +1 -1
  22. package/dist/agent/Code.md +1 -1
  23. package/dist/agent/CodeBlock.md +1 -1
  24. package/dist/agent/Collapsible.md +1 -1
  25. package/dist/agent/Collection.md +1 -1
  26. package/dist/agent/ColorPicker.md +1 -1
  27. package/dist/agent/Combobox.md +1 -1
  28. package/dist/agent/Command.md +2 -1
  29. package/dist/agent/ComposedChart.md +1 -1
  30. package/dist/agent/Contact.md +1 -1
  31. package/dist/agent/Content.md +1 -1
  32. package/dist/agent/ContextMenu.md +1 -1
  33. package/dist/agent/Conversation.md +1 -1
  34. package/dist/agent/DataflowFigure.md +1 -1
  35. package/dist/agent/DatePicker.md +1 -1
  36. package/dist/agent/DescriptionList.md +1 -1
  37. package/dist/agent/Diagram.md +1 -1
  38. package/dist/agent/DiagramCanvas.md +1 -1
  39. package/dist/agent/DiagramExportMenu.md +1 -1
  40. package/dist/agent/DiagramInspector.md +1 -1
  41. package/dist/agent/DiagramLegend.md +1 -1
  42. package/dist/agent/DiagramMinimap.md +1 -1
  43. package/dist/agent/DiagramToolbar.md +1 -1
  44. package/dist/agent/Dialog.md +1 -1
  45. package/dist/agent/DropdownMenu.md +1 -1
  46. package/dist/agent/EmptyState.md +1 -1
  47. package/dist/agent/ErrorState.md +1 -1
  48. package/dist/agent/Evidence.md +1 -1
  49. package/dist/agent/Facet.md +1 -1
  50. package/dist/agent/Field.md +1 -1
  51. package/dist/agent/FigureBand.md +1 -1
  52. package/dist/agent/FloatingIconButton.md +1 -1
  53. package/dist/agent/FunnelChart.md +1 -1
  54. package/dist/agent/Heading.md +1 -1
  55. package/dist/agent/Heatmap.md +1 -1
  56. package/dist/agent/Histogram.md +1 -1
  57. package/dist/agent/Input.md +1 -1
  58. package/dist/agent/Kbd.md +1 -1
  59. package/dist/agent/LifecycleFigure.md +1 -1
  60. package/dist/agent/LineChart.md +1 -1
  61. package/dist/agent/LinkArrow.md +1 -1
  62. package/dist/agent/Markdown.md +1 -1
  63. package/dist/agent/Media.md +1 -1
  64. package/dist/agent/Metric.md +1 -1
  65. package/dist/agent/Metrics.md +1 -1
  66. package/dist/agent/Music.md +1 -1
  67. package/dist/agent/NativeSelect.md +1 -1
  68. package/dist/agent/NavItem.md +1 -1
  69. package/dist/agent/NumberField.md +1 -1
  70. package/dist/agent/PageHeader.md +1 -1
  71. package/dist/agent/Pagination.md +1 -1
  72. package/dist/agent/PieChart.md +1 -1
  73. package/dist/agent/Popover.md +1 -1
  74. package/dist/agent/Portfolio.md +1 -1
  75. package/dist/agent/PortfolioIndex.md +1 -1
  76. package/dist/agent/Progress.md +1 -1
  77. package/dist/agent/RadarChart.md +1 -1
  78. package/dist/agent/RadialChart.md +1 -1
  79. package/dist/agent/RadioGroup.md +1 -1
  80. package/dist/agent/Reading.md +10 -1
  81. package/dist/agent/Recovery.md +3 -3
  82. package/dist/agent/SankeyChart.md +1 -1
  83. package/dist/agent/ScatterChart.md +1 -1
  84. package/dist/agent/ScrollArea.md +1 -1
  85. package/dist/agent/SearchPalette.md +1 -1
  86. package/dist/agent/SearchableMenu.md +1 -1
  87. package/dist/agent/Select.md +1 -1
  88. package/dist/agent/Separator.md +1 -1
  89. package/dist/agent/SequenceFigure.md +1 -1
  90. package/dist/agent/Sheet.md +1 -1
  91. package/dist/agent/Sidebar.md +1 -1
  92. package/dist/agent/SiteNavigation.md +1 -1
  93. package/dist/agent/SiteShell.md +1 -1
  94. package/dist/agent/Skeleton.md +1 -1
  95. package/dist/agent/Slider.md +1 -1
  96. package/dist/agent/Sparkline.md +1 -1
  97. package/dist/agent/Spinner.md +1 -1
  98. package/dist/agent/StatusDot.md +1 -1
  99. package/dist/agent/StatusPill.md +1 -1
  100. package/dist/agent/Steps.md +1 -1
  101. package/dist/agent/Switch.md +1 -1
  102. package/dist/agent/Table.md +1 -1
  103. package/dist/agent/Tabs.md +1 -1
  104. package/dist/agent/Tag.md +1 -1
  105. package/dist/agent/Text.md +1 -1
  106. package/dist/agent/Textarea.md +1 -1
  107. package/dist/agent/Timeline.md +6 -2
  108. package/dist/agent/Timestamp.md +1 -1
  109. package/dist/agent/Toast.md +1 -1
  110. package/dist/agent/ToggleGroup.md +1 -1
  111. package/dist/agent/Toolbar.md +1 -1
  112. package/dist/agent/Tooltip.md +1 -1
  113. package/dist/agent/TreemapChart.md +1 -1
  114. package/dist/agent/WaterfallChart.md +1 -1
  115. package/dist/agent/Workbench.md +1 -1
  116. package/dist/agent/WorkflowFigure.md +1 -1
  117. package/dist/agent/catalog.json +10 -1
  118. package/dist/agent/index.md +2 -1
  119. package/dist/article.css +1 -1
  120. package/dist/components/Button/Button.js +1 -1
  121. package/dist/components/Button/Button.js.map +1 -1
  122. package/dist/components/Command/Command.d.ts +3 -1
  123. package/dist/components/Command/Command.js +3 -2
  124. package/dist/components/Command/Command.js.map +1 -1
  125. package/dist/components/FigureBand/FigureBand.js +1 -1
  126. package/dist/components/FigureBand/FigureBand.js.map +1 -1
  127. package/dist/components/Pagination/Pagination.js +2 -2
  128. package/dist/components/Pagination/Pagination.js.map +1 -1
  129. package/dist/components/Table/Table.js +1 -1
  130. package/dist/components/Table/Table.js.map +1 -1
  131. package/dist/components/Tag/Tag.js +1 -1
  132. package/dist/components/Tag/Tag.js.map +1 -1
  133. package/dist/components/Text/Text.js +2 -2
  134. package/dist/components/Text/Text.js.map +1 -1
  135. package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
  136. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  137. package/dist/keyframes.css +22 -0
  138. package/dist/semantic.css +6 -4
  139. package/dist/styles.css +1 -1
  140. package/dist/themes.css +22 -5
  141. package/dist/tokens.css +27 -0
  142. package/dist/tokens.d.ts +6 -0
  143. package/dist/tokens.js +35 -1
  144. package/dist/tokens.json +35 -1
  145. package/dist/website/Media/Media.js +2 -2
  146. package/dist/website/Media/Media.js.map +1 -1
  147. package/dist/website/Reading/Reading.d.ts +7 -1
  148. package/dist/website/Reading/Reading.js +4 -0
  149. package/dist/website/Reading/Reading.js.map +1 -1
  150. package/dist/website/Recovery/Recovery.d.ts +10 -2
  151. package/dist/website/Recovery/Recovery.js +36 -2
  152. package/dist/website/Recovery/Recovery.js.map +1 -1
  153. package/dist/website/SearchPalette/SearchPalette.js +2 -0
  154. package/dist/website/SearchPalette/SearchPalette.js.map +1 -1
  155. package/dist/website/Timeline/Timeline.d.ts +11 -2
  156. package/dist/website/Timeline/Timeline.js +7 -1
  157. package/dist/website/Timeline/Timeline.js.map +1 -1
  158. package/dist/website/Workbench/theme.d.ts +2 -1
  159. package/dist/website/Workbench/theme.js +2 -1
  160. package/dist/website/Workbench/theme.js.map +1 -1
  161. package/dist/website/index.d.ts +2 -2
  162. package/dist/website-collection.css +2 -2
  163. package/dist/website-contact.css +9 -3
  164. package/dist/website-conversation.css +5 -5
  165. package/dist/website-evidence.css +1 -1
  166. package/dist/website-media.css +11 -5
  167. package/dist/website-metrics.css +1 -1
  168. package/dist/website-music.css +1 -1
  169. package/dist/website-reading.css +18 -7
  170. package/dist/website-recovery.css +9 -1
  171. package/dist/website-search.css +28 -14
  172. package/dist/website-timeline.css +9 -3
  173. package/package.json +1 -1
  174. package/skills/folio-design/rules/tokens.md +1 -0
@@ -1,3 +1,10 @@
1
+ /* The wait-then-fade every route skeleton shares. The delay is one fast step:
2
+ a route that answers inside it never shows a skeleton at all, and one that
3
+ does not fades the bars in instead of cutting to them. The pulse lives on
4
+ the SkeletonPage inside, so the two animations never fight for a property. */
5
+ .folio-loading-page { animation: folio-loading-in var(--duration-base) var(--ease) var(--duration-fast) both; }
6
+ @keyframes folio-loading-in { from { opacity: 0; } to { opacity: 1; } }
7
+ @media (prefers-reduced-motion: reduce) { .folio-loading-page { animation: none; } }
1
8
  .folio-recovery-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
2
9
  .folio-recovery-links { margin-block: clamp(3.5rem, 7vw, 6rem) 3rem; }
3
10
  .folio-recovery-links ul { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 4rem; margin: .25rem 0 0; padding: 0; list-style: none; }
@@ -6,12 +13,13 @@
6
13
  .folio-loading-intro { display: grid; align-items: end; gap: clamp(2rem, 5vw, 5rem); padding-block: clamp(4.5rem, 9vw, 7rem) clamp(2.75rem, 5vw, 4.5rem); }
7
14
  .folio-loading-records, .folio-loading-gallery, .folio-loading-metrics { padding-block-end: clamp(4rem, 9vw, 8rem); }
8
15
  .folio-loading-records__row { display: grid; gap: 1rem 2.25rem; border-block-end: 1px solid var(--rule); padding-block: 2rem; }
9
- .folio-loading-records__row:first-child { border-block-start: 1px solid var(--rule-hard); }
16
+ .folio-loading-records__row:first-child { border-block-start: 1px solid var(--rule-divider); }
10
17
  .folio-loading-filters { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; padding-block: 1rem; }
11
18
  .folio-loading-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem .75rem; }
12
19
  .folio-loading-media { border-block: 1px solid var(--rule); background: var(--paper-2); }
13
20
  .folio-loading-metrics__figures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-block: 1px solid var(--rule); }
14
21
  .folio-loading-metrics__figures > div { padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1rem, 3vw, 1.625rem); }
22
+ .folio-loading-article { padding-block-start: clamp(4rem, 8vw, 6rem); }
15
23
  .folio-loading-identity { display: grid; align-items: center; gap: 3.5rem; padding-block: clamp(7rem, 9vw, 8rem) clamp(2.5rem, 5vw, 4rem); }
16
24
  @media (min-width: 640px) {
17
25
  .folio-recovery-links ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@@ -1,26 +1,40 @@
1
- .folio-search-palette__search { position: relative; }
2
- .folio-search-palette__search:focus-within { background: var(--paper-2); }
3
- .folio-search-palette__search input { padding-inline-end: 3rem; font-size: .875rem; }
1
+ /* The panel: one surface, a hairline, and the lift a floating layer is
2
+ allowed. The field is part of the panel rather than a grey band on top of
3
+ it, and the list below it is single-line rows at the 44px target. */
4
+ .folio-search-palette { border-color: var(--rule); background: var(--paper); }
5
+ .folio-search-palette__search { position: relative; display: flex; align-items: center; border-block-end: 1px solid var(--rule); }
6
+ .folio-search-palette__search [cmdk-input-wrapper], .folio-search-palette__search > div:first-child { flex: 1; min-inline-size: 0; border: 0; }
7
+ .folio-search-palette__search input { block-size: 3.5rem; padding-inline-end: 3rem; font-size: .9375rem; }
4
8
  .folio-search-palette__search input:focus, .folio-search-palette__search input:focus-visible,
5
9
  .folio-search-palette__input input:focus, .folio-search-palette__input input:focus-visible { outline: none; box-shadow: none; }
6
10
  .folio-search-palette__close { position: absolute; inset-block-start: 50%; inset-inline-end: .5rem; translate: 0 -50%; }
7
- .folio-search-palette__input { display: flex; align-items: center; gap: .5rem; padding: .75rem; border-block-end: 1px solid var(--rule); }
11
+ .folio-search-palette__input { display: flex; align-items: center; gap: .5rem; padding: .625rem .75rem; border-block-end: 1px solid var(--rule); }
8
12
  .folio-search-palette__input input { min-inline-size: 0; }
9
- .folio-search-palette__detail { max-block-size: calc(80svh - 6.5rem); overflow-y: auto; overscroll-behavior: contain; padding: 1.5rem; }
10
- .folio-search-palette__result { flex: 1; min-inline-size: 0; display: grid; gap: .125rem; }
11
- .folio-search-palette__result > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
12
- .folio-search-palette__description { color: var(--ink-3-aa); font-size: .75rem; }
13
- .folio-search-palette__heading { font-family: var(--sans); font-size: .75rem; letter-spacing: normal; text-transform: none; }
14
- .folio-search-palette__item { margin: .125rem 0; border-radius: var(--radius-sm); font-size: .875rem; }
13
+ .folio-search-palette__detail { max-block-size: calc(70svh - 6.5rem); overflow-y: auto; overscroll-behavior: contain; padding: 1.5rem; }
14
+ /* The last visible row dissolves into the footer rather than being sliced by
15
+ it, which is what tells a reader the list goes on. */
16
+ .folio-search-palette [cmdk-list] { padding: .375rem; mask-image: linear-gradient(to bottom, #000 calc(100% - 1.5rem), transparent); }
17
+ .folio-search-palette [cmdk-group-heading] { padding: .75rem .625rem .375rem; }
18
+ .folio-search-palette__heading { color: var(--ink-3-aa); font-family: var(--sans); font-size: .75rem; letter-spacing: normal; text-transform: none; }
19
+ .folio-search-palette__item { min-block-size: 2.75rem; margin: 0; padding-block: .5rem; border-radius: var(--radius-row); font-size: .875rem; }
15
20
  .folio-search-palette__item::before { display: none; }
16
- .folio-search-palette__item[data-selected=true] { background: var(--paper-2); box-shadow: inset 0 0 0 1px var(--rule); }
17
- .folio-search-palette__meta { font-family: var(--sans); font-size: .6875rem; opacity: 0; }
21
+ .folio-search-palette__item[data-selected=true] { background: var(--paper-2); }
22
+ .folio-search-palette__result { flex: 1; min-inline-size: 0; display: flex; align-items: baseline; gap: .625rem; }
23
+ .folio-search-palette__result > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
24
+ .folio-search-palette__result > span:first-child { flex: none; max-inline-size: 70%; color: var(--ink); }
25
+ .folio-search-palette__description { flex: 1; min-inline-size: 0; color: var(--ink-3-aa); font-size: .8125rem; }
26
+ .folio-search-palette__meta { font-family: var(--sans); font-size: .6875rem; opacity: 0; transition: opacity var(--duration-fast) var(--ease); }
18
27
  .folio-search-palette__item[data-selected=true] .folio-search-palette__meta { opacity: 1; }
19
- .folio-search-palette__highlight { color: var(--ink); background: var(--stone); border-radius: var(--radius-sm); }
20
- .folio-search-palette__footer { flex-wrap: wrap; }
28
+ .folio-search-palette__highlight { color: var(--ink); background: var(--stone); border-radius: var(--radius-xs); }
29
+ .folio-search-palette__footer { flex-wrap: wrap; border-block-start: 1px solid var(--rule); background: var(--paper); }
21
30
  @media (max-width: 40rem) {
22
31
  .folio-search-palette__search input { font-size: 1rem; }
23
32
  .folio-search-palette__detail { max-block-size: calc(84svh - 4.5rem); }
33
+ .folio-search-palette__result { display: grid; gap: .125rem; }
34
+ .folio-search-palette__result > span:first-child { max-inline-size: none; }
24
35
  .folio-search-palette__meta { display: none; }
25
36
  .folio-search-palette__footer { display: none; }
26
37
  }
38
+ @media (prefers-reduced-motion: reduce) {
39
+ .folio-search-palette { animation: none !important; }
40
+ }
@@ -1,5 +1,5 @@
1
1
  .folio-record-section { scroll-margin-block-start: var(--scroll-offset); }
2
- .folio-record-section__header { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding-block-end: 1rem; border-block-end: 1px solid var(--rule-hard); }
2
+ .folio-record-section__header { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding-block-end: 1rem; border-block-end: 1px solid var(--rule-divider); }
3
3
  .folio-career-record { display: grid; gap: 1rem; border-block-end: 1px solid var(--rule); padding-block: clamp(2rem, 3.5vw, 3rem); }
4
4
  .folio-career-record__dates { display: flex; flex-wrap: wrap; align-items: baseline; gap: 1rem; }
5
5
  .folio-career-record__dates dl, .folio-career-record__dates dd { margin: 0; }
@@ -9,6 +9,12 @@
9
9
  .folio-career-record__description { margin-block: 1.25rem 0; max-inline-size: var(--measure-record); padding-inline-start: 1.25rem; list-style: disc; }
10
10
  .folio-career-record__description > li + li { margin-block-start: .5rem; }
11
11
  .folio-career-record__tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-block: 1.25rem 0; list-style: none; padding: 0; }
12
+ /* Every chip in the row is the same flex box, marked or not, so a text-only
13
+ chip shares its neighbours' baseline. A mark takes the label's colour, so a
14
+ row of brand marks reads as one quiet line rather than a sticker sheet. */
15
+ .folio-career-record__tag { display: inline-flex; align-items: center; gap: .375rem; }
16
+ .folio-career-record__tag-mark { display: inline-flex; flex: none; inline-size: .875rem; block-size: .875rem; color: var(--ink-3-aa); }
17
+ .folio-career-record__tag-mark > :is(svg, img) { inline-size: 100%; block-size: 100%; }
12
18
  .folio-career-record__mark { display: none; }
13
19
  .folio-career-record__mark img { inline-size: 4rem; block-size: 4rem; object-fit: contain; }
14
20
  .folio-profile-section, .folio-profile-narrative { padding-block: clamp(3rem, 6vw, 5rem); }
@@ -18,7 +24,7 @@
18
24
  .folio-profile-figure__image { overflow: hidden; border-radius: var(--radius); }
19
25
  .folio-profile-figure__image img { display: block; inline-size: 100%; block-size: auto; }
20
26
  .folio-profile-skills__group { display: grid; gap: 1rem; border-block-end: 1px solid var(--rule); padding-block: 1.5rem; }
21
- .folio-profile-skills__group:first-child { border-block-start: 1px solid var(--rule-hard); }
27
+ .folio-profile-skills__group:first-child { border-block-start: 1px solid var(--rule-divider); }
22
28
  .folio-profile-skills__items { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; list-style: none; margin: 0; padding: 0; }
23
29
  .folio-profile-skills__items > li { display: inline-flex; align-items: center; gap: .5rem; }
24
30
  .folio-profile-skill__icon { display: inline-flex; }
@@ -29,7 +35,7 @@
29
35
  [data-mode='dark'] .folio-profile-skill__icon[data-invert]:not([data-has-dark]) img { filter: invert(1); }
30
36
  .folio-profile-interests { display: grid; gap: 2rem; }
31
37
  .folio-profile-interests article { border-block-start: 1px solid var(--rule); padding-block-start: 1.5rem; }
32
- .folio-timeline { border-block-start: 1px solid var(--rule-hard); }
38
+ .folio-timeline { border-block-start: 1px solid var(--rule-divider); }
33
39
  .folio-timeline__item { min-inline-size: 0; }
34
40
  @media (min-width: 768px) {
35
41
  .folio-career-record { grid-template-columns: 11rem minmax(0, 1fr) 4rem; column-gap: clamp(2rem, 4vw, 3.5rem); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@misoto22/folio",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "private": false,
5
5
  "description": "Monochrome design system — CSS tokens and accessible React primitives",
6
6
  "license": "MIT",
@@ -71,6 +71,7 @@ not just `:root`. An unset axis is the default.
71
71
  | `data-type` | `grotesk` `bookish` | editorial |
72
72
  | `data-motion` | `still` `snappy` | calm |
73
73
  | `data-voice` | `quiet` | display |
74
+ | `data-controls` | `pill` | the control step (`--radius`) |
74
75
  | `data-density` | `compact` | comfortable |
75
76
 
76
77
  ```tsx