@sableui/react 0.8.0 → 0.8.1
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/CHANGELOG.md +10 -0
- package/bin/sable.mjs +11 -2
- package/dist/file-hashes.json +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/llms/tasks/getting-started.md +5 -2
- package/llms-full.txt +5 -2
- package/package.json +1 -1
- package/registry.json +2 -1
- package/skills/sable/SKILL.md +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# What's new
|
|
2
2
|
|
|
3
|
+
## 0.8.1
|
|
4
|
+
|
|
5
|
+
- **`sable check` shows doctor's notes.** Warnings and notes from `sable doctor`
|
|
6
|
+
don't fail the check, so a passing check printed none of them. They now list
|
|
7
|
+
under the doctor line, and when the app still scans all of Sable, the finish
|
|
8
|
+
steps add one: trim the CSS with `sable sources` to the components the app
|
|
9
|
+
imports. The skill says to act on check's notes, and the install recipe
|
|
10
|
+
(`registry.json` → `consume.cssSources`) and `sable docs getting-started`
|
|
11
|
+
mention `sable sources` beside the whole-package `@source`.
|
|
12
|
+
|
|
3
13
|
## 0.8.0
|
|
4
14
|
|
|
5
15
|
The same support-workspace app was built twice, on Sable and on shadcn, and this
|
package/bin/sable.mjs
CHANGED
|
@@ -1472,6 +1472,9 @@ function cmdCheck() {
|
|
|
1472
1472
|
status: doctorFailures.length ? "fail" : "pass",
|
|
1473
1473
|
summary: doctorFailures.length ? `${doctorFailures.length} wiring failure(s): ${doctorFailures.map((c) => c.name).join(", ")}` : "wiring holds",
|
|
1474
1474
|
details: doctorFailures.map((c) => `${c.name}: ${c.detail}${c.fix ? ` → ${c.fix}` : ""}`),
|
|
1475
|
+
// Warnings and notes don't fail the check, but they are things to act on,
|
|
1476
|
+
// and a passing check that printed nothing else hid them from the agent.
|
|
1477
|
+
notes: doctor.checks.filter((c) => c.status === "warn" || c.status === "info").map((c) => `${c.name}: ${c.detail}${c.fix ? ` → ${c.fix}` : ""}`),
|
|
1475
1478
|
data: doctor,
|
|
1476
1479
|
})
|
|
1477
1480
|
|
|
@@ -1529,7 +1532,12 @@ function cmdCheck() {
|
|
|
1529
1532
|
const inventory = grade && grade.type !== "error" ? (grade.inventory ?? null) : null
|
|
1530
1533
|
|
|
1531
1534
|
const failed = checks.filter((c) => c.status !== "pass").map((c) => c.name)
|
|
1532
|
-
|
|
1535
|
+
// A build that still scans all of Sable ships every component's classes;
|
|
1536
|
+
// trimming it is a finish step, because sources are only final once the app is.
|
|
1537
|
+
const manual = doctor.checks.some((c) => c.name === "css:size")
|
|
1538
|
+
? [...MANUAL_REVIEW, { step: "Ship only the CSS you use", how: "sable sources --write src/sable-sources.css, then @import it in place of the whole-package @source (about 32 KB of CSS gzipped down to what the app imports). Re-run it whenever you import something new from Sable; sable check fails while it is stale." }]
|
|
1539
|
+
: MANUAL_REVIEW
|
|
1540
|
+
const data = { paths, passed: !failed.length, failed, checks, inventory, manualReview: manual }
|
|
1533
1541
|
const MARK = { pass: "✓", fail: "✗", error: "✗" }
|
|
1534
1542
|
const MAX_DETAILS = 12
|
|
1535
1543
|
const summaryText = () =>
|
|
@@ -1539,6 +1547,7 @@ function cmdCheck() {
|
|
|
1539
1547
|
` ${MARK[c.status]} ${c.name.padEnd(7)}${c.summary}`,
|
|
1540
1548
|
...c.details.slice(0, MAX_DETAILS).map((d) => ` ${d}`),
|
|
1541
1549
|
...(c.details.length > MAX_DETAILS ? [` … ${c.details.length - MAX_DETAILS} more: sable ${c.name}${c.name === "doctor" ? "" : ` ${paths.join(" ")}`}`] : []),
|
|
1550
|
+
...(c.notes ?? []).map((n) => ` note — ${n}`),
|
|
1542
1551
|
]),
|
|
1543
1552
|
"",
|
|
1544
1553
|
failed.length ? `[sable check] ✗ ${failed.join(", ")} failed. Fix these and run sable check again.` : "[sable check] ✓ doctor, lint and grade pass.",
|
|
@@ -1558,7 +1567,7 @@ function cmdCheck() {
|
|
|
1558
1567
|
[
|
|
1559
1568
|
"",
|
|
1560
1569
|
"Automated checks cannot judge the design. Before calling it done:",
|
|
1561
|
-
...
|
|
1570
|
+
...manual.map((m, i) => ` ${i + 1}. ${m.step}: ${m.how}`),
|
|
1562
1571
|
].join("\n")
|
|
1563
1572
|
|
|
1564
1573
|
/* Stop-hook mode (Claude Code): exit 2 blocks the agent from ending its turn
|
package/dist/file-hashes.json
CHANGED
|
@@ -470,8 +470,8 @@
|
|
|
470
470
|
"dist/icon-sets/brands.js": "9a37d8739f14f2a9",
|
|
471
471
|
"dist/icon-sets/reicon.d.ts": "52f6e41dc8137b4e",
|
|
472
472
|
"dist/icon-sets/reicon.js": "89a930f17cc90cde",
|
|
473
|
-
"dist/index.d.ts": "
|
|
474
|
-
"dist/index.js": "
|
|
473
|
+
"dist/index.d.ts": "50432e5848c126c0",
|
|
474
|
+
"dist/index.js": "e23dc24b22fa7d6f",
|
|
475
475
|
"dist/ios/chrome.css": "a7ca9e3735d8658e",
|
|
476
476
|
"dist/ios/chrome.js": "37091fef7b68bd28",
|
|
477
477
|
"dist/ios/frame.css": "dd2703c944ce575a",
|
package/dist/index.d.ts
CHANGED
|
@@ -8291,6 +8291,6 @@ interface UseCopyResult {
|
|
|
8291
8291
|
*/
|
|
8292
8292
|
declare function useCopy(text: string, { timeout }?: UseCopyOptions): UseCopyResult;
|
|
8293
8293
|
|
|
8294
|
-
declare const SABLE_UI_VERSION: "0.8.
|
|
8294
|
+
declare const SABLE_UI_VERSION: "0.8.1";
|
|
8295
8295
|
|
|
8296
8296
|
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Button, type ButtonBleed, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, type ConstraintFlag, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, DataTable, type DataTableColumn, type DataTableProps, type DataTableRowKey, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionPolicy, MotionProvider, type MotionProviderProps, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$3 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputMeta, isTransparent, kbdMeta, labelMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMotion, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useSidebar, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
|
package/dist/index.js
CHANGED
|
@@ -160,7 +160,7 @@ import { PresentationProvider, usePresentation } from "./lib/presentation.js";
|
|
|
160
160
|
import { useScrollActivity } from "./lib/use-scroll-activity.js";
|
|
161
161
|
import { useCopy } from "./lib/use-copy.js";
|
|
162
162
|
import { STATUS_TONES, STATUS_TONE_ICON } from "./lib/status-tone.js";
|
|
163
|
-
var SABLE_UI_VERSION = "0.8.
|
|
163
|
+
var SABLE_UI_VERSION = "0.8.1";
|
|
164
164
|
export {
|
|
165
165
|
ART_TOKENS,
|
|
166
166
|
CHART_SERIES_COUNT,
|
|
@@ -20,8 +20,11 @@ For `src/styles.css` with `node_modules` at the project root:
|
|
|
20
20
|
@source "../node_modules/@sableui/react/dist/**/*.{js,mjs}";
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Adjust the relative `@source` path to your stylesheet's location.
|
|
24
|
-
|
|
23
|
+
Adjust the relative `@source` path to your stylesheet's location. It makes
|
|
24
|
+
Tailwind generate every Sable component's classes; once the app is built,
|
|
25
|
+
`sable sources --write src/sable-sources.css` lists just the ones it imports, to
|
|
26
|
+
`@import` in its place (`sable check` notes this). Import this stylesheet from
|
|
27
|
+
your app entry. For Vite, preserve your plugins and add
|
|
25
28
|
`resolve: { dedupe: ["react", "react-dom"] }` to its configuration. Load Figtree
|
|
26
29
|
and DM Mono through your font setup, or customize the font tokens.
|
|
27
30
|
|
package/llms-full.txt
CHANGED
|
@@ -1807,8 +1807,11 @@ For `src/styles.css` with `node_modules` at the project root:
|
|
|
1807
1807
|
@source "../node_modules/@sableui/react/dist/**/*.{js,mjs}";
|
|
1808
1808
|
```
|
|
1809
1809
|
|
|
1810
|
-
Adjust the relative `@source` path to your stylesheet's location.
|
|
1811
|
-
|
|
1810
|
+
Adjust the relative `@source` path to your stylesheet's location. It makes
|
|
1811
|
+
Tailwind generate every Sable component's classes; once the app is built,
|
|
1812
|
+
`sable sources --write src/sable-sources.css` lists just the ones it imports, to
|
|
1813
|
+
`@import` in its place (`sable check` notes this). Import this stylesheet from
|
|
1814
|
+
your app entry. For Vite, preserve your plugins and add
|
|
1812
1815
|
`resolve: { dedupe: ["react", "react-dom"] }` to its configuration. Load Figtree
|
|
1813
1816
|
and DM Mono through your font setup, or customize the font tokens.
|
|
1814
1817
|
|
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://sable.design/registry.schema.json",
|
|
3
3
|
"name": "@sableui/react",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.1",
|
|
5
5
|
"description": "Themeable React components, semantic tokens, layout patterns, presets, and package-owned agent skills. Default theme: Sable.",
|
|
6
6
|
"engine": {
|
|
7
7
|
"behavior": "@base-ui/react",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"@import \"@sableui/react/styles.css\";",
|
|
29
29
|
"@source \"<node_modules>/@sableui/react/dist/**/*.{js,mjs}\";"
|
|
30
30
|
],
|
|
31
|
+
"cssSources": "That @source ships every component's classes (about 32 KB gzipped). Once the app is built, `sable sources --write src/sable-sources.css` lists just the modules it imports; @import that file in place of the @source. sable check fails while it is stale.",
|
|
31
32
|
"fonts": {
|
|
32
33
|
"sans": "Figtree",
|
|
33
34
|
"mono": "DM Mono",
|
package/skills/sable/SKILL.md
CHANGED
|
@@ -13,7 +13,9 @@ References inform an original direction. A reference or preset is optional.
|
|
|
13
13
|
|
|
14
14
|
1. Run `sable check <source paths>` (default `src`). It runs `sable doctor`,
|
|
15
15
|
`sable lint`, and `sable grade` and exits 1 if any fails. Repair the findings
|
|
16
|
-
instead of suppressing them, then run it again until it passes.
|
|
16
|
+
instead of suppressing them, then run it again until it passes. Act on its
|
|
17
|
+
notes too: they don't fail the check but name real work, such as trimming the
|
|
18
|
+
CSS to the components the app imports (`sable sources`). Also run the
|
|
17
19
|
project's own build and type checks.
|
|
18
20
|
2. Review the rendered design: `sable docs reviewing-a-design`. Capture desktop and
|
|
19
21
|
mobile in every promised colour mode, and judge brief fit, composition,
|
|
@@ -34,7 +36,7 @@ References inform an original direction. A reference or preset is optional.
|
|
|
34
36
|
lessons with evidence; never fabricate human approval or preference records.
|
|
35
37
|
|
|
36
38
|
Steps 2–7 are what no tool can verify; `sable check` prints them after its
|
|
37
|
-
results. A passing check is a contract result, not design approval.
|
|
39
|
+
results, plus any step its notes call for. A passing check is a contract result, not design approval.
|
|
38
40
|
|
|
39
41
|
## Route the request
|
|
40
42
|
|