Readme

Update Log

Here you can see the current readme file with all updates, breaking changes, and todos.

@leon8ix/jhana-ui/README.md

# Jhana UI

A beautifully dark-themed Svelte and CSS ui-system that embraces glowing bright colors, round corners and fluid transitions.

## ToDo

- Finish documentation site
- Add back ActionButton stroke thickening on focus-visible to stroked SVGIcon
- Allow function calling ctx-menu
    - How to pass anchor element?
- Implement replacement for .btn.shady used in Filters
- Fix outline on focus (dialogs, unstyled inputs)

## Versions

### 1.38.1 (260107)

- Added /popup as export to package.json

### 1.38.0 (260107)

- Implemented first working version of popups
- Improved ButtonClose styling with glow effect and transition
- Replaced default dev port with custom :38880

### 1.37.1 (250809)

- Fixed card:hover to only change border-color and not completely replace border style

### 1.37.0 (250808)

- BREAKING: Renamed `prog`/`progress` prop to `value` for both `Spinner` and `PageProgress`
    - This makes it consistent with ProgressBar and HTML's native progress element
- Added ProgressBar component
- Added aria-atts for Spinner and PageProgress

### 1.36.0 (250808)

- BREAKING: Renamed `ProgressBar` to `PageProgress`
- Fixed ProgressBar to use fixed instead of absolute positioning
- Fixed scroll-bar on CodeBlock from being next to header

### 1.35.0 (250802)

- Implemented ctx-menu flipping
    - For anchored to element mode
    - And for global mode: Implemented additional adapter, so margin is not flipped
- Internal: Separated out CtxMenuContent (visually styled content) from CtxMenuRoot (positioning and anchoring logic)

### 1.34.0 (250802)

- Added iconFile

### 1.33.0 (250801)

- Added keyboard shortcut indicator to ctx-menu item ('kbd')
- Improved kbd styling

### 1.32.0 (250801)

- Implemented loading state for async ctx-menu actions

### 1.31.0 (250801)

- Properly implemented font setups
    - Fixed font variable fallbacks and optimized their setup
    - Everthing was defined via font-variation-settings and font-feature-settings
    - This was unnecessary, as all of these were available via standard CSS properties
    - Opsz can be auto-derived from font-size with font-optical-sizing: auto
- Added class for styling keyboard shortcuts

### 1.30.0 (250801)

- BREAKING: Changed .tab.btn to display:block
- Added pathname matching modes for NavIndex
    - Allows for handling subpaths correctly

### 1.29.0 (250727)

- Implemented Component support for CtxMenuItem
    - BREAKING: `CtxMenuItem: Snippet` > `CtxMenuItem: { snippet: Snippet<[CtxMenuItemProps]> }`
    - Use with components: `CtxMenuItem: { component: Component<CtxMenuItemProps> }`

### 1.28.1 (250727)

- Had to unwrap further to reach intended goal of v1.28.0: Also removed li wrapper
    - Either use: `li > button`, `li > button + button` repeated as often as the entries you need
    - Or use: `div`, `section`, `p` for uniform block padding and rounded coners
    - Or use your very own setup

### 1.28.0 (250727)

- BREAKING: Removed div.snippet wrapper for `CtxMenuItem Snippets`
    - To keep previous styling, wrap your Snippet in `div`, `section` or `p`
    - Allows for using button, which will be identical to native CtxMenuItem actions
    - Allows for using a reactive Svelte map of multiple buttons

### 1.27.0 (250726)

- Improved ctx-menu opening and closing logic
    - Ignore right-clicks inside context menu
    - Close if open and would open the exact same menu anchored to the same element

### 1.26.0 (250726)

- Implemented workaround for ctx-menu instantly closing again on mobile
- BREAKING: Renamed `ContextGlobal` to `CtxMenuRoot`

### 1.25.0 (250724)

- Implemented left-click CtxMenu
    - Use: onclick={openMenu(menu)}
- Fixed CtxMenuTagMap for disabled menus
- Updated dependencies

### 1.24.0 (250724)

- Disabled pointer events for SVGIcons that have an icon-root
    - Fixes context menu global button handling for icon buttons
- Made callback in clipboard action helpers optional
- BREAKING: Context menu renames
    - type MenuConfig > CtxMenuConfig
    - type MenuItem > CtxMenuItem
    - class ContextMenu > CtxMenu
    - type ContextMenu['tagMap'] > CtxMenuTagMap
- Allowed non-checkers on CtxMenuTagMap
    - CtxMenuOpeningAction can be used as well

### 1.23.0 (250724)

- Added input context menu clipboard action helpers: copy, cut, paste

### 1.22.0 (250723)

- Improved ToggleLink and ToggleLock setup
    - Fixed sizing issues
    - Migrated to SVGIcon snippet syntax
- Added styling for svg containing .toggles and .radios, so they fit in line with text and number inputs inside .input-groups
    - Used by ToggleLink and ToggleLock
