@ux-builder/ui 0.6.1 → 0.6.3
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/AGENTS.md +2 -2
- package/catalogue.json +3 -3
- package/dist/index.js +1 -1
- package/dist/patterns.js +1 -1
- package/dist/{shared-CjrUPFqv.js → shared-CAXoQbx9.js} +102 -102
- package/dist/shared-CAXoQbx9.js.map +1 -0
- package/package.json +2 -2
- package/skill/ux-builder-ui/SKILL.md +2 -2
- package/dist/shared-CjrUPFqv.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-CAXoQbx9.js","names":["THEMES","MANIFEST_THEMES","dev","useBeforePaint","TOKEN_NAMES","tokens","MANIFEST_THEMES","_Fragment","Fragment$1","themes","\"name\"","\"title\"","\"brand\"","\"designSystem\"","\"default\"","\"appearances\"","brands","tokens","ATTR","TYPES","URL_TOKEN","faviconOf","element","value","m","applyFavicon","href","link","type","removeFavicon","Favicon","useEffect","root","update","observer","mq","ThemeContext","createContext","THEMES$1","t","QUERY","SET_THEME","dev$1","warn","msg","systemAppearance","resolveAppearance","wanted","preference","system","known","theme","useBeforePaint$1","useLayoutEffect","asVariables","k","tokens$1","v","ThemeProvider","themeProp","appearanceProp","Tag","rest","parent","useContext","ref","useRef","setThemeState","useState","setPreference","setSystem","appearance","ownsFavicon","favicon","setTheme","useCallback","onChange","setAppearance","a","ownsPage","onRequest","useMemo","attrs","style","useTheme","SETS","\"material\"","\"package\"","\"version\"","\"license\"","\"svg\"","\"fill\"","\"fluent\"","\"carbon\"","\"lucide\"","\"stroke\"","GLYPHS","\"add\"","\"viewBox\"","\"body\"","\"calendar\"","\"check\"","\"close\"","\"copy\"","\"delete\"","\"download\"","\"edit\"","\"error\"","\"filter\"","\"help\"","\"home\"","\"info\"","\"lock\"","\"menu\"","\"more\"","\"refresh\"","\"search\"","\"settings\"","\"upload\"","\"user\"","\"view\"","\"warning\"","THEMES","OWN_SETS","ICON_NAMES","dev","iconSetFor","ds","pickGlyph","glyphs","set","name","REGISTRY","UNSAFE","fromDef","g","def","first","registerIcons","icons","names","camel","c","SVG_PROPS","s","useBeforePaint","Icon","context","pageTheme","setPageTheme","tokenSet","setTokenSet","fromToken","active","icon","glyph","used","a11y","label","size","className","clamp","hi","lo","length","ProgressBar","id","useId","top","max","now","pct","hideLabel","showValue","valueText","SpinnerGlyph","Spinner","showLabel","Skeleton","cls","variant","n","lines","width","i","height","VARIANTS","Button","busy","content","children","badge","Checkbox","input","Switch","RadioGroup","auto","group","options","o","defaultValue","Frame","controlId","hintId","hint","errorId","error","control","TextField","TextArea","Select","select","placeholder","DatePicker","DateRangePicker","fromLabel","from","to","toLabel","min","useModalDialog","dialog","opener","d","open","initialFocus","Dialog","titleId","descId","description","onClose","title","closeLabel","actions","MenuButton","setOpen","setActive","button","menu","enabled","items","it","openAt","where","close","refocus","move","delta","outside","onButtonKey","onMenuKey","hit","choose","item","e","buttonLabel","align","props","Pagination","pages","total","pageSize","p","page","last","onPageSizeChange","pageSizeLabel","pageSizes","ofLabel","previousLabel","onPageChange","nextLabel","Sheet","side","Tabs","own","setOwn","tabs","current","base","list","focus","b","onKey","rtl","step","next","on"],"sources":["../../tokens/dist/manifest.json","../src/brand/favicon.js","../src/ThemeProvider.jsx","../src/icons/glyphs.generated.js","../src/icons/Icon.jsx","../src/widgets/Loading.jsx","../src/widgets/Button.jsx","../src/widgets/Choice.jsx","../src/widgets/Field.jsx","../src/widgets/DatePicker.jsx","../src/widgets/modal.js","../src/widgets/Dialog.jsx","../src/widgets/MenuButton.jsx","../src/widgets/Pagination.jsx","../src/widgets/Sheet.jsx","../src/widgets/Tabs.jsx"],"sourcesContent":["{\n \"themes\": [\n {\n \"name\": \"databricks\",\n \"title\": \"Databricks\",\n \"brand\": \"databricks\",\n \"designSystem\": \"databricks\",\n \"default\": \"light\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"plain\",\n \"title\": \"Plain\",\n \"brand\": \"plain\",\n \"designSystem\": null,\n \"default\": \"light\",\n \"appearances\": [\n \"light\"\n ]\n },\n {\n \"name\": \"praxis-carbon\",\n \"title\": \"Praxis Carbon\",\n \"brand\": \"praxis\",\n \"designSystem\": \"carbon\",\n \"default\": \"dark\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"praxis-fluentui\",\n \"title\": \"Praxis Fluent\",\n \"brand\": \"praxis\",\n \"designSystem\": \"fluent\",\n \"default\": \"dark\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"praxis-material\",\n \"title\": \"Praxis Material\",\n \"brand\": \"praxis\",\n \"designSystem\": \"material\",\n \"default\": \"dark\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"praxis-v2-databricks\",\n \"title\": \"Praxis V2 Databricks\",\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"databricks\",\n \"default\": \"light\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"praxis\",\n \"title\": \"Praxis\",\n \"brand\": \"praxis\",\n \"designSystem\": null,\n \"default\": \"dark\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"synaptiq\",\n \"title\": \"Synaptiq\",\n \"brand\": \"synaptiq\",\n \"designSystem\": null,\n \"default\": \"light\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"ux-builder-databricks\",\n \"title\": \"UX Builder Databricks\",\n \"brand\": \"ux-builder\",\n \"designSystem\": \"databricks\",\n \"default\": \"light\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n }\n ],\n \"brands\": [\n {\n \"name\": \"databricks\",\n \"title\": \"Databricks\",\n \"appearances\": [\n \"light\",\n \"dark\"\n ]\n },\n {\n \"name\": \"plain\",\n \"title\": \"Plain\",\n \"appearances\": [\n \"light\"\n ]\n },\n {\n \"name\": \"praxis-v2\",\n \"title\": \"Praxis V2\",\n \"appearances\": [\n \"light\",\n \"dark\"\n ]\n },\n {\n \"name\": \"praxis\",\n \"title\": \"Praxis\",\n \"appearances\": [\n \"dark\",\n \"light\"\n ]\n },\n {\n \"name\": \"synaptiq\",\n \"title\": \"Synaptiq\",\n \"appearances\": [\n \"light\",\n \"dark\"\n ]\n },\n {\n \"name\": \"ux-builder\",\n \"title\": \"UX Builder\",\n \"appearances\": [\n \"light\",\n \"dark\"\n ]\n }\n ],\n \"designSystems\": [\n {\n \"name\": \"carbon\",\n \"title\": \"Carbon\",\n \"source\": {\n \"system\": \"IBM Carbon Design System\",\n \"version\": \"v11\",\n \"url\": \"https://github.com/carbon-design-system/carbon\"\n }\n },\n {\n \"name\": \"databricks\",\n \"title\": \"Databricks\",\n \"source\": {\n \"system\": \"Databricks AppKit UI\",\n \"version\": \"@databricks/appkit-ui 0.81.0; @dbx-tools/ui-appkit 0.9.43\",\n \"url\": \"https://docs.dbx.tools/packages/ui-appkit\"\n }\n },\n {\n \"name\": \"fluent\",\n \"title\": \"Fluent 2\",\n \"source\": {\n \"system\": \"Fluent 2\",\n \"version\": \"@fluentui/react-components v9\",\n \"url\": \"https://github.com/microsoft/fluentui\"\n }\n },\n {\n \"name\": \"material\",\n \"title\": \"Material Design 3\",\n \"source\": {\n \"system\": \"Material Design 3\",\n \"version\": \"M3\",\n \"url\": \"https://m3.material.io\"\n }\n }\n ],\n \"previewPairs\": [\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"material\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"databricks\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"plain\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"plain\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"plain\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"plain\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"material\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis-v2\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"material\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"praxis\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"material\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"synaptiq\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"carbon\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"databricks\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"fluent\",\n \"appearance\": \"light\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"material\",\n \"appearance\": \"dark\"\n },\n {\n \"brand\": \"ux-builder\",\n \"designSystem\": \"material\",\n \"appearance\": \"light\"\n }\n ],\n \"tokens\": [\n \"accent\",\n \"badge-bg\",\n \"badge-fg\",\n \"badge-radius\",\n \"badge-size\",\n \"body\",\n \"border\",\n \"btn-focus-offset\",\n \"btn-focus-ring\",\n \"btn-hover-mix\",\n \"btn-lift\",\n \"btn-lift-hover\",\n \"btn-lift-press\",\n \"btn-lift-quiet\",\n \"btn-min-height\",\n \"btn-pad-x\",\n \"btn-press-mix\",\n \"btn-radius\",\n \"btn-secondary-bg\",\n \"btn-secondary-border\",\n \"btn-secondary-fg\",\n \"btn-shift-hover\",\n \"btn-shift-press\",\n \"btn-size\",\n \"btn-text-fg\",\n \"btn-weight\",\n \"card-bg\",\n \"card-border\",\n \"card-pad\",\n \"check-border\",\n \"check-on-bg\",\n \"check-on-fg\",\n \"check-radius\",\n \"check-size\",\n \"favicon\",\n \"field-bg\",\n \"field-border\",\n \"field-border-bottom\",\n \"field-focus-offset\",\n \"field-focus-outline\",\n \"field-focus-shadow\",\n \"field-height\",\n \"field-hover-edge\",\n \"field-invalid-shadow\",\n \"field-label-fg\",\n \"field-label-size\",\n \"field-label-tracking\",\n \"field-label-transform\",\n \"field-label-weight\",\n \"field-pad-x\",\n \"field-radius\",\n \"font-body\",\n \"font-display\",\n \"font-heading\",\n \"font-mono\",\n \"ink\",\n \"leading-body\",\n \"leading-tight\",\n \"logo-aspect\",\n \"logo-bg\",\n \"logo-height\",\n \"logo-height-sm\",\n \"logo-image\",\n \"logo-mask\",\n \"logo-paint\",\n \"mark-bg\",\n \"mark-image\",\n \"mark-mask\",\n \"measure\",\n \"menu-bg\",\n \"menu-border\",\n \"menu-item-height\",\n \"menu-item-hover\",\n \"menu-item-on-bg\",\n \"menu-item-on-fg\",\n \"menu-item-on-mark\",\n \"menu-item-on-weight\",\n \"menu-pad-y\",\n \"menu-radius\",\n \"menu-shadow\",\n \"muted\",\n \"muted-2\",\n \"navy\",\n \"notice-bg\",\n \"notice-border-width\",\n \"notice-edge-mix\",\n \"notice-radius\",\n \"notice-stripe\",\n \"notice-tint\",\n \"paper\",\n \"pill-bg\",\n \"pill-border\",\n \"pill-dot-size\",\n \"pill-gap\",\n \"pill-pad\",\n \"pill-radius\",\n \"pill-size\",\n \"pill-tracking\",\n \"pill-transform\",\n \"pill-weight\",\n \"piq-badge-bg\",\n \"piq-badge-fg\",\n \"piq-badge-font-size\",\n \"piq-badge-radius\",\n \"piq-border-default\",\n \"piq-brand-favicon\",\n \"piq-brand-logo-aspect\",\n \"piq-brand-logo-bg\",\n \"piq-brand-logo-height\",\n \"piq-brand-logo-height-sm\",\n \"piq-brand-logo-image\",\n \"piq-brand-logo-mask\",\n \"piq-brand-logo-paint\",\n \"piq-brand-mark-bg\",\n \"piq-brand-mark-image\",\n \"piq-brand-mark-mask\",\n \"piq-button-font-size\",\n \"piq-button-font-weight\",\n \"piq-button-ghost-fg\",\n \"piq-button-height\",\n \"piq-button-offset-hover\",\n \"piq-button-offset-press\",\n \"piq-button-padding-x\",\n \"piq-button-radius\",\n \"piq-button-secondary-bg\",\n \"piq-button-secondary-border\",\n \"piq-button-secondary-fg\",\n \"piq-button-shadow\",\n \"piq-button-shadow-flat\",\n \"piq-button-shadow-hover\",\n \"piq-button-shadow-press\",\n \"piq-card-bg\",\n \"piq-card-border\",\n \"piq-card-padding\",\n \"piq-check-border\",\n \"piq-check-checked-bg\",\n \"piq-check-checked-fg\",\n \"piq-check-radius\",\n \"piq-check-size\",\n \"piq-choice-picker-border\",\n \"piq-choice-picker-divider\",\n \"piq-choice-picker-font-size\",\n \"piq-choice-picker-font-weight\",\n \"piq-choice-picker-gap\",\n \"piq-choice-picker-height\",\n \"piq-choice-picker-option-bg\",\n \"piq-choice-picker-option-border\",\n \"piq-choice-picker-option-fg\",\n \"piq-choice-picker-option-hover-bg\",\n \"piq-choice-picker-option-radius\",\n \"piq-choice-picker-option-selected-bg\",\n \"piq-choice-picker-option-selected-check\",\n \"piq-choice-picker-option-selected-fg\",\n \"piq-choice-picker-padding-x\",\n \"piq-choice-picker-radius\",\n \"piq-color-accent\",\n \"piq-color-border\",\n \"piq-color-ground\",\n \"piq-color-ground-recessed\",\n \"piq-color-on-accent\",\n \"piq-color-structure\",\n \"piq-color-surface\",\n \"piq-color-surface-sunken\",\n \"piq-color-text\",\n \"piq-color-text-muted\",\n \"piq-color-text-strong\",\n \"piq-color-text-subtle\",\n \"piq-field-bg\",\n \"piq-field-border\",\n \"piq-field-border-bottom\",\n \"piq-field-border-hover\",\n \"piq-field-focus-offset\",\n \"piq-field-focus-outline\",\n \"piq-field-focus-shadow\",\n \"piq-field-height\",\n \"piq-field-invalid-shadow\",\n \"piq-field-label-fg\",\n \"piq-field-label-font-size\",\n \"piq-field-label-font-weight\",\n \"piq-field-label-letter-spacing\",\n \"piq-field-label-text-transform\",\n \"piq-field-padding-x\",\n \"piq-field-radius\",\n \"piq-focus-offset\",\n \"piq-focus-ring\",\n \"piq-font-body\",\n \"piq-font-display\",\n \"piq-font-heading\",\n \"piq-font-mono\",\n \"piq-font-size-body\",\n \"piq-font-size-display\",\n \"piq-font-size-heading\",\n \"piq-font-size-label\",\n \"piq-font-size-lead\",\n \"piq-font-size-small\",\n \"piq-font-size-title\",\n \"piq-font-weight-regular\",\n \"piq-font-weight-strong\",\n \"piq-icon-set\",\n \"piq-letter-spacing-eyebrow\",\n \"piq-letter-spacing-label\",\n \"piq-line-height-body\",\n \"piq-line-height-tight\",\n \"piq-menu-bg\",\n \"piq-menu-border\",\n \"piq-menu-item-height\",\n \"piq-menu-item-hover-bg\",\n \"piq-menu-item-selected-bg\",\n \"piq-menu-item-selected-fg\",\n \"piq-menu-item-selected-font-weight\",\n \"piq-menu-item-selected-indicator\",\n \"piq-menu-padding-y\",\n \"piq-menu-radius\",\n \"piq-menu-shadow\",\n \"piq-nav-bar-height\",\n \"piq-nav-item-direction\",\n \"piq-nav-item-gap\",\n \"piq-nav-item-label-font-size\",\n \"piq-nav-item-selected-bg\",\n \"piq-nav-item-selected-border\",\n \"piq-nav-width\",\n \"piq-notice-bg\",\n \"piq-notice-border-tone-mix\",\n \"piq-notice-border-width\",\n \"piq-notice-radius\",\n \"piq-notice-stripe-width\",\n \"piq-notice-tone-mix\",\n \"piq-page-header-gap\",\n \"piq-page-header-padding-y\",\n \"piq-page-header-title-font-size\",\n \"piq-pill-bg\",\n \"piq-pill-border\",\n \"piq-pill-dot-size\",\n \"piq-pill-font-size\",\n \"piq-pill-font-weight\",\n \"piq-pill-gap\",\n \"piq-pill-letter-spacing\",\n \"piq-pill-padding\",\n \"piq-pill-radius\",\n \"piq-pill-text-transform\",\n \"piq-progress-fill-bg\",\n \"piq-progress-height\",\n \"piq-progress-radius\",\n \"piq-progress-track-bg\",\n \"piq-radius-card\",\n \"piq-radius-control\",\n \"piq-shadow-card\",\n \"piq-shadow-overlay\",\n \"piq-size-breakpoint-expanded\",\n \"piq-size-breakpoint-extra-large\",\n \"piq-size-breakpoint-large\",\n \"piq-size-breakpoint-medium\",\n \"piq-size-content-form\",\n \"piq-size-content-page\",\n \"piq-size-measure\",\n \"piq-size-target-minimum\",\n \"piq-size-target-touch\",\n \"piq-skeleton-bg\",\n \"piq-skeleton-effect\",\n \"piq-skeleton-radius\",\n \"piq-space-1\",\n \"piq-space-2\",\n \"piq-space-3\",\n \"piq-space-4\",\n \"piq-space-5\",\n \"piq-space-6\",\n \"piq-space-7\",\n \"piq-space-8\",\n \"piq-space-gutter-compact\",\n \"piq-space-gutter-expanded\",\n \"piq-space-gutter-extra-large\",\n \"piq-space-gutter-large\",\n \"piq-space-gutter-medium\",\n \"piq-spinner-line-cap\",\n \"piq-spinner-stroke-width\",\n \"piq-spinner-track-color\",\n \"piq-state-closed\",\n \"piq-state-evaluation\",\n \"piq-state-layer-hover\",\n \"piq-state-layer-press\",\n \"piq-state-limited\",\n \"piq-state-live\",\n \"piq-state-purchasing\",\n \"piq-switch-checked-thumb-bg\",\n \"piq-switch-checked-thumb-size\",\n \"piq-switch-checked-track-bg\",\n \"piq-switch-height\",\n \"piq-switch-radius\",\n \"piq-switch-thumb-bg\",\n \"piq-switch-thumb-inset\",\n \"piq-switch-thumb-size\",\n \"piq-switch-track-bg\",\n \"piq-switch-track-border\",\n \"piq-switch-width\",\n \"piq-table-cell-padding-x\",\n \"piq-table-cell-padding-y\",\n \"piq-table-font-size\",\n \"piq-table-header-bg\",\n \"piq-table-header-border\",\n \"piq-table-header-fg\",\n \"piq-table-header-font-size\",\n \"piq-table-header-font-weight\",\n \"piq-table-header-height\",\n \"piq-table-header-letter-spacing\",\n \"piq-table-header-text-transform\",\n \"piq-table-row-border\",\n \"piq-table-row-height\",\n \"piq-table-row-hover-bg\",\n \"piq-table-row-stripe-bg\",\n \"piq-tabs-indicator-height\",\n \"piq-tabs-list-border\",\n \"piq-tabs-tab-bg-selected\",\n \"piq-tabs-tab-padding-x\",\n \"piq-tabs-tab-radius\",\n \"piq-toast-action-fg\",\n \"piq-toast-bg\",\n \"piq-toast-fg\",\n \"piq-toast-radius\",\n \"piq-toast-shadow\",\n \"piq-toast-stripe-width\",\n \"radius\",\n \"radius-card\",\n \"rail\",\n \"rule\",\n \"seg-bg\",\n \"seg-divider\",\n \"seg-fg\",\n \"seg-gap\",\n \"seg-height\",\n \"seg-hover-bg\",\n \"seg-on-bg\",\n \"seg-on-fg\",\n \"seg-opt-border\",\n \"seg-opt-radius\",\n \"seg-outline\",\n \"seg-pad-x\",\n \"seg-radius\",\n \"seg-size\",\n \"seg-tick\",\n \"seg-weight\",\n \"shadow-card\",\n \"shadow-raised\",\n \"size-body\",\n \"size-display\",\n \"size-heading\",\n \"size-intro\",\n \"size-label\",\n \"size-small\",\n \"size-title\",\n \"space-1\",\n \"space-2\",\n \"space-3\",\n \"space-4\",\n \"space-5\",\n \"space-6\",\n \"space-7\",\n \"space-8\",\n \"state-closed\",\n \"state-evaluation\",\n \"state-limited\",\n \"state-live\",\n \"state-purchasing\",\n \"surface\",\n \"surface-sunken\",\n \"switch-height\",\n \"switch-inset\",\n \"switch-off-bg\",\n \"switch-off-border\",\n \"switch-on-bg\",\n \"switch-radius\",\n \"switch-thumb-off\",\n \"switch-thumb-off-bg\",\n \"switch-thumb-on\",\n \"switch-thumb-on-bg\",\n \"switch-width\",\n \"table-head-bg\",\n \"table-head-border\",\n \"table-head-fg\",\n \"table-head-height\",\n \"table-head-size\",\n \"table-head-tracking\",\n \"table-head-transform\",\n \"table-head-weight\",\n \"table-pad-x\",\n \"table-pad-y\",\n \"table-row-height\",\n \"table-row-hover\",\n \"table-size\",\n \"toast-action-fg\",\n \"toast-bg\",\n \"toast-fg\",\n \"toast-radius\",\n \"toast-shadow\",\n \"toast-stripe\",\n \"tracking-kicker\",\n \"tracking-label\",\n \"weight-bold\",\n \"weight-normal\"\n ]\n}\n","import { useEffect } from \"react\";\n\n/* The active theme's favicon (FEAT-004 SDK-16, US-010-AC11, AC12).\n\n A browser takes its icon from <link rel=\"icon\"> in the head, never from\n CSS, so the theme's --piq-brand-favicon has to be copied there. The SDK\n keeps one link of its own (data-piq-favicon), last in the head so it wins\n over the app's: its href is the favicon of the theme on the element it\n reads. A theme without a favicon removes that link, and the app's own icon\n shows again. The token is registered as a URL (@ux-builder/tokens), so the\n value read here is already absolute, or a data: URI where the app's\n bundler inlined a small mark: quoted, and holding quotes and brackets of\n its own, so it is read to its closing quote.\n\n The top-level ThemeProvider does this itself. <Favicon /> does it for a\n page that selects its theme with data-theme on <html> instead. */\n\nconst ATTR = \"data-piq-favicon\";\nconst TYPES = { svg: \"image/svg+xml\", png: \"image/png\", webp: \"image/webp\", ico: \"image/x-icon\" };\n// url(\"…\"), url('…') or url(…), with CSS escapes inside the quotes.\nconst URL_TOKEN = /url\\(\\s*(?:\"((?:[^\"\\\\]|\\\\.)*)\"|'((?:[^'\\\\]|\\\\.)*)'|([^\\s\"'()]+))\\s*\\)/;\n\n/* The favicon URL the theme on an element sets, or null. */\nexport function faviconOf(element) {\n if (typeof window === \"undefined\" || !element) return null;\n const value = getComputedStyle(element).getPropertyValue(\"--piq-brand-favicon\").trim();\n const m = URL_TOKEN.exec(value);\n return m ? (m[1] ?? m[2] ?? m[3]).replace(/\\\\(.)/g, \"$1\") : null;\n}\n\n/* Sets the page's icon to the favicon of the theme on element (default: <html>); removes the SDK's icon when that theme has none. Returns the URL used, or null. */\nexport function applyFavicon(element = typeof document === \"undefined\" ? null : document.documentElement) {\n if (typeof document === \"undefined\" || !element) return null;\n const href = faviconOf(element);\n let link = document.head.querySelector(`link[${ATTR}]`);\n if (!href) { link?.remove(); return null; }\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n link.setAttribute(ATTR, \"\");\n }\n const type = /^data:([^;,]+)/.exec(href)?.[1] ?? TYPES[/\\.(\\w+)(?:[?#].*)?$/.exec(href)?.[1]?.toLowerCase()];\n if (type) link.type = type; else link.removeAttribute(\"type\");\n if (link.getAttribute(\"href\") !== href) link.setAttribute(\"href\", href);\n document.head.appendChild(link); // last, so it is the icon browsers use\n return href;\n}\n\n/* Removes the SDK's icon, leaving the app's own. */\nexport function removeFavicon() {\n if (typeof document !== \"undefined\") document.head.querySelector(`link[${ATTR}]`)?.remove();\n}\n\n/* Keeps the page's icon on the theme's favicon, for a page that sets data-theme and data-appearance on <html> without a ThemeProvider; renders nothing. */\nexport function Favicon() {\n useEffect(() => {\n const root = document.documentElement;\n const update = () => applyFavicon(root);\n update();\n const observer = new MutationObserver(update);\n observer.observe(root, { attributes: true, attributeFilter: [\"data-theme\", \"data-appearance\"] });\n const mq = window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n mq?.addEventListener(\"change\", update);\n return () => { observer.disconnect(); mq?.removeEventListener(\"change\", update); removeFavicon(); };\n }, []);\n return null;\n}\n","import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { themes as MANIFEST_THEMES, tokens as TOKEN_NAMES } from \"@ux-builder/tokens/manifest.json\";\nimport { applyFavicon, removeFavicon } from \"./brand/favicon.js\";\n\n/* The theme an app selects (ADR-018, CONTRACT-003), set on one element for\n its subtree (US-011).\n\n <ThemeProvider theme=\"databricks\" appearance=\"system\">…</ThemeProvider>\n\n The provider's element carries data-theme and data-appearance, so the\n theme CSS (@ux-builder/tokens/themes/<theme>.css) applies to everything\n inside it. appearance may be \"light\", \"dark\" or \"system\"; \"system\" is\n resolved from the user's preference before any component sees it, and\n followed when the preference changes. useTheme() reads the active theme\n and switches it at run time; the nearest provider wins.\n\n For an embedded view (ADR-011), pass tokens (a theme's resolved values,\n as in @ux-builder/tokens/resolved/<theme>.<appearance>.json) instead: they\n are set as custom properties on the element and no stylesheet is needed.\n\n The top-level provider also keeps the page's icon on the theme's favicon\n (--piq-brand-favicon), as it changes with theme and appearance; a theme\n without one leaves the app's own icon. favicon={false} turns this off. An\n embedded view, or a provider inside another, never touches it.\n\n The top-level provider also answers a \"piq:set-theme\" window event\n ({ detail: { theme, appearance } }), so a tool such as @ux-builder/audit can\n switch the app through every theme as a user would. */\n\n// Exported for the package's own components (Icon); apps use useTheme().\nexport const ThemeContext = createContext(null);\nconst THEMES = new Map(MANIFEST_THEMES.map((t) => [t.name, t]));\nconst QUERY = \"(prefers-color-scheme: dark)\";\n/* The window event that asks the top-level provider to switch theme or appearance. */\nconst SET_THEME = \"piq:set-theme\";\n// Written so bundlers replace process.env.NODE_ENV; without one, warnings stay on.\nlet dev = true;\ntry { dev = process.env.NODE_ENV !== \"production\"; } catch { /* no bundler */ }\nconst warn = (msg) => { if (dev) console.warn(`@ux-builder/ui ThemeProvider: ${msg}`); };\n\nfunction systemAppearance() {\n if (typeof window === \"undefined\" || !window.matchMedia) return null;\n return window.matchMedia(QUERY).matches ? \"dark\" : \"light\";\n}\n\n/* The appearance a theme will actually show: the one asked for if the theme\n has it, else the theme's own default. */\nexport function resolveAppearance(theme, preference, system = systemAppearance()) {\n const wanted = preference === \"system\" ? system : preference;\n const known = THEMES.get(theme);\n if (!known) return wanted ?? null;\n if (wanted && known.appearances.includes(wanted)) return wanted;\n return known.default;\n}\n\n// useLayoutEffect warns during server rendering; there it does nothing anyway.\nconst useBeforePaint = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\n/* An embedded view's own values, and every other token any theme sets reset\n to initial, so nothing the page's theme sets (a component's background,\n say, computed there in the page's appearance) reaches the view; the\n widgets fall back to the view's own role tokens. */\nconst asVariables = (tokens) => ({\n ...Object.fromEntries(TOKEN_NAMES.map((k) => [`--${k}`, \"initial\"])),\n ...Object.fromEntries(Object.entries(tokens).filter(([, v]) => !String(v).startsWith(\"url(\")).map(([k, v]) => [`--${k}`, v])),\n});\n\n/* Sets the theme and appearance (light, dark or system) for its subtree, and the page's favicon from the theme; pass tokens instead of theme for an embedded view. */\nexport function ThemeProvider({ theme: themeProp, appearance: appearanceProp = \"system\", tokens, favicon = true, onChange, as: Tag = \"div\", style, children, ...rest }) {\n const parent = useContext(ThemeContext);\n const ref = useRef(null);\n const [theme, setThemeState] = useState(themeProp);\n const [preference, setPreference] = useState(appearanceProp);\n const [system, setSystem] = useState(systemAppearance);\n\n // Props are the starting point and stay in charge: a new prop value wins.\n useEffect(() => setThemeState(themeProp), [themeProp]);\n useEffect(() => setPreference(appearanceProp), [appearanceProp]);\n\n // Follow the user's preference while it is the one asked for.\n useBeforePaint(() => {\n if (preference !== \"system\" || typeof window === \"undefined\" || !window.matchMedia) return undefined;\n const mq = window.matchMedia(QUERY);\n const update = () => setSystem(mq.matches ? \"dark\" : \"light\");\n update();\n mq.addEventListener(\"change\", update);\n return () => mq.removeEventListener(\"change\", update);\n }, [preference]);\n\n const appearance = tokens ? (preference === \"system\" ? system ?? \"light\" : preference) : resolveAppearance(theme, preference, system);\n\n useEffect(() => {\n if (tokens) return;\n if (theme && !THEMES.has(theme)) warn(`unknown theme \"${theme}\"; known: ${[...THEMES.keys()].join(\", \")}`);\n else if (theme && preference !== \"system\" && appearance !== preference) warn(`theme \"${theme}\" has no ${preference} appearance; using ${appearance}`);\n }, [theme, preference, appearance, tokens]);\n\n // The page's icon: only the top-level provider of an app (not an embedded view) sets it.\n const ownsFavicon = favicon && !tokens && !parent;\n useBeforePaint(() => { if (ownsFavicon) applyFavicon(ref.current); }, [ownsFavicon, theme, appearance]);\n useEffect(() => (ownsFavicon ? removeFavicon : undefined), [ownsFavicon]);\n\n const setTheme = useCallback((t) => { setThemeState(t); onChange?.({ theme: t, appearance: preference }); }, [onChange, preference]);\n const setAppearance = useCallback((a) => { setPreference(a); onChange?.({ theme, appearance: a }); }, [onChange, theme]);\n\n // A tool outside the app (@ux-builder/audit, a test) asks the top-level\n // provider to switch, as a user would: window.dispatchEvent(new\n // CustomEvent(\"piq:set-theme\", { detail: { theme, appearance } })).\n const ownsPage = !tokens && !parent;\n useEffect(() => {\n if (!ownsPage || typeof window === \"undefined\") return undefined;\n const onRequest = (e) => {\n const { theme: t, appearance: a } = e.detail ?? {};\n if (t) setThemeState(t);\n if (a) setPreference(a);\n if (t || a) onChange?.({ theme: t ?? theme, appearance: a ?? preference });\n };\n window.addEventListener(SET_THEME, onRequest);\n return () => window.removeEventListener(SET_THEME, onRequest);\n }, [ownsPage, onChange, theme, preference]);\n\n const value = useMemo(() => ({\n theme: tokens ? null : theme,\n appearance,\n preference,\n themes: MANIFEST_THEMES,\n setTheme,\n setAppearance,\n }), [theme, appearance, preference, tokens, setTheme, setAppearance]);\n\n const attrs = tokens\n ? { style: { ...asVariables(tokens), colorScheme: appearance ?? undefined, ...style } }\n : { \"data-theme\": theme, ...(appearance && { \"data-appearance\": appearance }), style: { colorScheme: appearance ?? undefined, ...style } };\n\n return (\n <ThemeContext.Provider value={value}>\n <Tag ref={ref} {...rest} {...attrs}>{children}</Tag>\n </ThemeContext.Provider>\n );\n}\n\n/* The nearest provider's theme: { theme, appearance, preference, themes,\n setTheme, setAppearance }. appearance is always \"light\" or \"dark\". */\nexport function useTheme() {\n const value = useContext(ThemeContext);\n if (!value) throw new Error(\"useTheme() needs a <ThemeProvider> above it\");\n return value;\n}\n","/* Generated by scripts/gen-icons.mjs from the icon sets below. Do not edit:\n change ICONS there and run npm run icons --workspace @ux-builder/ui.\n\n material @material-symbols/svg-400@0.47.6, Apache-2.0 (licenses/material.LICENSE)\n fluent @fluentui/svg-icons@1.1.343, MIT (licenses/fluent.LICENSE)\n carbon @carbon/icons@11.89.0, Apache-2.0 (licenses/carbon.LICENSE)\n lucide lucide-static@1.52.0, ISC (licenses/lucide.LICENSE) */\n\nexport const SETS = {\n \"material\": {\n \"package\": \"@material-symbols/svg-400\",\n \"version\": \"0.47.6\",\n \"license\": \"Apache-2.0\",\n \"svg\": {\n \"fill\": \"currentColor\"\n }\n },\n \"fluent\": {\n \"package\": \"@fluentui/svg-icons\",\n \"version\": \"1.1.343\",\n \"license\": \"MIT\",\n \"svg\": {\n \"fill\": \"currentColor\"\n }\n },\n \"carbon\": {\n \"package\": \"@carbon/icons\",\n \"version\": \"11.89.0\",\n \"license\": \"Apache-2.0\",\n \"svg\": {\n \"fill\": \"currentColor\"\n }\n },\n \"lucide\": {\n \"package\": \"lucide-static\",\n \"version\": \"1.52.0\",\n \"license\": \"ISC\",\n \"svg\": {\n \"fill\": \"none\",\n \"stroke\": \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }\n }\n};\n\nexport const GLYPHS = {\n \"material\": {\n \"add\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z\\\"/>\"\n },\n \"arrow-left\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60H274Z\\\"/>\"\n },\n \"arrow-right\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M686-450H160v-60h526L438-758l42-42 320 320-320 320-42-42 248-248Z\\\"/>\"\n },\n \"calendar\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18H180Zm0-60h600v-430H180v430Zm0-490h600v-130H180v130Zm0 0v-130 130Z\\\"/>\"\n },\n \"check\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z\\\"/>\"\n },\n \"check-circle\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"m421-298 283-283-46-45-237 237-120-120-45 45 165 166Zm59 218q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Zm0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140Zm0-340Z\\\"/>\"\n },\n \"chevron-down\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z\\\"/>\"\n },\n \"chevron-left\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z\\\"/>\"\n },\n \"chevron-right\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z\\\"/>\"\n },\n \"chevron-up\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z\\\"/>\"\n },\n \"close\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"m249-207-42-42 231-231-231-231 42-42 231 231 231-231 42 42-231 231 231 231-42 42-231-231-231 231Z\\\"/>\"\n },\n \"copy\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M300-200q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h440q24 0 42 18t18 42v560q0 24-18 42t-42 18H300Zm0-60h440v-560H300v560ZM180-80q-24 0-42-18t-18-42v-620h60v620h500v60H180Zm120-180v-560 560Z\\\"/>\"\n },\n \"delete\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M261-120q-24.75 0-42.37-17.63Q201-155.25 201-180v-570h-41v-60h188v-30h264v30h188v60h-41v570q0 24-18 42t-42 18H261Zm438-630H261v570h438v-570ZM367-266h60v-399h-60v399Zm166 0h60v-399h-60v399ZM261-750v570-570Z\\\"/>\"\n },\n \"download\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M480-313 287-506l43-43 120 120v-371h60v371l120-120 43 43-193 193ZM220-160q-24 0-42-18t-18-42v-143h60v143h520v-143h60v143q0 24-18 42t-42 18H220Z\\\"/>\"\n },\n \"edit\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M180-180h44l472-471-44-44-472 471v44Zm-60 60v-128l575-574q8-8 19-12.5t23-4.5q11 0 22 4.5t20 12.5l44 44q9 9 13 20t4 22q0 11-4.5 22.5T823-694L248-120H120Zm659-617-41-41 41 41Zm-105 64-22-22 44 44-22-22Z\\\"/>\"\n },\n \"error\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M503.5-289.48q9.5-9.48 9.5-23.5t-9.48-23.52q-9.48-9.5-23.5-9.5t-23.52 9.48q-9.5 9.48-9.5 23.5t9.48 23.52q9.48 9.5 23.5 9.5t23.52-9.48ZM453-433h60v-253h-60v253Zm27.27 353q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z\\\"/>\"\n },\n \"external-link\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h279v60H180v600h600v-279h60v279q0 24-18 42t-42 18H180Zm202-219-42-43 398-398H519v-60h321v321h-60v-218L382-339Z\\\"/>\"\n },\n \"filter\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M400-240v-60h160v60H400ZM240-450v-60h480v60H240ZM120-660v-60h720v60H120Z\\\"/>\"\n },\n \"help\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M511-258q11-11 11-27t-11-27q-11-11-27-11t-27 11q-11 11-11 27t11 27q11 11 27 11t27-11Zm-62-135h59q0-26 6.5-47.5T555-490q31-26 44-51t13-55q0-53-34.5-85T486-713q-49 0-86.5 24.5T345-621l53 20q11-28 33-43.5t52-15.5q34 0 55 18.5t21 47.5q0 22-13 41.5T508-512q-30 26-44.5 51.5T449-393Zm31 313q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Zm0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140Zm0-340Z\\\"/>\"\n },\n \"home\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M220-180h150v-250h220v250h150v-390L480-765 220-570v390Zm-60 60v-480l320-240 320 240v480H530v-250H430v250H160Zm320-353Z\\\"/>\"\n },\n \"info\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M453-280h60v-240h-60v240Zm50.5-323.2q9.5-9.2 9.5-22.8 0-14.45-9.48-24.22-9.48-9.78-23.5-9.78t-23.52 9.78Q447-640.45 447-626q0 13.6 9.48 22.8 9.48 9.2 23.5 9.2t23.52-9.2ZM480.27-80q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z\\\"/>\"\n },\n \"lock\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M220-80q-24.75 0-42.37-17.63Q160-115.25 160-140v-434q0-24.75 17.63-42.38Q195.25-634 220-634h70v-96q0-78.85 55.61-134.42Q401.21-920 480.11-920q78.89 0 134.39 55.58Q670-808.85 670-730v96h70q24.75 0 42.38 17.62Q800-598.75 800-574v434q0 24.75-17.62 42.37Q764.75-80 740-80H220Zm0-60h520v-434H220v434Zm314.5-162.03Q557-324.06 557-355q0-30-22.67-54.5t-54.5-24.5q-31.83 0-54.33 24.5t-22.5 55q0 30.5 22.67 52.5t54.5 22q31.83 0 54.33-22.03ZM350-634h260v-96q0-54.17-37.88-92.08-37.88-37.92-92-37.92T388-822.08q-38 37.91-38 92.08v96ZM220-140v-434 434Z\\\"/>\"\n },\n \"menu\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M120-240v-60h720v60H120Zm0-210v-60h720v60H120Zm0-210v-60h720v60H120Z\\\"/>\"\n },\n \"more\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M207.86-432Q188-432 174-446.14t-14-34Q160-500 174.14-514t34-14Q228-528 242-513.86t14 34Q256-460 241.86-446t-34 14Zm272 0Q460-432 446-446.14t-14-34Q432-500 446.14-514t34-14Q500-528 514-513.86t14 34Q528-460 513.86-446t-34 14Zm272 0Q732-432 718-446.14t-14-34Q704-500 718.14-514t34-14Q772-528 786-513.86t14 34Q800-460 785.86-446t-34 14Z\\\"/>\"\n },\n \"refresh\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M480-160q-133 0-226.5-93.5T160-480q0-133 93.5-226.5T480-800q85 0 149 34.5T740-671v-129h60v254H546v-60h168q-38-60-97-97t-137-37q-109 0-184.5 75.5T220-480q0 109 75.5 184.5T480-220q83 0 152-47.5T728-393h62q-29 105-115 169t-195 64Z\\\"/>\"\n },\n \"search\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M796-121 533-384q-30 26-70 40.5T378-329q-108 0-183-75t-75-181q0-106 75-181t182-75q106 0 180.5 75T632-585q0 43-14 83t-42 75l264 262-44 44ZM377-389q81 0 138-57.5T572-585q0-81-57-138.5T377-781q-82 0-139.5 57.5T180-585q0 81 57.5 138.5T377-389Z\\\"/>\"\n },\n \"settings\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm48-60h88l14-112q33-8 62.5-25t53.5-41l106 46 40-72-94-69q4-17 6.5-33.5T715-480q0-17-2-33.5t-7-33.5l94-69-40-72-106 46q-23-26-52-43.5T538-708l-14-112h-88l-14 112q-34 7-63.5 24T306-642l-106-46-40 72 94 69q-4 17-6.5 33.5T245-480q0 17 2.5 33.5T254-413l-94 69 40 72 106-46q24 24 53.5 41t62.5 25l14 112Zm44-210q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Zm0-130Z\\\"/>\"\n },\n \"sort-ascending\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M450-160v-526L202-438l-42-42 320-320 320 320-42 42-248-248v526h-60Z\\\"/>\"\n },\n \"sort-descending\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M450-800v526L202-522l-42 42 320 320 320-320-42-42-248 248v-526h-60Z\\\"/>\"\n },\n \"upload\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M450-313v-371L330-564l-43-43 193-193 193 193-43 43-120-120v371h-60ZM220-160q-24 0-42-18t-18-42v-143h60v143h520v-143h60v143q0 24-18 42t-42 18H220Z\\\"/>\"\n },\n \"user\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M372-523q-42-42-42-108t42-108q42-42 108-42t108 42q42 42 42 108t-42 108q-42 42-108 42t-108-42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5T731-360q31 14 50 41t19 65v94H160Zm60-60h520v-34q0-16-9.5-30.5T707-306q-64-31-117-42.5T480-360q-57 0-111 11.5T252-306q-14 7-23 21.5t-9 30.5v34Zm324.5-346.5Q570-592 570-631t-25.5-64.5Q519-721 480-721t-64.5 25.5Q390-670 390-631t25.5 64.5Q441-541 480-541t64.5-25.5ZM480-631Zm0 411Z\\\"/>\"\n },\n \"view\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"M600.5-379.5Q650-429 650-500t-49.5-120.5Q551-670 480-670t-120.5 49.5Q310-571 310-500t49.5 120.5Q409-330 480-330t120.5-49.5Zm-200-41Q368-453 368-500t32.5-79.5Q433-612 480-612t79.5 32.5Q592-547 592-500t-32.5 79.5Q527-388 480-388t-79.5-32.5ZM216-283Q98-366 40-500q58-134 176-217t264-83q146 0 264 83t176 217q-58 134-176 217t-264 83q-146 0-264-83Zm264-217Zm222.5 174.5Q804-391 857-500q-53-109-154.5-174.5T480-740q-121 0-222.5 65.5T102-500q54 109 155.5 174.5T480-260q121 0 222.5-65.5Z\\\"/>\"\n },\n \"warning\": {\n \"viewBox\": \"0 -960 960 960\",\n \"body\": \"<path d=\\\"m40-120 440-760 440 760H40Zm104-60h672L480-760 144-180Zm361.5-65.68q8.5-8.67 8.5-21.5 0-12.82-8.68-21.32-8.67-8.5-21.5-8.5-12.82 0-21.32 8.68-8.5 8.67-8.5 21.5 0 12.82 8.68 21.32 8.67 8.5 21.5 8.5 12.82 0 21.32-8.68ZM454-348h60v-224h-60v224Zm26-122Z\\\"/>\"\n }\n },\n \"fluent\": {\n \"add\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 3.25c.41 0 .75.34.75.75v7.25H20a.75.75 0 0 1 0 1.5h-7.25V20a.75.75 0 0 1-1.5 0v-7.25H4a.75.75 0 0 1 0-1.5h7.25V4c0-.41.34-.75.75-.75\\\"/>\"\n },\n \"arrow-left\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M10.73 19.8a.75.75 0 0 0 1.04-1.1l-6.25-5.95h14.73a.75.75 0 0 0 0-1.5H5.52l6.25-5.95a.75.75 0 0 0-1.04-1.1l-7.42 7.08a1 1 0 0 0 0 1.44z\\\"/>\"\n },\n \"arrow-right\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M13.27 4.2a.75.75 0 0 0-1.04 1.1l6.25 5.95H3.75a.75.75 0 0 0 0 1.5h14.73l-6.25 5.95a.75.75 0 0 0 1.04 1.1l7.42-7.08a1 1 0 0 0 0-1.44z\\\"/>\"\n },\n \"calendar\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M17.75 3C19.55 3 21 4.46 21 6.25v11.5c0 1.8-1.46 3.25-3.25 3.25H6.25A3.25 3.25 0 0 1 3 17.75V6.25C3 4.45 4.46 3 6.25 3zm1.75 5.5h-15v9.25c0 .97.78 1.75 1.75 1.75h11.5c.97 0 1.75-.78 1.75-1.75zm-11.75 6a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m4.25 0a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m-4.25-4a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m4.25 0a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m4.25 0a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5m1.5-6H6.25c-.97 0-1.75.78-1.75 1.75V7h15v-.75c0-.97-.78-1.75-1.75-1.75\\\"/>\"\n },\n \"check\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M4.53 12.97a.75.75 0 0 0-1.06 1.06l4.5 4.5c.3.3.77.3 1.06 0l11-11a.75.75 0 0 0-1.06-1.06L8.5 16.94z\\\"/>\"\n },\n \"check-circle\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17m-1.25 9.94 4.47-4.47a.75.75 0 0 1 1.13.98l-.07.08-5 5a.75.75 0 0 1-.98.07l-.08-.07-2.5-2.5a.75.75 0 0 1 .98-1.13l.08.07zl4.47-4.47z\\\"/>\"\n },\n \"chevron-down\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M4.22 8.47c.3-.3.77-.3 1.06 0L12 15.19l6.72-6.72a.75.75 0 1 1 1.06 1.06l-7.25 7.25c-.3.3-.77.3-1.06 0L4.22 9.53a.75.75 0 0 1 0-1.06\\\"/>\"\n },\n \"chevron-left\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M15.53 4.22c.3.3.3.77 0 1.06L8.81 12l6.72 6.72a.75.75 0 1 1-1.06 1.06l-7.25-7.25a.75.75 0 0 1 0-1.06l7.25-7.25c.3-.3.77-.3 1.06 0\\\"/>\"\n },\n \"chevron-right\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M8.47 4.22c-.3.3-.3.77 0 1.06L15.19 12l-6.72 6.72a.75.75 0 1 0 1.06 1.06l7.25-7.25c.3-.3.3-.77 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0\\\"/>\"\n },\n \"chevron-up\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M4.22 15.53c.3.3.77.3 1.06 0L12 8.81l6.72 6.72a.75.75 0 1 0 1.06-1.06l-7.25-7.25a.75.75 0 0 0-1.06 0l-7.25 7.25c-.3.3-.3.77 0 1.06\\\"/>\"\n },\n \"close\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m4.4 4.55.07-.08a.75.75 0 0 1 .98-.07l.08.07L12 10.94l6.47-6.47a.75.75 0 1 1 1.06 1.06L13.06 12l6.47 6.47c.27.27.3.68.07.98l-.07.08a.75.75 0 0 1-.98.07l-.08-.07L12 13.06l-6.47 6.47a.75.75 0 0 1-1.06-1.06L10.94 12 4.47 5.53a.75.75 0 0 1-.07-.98l.07-.08z\\\"/>\"\n },\n \"copy\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M8.5 8.5H6.25c-.97 0-1.75.78-1.75 1.75v7.5c0 .97.78 1.75 1.75 1.75h5c.88 0 1.6-.65 1.73-1.5h1.5a3.25 3.25 0 0 1-3.23 3h-5A3.25 3.25 0 0 1 3 17.75v-7.5C3 8.45 4.46 7 6.25 7H8.5zM17.75 3C19.55 3 21 4.46 21 6.25v7.5c0 1.8-1.46 3.25-3.25 3.25h-5a3.25 3.25 0 0 1-3.25-3.25v-7.5C9.5 4.45 10.96 3 12.75 3zm-5 1.5c-.97 0-1.75.78-1.75 1.75v7.5c0 .97.78 1.75 1.75 1.75h5c.97 0 1.75-.78 1.75-1.75v-7.5c0-.97-.78-1.75-1.75-1.75z\\\"/>\"\n },\n \"delete\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M10 5h4a2 2 0 1 0-4 0M8.5 5a3.5 3.5 0 1 1 7 0h5.75a.75.75 0 0 1 0 1.5h-1.32l-1.17 12.11A3.75 3.75 0 0 1 15.03 22H8.97a3.75 3.75 0 0 1-3.73-3.39L4.07 6.5H2.75a.75.75 0 0 1 0-1.5zm2 4.75a.75.75 0 0 0-1.5 0v7.5a.75.75 0 0 0 1.5 0zM14.25 9c.41 0 .75.34.75.75v7.5a.75.75 0 0 1-1.5 0v-7.5c0-.41.34-.75.75-.75m-7.52 9.47a2.25 2.25 0 0 0 2.24 2.03h6.06c1.15 0 2.12-.88 2.24-2.03L18.42 6.5H5.58z\\\"/>\"\n },\n \"download\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M18.25 20.5a.75.75 0 1 1 0 1.5h-13a.75.75 0 1 1 0-1.5zm-6.6-18.49h.1c.38 0 .7.28.74.64l.01.1v13.7l3.72-3.73a.75.75 0 0 1 .98-.07l.08.07c.27.27.3.68.07.98l-.07.08-5 5a.75.75 0 0 1-.97.07l-.09-.07-5-5a.75.75 0 0 1 .98-1.13l.08.07L11 16.43V2.76c0-.38.28-.7.65-.75h.1z\\\"/>\"\n },\n \"edit\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M20.95 3.05a3.6 3.6 0 0 0-5.06 0L3.94 15c-.4.4-.7.92-.82 1.48l-1.1 4.6a.75.75 0 0 0 .9.9l4.6-1.1A3 3 0 0 0 9 20.07L20.95 8.11a3.6 3.6 0 0 0 0-5.06m-4 1.06a2.08 2.08 0 1 1 2.94 2.94l-.89.89L16.06 5zM15 6.06 17.94 9l-10 10a1.6 1.6 0 0 1-.76.43l-3.42.8.82-3.4q.1-.45.42-.77z\\\"/>\"\n },\n \"error\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17m0 11a1 1 0 1 1 0 2 1 1 0 0 1 0-2M12 7c.37 0 .69.28.74.65v4.6a.75.75 0 0 1-1.48.1l-.01-.1v-4.5c0-.41.33-.75.74-.75\\\"/>\"\n },\n \"external-link\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M6.25 4.5c-.97 0-1.75.78-1.75 1.75v11.5c0 .97.78 1.75 1.75 1.75h11.5c.97 0 1.75-.78 1.75-1.75v-4a.75.75 0 0 1 1.5 0v4c0 1.8-1.46 3.25-3.25 3.25H6.25A3.25 3.25 0 0 1 3 17.75V6.25C3 4.45 4.46 3 6.25 3h4a.75.75 0 0 1 0 1.5zM13 3.75c0-.41.34-.75.75-.75h6.5c.41 0 .75.34.75.75v6.5a.75.75 0 0 1-1.5 0V5.56l-5.22 5.22a.75.75 0 0 1-1.06-1.06l5.22-5.22h-4.69a.75.75 0 0 1-.75-.75\\\"/>\"\n },\n \"filter\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M13.5 16a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5zm3-5a.75.75 0 0 1 0 1.5h-9a.75.75 0 0 1 0-1.5zm3-5a.75.75 0 0 1 0 1.5h-15a.75.75 0 0 1 0-1.5z\\\"/>\"\n },\n \"help\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 1.67a8.34 8.34 0 0 0 0 16.66 8.34 8.34 0 0 0 0-16.66m0 11.83a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-8.75a2.75 2.75 0 0 1 2.75 2.75c0 1.01-.3 1.57-1.05 2.36l-.17.17c-.62.62-.78.89-.78 1.47a.75.75 0 0 1-1.5 0c0-1.01.3-1.57 1.05-2.36l.17-.17c.62-.62.78-.89.78-1.47a1.25 1.25 0 0 0-2.5-.13v.13a.75.75 0 0 1-1.5 0A2.75 2.75 0 0 1 12 6.75\\\"/>\"\n },\n \"home\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M10.55 2.53c.84-.7 2.06-.7 2.9 0l6.75 5.7c.5.42.8 1.05.8 1.71v9.31c0 .97-.78 1.75-1.75 1.75h-3.5c-.97 0-1.75-.78-1.75-1.75v-5a.25.25 0 0 0-.25-.25h-3.5a.25.25 0 0 0-.25.25v5c0 .97-.78 1.75-1.75 1.75h-3.5C3.78 21 3 20.22 3 19.25v-9.3c0-.67.3-1.3.8-1.73zm1.93 1.15a.75.75 0 0 0-.96 0l-6.75 5.7a.8.8 0 0 0-.27.56v9.31c0 .14.11.25.25.25h3.5q.23-.01.25-.25v-5c0-.97.78-1.75 1.75-1.75h3.5c.97 0 1.75.78 1.75 1.75v5q.02.23.25.25h3.5q.23-.01.25-.25v-9.3q0-.36-.27-.58z\\\"/>\"\n },\n \"info\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20m0 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17m0 7c.41 0 .75.34.75.75v5a.75.75 0 0 1-1.5 0v-5c0-.41.34-.75.75-.75M12 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2\\\"/>\"\n },\n \"lock\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 1a5 5 0 0 1 5 5v2.01c1.68.13 3 1.53 3 3.24v7.5c0 1.8-1.46 3.25-3.25 3.25h-9.5A3.25 3.25 0 0 1 4 18.75v-7.5a3.25 3.25 0 0 1 3-3.24V6a5 5 0 0 1 5-5M7.25 9.5c-.97 0-1.75.78-1.75 1.75v7.5c0 .97.78 1.75 1.75 1.75h9.5c.97 0 1.75-.78 1.75-1.75v-7.5c0-.97-.78-1.75-1.75-1.75zM12 13.75a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5M12 2.5A3.5 3.5 0 0 0 8.5 6v2h7V6A3.5 3.5 0 0 0 12 2.5\\\"/>\"\n },\n \"menu\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M2.75 18h18.5a.75.75 0 0 1 .1 1.5H2.75a.75.75 0 0 1-.1-1.5zh18.5zm0-6.5h18.5a.75.75 0 0 1 .1 1.5H2.75a.75.75 0 0 1-.1-1.5zh18.5zm0-6.5h18.5a.75.75 0 0 1 .1 1.5H2.75a.75.75 0 0 1-.1-1.49zh18.5z\\\"/>\"\n },\n \"more\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M7.75 12a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0m6 0a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0M18 13.75a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5\\\"/>\"\n },\n \"refresh\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 4.5a7.5 7.5 0 1 0 7.42 6.4c-.07-.46.26-.9.72-.9.37 0 .7.26.76.62q.1.67.1 1.38a9 9 0 1 1-3-6.7V4.24a.75.75 0 0 1 1.5 0v3c0 .41-.34.75-.75.75h-3a.75.75 0 0 1 0-1.5h1.35a7.5 7.5 0 0 0-5.1-2\\\"/>\"\n },\n \"search\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M16.1 17.16a8 8 0 1 1 1.06-1.06l4.62 4.62a.75.75 0 1 1-1.06 1.06zM17.5 11a6.5 6.5 0 1 0-13 0 6.5 6.5 0 0 0 13 0\\\"/>\"\n },\n \"settings\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12.01 2.25q1.11.01 2.18.25c.32.07.55.33.59.65l.17 1.53a1.38 1.38 0 0 0 1.92 1.11l1.4-.61c.3-.13.64-.06.85.17a10 10 0 0 1 2.2 3.8c.1.3 0 .63-.26.82l-1.25.92a1.38 1.38 0 0 0 0 2.22l1.25.92c.26.19.36.52.27.82a10 10 0 0 1-2.2 3.8.75.75 0 0 1-.85.17l-1.4-.62a1.38 1.38 0 0 0-1.93 1.12l-.17 1.52a.75.75 0 0 1-.58.65 9.5 9.5 0 0 1-4.4 0 .75.75 0 0 1-.57-.65l-.17-1.52a1.38 1.38 0 0 0-1.93-1.11l-1.4.62a.75.75 0 0 1-.85-.18 10 10 0 0 1-2.2-3.8c-.1-.3 0-.63.26-.82l1.25-.92a1.38 1.38 0 0 0 0-2.22l-1.24-.92a.75.75 0 0 1-.28-.82 10 10 0 0 1 2.2-3.8c.23-.23.57-.3.86-.17l1.4.62c.4.17.86.15 1.25-.08.38-.22.63-.6.68-1.04l.17-1.53a.75.75 0 0 1 .58-.65q1.08-.24 2.2-.25m0 1.5q-.67 0-1.35.12l-.11.97a2.9 2.9 0 0 1-4.03 2.33l-.9-.4A8 8 0 0 0 4.29 9.1l.8.59a2.88 2.88 0 0 1 0 4.64l-.8.59a8 8 0 0 0 1.35 2.32l.9-.4a2.88 2.88 0 0 1 4.02 2.32l.1.99q1.35.22 2.7 0l.1-.99a2.88 2.88 0 0 1 4.02-2.32l.9.4a8 8 0 0 0 1.35-2.32l-.8-.59a2.88 2.88 0 0 1 0-4.64l.8-.59a8 8 0 0 0-1.35-2.32l-.9.4q-.55.24-1.15.24c-1.47 0-2.7-1.1-2.86-2.57l-.11-.97q-.68-.11-1.34-.12M12 8.25a3.75 3.75 0 1 1 0 7.5 3.75 3.75 0 0 1 0-7.5m0 1.5a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5\\\"/>\"\n },\n \"sort-ascending\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m6.72 8.71 4.5-4.49a.75.75 0 0 1 .97-.07l.08.07 4.5 4.5a.75.75 0 0 1-.97 1.13l-.08-.07-3.22-3.22v12.7c0 .37-.28.69-.65.74h-.1a.75.75 0 0 1-.75-.64V6.56L7.78 9.78a.75.75 0 0 1-.98.07l-.08-.07a.75.75 0 0 1-.07-.98zl4.5-4.49z\\\"/>\"\n },\n \"sort-descending\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M11.65 4h.1c.38 0 .7.28.74.65l.01.1v12.7l3.22-3.23c.27-.26.68-.29.98-.07l.08.07c.27.27.3.69.07.98l-.07.09-4.5 4.5a.75.75 0 0 1-.97.07l-.09-.07-4.5-4.5a.75.75 0 0 1 .98-1.14l.08.07L11 17.44V4.75c0-.38.28-.7.65-.74l.1-.01z\\\"/>\"\n },\n \"upload\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M18.25 3.51a.75.75 0 1 0 0-1.5h-13a.75.75 0 1 0 0 1.5zM11.65 22h.1c.38 0 .7-.28.74-.64l.01-.1V7.56l3.72 3.72c.27.27.68.29.98.07l.08-.07a.75.75 0 0 0 .07-.98l-.07-.08-5-5a.75.75 0 0 0-.97-.07l-.09.07-5 5a.75.75 0 0 0 .98 1.13l.08-.07L11 7.58v13.67c0 .38.28.7.65.75\\\"/>\"\n },\n \"user\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M17.75 14C19 14 20 15 20 16.25v.57c0 .9-.32 1.76-.9 2.44Q16.74 22.01 12 22q-4.74.01-7.1-2.74a3.8 3.8 0 0 1-.9-2.43v-.58C4 15 5.01 14 6.25 14zm0 1.5H6.25a.75.75 0 0 0-.75.75v.58c0 .53.2 1.05.54 1.46C7.3 19.76 9.26 20.5 12 20.5q4.09 0 5.96-2.21c.35-.41.54-.93.54-1.47v-.57a.75.75 0 0 0-.75-.75M12 2a5 5 0 1 1 0 10 5 5 0 0 1 0-10m0 1.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7\\\"/>\"\n },\n \"view\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 9a4 4 0 1 1 0 8 4 4 0 0 1 0-8m0 1.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m0-5a10 10 0 0 1 9.7 7.56.75.75 0 1 1-1.45.37 8.5 8.5 0 0 0-16.5 0 .75.75 0 0 1-1.45-.36A10 10 0 0 1 12 5.5\\\"/>\"\n },\n \"warning\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M9.14 3.7a3.25 3.25 0 0 1 5.72 0l6.74 12.5a3.25 3.25 0 0 1-2.86 4.8H5.25a3.25 3.25 0 0 1-2.86-4.8zm4.4.72a1.75 1.75 0 0 0-3.08 0L3.7 16.92a1.75 1.75 0 0 0 1.54 2.58h13.5a1.75 1.75 0 0 0 1.53-2.58zM12 15a1 1 0 1 1 0 2 1 1 0 0 1 0-2m0-7.5c.41 0 .75.34.75.75v4.5a.75.75 0 0 1-1.5 0v-4.5c0-.41.34-.75.75-.75\\\"/>\"\n }\n },\n \"carbon\": {\n \"add\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M17 15 17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\\\"/>\"\n },\n \"arrow-left\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M14 26 15.41 24.59 7.83 17 28 17 28 15 7.83 15 15.41 7.41 14 6 4 16 14 26z\\\"/>\"\n },\n \"arrow-right\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6z\\\"/>\"\n },\n \"calendar\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M26,4h-4V2h-2v2h-8V2h-2v2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6C28,4.9,27.1,4,26,4z M26,26H6V12h20 V26z M26,10H6V6h4v2h2V6h8v2h2V6h4V10z\\\"/>\"\n },\n \"check\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M13 24 4 15 5.414 13.586 13 21.171 26.586 7.586 28 9 13 24z\\\"/>\"\n },\n \"check-circle\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M14 21.414 9 16.413 10.413 15 14 18.586 21.585 11 23 12.415 14 21.414z\\\"/><path d=\\\"M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm0,26A12,12,0,1,1,28,16,12,12,0,0,1,16,28Z\\\"/>\"\n },\n \"chevron-down\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16 22 6 12 7.4 10.6 16 19.2 24.6 10.6 26 12z\\\"/>\"\n },\n \"chevron-left\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M10 16 20 6 21.4 7.4 12.8 16 21.4 24.6 20 26z\\\"/>\"\n },\n \"chevron-right\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M22 16 12 26 10.6 24.6 19.2 16 10.6 7.4 12 6z\\\"/>\"\n },\n \"chevron-up\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16 10 26 20 24.6 21.4 16 12.8 7.4 21.4 6 20z\\\"/>\"\n },\n \"close\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16z\\\"/>\"\n },\n \"copy\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z\\\"/><path d=\\\"M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z\\\"/>\"\n },\n \"delete\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M12 12H14V24H12z\\\"/><path d=\\\"M18 12H20V24H18z\\\"/><path d=\\\"M4,6V8H6V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V8h2V6ZM8,28V8H24V28Z\\\"/><path d=\\\"M12 2H20V4H12z\\\"/>\"\n },\n \"download\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M26,24v4H6V24H4v4H4a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2h0V24Z\\\"/><path d=\\\"M26 14 24.59 12.59 17 20.17 17 2 15 2 15 20.17 7.41 12.59 6 14 16 24 26 14z\\\"/>\"\n },\n \"edit\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M2 26H30V28H2z\\\"/><path d=\\\"M25.4,9c0.8-0.8,0.8-2,0-2.8c0,0,0,0,0,0l-3.6-3.6c-0.8-0.8-2-0.8-2.8,0c0,0,0,0,0,0l-15,15V24h6.4L25.4,9z M20.4,4L24,7.6 l-3,3L17.4,7L20.4,4z M6,22v-3.6l10-10l3.6,3.6l-10,10H6z\\\"/>\"\n },\n \"error\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M2,16H2A14,14,0,1,0,16,2,14,14,0,0,0,2,16Zm23.15,7.75L8.25,6.85a12,12,0,0,1,16.9,16.9ZM8.24,25.16A12,12,0,0,1,6.84,8.27L23.73,25.16a12,12,0,0,1-15.49,0Z\\\"/>\"\n },\n \"external-link\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M26,28H6a2.0027,2.0027,0,0,1-2-2V6A2.0027,2.0027,0,0,1,6,4H16V6H6V26H26V16h2V26A2.0027,2.0027,0,0,1,26,28Z\\\"/><path d=\\\"M20 2 20 4 26.586 4 18 12.586 19.414 14 28 5.414 28 12 30 12 30 2 20 2z\\\"/>\"\n },\n \"filter\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M18,28H14a2,2,0,0,1-2-2V18.41L4.59,11A2,2,0,0,1,4,9.59V6A2,2,0,0,1,6,4H26a2,2,0,0,1,2,2V9.59A2,2,0,0,1,27.41,11L20,18.41V26A2,2,0,0,1,18,28ZM6,6V9.59l8,8V26h4V17.59l8-8V6Z\\\"/>\"\n },\n \"help\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm0,26A12,12,0,1,1,28,16,12,12,0,0,1,16,28Z\\\"/><circle cx=\\\"16\\\" cy=\\\"23.5\\\" r=\\\"1.5\\\"/><path d=\\\"M17,8H15.5A4.49,4.49,0,0,0,11,12.5V13h2v-.5A2.5,2.5,0,0,1,15.5,10H17a2.5,2.5,0,0,1,0,5H15v4.5h2V17a4.5,4.5,0,0,0,0-9Z\\\"/>\"\n },\n \"home\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16.6123,2.2138a1.01,1.01,0,0,0-1.2427,0L1,13.4194l1.2427,1.5717L4,13.6209V26a2.0041,2.0041,0,0,0,2,2H26a2.0037,2.0037,0,0,0,2-2V13.63L29.7573,15,31,13.4282ZM18,26H14V18h4Zm2,0V18a2.0023,2.0023,0,0,0-2-2H14a2.002,2.002,0,0,0-2,2v8H6V12.0615l10-7.79,10,7.8005V26Z\\\"/>\"\n },\n \"info\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M17 22 17 14 13 14 13 16 15 16 15 22 12 22 12 24 20 24 20 22 17 22z\\\"/><path d=\\\"M16,8a1.5,1.5,0,1,0,1.5,1.5A1.5,1.5,0,0,0,16,8Z\\\"/><path d=\\\"M16,30A14,14,0,1,1,30,16,14,14,0,0,1,16,30ZM16,4A12,12,0,1,0,28,16,12,12,0,0,0,16,4Z\\\"/>\"\n },\n \"lock\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M24,14H22V8A6,6,0,0,0,10,8v6H8a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V16A2,2,0,0,0,24,14ZM12,8a4,4,0,0,1,8,0v6H12ZM24,28H8V16H24Z\\\"/>\"\n },\n \"menu\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M4 6H28V8H4z\\\"/><path d=\\\"M4 24H28V26H4z\\\"/><path d=\\\"M4 12H28V14H4z\\\"/><path d=\\\"M4 18H28V20H4z\\\"/>\"\n },\n \"more\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<circle cx=\\\"8\\\" cy=\\\"16\\\" r=\\\"2\\\"/><circle cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"2\\\"/><circle cx=\\\"24\\\" cy=\\\"16\\\" r=\\\"2\\\"/>\"\n },\n \"refresh\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M12,10H6.78A11,11,0,0,1,27,16h2A13,13,0,0,0,6,7.68V4H4v8h8Z\\\"/><path d=\\\"M20,22h5.22A11,11,0,0,1,5,16H3a13,13,0,0,0,23,8.32V28h2V20H20Z\\\"/>\"\n },\n \"search\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M29,27.5859l-7.5521-7.5521a11.0177,11.0177,0,1,0-1.4141,1.4141L27.5859,29ZM4,13a9,9,0,1,1,9,9A9.01,9.01,0,0,1,4,13Z\\\"/>\"\n },\n \"settings\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M27,16.76c0-.25,0-.5,0-.76s0-.51,0-.77l1.92-1.68A2,2,0,0,0,29.3,11L26.94,7a2,2,0,0,0-1.73-1,2,2,0,0,0-.64.1l-2.43.82a11.35,11.35,0,0,0-1.31-.75l-.51-2.52a2,2,0,0,0-2-1.61H13.64a2,2,0,0,0-2,1.61l-.51,2.52a11.48,11.48,0,0,0-1.32.75L7.43,6.06A2,2,0,0,0,6.79,6,2,2,0,0,0,5.06,7L2.7,11a2,2,0,0,0,.41,2.51L5,15.24c0,.25,0,.5,0,.76s0,.51,0,.77L3.11,18.45A2,2,0,0,0,2.7,21L5.06,25a2,2,0,0,0,1.73,1,2,2,0,0,0,.64-.1l2.43-.82a11.35,11.35,0,0,0,1.31.75l.51,2.52a2,2,0,0,0,2,1.61h4.72a2,2,0,0,0,2-1.61l.51-2.52a11.48,11.48,0,0,0,1.32-.75l2.42.82a2,2,0,0,0,.64.1,2,2,0,0,0,1.73-1L29.3,21a2,2,0,0,0-.41-2.51ZM25.21,24l-3.43-1.16a8.86,8.86,0,0,1-2.71,1.57L18.36,28H13.64l-.71-3.55a9.36,9.36,0,0,1-2.7-1.57L6.79,24,4.43,20l2.72-2.4a8.9,8.9,0,0,1,0-3.13L4.43,12,6.79,8l3.43,1.16a8.86,8.86,0,0,1,2.71-1.57L13.64,4h4.72l.71,3.55a9.36,9.36,0,0,1,2.7,1.57L25.21,8,27.57,12l-2.72,2.4a8.9,8.9,0,0,1,0,3.13L27.57,20Z\\\"/><path d=\\\"M16,22a6,6,0,1,1,6-6A5.94,5.94,0,0,1,16,22Zm0-10a3.91,3.91,0,0,0-4,4,3.91,3.91,0,0,0,4,4,3.91,3.91,0,0,0,4-4A3.91,3.91,0,0,0,16,12Z\\\"/>\"\n },\n \"sort-ascending\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M18 22 19.414 20.586 23 24.172 23 4 25 4 25 24.172 28.586 20.586 30 22 24 28 18 22z\\\"/><path d=\\\"M2 18H16V20H2z\\\"/><path d=\\\"M6 12H16V14H6z\\\"/><path d=\\\"M10 6H16V8H10z\\\"/>\"\n },\n \"sort-descending\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M18 22 19.414 20.586 23 24.172 23 4 25 4 25 24.172 28.586 20.586 30 22 24 28 18 22z\\\"/><path d=\\\"M2 6H16V8H2z\\\"/><path d=\\\"M6 12H16V14H6z\\\"/><path d=\\\"M10 18H16V20H10z\\\"/>\"\n },\n \"upload\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M6 18 7.41 19.41 15 11.83 15 30 17 30 17 11.83 24.59 19.41 26 18 16 8 6 18z\\\"/><path d=\\\"M6,8V4H26V8h2V4a2,2,0,0,0-2-2H6A2,2,0,0,0,4,4V8Z\\\"/>\"\n },\n \"user\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16,4a5,5,0,1,1-5,5,5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,16,2Z\\\"/><path d=\\\"M26,30H24V25a5,5,0,0,0-5-5H13a5,5,0,0,0-5,5v5H6V25a7,7,0,0,1,7-7h6a7,7,0,0,1,7,7Z\\\"/>\"\n },\n \"view\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M30.94,15.66A16.69,16.69,0,0,0,16,5,16.69,16.69,0,0,0,1.06,15.66a1,1,0,0,0,0,.68A16.69,16.69,0,0,0,16,27,16.69,16.69,0,0,0,30.94,16.34,1,1,0,0,0,30.94,15.66ZM16,25c-5.3,0-10.9-3.93-12.93-9C5.1,10.93,10.7,7,16,7s10.9,3.93,12.93,9C26.9,21.07,21.3,25,16,25Z\\\"/><path d=\\\"M16,10a6,6,0,1,0,6,6A6,6,0,0,0,16,10Zm0,10a4,4,0,1,1,4-4A4,4,0,0,1,16,20Z\\\"/>\"\n },\n \"warning\": {\n \"viewBox\": \"0 0 32 32\",\n \"body\": \"<path d=\\\"M16,23a1.5,1.5,0,1,0,1.5,1.5A1.5,1.5,0,0,0,16,23Z\\\"/><path d=\\\"M15 12H17V21H15z\\\"/><path d=\\\"M29,30H3a1,1,0,0,1-.8872-1.4614l13-25a1,1,0,0,1,1.7744,0l13,25A1,1,0,0,1,29,30ZM4.6507,28H27.3493l.002-.0033L16.002,6.1714h-.004L4.6487,27.9967Z\\\"/>\"\n }\n },\n \"lucide\": {\n \"add\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M5 12h14\\\" /><path d=\\\"M12 5v14\\\" />\"\n },\n \"arrow-left\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m12 19-7-7 7-7\\\" /><path d=\\\"M19 12H5\\\" />\"\n },\n \"arrow-right\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M5 12h14\\\" /><path d=\\\"m12 5 7 7-7 7\\\" />\"\n },\n \"calendar\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M8 2v3\\\" /><path d=\\\"M16 2v3\\\" /><rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" /><path d=\\\"M3 9h18\\\" />\"\n },\n \"check\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M20 6 9 17l-5-5\\\" />\"\n },\n \"check-circle\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /><path d=\\\"m16 9-5.5 5.5L8 12\\\" />\"\n },\n \"chevron-down\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m6 9 6 6 6-6\\\" />\"\n },\n \"chevron-left\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m15 18-6-6 6-6\\\" />\"\n },\n \"chevron-right\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m9 18 6-6-6-6\\\" />\"\n },\n \"chevron-up\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m18 15-6-6-6 6\\\" />\"\n },\n \"close\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M18 6 6 18\\\" /><path d=\\\"m6 6 12 12\\\" />\"\n },\n \"copy\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<rect width=\\\"14\\\" height=\\\"14\\\" x=\\\"8\\\" y=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\" /><path d=\\\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\\\" />\"\n },\n \"delete\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M10 11v6\\\" /><path d=\\\"M14 11v6\\\" /><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\\\" /><path d=\\\"M3 6h18\\\" /><path d=\\\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\" />\"\n },\n \"download\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 15V3\\\" /><path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" /><path d=\\\"m7 10 5 5 5-5\\\" />\"\n },\n \"edit\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\\\" /><path d=\\\"m15 5 4 4\\\" />\"\n },\n \"error\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /><path d=\\\"m15 9-6 6\\\" /><path d=\\\"m9 9 6 6\\\" />\"\n },\n \"external-link\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M15 3h6v6\\\" /><path d=\\\"M10 14 21 3\\\" /><path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\" />\"\n },\n \"filter\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\\\" />\"\n },\n \"help\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\" /><path d=\\\"M12 17h.01\\\" />\"\n },\n \"home\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\\\" /><path d=\\\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\" />\"\n },\n \"info\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /><path d=\\\"M12 16v-4\\\" /><path d=\\\"M12 8h.01\\\" />\"\n },\n \"lock\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<rect width=\\\"18\\\" height=\\\"11\\\" x=\\\"3\\\" y=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\" /><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\" />\"\n },\n \"menu\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M4 5h16\\\" /><path d=\\\"M4 12h16\\\" /><path d=\\\"M4 19h16\\\" />\"\n },\n \"more\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\" /><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\" />\"\n },\n \"refresh\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\\\" /><path d=\\\"M21 3v5h-5\\\" /><path d=\\\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\\\" /><path d=\\\"M8 16H3v5\\\" />\"\n },\n \"search\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m21 21-4.34-4.34\\\" /><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" />\"\n },\n \"settings\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\\\" /><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\"\n },\n \"sort-ascending\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m3 8 4-4 4 4\\\" /><path d=\\\"M7 4v16\\\" /><path d=\\\"M11 12h4\\\" /><path d=\\\"M11 16h7\\\" /><path d=\\\"M11 20h10\\\" />\"\n },\n \"sort-descending\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m3 16 4 4 4-4\\\" /><path d=\\\"M7 20V4\\\" /><path d=\\\"M11 4h10\\\" /><path d=\\\"M11 8h7\\\" /><path d=\\\"M11 12h4\\\" />\"\n },\n \"upload\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M12 3v12\\\" /><path d=\\\"m17 8-5-5-5 5\\\" /><path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" />\"\n },\n \"user\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\\\" /><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\" />\"\n },\n \"view\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\\\" /><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\"\n },\n \"warning\": {\n \"viewBox\": \"0 0 24 24\",\n \"body\": \"<path d=\\\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\\\" /><path d=\\\"M12 9v4\\\" /><path d=\\\"M12 17h.01\\\" />\"\n }\n }\n};\n","import { useContext, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { themes as MANIFEST_THEMES } from \"@ux-builder/tokens/manifest.json\";\nimport { ThemeContext } from \"../ThemeProvider.jsx\";\nimport { GLYPHS, SETS } from \"./glyphs.generated.js\";\n\n/* One icon component for every theme (FEAT-004 SDK-03, US-010).\n\n <Icon name=\"warning\" /> decorative: hidden from assistive tech\n <Icon name=\"search\" label=\"Search\" /> meaningful: role=\"img\" with a name\n\n The glyph comes from the active theme's design system: Material Symbols\n on Material, Fluent System Icons on Fluent, Carbon icons on Carbon, and\n Lucide on every theme without a set of its own. The set is, in order:\n the set prop; the page's --piq-icon-set, which each shared design system\n sets (so a theme newer than this package still gets its icons); the\n nearest ThemeProvider's theme or the closest data-theme, looked up in the\n themes this package was built with; else Lucide. A name a set lacks is\n drawn from Lucide. The icon takes the text colour and is 1em\n unless size says otherwise.\n\n Beyond the shared names, @ux-builder/ui/icons has every Lucide icon by its\n Lucide name, each with the matching Material, Fluent and Carbon glyph\n where there is one (US-010-AC13). Import the ones an app uses, so its\n bundle carries only those, and pass one, or register them once:\n\n import { iconPin, iconPlay } from \"@ux-builder/ui/icons\";\n <Icon icon={iconPin} label=\"Pin\" />\n registerIcons(iconPin, iconPlay); // then <Icon name=\"pin\" /> anywhere\n\n registerIcons also takes an app's own icon, { name, glyphs: { lucide:\n { viewBox, body } } } (or per set), drawn the same way (US-010-AC14). */\n\nconst THEMES = new Map(MANIFEST_THEMES.map((t) => [t.name, t]));\nconst OWN_SETS = new Set([\"material\", \"fluent\", \"carbon\"]);\n/* The shared names Icon accepts. */\nexport const ICON_NAMES = Object.keys(GLYPHS.lucide).sort();\n\nlet dev = true;\ntry { dev = process.env.NODE_ENV !== \"production\"; } catch { /* no bundler */ }\n\n/* The icon set a theme draws with. */\nexport function iconSetFor(theme) {\n const ds = THEMES.get(theme)?.designSystem;\n return OWN_SETS.has(ds) ? ds : \"lucide\";\n}\n\n/* The glyph for a name in a set, falling back to Lucide: [glyph, set used]. */\nexport function pickGlyph(name, set, glyphs = GLYPHS) {\n if (glyphs[set]?.[name]) return [glyphs[set][name], set];\n if (glyphs.lucide?.[name]) return [glyphs.lucide[name], \"lucide\"];\n return [null, null];\n}\n\n/* Icons registered by name: from @ux-builder/ui/icons, or an app's own. */\nconst REGISTRY = new Map();\nconst UNSAFE = /<script|\\son\\w+\\s*=|\\shref\\s*=|<foreignObject/i;\nconst fromDef = (def, set) => {\n const g = def.glyphs;\n if (g[set]) return [g[set], set];\n if (g.lucide) return [g.lucide, \"lucide\"];\n const first = Object.keys(SETS).find((k) => g[k]);\n return first ? [g[first], first] : [null, null];\n};\n\n/* Makes icons usable by name (<Icon name=\"pin\" />): icons from @ux-builder/ui/icons, or an app's own { name, glyphs }. Returns the names registered. */\nexport function registerIcons(...icons) {\n const names = [];\n for (const def of icons.flat()) {\n const known = def && typeof def.name === \"string\" && def.glyphs && Object.keys(def.glyphs).length > 0 && Object.keys(def.glyphs).every((k) => SETS[k]);\n if (!known) throw new Error(`@ux-builder/ui registerIcons: an icon is { name, glyphs: { ${Object.keys(SETS).join(\" | \")}: { viewBox, body } } }`);\n for (const [set, g] of Object.entries(def.glyphs)) {\n if (typeof g?.viewBox !== \"string\" || typeof g?.body !== \"string\" || UNSAFE.test(g.body)) throw new Error(`@ux-builder/ui registerIcons: ${def.name} (${set}) needs a viewBox and markup without scripts, handlers or links`);\n }\n REGISTRY.set(def.name, def);\n names.push(def.name);\n }\n return names;\n}\n\nconst camel = (k) => k.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\nconst SVG_PROPS = Object.fromEntries(Object.entries(SETS).map(([k, s]) => [k, Object.fromEntries(Object.entries(s.svg).map(([a, v]) => [camel(a), v]))]));\nconst useBeforePaint = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\n/* An icon by shared name (ICON_NAMES) or registered name, or an icon from @ux-builder/ui/icons passed as icon, drawn in the theme's icon set, the text colour and 1em; decorative unless label names it. */\nexport function Icon({ name, icon, set, size = \"1em\", label, className = \"\", ...rest }) {\n const context = useContext(ThemeContext);\n const ref = useRef(null);\n const [pageTheme, setPageTheme] = useState(null);\n const [tokenSet, setTokenSet] = useState(null);\n\n // Before paint: the theme's own --piq-icon-set, and the closest data-theme.\n useBeforePaint(() => {\n if (set || !ref.current) return;\n const fromToken = getComputedStyle(ref.current).getPropertyValue(\"--piq-icon-set\").trim().replace(/^[\"']|[\"']$/g, \"\");\n setTokenSet(GLYPHS[fromToken] ? fromToken : null);\n if (!context?.theme) setPageTheme(ref.current.closest?.(\"[data-theme]\")?.getAttribute(\"data-theme\") ?? null);\n });\n\n const active = set ?? tokenSet ?? iconSetFor(context?.theme ?? pageTheme);\n const def = icon ?? (GLYPHS.lucide[name] ? null : REGISTRY.get(name));\n const [glyph, used] = def ? fromDef(def, active) : pickGlyph(name, active);\n if (!glyph) {\n if (dev) console.warn(`@ux-builder/ui Icon: no icon \"${name}\". Shared names: ${ICON_NAMES.join(\", \")}. Every Lucide icon is in @ux-builder/ui/icons: import it (e.g. import { iconPin } from \"@ux-builder/ui/icons\") and pass icon={iconPin}, or registerIcons(iconPin) once.`);\n return null;\n }\n const a11y = label ? { role: \"img\", \"aria-label\": label } : { \"aria-hidden\": \"true\", focusable: \"false\" };\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={glyph.viewBox}\n width={size}\n height={size}\n className={`piq-icon${className ? ` ${className}` : \"\"}`}\n data-icon={def?.name ?? name}\n data-icon-set={used}\n {...SVG_PROPS[used]}\n {...a11y}\n {...rest}\n // Glyphs are extracted at build time from the pinned icon packages and\n // checked for scripts, handlers and links (scripts/gen-icons.mjs); an\n // app's own are checked the same way when registered.\n dangerouslySetInnerHTML={{ __html: glyph.body }}\n />\n );\n}\n","import { useId } from \"react\";\n\n/* Loading and progress: a bar for work whose amount is known (or not), a\n spinner for a short wait, and skeletons standing in for content that is\n on its way. Each takes its thickness, corners, track and motion from the\n theme's design system, and holds still when the user asks for less\n motion (the spinner only slows). */\n\nconst clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));\nconst length = (v) => (typeof v === \"number\" ? `${v}px` : v);\n\n/* A bar showing how much of a task is done, named by its visible label; leave out value while the amount is unknown and it moves instead. */\nexport function ProgressBar({ label, value, max = 100, valueText, showValue = false, hideLabel = false, className = \"\", ...rest }) {\n const id = useId();\n const top = max > 0 ? max : 100;\n const known = typeof value === \"number\" && Number.isFinite(value);\n const now = known ? clamp(value, 0, top) : null;\n const pct = known ? Math.round((now / top) * 100) : null;\n return (\n <div className={`piq-progress${known ? \"\" : \" piq-progress--indeterminate\"}${className ? ` ${className}` : \"\"}`} {...rest}>\n <div className={hideLabel ? \"piq-visually-hidden\" : \"piq-progress__head\"}>\n <span id={id} className=\"piq-progress__label\">{label}</span>\n {known && showValue && <span className=\"piq-progress__value\" aria-hidden=\"true\">{valueText ?? `${pct}%`}</span>}\n </div>\n <div\n className=\"piq-progress__track\"\n role=\"progressbar\"\n aria-labelledby={id}\n aria-valuemin={0}\n aria-valuemax={top}\n aria-valuenow={known ? now : undefined}\n aria-valuetext={known && valueText ? valueText : undefined}\n >\n <div className=\"piq-progress__fill\" style={known ? { width: `${pct}%` } : undefined} />\n </div>\n </div>\n );\n}\n\n/* The spinner's drawing alone, hidden from assistive technology; Button draws it while busy. */\nexport function SpinnerGlyph() {\n return (\n <svg className=\"piq-spinner__glyph\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <circle className=\"piq-spinner__track\" cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" />\n <circle className=\"piq-spinner__arc\" cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" pathLength=\"100\" />\n </svg>\n );\n}\n\n/* A turning ring for a short wait, announced as a status with its label (spoken only, unless showLabel puts it beside the ring). */\nexport function Spinner({ size = \"md\", label = \"Loading\", showLabel = false, className = \"\", ...rest }) {\n return (\n <span className={`piq-spinner piq-spinner--${size}${className ? ` ${className}` : \"\"}`} role=\"status\" {...rest}>\n <SpinnerGlyph />\n <span className={showLabel ? \"piq-spinner__label\" : \"piq-visually-hidden\"}>{label}</span>\n </span>\n );\n}\n\n/* A placeholder in the shape of content that is loading: text lines, a block or a circle. It is hidden from assistive technology, so mark the region that holds it aria-busy=\"true\". */\nexport function Skeleton({ variant = \"text\", lines = 1, width, height, className = \"\", style, ...rest }) {\n const cls = `piq-skeleton piq-skeleton--${variant}${className ? ` ${className}` : \"\"}`;\n if (variant === \"text\") {\n const n = Math.max(1, Math.floor(lines));\n return (\n <span className={cls} aria-hidden=\"true\" style={{ width: length(width), ...style }} {...rest}>\n {Array.from({ length: n }, (_, i) => <span key={i} className=\"piq-skeleton__line\" />)}\n </span>\n );\n }\n const size = variant === \"circle\" ? { width: length(width ?? height ?? 40), height: length(height ?? width ?? 40) } : { width: length(width), height: length(height) };\n return <span className={cls} aria-hidden=\"true\" style={{ ...size, ...style }} {...rest} />;\n}\n","import { SpinnerGlyph } from \"./Loading.jsx\";\n\n/* A button in one of three emphases: primary for the one action a view\n wants, secondary beside it, text for actions that should not compete.\n While busy it shows a spinner over its label, keeps its width and name,\n and ignores clicks. A badge is a count that belongs to the control, such\n as items pinned. */\n\nconst VARIANTS = { primary: \"\", secondary: \" piq-btn--secondary\", text: \" piq-btn--text\" };\n\nexport function Button({ variant = \"primary\", size, badge, busy = false, type = \"button\", className = \"\", onClick, children, ...rest }) {\n const cls = `piq-btn${VARIANTS[variant] ?? \"\"}${size === \"sm\" ? \" piq-btn--sm\" : \"\"}${busy ? \" piq-btn--busy\" : \"\"}${className ? ` ${className}` : \"\"}`;\n const content = <>{children}{badge != null && <span className=\"piq-btn__badge\">{badge}</span>}</>;\n if (!busy) return <button type={type} className={cls} onClick={onClick} {...rest}>{content}</button>;\n return (\n <button type={type} className={cls} {...rest} aria-busy=\"true\" aria-disabled=\"true\" onClick={(e) => e.preventDefault()}>\n <span className=\"piq-btn__label\">{content}</span>\n <span className=\"piq-btn__spinner\"><SpinnerGlyph /></span>\n </button>\n );\n}\n","import { useId } from \"react\";\n\n/* Choices on native inputs: a checkbox, a switch (a checkbox with\n role=\"switch\", so it is announced as on or off), and a radio group in a\n fieldset whose legend names it. */\n\n/* One on/off choice with its label. */\nexport function Checkbox({ label, className = \"\", ...input }) {\n return (\n <label className={`piq-check${className ? ` ${className}` : \"\"}`}>\n <input type=\"checkbox\" className=\"piq-check__box\" {...input} />\n <span>{label}</span>\n </label>\n );\n}\n\n/* A setting that takes effect at once: a checkbox announced as on or off. */\nexport function Switch({ label, className = \"\", ...input }) {\n return (\n <label className={`piq-check piq-switch${className ? ` ${className}` : \"\"}`}>\n <input type=\"checkbox\" role=\"switch\" className=\"piq-switch__track\" {...input} />\n <span>{label}</span>\n </label>\n );\n}\n\n/* options: [{ value, label, disabled? }]. Controlled with value and onChange,\n or uncontrolled with defaultValue. */\n/* One choice from a short list, each option with its label, in a fieldset with a legend. */\nexport function RadioGroup({ label, options, name, value, defaultValue, onChange, disabled }) {\n const auto = useId();\n const group = name ?? auto;\n return (\n <fieldset className=\"piq-radios\" disabled={disabled}>\n <legend className=\"piq-field__label\">{label}</legend>\n {options.map((o) => (\n <label key={o.value} className=\"piq-check\">\n <input\n type=\"radio\"\n className=\"piq-radio\"\n name={group}\n value={o.value}\n disabled={o.disabled}\n {...(value !== undefined ? { checked: value === o.value, onChange: () => onChange?.(o.value) } : { defaultChecked: defaultValue === o.value })}\n />\n <span>{o.label}</span>\n </label>\n ))}\n </fieldset>\n );\n}\n","import { useId } from \"react\";\n\n/* The labelled controls that take typed or chosen input. Each is the native\n element, restyled, so the keyboard, autofill, form submission and the\n accessible name all come from the browser. The hint and the error are tied\n to the control with aria-describedby, and an error sets aria-invalid, so a\n screen reader hears what is wrong without seeing the colour. */\n\nexport function Frame({ label, hint, error, id, className, children }) {\n const auto = useId();\n const controlId = id ?? auto;\n const hintId = hint ? `${controlId}-hint` : undefined;\n const errorId = error ? `${controlId}-error` : undefined;\n const control = {\n id: controlId,\n \"aria-invalid\": error ? \"true\" : undefined,\n \"aria-describedby\": [errorId, hintId].filter(Boolean).join(\" \") || undefined,\n };\n return (\n <div className={`piq-field${className ? ` ${className}` : \"\"}`}>\n <label className=\"piq-field__label\" htmlFor={controlId}>{label}</label>\n {children(control)}\n {error && <span id={errorId} className=\"piq-field__error\">{error}</span>}\n {hint && <span id={hintId} className=\"piq-field__hint\">{hint}</span>}\n </div>\n );\n}\n\n/* A single line of typed input with its label, and an optional hint or error. */\nexport function TextField({ label, hint, error, id, className = \"\", ...input }) {\n return (\n <Frame label={label} hint={hint} error={error} id={id} className={className}>\n {(control) => <input type=\"text\" className=\"piq-field__input\" {...control} {...input} />}\n </Frame>\n );\n}\n\n/* Several lines of typed input with its label, and an optional hint or error. */\nexport function TextArea({ label, hint, error, id, className = \"\", rows = 4, ...input }) {\n return (\n <Frame label={label} hint={hint} error={error} id={id} className={className}>\n {(control) => <textarea rows={rows} className=\"piq-field__input piq-field__input--multi\" {...control} {...input} />}\n </Frame>\n );\n}\n\n/* A dropdown. Where the browser supports appearance: base-select (Chrome 135\n and later) the open list is styled by the theme too; elsewhere it opens the\n platform's own list, which is still fully accessible.\n options: [{ value, label, disabled? }]; placeholder adds an empty first\n option that cannot be chosen again. */\n/* A dropdown: one choice from a longer list, with its label, and an optional placeholder, hint or error. */\nexport function Select({ label, hint, error, id, className = \"\", options, placeholder, ...select }) {\n return (\n <Frame label={label} hint={hint} error={error} id={id} className={className}>\n {(control) => (\n <span className=\"piq-select\">\n <select className=\"piq-field__input piq-select__input\" {...control} {...select}>\n {placeholder && <option value=\"\" disabled>{placeholder}</option>}\n {options.map((o) => <option key={o.value} value={o.value} disabled={o.disabled}>{o.label}</option>)}\n </select>\n </span>\n )}\n </Frame>\n );\n}\n","import { useId } from \"react\";\nimport { TextField } from \"./Field.jsx\";\n\n/* A date, on the browser's own date input, so the keyboard, the calendar and\n screen readers work everywhere. value and onChange use YYYY-MM-DD. */\nexport function DatePicker({ label, value, onChange, min, max, hint, error, id, className }) {\n return <TextField type=\"date\" label={label} value={value ?? \"\"} min={min} max={max} hint={hint} error={error} id={id} className={className} onChange={(e) => onChange?.(e.target.value)} />;\n}\n\n/* A date range: From and To dates in a group named by label. The To date\n cannot be before the From date. onChange({ from, to }) with YYYY-MM-DD. */\nexport function DateRangePicker({ label, from, to, onChange, min, max, fromLabel = \"From\", toLabel = \"To\", className }) {\n const id = useId();\n return (\n <fieldset className={`piq-date-range${className ? ` ${className}` : \"\"}`}>\n <legend className=\"piq-field__label\">{label}</legend>\n <div className=\"piq-date-range__fields\">\n <DatePicker id={`${id}-from`} label={fromLabel} value={from} min={min} max={to || max} onChange={(v) => onChange?.({ from: v, to })} />\n <DatePicker id={`${id}-to`} label={toLabel} value={to} min={from || min} max={max} onChange={(v) => onChange?.({ from, to: v })} />\n </div>\n </fieldset>\n );\n}\n","import { useEffect, useRef } from \"react\";\n\n/* The behaviour Sheet and Dialog share: a native <dialog> opened with\n showModal() (the page behind becomes inert, so focus stays inside), focus\n on initialFocus if given, and focus back on whatever opened it when it\n closes. Returns the ref for the <dialog>. */\nexport function useModalDialog(open, initialFocus) {\n const dialog = useRef(null), opener = useRef(null);\n useEffect(() => {\n const d = dialog.current;\n if (!d) return;\n if (open && !d.open) {\n opener.current = document.activeElement;\n if (typeof d.showModal === \"function\") d.showModal(); else d.setAttribute(\"open\", \"\");\n initialFocus?.current?.focus();\n } else if (!open && d.open) {\n d.close();\n opener.current?.focus?.();\n }\n }, [open, initialFocus]);\n useEffect(() => () => { if (dialog.current?.open) dialog.current.close(); }, []);\n return dialog;\n}\n","import { useId } from \"react\";\nimport { Button } from \"./Button.jsx\";\nimport { useModalDialog } from \"./modal.js\";\nimport { Icon } from \"../icons/Icon.jsx\";\n\n/* A modal dialog in the middle of the screen: a short task or a decision.\n The page behind is inert, focus moves in (to initialFocus, a ref, if\n given) and returns to what opened it; Escape or the close button calls\n onClose. actions go in the footer. role=\"alertdialog\" for a confirmation\n that needs an answer. */\nexport function Dialog({ open = false, onClose, title, description, actions, closeLabel = \"Close\", initialFocus, role, className, children, ...rest }) {\n const dialog = useModalDialog(open, initialFocus);\n const titleId = useId(), descId = useId();\n return (\n <dialog ref={dialog} role={role} className={`piq-dialog${className ? ` ${className}` : \"\"}`} aria-labelledby={titleId} aria-describedby={description ? descId : undefined}\n onCancel={(e) => { e.preventDefault(); onClose?.(); }} {...rest}>\n <div className=\"piq-dialog__head\">\n <h2 id={titleId} className=\"piq-dialog__title\">{title}</h2>\n {onClose && <Button variant=\"text\" className=\"piq-dialog__close\" aria-label={closeLabel} onClick={() => onClose()}><Icon name=\"close\" /></Button>}\n </div>\n {description && <p id={descId} className=\"piq-dialog__description\">{description}</p>}\n {children && <div className=\"piq-dialog__body\">{children}</div>}\n {actions && <div className=\"piq-dialog__actions\">{actions}</div>}\n </dialog>\n );\n}\n","import { useEffect, useId, useRef, useState } from \"react\";\nimport { Button } from \"./Button.jsx\";\nimport { Icon } from \"../icons/Icon.jsx\";\n\n/* A button that opens a menu of actions: account, workspace, a page's or a\n row's \"More\". Keyboard as the WAI-ARIA Menu Button pattern: Enter, Space\n or Down opens on the first item, Up on the last; arrows, Home and End move;\n a letter jumps to the next item starting with it; Escape closes and returns\n focus to the button. items: [{ label, onSelect?, href?, disabled?,\n checked? }]; an item with checked is a radio item, for a current choice.\n Not for navigation between pages: that is links (PrimaryNav). */\nexport function MenuButton({ label, items = [], icon, variant = \"secondary\", size, align = \"start\", buttonLabel, className, ...rest }) {\n const [open, setOpen] = useState(false);\n const [active, setActive] = useState(-1);\n const button = useRef(null), menu = useRef(null);\n const id = useId();\n const enabled = items.map((it, i) => (it.disabled ? -1 : i)).filter((i) => i >= 0);\n\n const openAt = (where) => { setOpen(true); setActive(where === \"last\" ? enabled.at(-1) : enabled[0]); };\n const close = (refocus = true) => { setOpen(false); setActive(-1); if (refocus) button.current?.focus(); };\n const move = (delta) => setActive((a) => enabled[(enabled.indexOf(a) + delta + enabled.length) % enabled.length]);\n\n useEffect(() => {\n if (open && active >= 0) menu.current?.querySelectorAll(\"[data-index]\")[active]?.focus();\n }, [open, active]);\n useEffect(() => {\n if (!open) return undefined;\n const outside = (e) => { if (!button.current?.contains(e.target) && !menu.current?.contains(e.target)) close(false); };\n document.addEventListener(\"mousedown\", outside);\n return () => document.removeEventListener(\"mousedown\", outside);\n }, [open]);\n\n function onButtonKey(e) {\n if ([\"ArrowDown\", \"Enter\", \" \"].includes(e.key)) { e.preventDefault(); openAt(\"first\"); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); openAt(\"last\"); }\n }\n function onMenuKey(e) {\n if (e.key === \"ArrowDown\") { e.preventDefault(); move(1); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); move(-1); }\n else if (e.key === \"Home\") { e.preventDefault(); setActive(enabled[0]); }\n else if (e.key === \"End\") { e.preventDefault(); setActive(enabled.at(-1)); }\n else if (e.key === \"Escape\") { e.preventDefault(); close(); }\n else if (e.key === \"Tab\") close(false);\n else if (e.key.length === 1 && /\\S/.test(e.key)) {\n const from = enabled.indexOf(active);\n const order = [...enabled.slice(from + 1), ...enabled.slice(0, from + 1)];\n const hit = order.find((i) => String(items[i].label).toLowerCase().startsWith(e.key.toLowerCase()));\n if (hit !== undefined) setActive(hit);\n }\n }\n function choose(item, e) {\n if (item.disabled) { e.preventDefault(); return; }\n close();\n item.onSelect?.(e);\n }\n\n const name = (typeof label === \"string\" && label) || buttonLabel;\n return (\n <div className={`piq-menubutton${className ? ` ${className}` : \"\"}`} data-align={align} {...rest}>\n <Button ref={button} variant={variant} size={size} aria-haspopup=\"menu\" aria-expanded={open} aria-controls={open ? id : undefined} aria-label={buttonLabel}\n onClick={() => (open ? close() : openAt(\"first\"))} onKeyDown={onButtonKey}>\n {icon && <Icon name={icon} />}\n {label}\n <Icon name=\"chevron-down\" className=\"piq-menubutton__chevron\" />\n </Button>\n {open && (\n <ul ref={menu} id={id} role=\"menu\" aria-label={name} className=\"piq-menu piq-menubutton__menu\" onKeyDown={onMenuKey}>\n {items.map((it, i) => {\n const props = {\n \"data-index\": i, tabIndex: -1, className: `piq-menu__item${i === active ? \" is-hover\" : \"\"}`,\n role: it.checked === undefined ? \"menuitem\" : \"menuitemradio\", \"aria-checked\": it.checked === undefined ? undefined : !!it.checked,\n \"aria-disabled\": it.disabled || undefined, onClick: (e) => choose(it, e), onMouseEnter: () => !it.disabled && setActive(i),\n };\n return (\n <li key={i} role=\"none\">\n {it.href ? <a href={it.href} {...props}>{it.label}</a> : <button type=\"button\" {...props}>{it.label}</button>}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n","import { Button } from \"./Button.jsx\";\nimport { Select } from \"./Field.jsx\";\nimport { Icon } from \"../icons/Icon.jsx\";\n\n/* Moving through a long list a page at a time: where the user is (\"21–40 of\n 312\"), previous and next, and how many rows a page shows. Pages count from\n 1. The app owns page and pageSize and fetches each page. */\nexport function Pagination({ page = 1, pageSize = 20, total = 0, onPageChange, pageSizes = [10, 20, 50, 100], onPageSizeChange, label = \"Pagination\", ofLabel = \"of\", previousLabel = \"Previous page\", nextLabel = \"Next page\", pageSizeLabel = \"Rows per page\", className }) {\n const pages = Math.max(1, Math.ceil(total / pageSize));\n const p = Math.min(Math.max(1, page), pages);\n const first = total ? (p - 1) * pageSize + 1 : 0;\n const last = Math.min(total, p * pageSize);\n return (\n <nav aria-label={label} className={`piq-pagination${className ? ` ${className}` : \"\"}`}>\n {onPageSizeChange && (\n <Select label={pageSizeLabel} className=\"piq-pagination__size\" value={String(pageSize)}\n options={pageSizes.map((n) => ({ value: String(n), label: String(n) }))} onChange={(e) => onPageSizeChange(Number(e.target.value))} />\n )}\n <p className=\"piq-pagination__position\" aria-live=\"polite\">{`${first}–${last} ${ofLabel} ${total}`}</p>\n <div className=\"piq-pagination__steps\">\n <Button variant=\"secondary\" size=\"sm\" aria-label={previousLabel} disabled={p <= 1} onClick={() => onPageChange?.(p - 1)}><Icon name=\"chevron-left\" /></Button>\n <Button variant=\"secondary\" size=\"sm\" aria-label={nextLabel} disabled={p >= pages} onClick={() => onPageChange?.(p + 1)}><Icon name=\"chevron-right\" /></Button>\n </div>\n </nav>\n );\n}\n","import { useId } from \"react\";\nimport { Button } from \"./Button.jsx\";\nimport { useModalDialog } from \"./modal.js\";\nimport { Icon } from \"../icons/Icon.jsx\";\n\n/* A modal panel that slides in from an edge: the navigation drawer, filters\n on a phone, a short form. It is a modal dialog: the page behind is inert,\n focus moves into it and returns to what opened it, and Escape, the close\n button or a click outside calls onClose. side is start, end, bottom or\n full (the whole screen). */\nexport function Sheet({ open = false, onClose, title, label, side = \"start\", closeLabel = \"Close\", initialFocus, className, children, ...rest }) {\n const dialog = useModalDialog(open, initialFocus);\n const titleId = useId();\n return (\n <dialog ref={dialog} className={`piq-sheet${className ? ` ${className}` : \"\"}`} data-side={side} aria-labelledby={title ? titleId : undefined} aria-label={title ? undefined : label}\n onCancel={(e) => { e.preventDefault(); onClose?.(); }} onClick={(e) => { if (e.target === dialog.current) onClose?.(); }} {...rest}>\n <div className=\"piq-sheet__body\">\n <div className=\"piq-sheet__head\">\n {title && <h2 id={titleId} className=\"piq-sheet__title\">{title}</h2>}\n <Button variant=\"text\" className=\"piq-sheet__close\" aria-label={closeLabel} onClick={() => onClose?.()}><Icon name=\"close\" /></Button>\n </div>\n {children}\n </div>\n </dialog>\n );\n}\n","import { useId, useRef, useState } from \"react\";\n\n/* Panels that share one place, one shown at a time, chosen by a row of\n tabs. Keyboard as the WAI-ARIA Tabs pattern: Left and Right (mirrored in a\n right-to-left page) move between tabs and show each, Home and End go to the\n ends; Tab moves into the panel. tabs: [{ id, label, panel, count? }].\n Controlled with value and onChange, or not with defaultValue. The design\n system decides whether the selected tab is underlined or enclosed. */\nexport function Tabs({ tabs = [], value, defaultValue, onChange, label, className, ...rest }) {\n const [own, setOwn] = useState(defaultValue ?? tabs[0]?.id);\n const current = value ?? own;\n const base = useId();\n const list = useRef(null);\n\n function select(id, focus) {\n if (value === undefined) setOwn(id);\n if (id !== current) onChange?.(id);\n if (focus) [...(list.current?.querySelectorAll('[role=\"tab\"]') ?? [])].find((b) => b.dataset.tab === String(id))?.focus();\n }\n function onKey(e) {\n const i = tabs.findIndex((t) => t.id === current);\n const rtl = getComputedStyle(e.currentTarget).direction === \"rtl\";\n const step = { ArrowRight: rtl ? -1 : 1, ArrowLeft: rtl ? 1 : -1 }[e.key];\n let next = null;\n if (step) next = (i + step + tabs.length) % tabs.length;\n else if (e.key === \"Home\") next = 0;\n else if (e.key === \"End\") next = tabs.length - 1;\n if (next === null) return;\n e.preventDefault();\n select(tabs[next].id, true);\n }\n\n return (\n <div className={`piq-tabs${className ? ` ${className}` : \"\"}`} {...rest}>\n <div ref={list} role=\"tablist\" aria-label={label} className=\"piq-tabs__list\" onKeyDown={onKey}>\n {tabs.map((t) => {\n const on = t.id === current;\n return (\n <button key={t.id} type=\"button\" role=\"tab\" data-tab={t.id} id={`${base}-tab-${t.id}`} aria-selected={on} aria-controls={`${base}-panel-${t.id}`}\n tabIndex={on ? 0 : -1} className=\"piq-tabs__tab\" onClick={() => select(t.id)}>\n {t.label}\n {t.count != null && <span className=\"piq-tabs__count\">{t.count}</span>}\n </button>\n );\n })}\n </div>\n {tabs.map((t) => (\n <div key={t.id} role=\"tabpanel\" id={`${base}-panel-${t.id}`} aria-labelledby={`${base}-tab-${t.id}`} tabIndex={0} hidden={t.id !== current} className=\"piq-tabs__panel\">\n {t.panel}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ux-builder/ui",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"license": "MIT OR Apache-2.0",
|
|
5
5
|
"description": "Widgets for the harness and embedded products: prefixed CSS and React 19 components on @ux-builder/tokens, shaped by whichever theme is on.",
|
|
6
6
|
"type": "module",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"icons": "node scripts/gen-icons.mjs"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@ux-builder/tokens": "^1.
|
|
39
|
+
"@ux-builder/tokens": "^1.6.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"eslint": ">=9",
|
|
@@ -18,7 +18,7 @@ to the app, as long as the app follows the rules below.
|
|
|
18
18
|
3. Never hard-code colours, font families or radii: no hex, rgb(), named colours, font names or pixel radii in CSS or style props.
|
|
19
19
|
4. Run the lint rule ux-builder/no-hard-coded-values (@ux-builder/ui/stylelint, @ux-builder/ui/eslint) with ux-builder/no-foreign-ui and ux-builder/no-inline-svg, then the theme audit on the running app (npx ux-builder-audit <url>, @ux-builder/audit), and fix what they report.
|
|
20
20
|
5. Select themes with ThemeProvider (theme, appearance) or data-theme and data-appearance on <html>; never restyle per theme in app code.
|
|
21
|
-
6. Compose screens from @ux-builder/ui/patterns before writing any layout CSS: AppShell for the frame; CollectionList, ListDetail, RecordDetail, FormPage, QuickEdit, Dashboard, ReportViewer, SettingsPage and ErrorScreen for screens; the regions and the layout primitives (Stack, Cluster, Grid, Page, SplitView) for anything else. Supply content, data and actions through their slots; never fork or restyle a pattern.
|
|
21
|
+
6. Compose screens from @ux-builder/ui/patterns before writing any layout CSS: AppShell for the frame, with each screen inside a Page, which gives it the page gutter and width (AppShell's content area and the screen patterns have none of their own; ErrorScreen excepted); CollectionList, ListDetail, RecordDetail, FormPage, QuickEdit, Dashboard, ReportViewer, SettingsPage and ErrorScreen for screens; the regions and the layout primitives (Stack, Cluster, Grid, Page, SplitView) for anything else. Supply content, data and actions through their slots; never fork or restyle a pattern.
|
|
22
22
|
<!-- rules:end -->
|
|
23
23
|
|
|
24
24
|
## Setting up
|
|
@@ -82,7 +82,7 @@ import { ThemeProvider } from "@ux-builder/ui";
|
|
|
82
82
|
<!-- catalogue:start -->
|
|
83
83
|
## Reference (generated from the SDK; do not edit by hand)
|
|
84
84
|
|
|
85
|
-
@ux-builder/ui 0.6.
|
|
85
|
+
@ux-builder/ui 0.6.3, @ux-builder/tokens 1.6.0. The full catalogue, with every token and prop, is `@ux-builder/ui/catalogue.json`.
|
|
86
86
|
|
|
87
87
|
### Components
|
|
88
88
|
|