Changelog
phil/ux-cssAll notable changes to phil/ux-css will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
0.4.0-alpha - 2026-11-13
Added
css/tokens/colors.css:--phil-color-placeholder-brand,-red,-green,-amber,-blueand-violet, quiet tones in clear and in dark for the box of an image while it loads.css/layers/components.css: withisImage,hasPlaceholderNeutral,hasPlaceholderBrand,hasPlaceholderRed,hasPlaceholderGreen,hasPlaceholderAmber,hasPlaceholderBlue,hasPlaceholderViolet, andhasPlaceholder, which reads--phil-image-placeholderset by a class of the site;hasPreview, the blurred preview the kit paints laid out as the picture, covering or contained;isDescription, the disclosure of a long description under an image;isGallery.isDeferred, its cells rendered withcontent-visibility: auto, kept off screen at the ratio of theirdata-widthanddata-heightread by a typedattr(), or in a square cell--phil-gallery-columnhigh where the browser does not type it, their size remembered once rendered, and reaching into the gap by the width of the focus ring, which their paint containment would clip; where colours are forced,isLightboxTriggerkeeps the frame of a system button.
Changed
- The branch alias of
dev-mainis0.4.x-dev;package.jsonis at0.4.0.
0.3.0-alpha - 2026-11-13
Added
css/layers/components.css:isCredit,isLicenseandisCreation, a line each under the caption of an image;isGallery, a container whose list lays its figures in a grid of columns--phil-gallery-columnwide at least, read by a container query, its gap--phil-gallery-gapgrowing from 48rem;isLightbox,isLightboxTrigger, a button without a fill that keeps the focus ring,isLightboxDialog, a dialog as wide as the screen whose image is shown whole, andisLightboxClose, in its end corner.
Changed
- The branch alias of
dev-mainis0.3.x-dev;package.jsonis at0.3.0.
0.2.0-alpha - 2026-11-11
Added
css/layers/components.css:isImage, an image of the content as a block, never wider than its container, its height following its width, for theImageandPicturecomponents of the PHIL UX kit.- With
isImage: the layoutshasLayoutFixedandhasLayoutFullWidth; the ratioshasRatio16x9,hasRatio4x3,hasRatio3x2,hasRatio1x1,hasRatio21x9,hasRatio3x4,hasRatio2x3,hasRatio9x16, andhasRatio, which reads--phil-image-ratioset by a class of the site, never by an inline style; the fitshasFitCoverandhasFitContain; the cropshasPositionCenter,hasPositionTop,hasPositionBottom,hasPositionLeftandhasPositionRight.
Changed
- The branch alias of
dev-mainis0.2.x-dev;package.jsonis at0.2.0.
0.1.1-alpha - 2026-11-11
Published by mistake with the content of 0.1.0-alpha; use 0.2.0-alpha.
0.1.0-alpha - 2026-11-11
Added
css/tokens/dimensions.css: space, text, radius and shadow scales in t-shirt sizes (--phil-space-3xsto--phil-space-4xl,--phil-text-xsto--phil-text-4xlon a modular ratio), the global multipliers--phil-scale,--phil-scale-space,--phil-scale-textand--phil-scale-radius, system font stacks, line heights and measures, font weights, line widths, the heights of controls with a touch target of 2.75rem, the size of a check box, panel widths, stacking, the disabled opacity and the mixes of a hover and a press, the focus ring, durations and easings.css/tokens/palette.css: seven OKLCH hues — neutral, brand, red, green, amber, blue, violet — of eleven tones numbered by their lightness, 05 to 95, and the neutral 99; every tone in sRGB.css/tokens/colors.css: the colour roles in one theme, eachlight-dark()of two tones: the surface, the raised surface, the text, the muted text, the link, the focus ring, the border, the shadow, the backdrop and the five levels of an activity calendar; the fill/border/on × quiet/loud grid of the roles brand, neutral, danger, success, warning and info. The page follows the system;data-theme="light","default"or"dark"chooses, on the root or on any element.css/layers/base.css: the classless base — box sizing, the page, headings, paragraphs, lists,hgroup, links, the focus ring, media, figures,small,hr, code, quotes,mark,kbd,abbr,dt,dd,hidden; forms —fieldset,legend,label, every type ofinput,select,textarea,:disabled,:user-valid,:user-invalid,aria-invalid— with the markup of Symfony'sform_rowdressed as it comes;buttonand its equivalents, reading six--phil-tone-*colours; tables with their overflow in afigure;dialog, modal or not, with its::backdrop, a popover having none, and fading in the top layer;detailsanimated up toheight: autowhere the browser allows it;navandaria-current;progress,meter;[popover]— and the reader's display preferences: the end of every animation underprefers-reduced-motionordata-motion="reduce", the muted text and the borders at full contrast underprefers-contrast: moreordata-contrast="more", and the root at 112.5 % or 125 % underdata-text-size="large"or"larger".css/layers/layout.css:isStack,isCluster,isCenter,isNarrow,isSplit(two columns from 48rem),isGrid,isFullHeight,isCoverwithisCoverBody,isBleedand its slantedhasEntrance, each gap a custom property of its own.css/layers/components.css:isEyebrow,isHeadline, the clip revealisRevealwith its statesisRevealing,isPulsingandisCurrentand the custom properties--phil-reveal-size,--phil-reveal-durationand--phil-reveal-caret, the pause/play buttonisRevealToggle,isLogo,isProse, the reactionisReactionwith a touch target of 2.75rem and the pickerisReactionPickerandisReactionPickerPanel; the tonesisPrimary,isNeutral,isDanger,isSuccess,isWarningandisInfoon any component; the sizesisSmallandisLarge, inherited; the button looksisButton,isSecondary,isGhost,isLink,isOutline,isLoading,hasIcon,isIconOnlyandisButtonGroup;isBadgeandisAlertwithisLoud;isCardwithisCardMedia,isCardBody,isCardTitleandisCardLink;isEmptyState;isTabs;isSheetwithisStart,isTopandisBottom;isSwitch;isTooltipwithhasTooltip;isDropdownwithisDropdownMenu;isAccordion;isBreadcrumb;isPagination;isStepperwithisDone;isCarousel;isSpinner;isSkeleton;isAvatar;isSeparatorwithisVertical;isActivityCalendar; a class of its own for each part of the recipes of the kit, fromisCardHeader,isDialogClose,isSelectItemorisTabPaneltoisTableRow, listed indoc/components.md, the rules reading none of the recipes' data attributes;isStriped,hasHoverandisScrollablefor tables;isQrCodewithisQrCodeCaption; thehl-*classes of highlighted code in colour roles;.ujo-print-fallback, the fallback of UJO (Universal JSON Output) media shown only on paper.css/layers/utilities.css:isVisuallyHidden,isSkipLink,isMuted,isGrow.css/phil-ux.css, the entry that orders the seven layers and imports each file into its own;dist/phil-ux.css, the same as one file;dist/tokens.json, the tokens in the format of the Design Tokens Community Group (2025.10), generated from the CSS, which stays the source;bin/build.php, which writes both, the tests failing while either is stale;package.jsonfor npm, exportingtokens.json.Color\Oklch: an OKLCH colour read from CSS, converted to linear sRGB, its gamut, its WCAG relative luminance and the contrast ratio between two colours.Token\TokenSheet,Token\ToneandToken\Scheme: the custom properties of one or more stylesheets, the later winning; the tones of the palette, the roles of the grid, and a property resolved in a scheme throughvar(), their fallbacks andlight-dark().Contrast\ContrastRule,Contrast\PairandContrast\Violation: the contrast rule on a token sheet — tones 50 apart at 4.5:1 and 40 apart at 3:1, every tone in sRGB, the pairs of the page, of the activity calendar and of the grid on both surfaces and in both schemes, and the pairs a site adds.Stylesheet\StylesheetBundler: the layered imports of an entry inlined as@layerblocks; an import outside the directory of the entry, absolute or climbing above it, refused.Token\DesignTokens,Token\CalcandToken\Quantity: the custom properties of a sheet as DTCG tokens — groups from the names, aliases fromvar(), colours, dimensions, durations, numbers, font weights and families, cubic Béziers and shadows,calc()computed within bounds, the dark value oflight-dark()and the CSS as written in an extension, what has no type left out and named; the fuzz targetscalcanddesign-tokens.Exception\UxCssException,Exception\InvalidColor,Exception\UnreadableSheet.css/layers/components.css: the classes of the recipesColorPicker,DatePicker,CopyButton,AnimatedButton,Tree,Rating,NumberInput,FileInput,Tag,RelativeTime,ProgressRing,SparklineandBeforeAfter;isStepperItem,isStepperLabel,hasActivityCalendar,isActivityCalendarDay,isActivityCalendarBlank,isActivityLegend; the arrow ofisTooltip, on the edge named byisTop,isBottom,isStartorisEnd, in logical properties.css/layers/components.css: the classes of the recipesAspectRatio,Collapsible,Kbd,Field,Item,ScrollArea,Toggle,ToggleGroupandRadioGroupof the PHIL UX kit, of the blocksLoginFormandSignupForm, and of the charts:isChartand its parts, each series in a tone, the line of each tone butisPrimaryin a dash of its own;isHorizontalandisResponsiveon a field,isHorizontalandisVerticalon a scroll area and a radio group.