- Corrected \[disabled] to :disabled in the global stylesheet
- Removed forced id generation for all input components
    - Not neccessary, since input is child of label
    - Name can either be passed or not, id is no longer used as name fallback
- BREAKING: Removed highlight prop from Radio, just pass it as the class

### 1.21.0 (250722)

- Improved NumberInput styling
    - Correct cursor for buttons
    - Correct button style on disabled state

### 1.20.0 (250721)

- BREAKING: Removed `.active` class from `Icon`
    - Only :active pseudo-class will be listened to from now on
    - For creating alternative theming for an activated state, the color reactivity should be handled by the parent component
    - Both :hover and :active might be different values on an activated state
    - ActionButton was adapted accordingly

### 1.19.1 (250718)

- Fixed NavIndex, hidden text was visible due to icon-btn change

### 1.19.0 (250718)

- Added /transitions, specifically flexSlide

### 1.18.0 (250718)

- Added .btn.icon style
- Deprecated .btn.icon-btn class, this works automatically now
    - Remove any .icon-btn classes in your repo

### 1.17.1 (250718)

- Fixed recent dirs not being added to package.json to allow importing

### 1.17.0 (250718)

- Added scrollbar styling to global stylesheet

### 1.16.0 (250717)

- Added context menu logic and component
    - Added action-list to global stylesheet

### 1.15.0 (250715)

- BREAKING: Changed input components, so that class and style apply to wrapper
    - Other atts still apply to the input element itself
    - Changed: `NumberInput`, `Radio`, `Toggle`, `ToggleLink`, `ToggleLock`
    - NumberInput had workaround `cls`, which was replaced with `class` again

### 1.14.1 (250715)

- Fixed current location matching for both Tabs and NavIndex
- Docs changes
    - Fixed default minimized state
    - Fixed output for paths, so reloading works on web server

### 1.14.0 (250714)

- Added NavIndex minimized state, with smooth transition

### 1.13.1 (250713)

- Fixed CodeBlock overflowing and breaking layout

### 1.13.0 (250713)

- BREAKING: Separated font-faces from global style sheet
    - You need to import `@leon8ix/jhana-ui/fonts/inter.css` to keep Inter font as before
- Implemented CSS variables for
    - Monospace font
    - Variable font feature and variation settings
- Added bold class to CSS and made `b` and `strong` bold as well
- Improved CodeBlock styling

### 1.12.0 (250712)

- Replaced button texts in CodeBlock with icons

### 1.11.0 (250712)

- BREAKING: Transitioned to flexible `SVGIcon` syntax for all icons
- Added CodeBlock component

### 1.10.2 (250625)

- Fixed NumberInput up/down arrows causing weird numbers (rounds to 12 digits now)

### 1.10.1 (250625)

- Fixed NumberInput disable, applies to up/down arrows as well now

### 1.10.0 (250612)

- Updated all dependencies

### 1.9.0 (250612)

- Changed notify to allow for replacing noti data while open using id

### 1.8.0 (250612)

- Switched over to use Bun instead of NPM

### 1.7.0 (250612)

- Replaced internal utils functions with @leon8ix/utils
    - Auth token not included: Needs to be in user's home directory or consuming package

### 1.6.0 (250420)

- Added Spinner component

### 1.5.1 (250420)

- Removed SVG (and IMG etc.) reset, as it was causing problems with ToggleLock and ToggleLink

### 1.5.0 (250420)

- Made CSS reset much less aggressive
    - Basically no global selector, all default styled elements are targeted specifically
        - Previously global styles would overwrite any SVG's presentation atts
        - Only padding and margin are still global
    - Global 'outline: none' removed for accessibility
        - Only classes that specifically handle :focus-visible have 'outline: none'
    - Tested with
        - Infinipose 3.34.0-pre.4
        - Cover Designer 2.0.0-pre.11

### 1.4.1 (250417)

- Fixed font shorthand overwriting variable font-weight

### 1.4.0 (250417)

- Improved CSS reset in the stylesheet
- Updated dependencies

### 1.3.0 (250416)

- Added keyboard shortcut Svelte action

### 1.2.4 (250315)

- Fixed ActionButton class and color logic

### 1.2.3 (250315)

- Fixed missing unit for space-y-sm

### 1.2.2 (250312)

- Fixed NotifyRoot fixed positioning

### 1.2.1 (250309)

- Added /notify entrypoint

### 1.2.0 (250309)

- Added notification system

### 1.1.2 (250307)

- Fixed btn with non-button tags not having browser style for button line-height: normal

### 1.1.1 (250305)

- Fixed action-btn svg still depending on px unit

### 1.1.0 (250305)

- Replaced rem with em, as rem would cause problems on dynamic font size change

### 1.0.1 (250302)

- Fixed style.css import not working for consuming package

### 1.0.0 (250302)

- Initial commit
- Extracted out from Print Meter v4.0.0
- Before being used for and adapted to Print Meter, it was used in Infinipose
- Before being used for and adapted to Infinipose, it was developed for IconBase